API REST v2.0

Skip to end of metadata
Go to start of metadata

Старый API после некоторых доработок потерял совместимость, поэтому мы решили выпустить вторую версию.

Рекомендуем использовать эту версию для написания запросов.
Формат дат для параметров запросов:

%Y-%m-%d %H:%M:%S
%Y-%m-%d

Отличия от старой версии:

  • Новый адрес для запросов: http://<ip>:8082/rest_api/v2/
  • Вместо передачи параметров в GET, перешли на POST
  • Убрали из вывода результаты промежуточных вызовов (method1, method2,..), оставили только result
  • Соответственно, немного поменялся схема вывода (см. соответствующий раздел)
  • Модель указывается в url напрямую, например: http://<ip>:8082/rest_api/v2/Abonents/
  • Атрибут запроса fields теперь не нужно маркировать номером метода. Он будет применяться к последнему объекту (возвращенному последним методом)
  • Документацию (пока что только перечень доступных полей для запроса) можно посмотреть, пройдя браузером по ссылке http://<ip>:8082/rest_api/v2/
  • Теперь можно в fields запрашивать вывод объектов по ссылкам (fk, m2m), обратным ссылкам и выводить property объектов, а также выводить конкретные поля этих объектов. Глубина запроса не ограничена, разделитель - двойное подчеркивание. *Внимание! Django не объединяет запрос по обратной ссылке в один, поэтому он может выполняться заметно дольше для большого кол-ва объектов (например, если запросить все учетные записи у всех абонентов - будет 1 запрос для абонентов и по запросу на каждого абонента для получения его учетных записей)

Описание формата

*Формат ответа:

{"call": "/rest_api/v2/<model_name>/", "result": [<объект>, ...]}

тип поля result будет меняться в соответствии с данными (список для перечня объектов (objects.filter), словарь для 1 объекта (objects.get), значение метода при вызове метода и.т.д).

*Формат ошибки:

{"call": "/rest_api/v2/<model_name>/", "error": "..."}

если в результате есть не пустое поле error, то значит запрос завершился неуспешно

*Формат объекта:

{"pk": <id>, "model": "<model>", "fields": {"<field>": <value>, ...}

Если поле является ссылкой fk (например поле tarif у модели Abonents), то объект тарифа можно получить, задав fields=["tarif"], а pk тарифа, задав fields=["tarif_id"], например:

{"pk": <id>, "model": "Abonents", "fields": {"tarif": {"pk": <id тарифа>, "model": "Tarif", "fields": {<поля тарифа>},  "tarif_id": <id тарифа>}

Также, можно вывести только определенные поля тарифа через двойное подчеркивание: fields=["tarif__name"]:

{"pk": <id>, "model": "Abonents", "fields": {"tarif": {"pk":  <id тарифа>, "model": "Tarif", "fields": {"name": <имя тарифа>},   "tarif_id": <id тарифа>}

Еще пример. Запрос ip адресов всех учетных записей абонента fields=["abonent_id_users__ip"]:

{"pk": <id>, "model": "Abonents", "fields": {"abonent_id_users": [{"pk": <id учетной записи>, "model": "Users", "fields": {"ip": "<ip>"}}, ...]}}

Если необходимо выбрать данные в диапазоне, можно использовать __range:

{method1=objects.filter&arg1={"abonent_id": <id>,"s_time__range":["2018-10-01", "2018-11-01"]}

Формирование запросов

curl -XPOST -d 'method1=objects.all&arg1={}&fields=["tarif_id","tarif","abonent_id_users__ip","attr","child_folders_count"]' http://<ip>:8082/rest_api/v2/Abonents/ -D -
curl -XPOST -d 'method1=objects.all&arg1={}&fields=["tarif_id","tarif__name","tarif__reserve_plan","abonent_id_users__ip","attr","child_folders_count"]' http://<ip>:8082/rest_api/v2/Abonents/ -D -

Документация по методам и моделям

Вызовите в браузере http://<ip>:8082/rest_api/v2/ и выберите интересующую модель.

Например, демо:

http://demo5.carbonsoft.ru/rest_api/v2/

Примеры

Некоторые готовые примеры работы с API с помощью Python вы можете посмотреть здесь: github

  1. Вывести абонентов, у которых есть учетная запись с ip = 127.1.2.3
    curl -XPOST -d 'method1=objects.filter&arg1={"abonent_id_users__ip":"127.1.2.3"}' http://<ip>:8082/rest_api/v2/Abonents/ -D -
    

    или количество таких абонентов:

    curl -XPOST -d 'method1=objects.filter&arg1={"abonent_id_users__ip":"127.1.2.3"}&method2=count&arg2={}' http://<ip>:8082/rest_api/v2/Abonents/ -D -
    
  2. Установить абоненту с id = 45 номер квартиры 3
    curl -XPOST 'http://<ip>:8082/rest_api/v2/Abonents/' --data 'method1=objects.get&arg1={"id":"45"}&method2=set&arg2={"a_home_number":"3"}&method3=save&arg3={}';
    
  3. Подключение услуги id=532 абоненту с номером договора BILL0000021
    curl -XPOST -d 'http://<ip>:8082/rest_api/v2/Abonents/' --data 'method1=objects.get&arg1={"contract_number":"BILL0000021"}&method2=add_service&arg2={"usluga_id":532}'
    
  4. Сколько абоненту с номером договора 1005633 нужно заплатить что проработать до 2016-10-20
    curl -XPOST -d 'method1=objects.get&arg1={"contract_number":"1005633"}&method2=get_credit_for&arg2={"end_credit_date":"2016-10-20"}' http://169.1.80.82:8082/rest_api/v2/Abonents/
    
  5. Выполнение отчёта 1003 с параметром phone="+79222222222"
    curl -XPOST -d 'method1=objects.get&arg1={"id":1003}&method2=get_data&arg2={"phone":"+79222222222"}' http://169.1.80.82:8082/rest_api/v2/AdminCustomReports/ -D -
    
  6. По абоненту с id=1383 вывести значение реквизита с id=26
    curl -XPOST -d 'method1=objects.filter&arg1={"abonent":"1383", "attribute":"26"}' http://<ip-биллинга>:8082/rest_api/v2/AttributeValues/ -D -
    
  7. Пример создания абонента с именем abonent, в папке 1 с тарифом с id 1
    def create_abonent(self, **kwargs):
    params = {
    'url': '(billing_url)/Abonents/'.format(self.api_url),
    'method1': 'objects.create',
    'arg1': {"name": "abonent", '"parent_id": 1,"tarif_id": 1}.
     }
     return self.get_api_result(self.post_request(**params))
    
  8. Установить абоненту с id 1321 тариф с именем Тестовый

    1. Получаем id тарифа по имени

     curl -XPOST -d 'method1=objects.get&arg1={"name":"Тестовый"}' http://<ip-биллинга>:8082/rest_api/v2/tarif/ -D -
    

    В поле pk получаем id тарифа, в данном случае 1118
    2. Устанавливаем тариф абоненту по id

     curl -XPOST -d 'method1=objects.get&arg1={"id":"1321"}&method2=set&arg2={"tarif_id":"1118"}&method3=save&arg3={}' http://<ip-биллинга>:8082/rest_api/v2/Abonents/ -D -
    
  9. Установить абоненту с номером учетной записи 1361 коммутатор с IP 1.1.1.1

    1. Получаем id коммутатора по IP

    curl -XPOST -d 'method1=objects.get&arg1={"ip":"1.1.1.1"}' http://<ip-биллинга>:8082/rest_api/v2/Switch/ -D -
    

    В поле pk получаем id коммутатора, в данном случае 1113
    2. Устанавливаем коммутатор в учетную запись по id

    curl -XPOST -d 'method1=objects.get&arg1={"id":"1361"}&method2=set&arg2={"switch_id":"1113"}&method3=save&arg3={}' http://<ip-биллинга>:8082/rest_api/v2/Users/ -D -
    
  10. Установить абоненту с номером учетной записи 1361 vlan 8
    curl -XPOST -d 'method1=objects.get&arg1={"id":"1361"}&method2=set&arg2={"router_vlan":"8"}&method3=save&arg3={}' http://<ip-биллинга>:8082/rest_api/v2/Users/ -D -
    
  11. Установить абоненту с номером учетной записи 1361 mac-адрес 00:AA:CC:11:44:88
    curl -XPOST -d 'method1=objects.get&arg1={"id":"1361"}&method2=set&arg2={"mac":"00:AA:CC:11:44:88"}&method3=save&arg3={}' http://<ip-биллинга>:8082/rest_api/v2/Users/ -D -
    
  12. Установить абоненту с номером учетной записи 1361 галочку opt82
    curl -XPOST -d 'method1=objects.get&arg1={"id":"1361"}&method2=set&arg2={"opt82":"1"}&method3=save&arg3={}' http://10.90.180.180:8082/rest_api/v2/Users/ -D -
    
  13. Установить абоненту с номером учетной записи 1361 порт номер 8 коммутатора 2.2.2.2

    1. Получаем id коммутатора по IP

    curl -XPOST -d 'method1=objects.get&arg1={"ip":"2.2.2.2"}' http://<ip-биллинга>:8082/rest_api/v2/Switch/ -D -
    

    В поле pk получаем id коммутатора, в данном случае 1114
    2. Получаем id порта по его номеру

    curl -XPOST -d 'method1=objects.get&arg1={"switch_id":"1114","num":"8"}' http://<ip-биллинга>:8082/rest_api/v2/SwitchPorts/ -D -
    

    В поле pk получаем id порта коммутатора, в данном случае 1168
    3. Устанавливаем порт в учетной записи по id порта из БД

    curl -XPOST -d 'method1=objects.get&arg1={"id":"1361"}&method2=set&arg2={"switch_p":"1168"}&method3=save&arg3={}' http://<ip-биллинга>:8082/rest_api/v2/Users/ -D -
    
  14. Установить абоненту с id 1321 заявку на смену тарифа с именем "Другой" на 2016-05-26

    1. Получаем id тарифа по имени

     curl -XPOST -d 'method1=objects.get&arg1={"name":"Другой"}' http://<ip-биллинга>:8082/rest_api/v2/tarif/ -D -
    

    В поле pk получаем id тарифа, в данном случае 1119
    2. Добавляем заявку на смену и дату смены

    curl -XPOST -d 'method1=objects.get&arg1={"id":"1321"}&method2=set&arg2={"tarif_next_id":"1119","tarif_next_date":"2016-05-26"}&method3=save&arg3={}' http://<ip-биллинга>:8082/rest_api/v2/Abonents/ -D
    
  15. Создание абонента и добавление ему учетной записи

    1. Создаем абонента abonent с тарифом Основной(id=1) в группе Все (id=1)

    curl -XPOST -d 'method1=objects.create&arg1={"name":"abonent", "parent_id":1, "tarif_id":1}' http://<ip-биллинга>:8082/rest_api/v2/Abonents/ -D -
    

    В поле pk получаем id абонента. В данном случае id 1339
    2. Создаем учетную запись по id абонента, указывая логин abonent1.

    curl -XPOST -d 'method1=objects.create&arg1={"abonent_id":"1339", "login":"abonent1"}' http://<ip-биллинга>:8082/rest_api/v2/Users/ -D -
    

    Пароль при этом генерирует биллинг.

  16. Получить данные по учетным записям абонента
    curl -XPOST -d 'method1=objects.filter&arg1={"abonent__pk":"1234"}' 'http://169.254.80.82:8082/rest_api/v2/Users/' -D -
    
  17. Получить логин, ip адрес, название атрибута в тарифе абонента, значение атрибута в тарифе абонента по незаблокированным абонентам
    curl "http://169.254.80.82:8082/rest_api/v2/Users/" -XPOST -d 'method1=objects.filter&arg1={"abonent__deleted": 0, "abonent__abonent_id_abonentsblock__isnull": 1}&fields=["ip", "login", "abonent__tarif__tarif_id_tarifradiusparams__attribute", "abonent__tarif__tarif_id_tarifradiusparams__thevalue"]'
    
  18. Добавить абоненту с id 100 атрибут, который имеет id 200 со значением 300
    curl -XPOST 'http://169.254.80.82:8082/rest_api/v2/AttributeValues/' --data 'method1=objects.create&arg1={"abonent_id":"100","attribute_id":"200","attribute_value":"300"}'
    

    BASH скрипт, который добавляет физ.лицам атрибут, который имеет id 200 со значением 300

    sqlexec "set list on; select id from abonents where company=0" | awk ' {print $2} ' | sed '/^$/d' | while read line; do curl -XPOST 'http://169.254.80.82:8082/rest_api/v2/AttributeValues/' --data 'method1=objects.create&arg1={"abonent_id":'$line',"attribute_id":"200","attribute_value":"300"}'; done
    
  19. Отправить абоненту id 1313 сообщение по шаблону с id 1 методом sms-оповещения
    curl -XPOST -d 'method1=objects.create&arg1={"abonent_id": "1313", "admin_msg_id": "1", "ttype_id": "1"}' 'http://169.254.80.82:8082/rest_api/v2/MsgStack/' -D -
  20. Сделать приход 10 рублей абоненту с номером договора BILL0000021
    curl -XPOST -d 'method1=objects.get&arg1={"contract_number": "BILL0000021"}&method2=add_payment&arg2={"SUM_IN": "10"}' 'http://169.254.80.82:8082/rest_api/v2/Abonents/' -D -
  21. Создать абонента ФИО abonent в директории с id 1 (Все), tarif_id 1 (Основной тариф) и балансом 10р
    curl -XPOST -d 'method1=objects.create&arg1={"name":"abonent", "parent_id":1, "tarif_id":1}&method2=add_payment&arg2={"SUM_IN": "10"}' http://169.254.80.82:8082/rest_api/v2/Abonents/ -D -
  22. Ввод начальных остатков/синхронизация балансов. Установить абоненту с id 1111 баланс бухгалтерский в объёме 50.5р, комментарий к финансовой операции "Миграция балансов"
    curl -XPOST -d 'method1=objects.create&arg1={"abonent_id": 1111, "op_summa": "50.5", "op_type_id": 8, "descr": "Миграция балансов"}' 'http://169.254.80.82:8082/rest_api/v2/FinanceOperations/' -D -
    Ввод начальных остатков в зависимости от номера договора. В примере указан номер договора 'test'. Номер договора обязательно должен быть экранирован кавычками ''.
    sqlexec "set list on; select id from abonents where contract_number='test'" | awk ' {print $2} ' | sed '/^$/d' | while read line; do curl -XPOST -d 'method1=objects.create&arg1={"abonent_id":'$line', "op_summa": "50.5", "op_type_id": 8, "descr": "Миграция балансов"}' 'http://169.254.80.82:8082/rest_api/v2/FinanceOperations/' -D -; done
    
  23. Добавление дома в справочник "Дома". Дом будет создан с адресом г.Москва Ленина 5
    curl -XPOST -d 'method1=objects.create&arg1={"city":"Москва", "street":"Ленина", "s_number":'5'}' http://169.254.80.82:8082/rest_api/v2/Homes/ -D
  24. Добавления пула домов с помощью Bash скрипта. Будет создано 5 домов :1,2,3,4,5 c адресом г. Москва Ленина 1, г. Москва Ленина 2 и т.д. X - номер первого дома в пуле.
    X=1; while [ "$X" -lt "6" ]; do curl -XPOST -d 'method1=objects.create&arg1={"city":"Москва", "street":"Ленина", "s_number":'$X'}' http://169.254.80.82:8082/rest_api/v2/Homes/ -D -;X=$((X+1)); done
  25. Получение баланса по абоненту.
    curl -XPOST -d 'method1=objects.get&arg1={"account_id_abonents":"<ID-абонента>"}&fields=["balance"]' http://<ip-биллинга>:8082/rest_api/v2/AdminAccounts/ -D -
    Установка значения в поле "Порог отключения"
    curl -XPOST -d 'method1=objects.get&arg1={"account_id_abonents":"<ID-абонента>"}&method2=set&arg2={"limit":"-5000"}&method3=save&arg3={}' http://<ip-биллинга>:8082/rest_api/v2/AdminAccounts/ -D -
  26. Установка значения в поле "Порог предупреждения" всей группе с помощью bash скрипта. В примере указана группа с id 1316 и Порог предупреждения - 12000
    sqlexec "set list on; select id from abonents where parent_id=1316" | awk ' {print $2} ' | sed '/^$/d' | while read line; do curl -XPOST -d 'method1=objects.get&arg1={"account_id_abonents":'$line'}&method2=set&arg2={"limit_warning":"-12000"}&method3=save&arg3={}' http://169.254.80.82:8082/rest_api/v2/AdminAccounts/ -D -; done
    
  27. Получить полный лог звонков абонентов за указанный период (включая обе даты)
    curl -XPOST -d 'method1=objects.filter&arg1={"s_time__gt":"2017-11-20", "s_time__lte":"2017-12-01"}' http://168.254.80.82:8082/rest_api/v2/VoipLog/ -D -
  28. Поменять учетной записи с id 1395 snatip на 8.8.8.8
    curl -XPOST -d 'method1=objects.get&arg1={"id":'1395'}&method2=set&arg2={"snatip":"8.8.8.8"}&method3=save&arg3={}' http://169.254.80.82:8082/rest_api/v2/Users/ -D -
    
  29. Поменять всем абонентам из папки с id 1000 snat_pull на snat_pull с id 1030
    sqlexec "set list on; select u.id from users u left join abonents a on a.id=u.abonent_id where a.parent_id=1000" | awk ' {print $2} ' | sed '/^$/d' | while read line; do curl -XPOST -d 'method1=objects.get&arg1={"id":'$line'}&method2=set&arg2={"snat_pull":"1030"}&method3=save&arg3={}' http://169.254.80.82:8082/rest_api/v2/Users/ -D -; done
    
  30. Поменять всем учетным записям дополнительный параметр opt82 со 100 на 3100
    sqlexec "set list on; select id from users where opt82_param='100'" | awk ' {print $2} ' | sed '/^$/d' | while read line; do curl -XPOST -d 'method1=objects.get&arg1={"id":'$line'}&method2=set&arg2={"opt82_param":"3100"}&method3=save&arg3={}' http://169.254.80.82:8082/rest_api/v2/Users/ -D -;done
  31. Установить абоненту с номером договора BILL0000014 статус с id 26
    curl -XPOST -d 'method1=objects.get&arg1={"contract_number": "BILL0000014"}&method2=set_object_status&arg2={"status_id": "26"}' 'http://169.254.80.82:8082/rest_api/v2/Abonents/' -D -
    
  32. Установить абонентам из папки с id 1354 статус с id 26
    sqlexec "set list on; select id from abonents where parent_id=1354" | awk ' {print $2} ' | sed '/^$/d' | while read line; do curl -XPOST -d 'method1=objects.get&arg1={"id": '$line'}&method2=set_object_status&arg2={"status_id": "26"}' 'http://169.254.80.82:8082/rest_api/v2/Abonents/' -D -; done
    
  33. Установить учетной записи с id 1418 nas c id 1116.
    curl -XPOST -d 'method1=objects.get&arg1={"id":'1418'}&method2=set&arg2={"nas_id":"1116"}&method3=save&arg3={}' http://169.254.80.82:8082/rest_api/v2/Users/ -D -
    
  34. Установить всем учетным записям абонентов из папки 1386 nas c id 1116.
    sqlexec "set list on; select id from users where abonent_id in (select id from abonents where parent_id=1386)" | awk ' {print $2} ' | sed '/^$/d' | while read line; do curl -XPOST -d 'method1=objects.get&arg1={"id":'$line'}&method2=set&arg2={"nas_id":"1116"}&method3=save&arg3={}' http://169.254.80.82:8082/rest_api/v2/Users/ -D -; done
    
  35. Установить всем абонентам из папки id 1386 пул ip-адресов с id 1003 и выдать новый ip-адрес из пула
    sqlexec "set heading off; select u.id from users u join abonents a on u.abonent_id=a.id and a.parent_id=1386" | sed '/^$/d; s/ *//g' | while read -r userid; do curl -XPOST -d 'method1=objects.get&arg1={"id":"'$userid'"}&method2=set&arg2={"ip":"","pull":"1003"}&method3=save&arg3={}' http://169.254.80.82:8082/rest_api/v2/Users/ -D -; done
  36. Добавить всем абонентам с блокировкой по отрицательному балансу и балансом меньше, чем '-1' приход 600 рублей
    sqlexec "set list on; select distinct a.id from ABONENTS A left join ADMIN_ACCOUNTS AA on AA.ID=A.ACCOUNT_ID left join abonents_block ab on ab.abonent_id=a.id where A.IS_FOLDER=0 and a.deleted=0 and ab.B_NEGBAL=1 and round((aa.ostatok+aa.debit-aa.credit) / cast((10000000000) as numeric(18,5)), 2)<-1" | awk ' {print $2} ' | sed '/^$/d' | while read line; do curl -XPOST -d 'method1=objects.get&arg1={"id": '$line'}&method2=add_payment&arg2={"SUM_IN": "600"}' 'http://169.254.80.82:8082/rest_api/v2/Abonents/' -D -; done
  37. Установить абоненту c id 2003 опцию "Не отключать при превышении порога"
    curl -XPOST -d 'method1=objects.get&arg1={"account_id_abonents":"2003"}&method2=set&arg2={"unlimited":"1"}&method3=save&arg3={}' http://169.254.80.82:8082/rest_api/v2/AdminAccounts/ -D -
    
  38. Установить всем абонентам с блокировкой по отрицательному балансу и балансом больше, чем 2, опцию "Не отключать при превышении порога"
    sqlexec "set list on; select distinct a.id from ABONENTS A left join USERS U on A.ID = U.ABONENT_ID left join TARIF T on A.TARIF_ID=T.ID left join ADMIN_ACCOUNTS AA on AA.ID=A.ACCOUNT_ID left join users_usluga uu on uu.ABONENT_ID=A.ID left join usluga usl on usl.id=uu.USLUGA_ID left join abonents_block ab on ab.abonent_id=a.id where A.IS_FOLDER=0  and a.deleted=0  and ab.B_NEGBAL=1 and round((aa.ostatok+aa.debit-aa.credit) / cast((10000000000) as numeric(18,5)), 2)>2" | awk ' {print $2} ' | sed '/^$/d' | while read line; do curl -XPOST -d 'method1=objects.get&arg1={"account_id_abonents":'$line'}&method2=set&arg2={"unlimited":"1"}&method3=save&arg3={}' http://169.254.80.82:8082/rest_api/v2/AdminAccounts/ -D -; done
    
  39. Перенести всех неудаленных абонентов с тарифом, у которого id 1212 , в группу, у которой id 4911
    sqlexec "set list on; select distinct id from abonents where tarif_id=1212 and is_folder=0 and deleted=0" | awk ' {print $2} ' | sed '/^$/d' | while read line; do curl -XPOST -d 'method1=objects.get&arg1={"id": '$line'}&method2=move_to&arg2={"target":4911}' 'http://169.254.80.82:8082/rest_api/v2/Abonents/' -D -; done
    
  40. Удаление абонента с ID 1234
    curl -XPOST -d 'method1=objects.get&arg1={"id": "1234"}&method2=delete&arg2={}' 'http://169.254.80.82:8082/rest_api/v2/Abonents/' -D -
  41. Удаление всех абонентов, которые не являются папками, из папки 5293
    sqlexec "set list on; select id from abonents where parent_id=5293 and is_folder=0" | awk ' {print $2} ' | sed '/^$/d' | while read line; do curl -XPOST -d 'method1=objects.get&arg1={"id": '$line'}&method2=delete&arg2={}' 'http://169.254.80.82:8082/rest_api/v2/Abonents/' -D -; done
  42. Выставить всем абонентам из папки с id 1433 порог отключения '-5000'
    sqlexec "set list on; select distinct id from abonents where parent_id=1433" | awk ' {print $2} ' | sed '/^$/d' | while read line; do curl -XPOST -d 'method1=objects.get&arg1={"account_id_abonents":'$line'}&method2=set&arg2={"limit":"-5000"}&method3=save&arg3={}' http://169.254.80.82:8082/rest_api/v2/AdminAccounts/ -D -; done
  43. Изменить массово тариф всем абонентам с тарифа 1137 на тариф 1134
    sqlexec "set list on; select distinct id from abonents where tarif_id=1137" | awk ' {print $2} ' | sed '/^$/d' | while read line; do curl -XPOST -d 'method1=objects.get&arg1={"id":'$line'}&method2=set&arg2={"tarif_id":"1134"}&method3=save&arg3={}' http://169.254.80.82:8082/rest_api/v2/Abonents/ -D -; done
  44. Применить административную блокировку с комментарием "Блокировка" к абоненту c id 1607
    Если у абонента нет услуг, которые можно заблокировать - блокировка применена не будет!
    curl -XPOST -d 'method1=objects.get&arg1={"id":"1607"}&method2=block&arg2={"comment":"Блокировка"}' http://169.254.80.82:8082/rest_api/v2/Abonents/ -D -
    
  45. Применить административную блокировку с комментарием "Блокировка" к абонентам, у которых баланс меньше 0
    sqlexec "set list on; select distinct a.id from ABONENTS A left join ADMIN_ACCOUNTS AA on AA.ID=A.ACCOUNT_ID where A.IS_FOLDER=0  and a.deleted=0 and round((aa.ostatok+aa.debit-aa.credit) / cast((10000000000) as numeric(18,5)), 2)<0" | awk ' {print $2} ' | sed '/^$/d' | while read line; do curl -XPOST -d 'method1=objects.get&arg1={"id":'$line'}&method2=block&arg2={"comment":"Блокировка"}' http://169.254.80.82:8082/rest_api/v2/Abonents/ -D -; done
  46. Убрать административную блокировку с абонента с id 1607 от имени администратора root
    curl -XPOST -d 'method1=objects.get&arg1={"id":"1607"}&method2=unblock&arg2={"admin_username":"root"}' http://169.254.80.82:8082/rest_api/v2/Abonents/ -D -
    
  47. Убрать административную блокировку с абонентов, у которых баланс больше 0 от имени администратора root.
    sqlexec "set list on; select distinct a.id from ABONENTS A left join ADMIN_ACCOUNTS AA on AA.ID=A.ACCOUNT_ID where A.IS_FOLDER=0  and a.deleted=0 and round((aa.ostatok+aa.debit-aa.credit) / cast((10000000000) as numeric(18,5)), 2)>0" | awk ' {print $2} ' | sed '/^$/d' | while read line; do curl -XPOST -d 'method1=objects.get&arg1={"id":'$line'}&method2=unblock&arg2={"admin_username":"root"}' http://169.254.80.82:8082/rest_api/v2/Abonents/ -D -; done
    
  48. Плучить детальную информацию по расходам абонента на интернет, телефонию и другие услуги за определённый период времени
    1. Вкладка "Расход", таблица "Расход"
      curl -XPOST -d 'method1=objects.filter&arg1={"abonent_id":"1242","s_time__range":["2018-10-01", "2018-11-01"]}' http://169.254.80.82:8082/rest_api/v2/Counters/ -D -
    2. Детализация списаний за период
      curl -XPOST -d 'method1=objects.filter&arg1={"abonent_id":"1242","change_balance_time__range":["2018-10-01", "2018-11-01"],"storno":0}' http://169.254.80.82:8082/rest_api/v2/ArchAccountStack/ -D -
  49. Применить добровольную блокировку
    curl -XPOST -d 'method1=objects.get&arg1={"id":"12419"}&method2=set&arg2={"own_disabled_start":"2018-10-03","own_disabled_end":"2018-11-03"}&method3=save&arg3={}' http://169.254.80.82:8082/rest_api/v2/Abonents/ -D -
  50. Подключить обещанный платеж из личного кабинета

    Делается в три этапа:

    1. Авторизоваться, получив SUID
      curl "http://169.254.80.82:8082/rest_api/v2/Users/" -d 'method1=objects.get&arg1={"abonent_id":"12230"}&method2=create_dynamic_session&arg2={"save_old_session":"1"}'

      Пример ответа с SUID - 144997776676316356

      {"call": "/rest_api/v2/Users/", "result": {"pk": null, "model": "DynamicSessions", "fields": {"ttype": "None", "id": 12200, "suid": "144997776676316356"}}}
    2. Использовать SUID чтобы получить список обещанных платежей доступных абоненту для подключения из личного кабинета
      curl "http://169.254.80.82:8082/rest_api/v2/Users/" -d 'method1=web_cabinet.get_promise_pay_list&arg1={"suid":"144997776676316356"}'
    3. Подключить обещанный платеж
      curl -XPOST -d 'method1=objects.create&arg1={"abonent_id":12420,"usluga_id":240,"manager_id": 33}' http://169.254.80.82:8082/rest_api/v2/UsersUsluga/ -D -

      manager_id - это ID администраторов, получить их список можно так:

      curl -XPOST -d 'method1=objects.filter' http://169.254.80.82:8082/rest_api/v2/UsersWebauth/ -D -
  51. Получить список услуг доступных абоненту для подключения в личном кабинете

    Делается в три этапа:

    1. Авторизоваться, получив ID авторизации
      curl "http://169.254.80.82:8082/rest_api/v2/Users/" -d 'method1=objects.get&arg1={"abonent_id":"12230"}&method2=create_dynamic_session&arg2={"save_old_session":"1"}'
    2. Получить список всех доступных для подключения и подключенных услуг
      curl "http://169.254.80.82:8082/rest_api/v2/Users/" -d 'method1=web_cabinet.get_usluga_list&arg1={"suid":"144997776676316356","get_user_uslugas_all":1}'
    3. Список всех подключенных услуг
      curl "http://169.254.80.82:8082/rest_api/v2/Users/" -d 'method1=web_cabinet.get_usluga_list&arg1={"suid":"144997776676316356","get_setted":1}'

      Отфильтровать услуги определенного типа можно подобавив в запрос на втором или третьем шаге параметр system_type_id:

      0 Стандартный
      1 Турбокнопка
      3 Бонусный трафик
      4 Форсаж
      2 Подписка
      6 Пакет МБ
      5 IP телефония
      7 IP телевидение
      8 Абонентская плата
      9 Трафик
      10 Скидка\Наценка
      11 Обещанный платеж
      12 Пакет услуг
      13 Системный 
  52. Сторнирование услуг

    В примере: массовое сторнирование по всем неудаленным абонентам за период с 1 января 2017 по 1 января 2018 года

    sqlexec "set heading off; select id from abonents where is_folder=0 and deleted=0" | sed '/^$/d' | sed 's/ *//g' | while read -r abonid; do curl -XPOST -d 'method1=objects.get&arg1={"id":"'$abonid'"}&method2=storno_credit&arg2={"sdate":"2017-01-01", "edate":"2018-01-01"}' http://169.254.80.82:8082/rest_api/v2/Abonents/ -D -; done 
  53. Удаление услуг

    В примере: массовое удаление автоматический подключенных обещанных платежей по льготному периоду

    sqlexec "set heading off; select id from users_usluga where comment like 'Автоматический%предоплате%2017-12-31%'" | sed '/^$/d' | sed 's/ *//g' | while read -r uusligaid; do echo "$uusligaid"; curl -XPOST -d 'method1=objects.get&arg1={"id":"$uusligaid"}&method2=delete' http://169.254.80.82:8082/rest_api/v2/UsersUsluga/ -D -; done
  54. Смена пароля учетной записи
    Установить определенный пароль:
    curl -XPOST 'http://169.254.80.82:8082/rest_api/v2/Users/' -d 'method1=objects.get&arg1={"id":4084}&method2=set_password&arg2={"psw":"1234","dontshow":false}'

    psw - новый пароль
    dontshow - false чтобы пароль сохранился в открытом видео и отображался в администраторской панели, true - чтобы не отображался.

    Сгенерировать случайный пароль:

    Сделайте два запроса: первым уберите пароль абонента, вторым инициируйте сохранение учетной записи:

    curl -XPOST 'http://169.254.80.82:8082/rest_api/v2/Users/' -d 'method1=objects.get&arg1={"id":4084}&method2=set_password&arg2={"psw":""}
    curl -XPOST 'http://169.254.80.82:8082/rest_api/v2/Users/' -d 'method1=objects.get&arg1={"id":4084}&method3=save&arg2={}
    

Отладка

API-запросы и ошибки их выполнения логируются в следующие файлы:

/app/asr_billing/var/log/django/error.log
/app/asr_billing/var/log/django/api_v2.log

По-умолчанию, уровень логирования установлен в error. Для того, чтобы логировать все запросы, установите в конфигурационном файле /app/asr_billing/cfg/config уровень логирования django в info:

  • Откройте конфигурационный файл биллинга в любом удобном текстовом редакторе, например vim:
    vim /app/asr_billing/cfg/config
  • Найдите в файле опцию app['django.loglevel']= и установите её в значение info:
    app['django.loglevel']='info'
  • Перезапустите web-сервер биллинга:
    chroot /app/asr_billing/ service admin_web_server restart

    По окончанию отладки, рекомендуется вернуть уровень логирования в статус *error

Метки

Введите метки, чтобы добавить к этой странице:
Please wait 
Ищите метку? просто начните печатать.