API REST v2.0

Ключ
Эта строка удалена.
Это слово было удалено. Это слово было добавлено.
Эта строка добавлена.

Изменения (169)

просмотр истории страницы



h2. Примеры

Некоторые готовые примеры работы с API с помощью Python вы можете посмотреть здесь: [github|https://github.com/carbonsoft/rest_api_example]

{warning:title=Очень Важно!}При выполнении API-запроса к серверу, происходит формирование задачи для изменения записей в БД, а не моментальное исполнение требуемых действий.
Поэтому, будьте внимательны, когда делаете запрос к большому количеству записей(массовое изменение NAS и т.д), требуется подождать некоторое время (10-30 минут) для завершения заданий, и после этого можете приступать к новым запросам. Иначе, могут возникнуть наложения действий со следующим запросом и начальный запрос выполнится некорректно. {warning}

h3. Абоненты

# h5. Вывести абонентов, у которых есть учетная запись с ip = 127.1.2.3
{code}
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/
{code}
# h5. Выполнение отчёта 1003 с параметром phone="+79222222222"
{code}
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 -
{code}
# h5. По абоненту с id=1383 вывести значение реквизита с id=26
{code}
curl -XPOST -d 'method1=objects.filter&arg1={"abonent":"1383", "attribute":"26"}' http://<ip-биллинга>:8082/rest_api/v2/AttributeValues/ -D -
{code}
# h5. Пример создания абонента с именем abonent, в папке 1 с тарифом с id 1
{code}
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 -
{code}
# h5. Установить абоненту с id 1321 заявку на смену тарифа с именем "Другой" на 2016-05-26
1. Получаем id тарифа по имени
{code}
curl -XPOST -d 'method1=objects.get&arg1={"name":"Другой"}' http://<ip-биллинга>:8082/rest_api/v2/tarif/ -D -
{code}
В поле pk получаем id тарифа, в данном случае 1119
2. Добавляем заявку на смену и дату смены
{code}
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
{code}
# h5. Запланировать переход абонентов с тарифа с id 1127 на тариф с id 1132 на 2021-03-01
{code}sqlexec "set list on; select distinct id from abonents where tarif_id=1127" | awk ' {print $2} ' | sed '/^$/d' | while read line; do curl -XPOST -d 'method1=objects.get&arg1={"id":'$line'}&method2=set&arg2={"tarif_next_id":"1132","tarif_next_date":"2021-03-01"}&method3=save&arg3={}' http://169.254.80.82:8082/rest_api/v2/Abonents/ -D -; done{code}
# h5. Запланировать переход абонентов с тарифа с id=1149 на тариф с id 1160, с индивидуальной датой перехода для каждого абонента (при использовании фукнции "Сдвигать дату списания").
Сначала происходит выборка id абонентов с тарифом id=1149, также условием является услуга абонентской платы из тарифа, чтобы получить дату следующего списания.
{code}sqlexec "set heading off; select ABONENT_ID, NEXT_DATE from users_usluga where deleted=0 and tarif_id=1149 and usluga_id=134 order by ABONENT_ID" | sed '/^$/d' | while read line ddate; do curl -XPOST -d 'method1=objects.get&arg1={"id":'$line'}&method2=set&arg2={"tarif_next_id":"1160","tarif_next_date":"'${ddate%% *}'"}&method3=save&arg3={}' http://169.254.80.82:8082/rest_api/v2/Abonents/ -D -; done{code}
# h5. Создание абонента и добавление ему учетной записи
1. Создаем абонента abonent с тарифом Основной(id=1) в группе Все (id=1)
{code}
curl -XPOST -d 'method1=objects.create&arg1={"name":"abonent", "parent_id":1, "tarif_id":1}' http://<ip-биллинга>:8082/rest_api/v2/Abonents/ -D -
{code}
В поле pk получаем id абонента. В данном случае id 1339
2. Необходимо подождать, пока биллинг обработает запрос. В зависимости от производительности 5-10 секунд.
3. Создаем учетную запись по id абонента, указывая логин abonent1.
{code}
curl -XPOST -d 'method1=objects.create&arg1={"abonent_id":"1339", "login":"abonent1"}' http://<ip-биллинга>:8082/rest_api/v2/Users/ -D -
{code}
Пароль при этом генерирует биллинг.
# h5. Скрипт для создания абонента и учетной записи. Создаёт абонента в папке "Все" с именем "ФИО1", номером договора TEST_API1, тарифом с id=1, балансом 10, логином abonent2, паролем 1234
{code}
#!/bin/bash
curl -XPOST -d 'method1=objects.create&arg1={"name":"ФИО1", "parent_id":1, "tarif_id":1, "contract_number":"TEST_API1"}&method2=add_payment&arg2={"SUM_IN": "10"}' http://169.254.80.82:8082/rest_api/v2/Abonents/ -D -
sqlexec "set list on; select id from abonents where contract_number='TEST_API1'" | awk ' {print $2} ' | sed '/^$/d' | while read line; do curl -XPOST -d 'method1=objects.create&arg1={"abonent_id":'$line', "login":"abonent2"}&method2=set_password&arg2={"psw":"1234","dontshow":false}' http://169.254.80.82:8082/rest_api/v2/Users/ -D -; done
{code}
# h5. Сделать приход 10 рублей абоненту с номером договора BILL0000021
{code}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 -{code}
# h5. Создать абонента ФИО abonent в директории с id 1 (Все), tarif_id 1 (Основной тариф) и балансом 10р
{code}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 -{code}
# h5. Установить абонентам из папки с id 1354 статус с id 26
{code}
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
{code}
# h5. Установить абоненту с номером договора BILL0000014 статус с id 26
{code}
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 -
{code}
# h5. Перенести всех неудаленных абонентов с тарифом, у которого id 1212 , в группу, у которой id 4911
{code}
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
{code}
# h5. Удаление абонента с ID 1234
Удалить абонента в корзину
{code}curl -XPOST -d 'method1=objects.get&arg1={"id": "1234"}&method2=delete&arg2={}' 'http://169.254.80.82:8082/rest_api/v2/Abonents/' -D -{code}
Удалить абонента в корзину и разорвать связть с подключенными услугами:
{code}curl -XPOST -d 'method1=objects.get&arg1={"id": "1234"}&method2=delete&arg2={"clean_links": "UsersUsluga"}' 'http://169.254.80.82:8082/rest_api/v2/Abonents/' -D -{code}
Удалить абонента и разорвать все связи: с учетными записями, подключенными услугами и тд.
{code}curl -XPOST -d 'method1=objects.get&arg1={"id": "1234"}&method2=delete&arg2={"clean_links": true}' 'http://169.254.80.82:8082/rest_api/v2/Abonents/' -D -{code}
# h5. Удаление всех абонентов, которые не являются папками, из папки 5293
{code}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{code}
# h5. Изменить массово тариф всем абонентам с тарифа 1137 на тариф 1134
{code}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{code}
# h5. Применить административную блокировку с комментарием "Блокировка" к абонентам, у которых баланс меньше 0
{code}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{code}
# h5. Убрать административную блокировку с абонента с id 1607 от имени администратора root
{code}
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 -
{code}
# h5. Убрать административную блокировку с абонентов, у которых баланс больше 0 от имени администратора root.
{code}
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
{code}
# h5. Применить добровольную блокировку
{code}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 -{code}
# h5. Применить административную блокировку с комментарием "Блокировка" к абоненту c id 1607
{note}Если у абонента нет услуг, которые можно заблокировать - блокировка применена не будет\!{note}
{code}
curl -XPOST -d 'method1=objects.get&arg1={"id":"1607"}&method2=block&arg2={"comment":"Блокировка"}' http://169.254.80.82:8082/rest_api/v2/Abonents/ -D -
{code}
# h5. Сторнирование услуг
В примере: массовое сторнирование по всем неудаленным абонентам за период с 1 января 2017 по 1 января 2018 года
{code}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 {code}
# h5. Сторнирование услуги id 230, дата списаний c 2023-08-17 по 2023-08-17, договор BILL00001.
{code}
curl -XPOST -d 'method1=objects.get&arg1={"contract_number":"BILL00001"}&method2=storno_credit&arg2={"sdate":"2023-08-17", "edate":"2023-08-17", "usluga_id": 230}' http://169.254.80.82:8082/rest_api/v2/Abonents/ -D -
{code}
# h5. Рассылка сообщения по населенному пункту.
{code}sqlexec "set heading off; select id from abonents where home_id in (select id from homes where CITY='Тихорецк') and deleted=0 and is_folder=0"| sed '/^$/d' | sed 's/ *//g' | while read line; do curl -XPOST -d 'method1=objects.get&arg1={"id": '$line'}&method2=send_message&arg2={"tmpl_id": "6", "send_date": "2019-04-08 12:30:00" }' 'http://169.254.80.82:8082/rest_api/v2/Abonents/' -D -; done{code}
# h5. Получить список абонентов со статусом "заблокирован или нет" (наличие блокировок в AbonentsBlock), поля: ID, Наименование/ФИО, статус
{code}curl -XPOST 'http://169.254.80.82:8082/rest_api/v2/Abonents/' -d 'method1=objects.filter&arg1={"is_folder":0}&fields=["id","name","allow_internet"]'{code}
# h5. Вывести данные по абоненту, у которого номер SMS для оповещений \+71234567899
{code}
curl -XPOST -d 'method1=objects.filter&arg1={"sms":"'%2B'71234567899"}' http://169.254.80.82:8082/rest_api/v2/Abonents/ -D -
{code}
# h5. Сменить абонентам с оператором связи ID 3 оператора связи с ID 1444
{code}sqlexec "set list; select id from abonents where operator_id=3 and id>3" | awk '$2{print $2}' | while read abon; do curl -XPOST 'http://169.254.80.82:8082/rest_api/v2/Abonents/' -d 'method1=objects.get&arg1={"id":'$abon'}&method2=set&arg2={"operator_id":1444}&method3=save&arg3={}'; done{code}
# h5. Установить абонентам в папке с ID 1405 галочку "Юр. лицо"
{code}
sqlexec "set list on; select id from abonents where parent_id=1405" | awk ' {print $2} ' | sed '/^$/d' | while read line; do curl -XPOST -d 'method1=objects.get&arg1={"id":'$line'}&method2=set&arg2={"company":"1"}&method3=save&arg3={}' 'http://169.254.80.82:8082/rest_api/v2/Abonents/' -D -; done
{code}
# h5. Снять абонентам в папке с ID 1405 галочку "Юр. лицо"
{code}
sqlexec "set list on; select id from abonents where parent_id=1405" | awk ' {print $2} ' | sed '/^$/d' | while read line; do curl -XPOST -d 'method1=objects.get&arg1={"id":'$line'}&method2=set&arg2={"company":false}&method3=save&arg3={}' 'http://169.254.80.82:8082/rest_api/v2/Abonents/' -D -; done
{code}
# h5. Восстановить абонента с id 1360 из корзины
{code}
curl -XPOST -d 'method1=objects.get&arg1={"id": "1360"}&method2=restore&arg2={}' 'http://169.254.80.82:8082/rest_api/v2/Abonents/' -D -
{code}
# h5. Задать абонету с id 101 токен 123456 для отправки PUSH уведомления
{code}
curl -XPOST -d 'method1=objects.get&arg1={"id":"101"}&method2=set&arg2={"push_token":"123456"}&method3=save&arg3={}'' http://169.254.80.82:8082/rest_api/v2/Abonents/ -D -
{code}
# h5. Перерасчитать абонента начиная с выбранного периода (обязательно указывать первое число месяца\!)
Перерасчет абонента с ID 1392 с июня 2019 года
{code}curl -XPOST 'http://169.254.80.82:8082/rest_api/v2/Abonents/' -d 'method1=objects.get&arg1={"id":"1392"}&method2=set&arg2={"need_recalc":"2019-06-01"}&method3=save&arg3={}'{code}
# h5. Перерасчитать абонентов на тарифе с id 1405, начиная с выбранного периода (обязательно указывать первое число месяца\!)
{code}sqlexec "set list on; select id from abonents where tarif_id=1405" | awk ' {print $2} ' | sed '/^$/d' | while read line; do curl -XPOST -d 'method1=objects.get&arg1={"id":'$line'}&method2=set&arg2={"need_recalc":"2019-06-01"}&method3=save&arg3={}' 'http://169.254.80.82:8082/rest_api/v2/Abonents/' -D -; done{code}
# h5. Получение данных об операторе, обслуживающем абонента
{code}curl -XPOST 'http://169.254.80.82:8082/rest_api/v2/Abonents/' -d 'method1=objects.filter&arg1={"id":1111}&fields=["operator"]'{code}
# h5. Отключение автоплатежа
{code}curl -XPOST 'http://169.254.80.82:8082/rest_api/v2/Abonents/' -d 'method1=objects.get&arg1={"id":"1385"}&method2=set&arg2={"autopay_pay_log_id":null}&method3=save&arg3={}'{code}
# h5. В карточке абонента установить линейку услуг с id 18 абонентам на тарифе с id 1236
{code} sqlexec "set list on; select distinct id from abonents where tarif_id=1236" | awk ' {print $2} ' | sed '/^$/d' | while read line; do curl -XPOST -d 'method1=objects.get&arg1={"id":'$line'}&method2=set&arg2={"usluga_range_type_id":"18"}&method3=save&arg3={}' http://169.254.80.82:8082/rest_api/v2/Abonents/ -D -; done {code}
# h5. Изменить дату активации множеству абонентов у которых отсутствует дата начала предоставления услуг
Ищем абонентов по sql-запросу и применяем новую дату активации абонента 01.02.2021
{code}
#!/bin/bash

#Получить ID абонентов где пустое поле даты начала предоставления услуг, также в выборку не попадут абоненты из каталогов 2,244
get_id(){
return_id=`sqlexec "set heading off;
select a.id from abonents a where a.activate_date is null and a.is_folder=0 and a.deleted=0 and a.id>0 and a.parent_id not in(2,244)" | sed '/^$/d' | sed 's/ *//g' `
echo $return_id
}
for id in `get_id`
do
echo $id
# установка новой даты активации абонента
curl -XPOST -d 'method1=objects.get&arg1={"id":'$id'}&method2=change_activation_date&arg2={"new_date":"2021-02-01"}' http://169.254.80.82:8082/rest_api/v2/Abonents/ -D -;
sleep 10
echo "Done"
wait
done
{code}
# h5. Получить минимальный платеж для разблокировки по абоненту с ID 3612
{code}
curl -XPOST 'http://169.254.80.82:8082/rest_api/v2/Abonents/' -d 'method1=objects.filter&arg1={"id":"3612"}&fields=["minimal_pay_sum"]'
{code}
# h5. Установить всем абонентам из папки с id 1498 дом с id 1213
{code}
sqlexec "set list on; select id from abonents where parent_id=1498" | awk ' {print $2} ' | sed '/^$/d' | while read line; do curl -XPOST -d 'method1=objects.get&arg1={"id":'$line'}&method2=set&arg2={"home_id":"1213"}&method3=save&arg3={}' http://169.254.80.82:8082/rest_api/v2/Abonents/ -D -; done
{code}
# h5. Найти абонента по полю "Номер SMS для оповещений" (используется в авторизации [24hTV|CarbonBilling:Интеграция с 24hTV (24часаТВ)])
В примере номер телефона "79121231234"
{code}jq . <(curl -ss 'http://169.254.80.82:8082/rest_api/v2/Abonents/' -d 'method1=objects.filter&arg1={"sms":"'%2B'79121231234","deleted":false}&fields=["pk"]' ){code}
# h5. Найти абонента по IP-адресу (используется в авторизации [24hTV|CarbonBilling:Интеграция с 24hTV (24часаТВ)])
В примере IP "172.16.0.4"
{code}jq . <(curl -ss 'http://169.254.80.82:8082/rest_api/v2/Abonents/' -d 'method1=objects.filter&arg1={"abonent_id_users__ip":"172.16.0.4","abonent_id_users__deleted":false,"deleted":false}&fields=["pk"]'){code}
# h5. Найти абонента по полю "Внешний ИД" из учётной записи (используется в авторизации [24hTV|CarbonBilling:Интеграция с 24hTV (24часаТВ)])
В примере Внешний ИД "332112312"
{code}jq . <(curl -ss 'http://169.254.80.82:8082/rest_api/v2/Abonents/' -d 'method1=objects.filter&arg1={"abonent_id_users__ext_id":"332112312","abonent_id_users__deleted":false,"deleted":false}&fields=["pk"]'){code}
# h5. Необходимо определить абонентов, у кого в поле email указан некорректный адрес. Сейчас настроен отбор следующего формата '%@%' : Если адрес не соответствует формату(ххххх@хххххх) то поле будет очищено.
{code}sqlexec "set heading off; select id from abonents a where email not like '%@%' and a.is_folder=0" | sed '/^$/d' | sed 's/ *//g' | while read -r id;
do curl -XPOST -d 'method1=objects.get&arg1={"id":"'$id'"}&method2=set&arg2={"email":""}&method3=save&arg3={}' http://169.254.80.82:8082/rest_api/v2/Abonents/ -D -; done{code}
# h5. Получить значение поля "Хватит денег до" для абонента с id 1385
{code}curl -XPOST -d 'method1=objects.get&arg1={"id":"1385"}&fields=["until_date"]' http://169.254.80.82:8082/rest_api/v2/AbonentsCache/ -D -{code}
# h5. Изменить SNAT адрес у абонентов с пулом ip адресов (указать ID пула)
{code}
sqlexec "set list on; select u.id from users u where PULL_ID=16" | awk ' {print $2} ' | sed '/^$/d' | while read line; do curl -XPOST -d 'method1=objects.get&arg1={"id":'$line'}&method2=set&arg2={"snatip":"Новый_ip_адрес"}&method3=save&arg3={}' http://169.254.80.82:8082/rest_api/v2/Users/ -D -; done
{code}

h3. Реквизиты

# h5. Вывести информацию о реквизите 1006:
{code}
curl -XPOST -d 'method1=objects.get&arg1={"pk":"1006"}' 'http://169.254.80.82:8082/rest_api/v2/UserAttributes/' -D -
{code}
# h5. По абоненту с id=1383 вывести значение реквизита с id=26
{code}
curl -XPOST -d 'method1=objects.filter&arg1={"abonent":"1383", "attribute":"26"}' http://<ip-биллинга>:8082/rest_api/v2/AttributeValues/ -D -
{code}
# h5. Добавить абоненту с id 100 атрибут, который имеет id 200 со значением 300
{code}
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"}'
{code}
BASH скрипт, который добавляет физ.лицам атрибут, который имеет id 200 со значением 300
{code}
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
{code}
# h5. Добавить отсутствующий реквизит тем абонентам, у которых его еще нет.
Используем BASH - скрипт
{code}
#!/bin/bash
# Определить список абонентов, у кого отсутствует нужный реквизит, в данном примере 27 (исключим из отбора каталоги 2("Операторы"),244("Служебная группа"),4("Корзина"))
ab_id=$(sqlexec "set heading off; select distinct a.id from abonents a where a.id not in (select av.abonent_id from ATTRIBUTE_VALUES av where av.ATTRIBUTE_ID=27) and a.deleted=0 and a.parent_id not in (2,244,4) and A.IS_FOLDER = 0 and A.ID>0" )
#Вывести его на печать
echo $ab_id
#Каждому абоненту из списка добавить реквизит 27
for i in $ab_id
do curl -XPOST -d 'method1=objects.create&arg1={"abonent_id":"'$i'","attribute_id":"27"}' http://169.254.80.82:8082/rest_api/v2/AttributeValues/ -D -;
#Пауза 2 сек. для обработки события в БД, можно исключить.
sleep 2
done
{code}
# h5. Для получения данных из реквизитов Вы можете выполнить следующий запрос:
{code}
curl -XPOST -d 'method1=objects.filter&arg1={"attribute_id":"14", "abonent_id":"1363"}' 'http://169.254.80.82:8082/rest_api/v2/AttributeValues/' -D -
{code}
# h5. Создать список "автоматических" атрибутов для абонента. Удалит пустые:
{code}
curl -XPOST -d 'method1=objects.get&arg1={"id":"1376"}&method2=init_userattributes&arg2={}' http://169.254.80.82:8082/rest_api/v2/Abonents/ -D -
{code}
В данном случае:
*14* \- id реквизита паспорт серия
*1363* \- id абонента
# h5. Удалить все незаполненные реквизиты у абонентов
{code}sqlexec "set list on; select id from attribute_values where coalesce(attribute_value,'')=''" | awk ' {print $2} ' | sed '/^$/d' | while read line; do curl -XPOST -d 'method1=objects.get&arg1={"id":'$line'}&method2=delete' http://169.254.80.82:8082/rest_api/v2/AttributeValues/ -D - ; done {code}
# h5. Включить в настройках реквизита опцию "Создавать автоматически для физ.лица" и выключить опцию "Создавать автоматически для юр.лица"
{code}curl -ss http://169.254.80.82:8082/rest_api/v2/UserAttributes/ -d 'method1=objects.get&arg1={"pk":-219000}&method2=set&arg2={"default_individual":1,"default_person":false}&method3=save'{code}
# h5. Работа с уже созданными реквизитами.
## Получим списаок значений по id реквизита и абонета. Может быть больше 1.
{code}
curl -XPOST -d 'method1=objects.filter&arg1={"attribute_id":"1006", "abonent_id":"1325"}' 'http://169.254.80.82:8082/rest_api/v2/AttributeValues/' -D -
{code}
Вывод
{code}
{"call": "/rest_api/v2/AttributeValues/", "result": [{"pk": 59613, "model": "AttributeValues", "fields": {"attribute_id": 1006, "abonent_id": 1325, "user_id": null, "attribute_value": "Inktech Group LTD"}}, {"pk": 59053, "model": "AttributeValues", "fields": {"attribute_id": 1006, "abonent_id": 1325, "user_id": null, "attribute_value": ""}}]}
{code}
## Возьмём id значения реквизита "pk": 59613. Далее работаем по нему. Например изменим значение.
## Изменим значение на Heaven Life Properties LTD
{code}
curl -XPOST -d 'method1=objects.get&arg1={"pk": "59613"}&method2=set&arg2={"attribute_value":"Heaven Life Properties LTD"}&method3=save&arg3={}' 'http://169.254.80.82:8082/rest_api/v2/AttributeValues/' -D -
{code}
## Удалим реквизит с ID 59613
{code}
curl -XPOST 'http://169.254.80.82:8082/rest_api/v2/AttributeValues/' -d 'method1=objects.get&arg1={"pk":59613}&method2=delete'
{code}

h3. Учётные записи

# h5. Получить данные по учетным записям абонента с id 1234
{code}
curl -XPOST -d 'method1=objects.filter&arg1={"abonent__pk":"1234"}' 'http://169.254.80.82:8082/rest_api/v2/Users/' -D -
{code}
# h5. Установить абоненту с номером учетной записи 1361 коммутатор с IP 1.1.1.1
1. Получаем id коммутатора по IP
# h5. Установить абоненту с номером учетной записи 1361 галочку opt82
{code}
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/ http://169.254.80.82:8082/rest_api/v2/Users/ -D -
{code}
# h5. Установить абоненту с номером учетной записи 1361 порт номер 8 коммутатора 2.2.2.2
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 -
{code}
# h5. Установить абоненту с id 1321 заявку на смену тарифа с именем "Другой" на 2016-05-26
1. Получаем id тарифа по имени
# h5. Поменять всем абонентам из папки с id 1000 snat_pull на snat_pull с id 1030 и выделить новый snat адрес из пула
{code}
curl -XPOST -d 'method1=objects.get&arg1={"name":"Другой"}' http://<ip-биллинга>:8082/rest_api/v2/tarif/ -D -
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={"snatip":"","snat_pull":"1030"}&method3=save&arg3={}' http://169.254.80.82:8082/rest_api/v2/Users/ -D -; done
{code}
В поле pk получаем id тарифа, в данном случае 1119
2. Добавляем заявку на смену и дату смены
# h5. Изменить пул выдачи ip-адресов на pull 6 в учетной записи user 324 и выдать новый ip
{code}sqlexec "set list on; select u.id from users u left join abonents a on a.id=u.abonent_id where u.id=324" | awk ' {print $2} ' | sed '/^$/d' | while read line; do curl -XPOST -d 'method1=objects.get&arg1={"id":'$line'}&method2=set&arg2={"ip":"","pull":"6"}&method3=save&arg3={}&fields=["ip", "pull"]' http://169.254.80.82:8082/rest_api/v2/Users/ -D - ; done
{code}
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
# h5. Поменять всем учетным записям дополнительный параметр opt82 со 100 на 3100
{code}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{code}
# h5. Установить учетной записи с id 1418 nas c id 1116.
{code}
# h5. Создание абонента и добавление ему учетной записи
1. Создаем абонента abonent с тарифом Основной(id=1) в группе Все (id=1)
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 -
{code}
curl -XPOST -d 'method1=objects.create&arg1={"name":"abonent", "parent_id":1, "tarif_id":1}' http://<ip-биллинга>:8082/rest_api/v2/Abonents/ -D -
# h5. Установить всем учетным записям абонентов из папки 1358 nas c id 1115.
{code}
В поле pk получаем id абонента. В данном случае id 1339
2. Необходимо подождать, пока биллинг обработает запрос. В зависимости от производительности 5-10 секунд.
3. Создаем учетную запись по id абонента, указывая логин abonent1.
sqlexec "set list on; select id from users where abonent_id in (SELECT abonent_id FROM GLN_RECURSIVE_ABONENTS_GET(1358))" | awk ' {print $2} ' | sed '/^$/d' | while read line; do curl -XPOST -d 'method1=objects.get&arg1={"id":'$line'}&method2=set&arg2={"nas_id":"1115"}&method3=save&arg3={}' http://169.254.80.82:8082/rest_api/v2/Users/ -D -; done
{code}
curl -XPOST -d 'method1=objects.create&arg1={"abonent_id":"1339", "login":"abonent1"}' http://<ip-биллинга>:8082/rest_api/v2/Users/ -D -
# h5. Установить всем абонентам из папки id 1386 пул ip-адресов с id 1003 и выдать новый ip-адрес из пула
{code}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{code}
# h5. Смена пароля учетной записи
## h6. Установить определенный пароль:
{code}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}'{code}
*psw* \- новый пароль
*dontshow* \- +false+ чтобы пароль сохранился в открытом виде и отображался в администраторской панели, +true+ \- чтобы не отображался.
## h6. Сгенерировать случайный пароль:
Сделайте два запроса: первым уберите пароль абонента, вторым инициируйте сохранение учетной записи:
{code}
Пароль при этом генерирует биллинг.
# h5. Получить данные по учетным записям абонента
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}&method2=save&arg2={}'
{code}
curl -XPOST -d 'method1=objects.filter&arg1={"abonent__pk":"1234"}' 'http://169.254.80.82:8082/rest_api/v2/Users/' -D -
# h5. Для проверки корректности логин/пароль у абонента в биллинге, необходимо использовать специальную функцию checkpass.
Для этого необходимо знать id учетной записи абонента. В данном случае id абонента 1111 и пароль 8fqm11
{code}curl -XPOST -d 'method1=objects.get&arg1={"id":1111}&method2=check_pass&arg2={"passwd":"8fqm11"}' http://169.254.80.82:8082/rest_api/v2/Users/ -D -
{code}
# h5. Получить логин, ip адрес, название атрибута в тарифе абонента, значение атрибута в тарифе абонента по незаблокированным абонентам
Функция возвращает значение true или false
# h5. Удаление учетной записи.
{code}
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"]'
curl -XPOST -d 'method1=objects.get&arg1={"id":6242}&method2=delete&arg2={"clean_links": true}' http://169.254.80.82:8082/rest_api/v2/Users/ -D -
{code}
# h5. Добавить абоненту с id 100 атрибут, который имеет id 200 со значением 300
Аргумент "clean_links" обязателен.
# h5. Получить данные учетной записи абонента, авторизованного в личном кабинете, по идентификатору сессии suid
{code}curl "http://169.254.80.82:8082/rest_api/v2/Users/" -d 'method1=get_user_by_suid&arg1={"suid": "144997776676316356"}'{code}
# h5. Поменять учетной записи с id 1395 snatip на 8.8.8.8
{code}
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"}'
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 -
{code}
BASH скрипт, который добавляет физ.лицам атрибут, который имеет id 200 со значением 300
# h5. Удалить IP адрес у абонентов в корзине
1. Удаляем пул ip адресов в учетных записях удаленных абонентов
{code}
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
sqlexec "set list on; select u.id from users u left join abonents a on a.id=u.abonent_id where a.deleted=1" | awk ' {print $2} ' | sed '/^$/d' | while read line; do curl -XPOST -d 'method1=objects.get&arg1={"id":'$line'}&method2=set&arg2={"pull_id":null}&method3=save&arg3={}' http://169.254.80.82:8082/rest_api/v2/Users/ -D - ; done
{code}
# h5. Отправить абоненту id 1313 сообщение по шаблону с id 1 методом sms-оповещения
{code}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 -{code}
# h5. Сделать приход 10 рублей абоненту с номером договора BILL0000021
{code}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 -{code}
# h5. Создать абонента ФИО abonent в директории с id 1 (Все), tarif_id 1 (Основной тариф) и балансом 10р
{code}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 -{code}
# h5. Ввод начальных остатков/синхронизация балансов. Установить абоненту с id 1111 баланс бухгалтерский в объёме 50.5р, комментарий к финансовой операции "Миграция балансов"
{code}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 -{code}
# h5. Ввод начальных остатков в зависимости от номера договора. В примере указан номер договора 'test'. Номер договора обязательно должен быть экранирован кавычками ''.
2. Удаляем ip адрес в учетных записях удаленных абонентов
{code}
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
sqlexec "set list on; select u.id from users u left join abonents a on a.id=u.abonent_id where a.deleted=1" | awk ' {print $2} ' | sed '/^$/d' | while read line; do curl -XPOST -d 'method1=objects.get&arg1={"id":'$line'}&method2=set&arg2={"ip":""}&method3=save&arg3={}' http://169.254.80.82:8082/rest_api/v2/Users/ -D - ; done
{code}
# h5. Добавление дома в справочник "Дома". Дом будет создан с адресом г.Москва Ленина 5
{code}curl -XPOST -d 'method1=objects.create&arg1={"city":"Москва", "street":"Ленина", "s_number":'5'}' http://169.254.80.82:8082/rest_api/v2/Homes/ -D{code}
# h5. Добавления пула домов с помощью Bash скрипта. Будет создано 5 домов :1,2,3,4,5 c адресом г. Москва Ленина 1, г. Москва Ленина 2 и т.д. X - номер первого дома в пуле.
{code}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{code}
# h5. Удаление всех неиспользуемых домов
# h5. Установить абоненту с ID 2487 пул IP-адресов с ID 1009
{code}
sqlexec "set list; select H.id from abonents A right join homes H on A.home_id = H.id where A.home_id is null" | 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/Homes/' -D -; done
curl -ss -XPOST -d 'method1=objects.get&arg1={"id":2487}&method2=set&arg2={"ip_pull":1009}&method3=save&arg3={}' http://169.254.80.82:8082/rest_api/v2/Abonents/ -D -
{code}
# h5. Сменить всем учетным записям, не удалённым, с IP-адресами, и авторизующимся по ip static (auth_type=1), тип авторизации на "любая через RADIUS" (auth_type=6),
{code}
sqlexec -l "select id from users u where u.deleted=0 and u.ip is not null and u.auth_type=1" | awk '$2{print $2}' | while read user_id; do curl -ss -XPOST -d 'method1=objects.get&arg1={"id":'$user_id'}&method2=set&arg2={"auth_type":6}&method3=save&arg3={}' http://169.254.80.82:8082/rest_api/v2/Users/ -D -; done
{code}
# h5. Получить пароль учетной записи по id.
{code}
curl -XPOST -d 'method1=objects.get&arg1={"id":"2473"}&fields=["gen_pwd"]' http://169.254.80.82:8082/rest_api/v2/Users/ -D -
{code}
# h5. Установить опцию "Привязать пользователей к этому NAS" для учетных записей абонентов, находящихся в папке с id 1358
{code}
sqlexec "set list on; select id from users where abonent_id in (SELECT abonent_id FROM GLN_RECURSIVE_ABONENTS_GET(1358))" | awk ' {print $2} ' | sed '/^$/d' | while read line; do curl -XPOST -d 'method1=objects.get&arg1={"id":'$line'}&method2=set&arg2={"nas_ip_lock":"1"}&method3=save&arg3={}' http://169.254.80.82:8082/rest_api/v2/Users/ -D -; done
{code}
h3. Блокировки абонента

# h5. Список абонентов блокировкой negbal, выводим логин и IP адерес.
{code}curl -XPOST -d 'method1=objects.filter&arg1={"abonent__deleted": 0, "abonent__abonent_id_abonentsblock__b_negbal": 1 }&method2=distinct&fields=["login", "ip"]' "http://169.254.80.82:8082/rest_api/v2/Users/" -D -{code}
# h5. Работа с блокировками абонентов и их историей
Получить ID текущих блокировок по балансу абонента с ID 1392
{code}curl -XPOST 'http://169.254.80.82:8082/rest_api/v2/AbonentsBlock/' -d 'method1=objects.filter&arg1={"abonent_id":1392,"b_negbal":1}&fields=["id"]'{code}
Снять блокировку с ID 243068
{code}curl -XPOST 'http://169.254.80.82:8082/rest_api/v2/AbonentsBlock/' -d 'method1=objects.get&arg1={"id":243068}&method2=delete'{code}
Получить ID блокировок абонента ID 1392 измененных с 1 по 30 июня 2019 года
{code}curl -XPOST 'http://169.254.80.82:8082/rest_api/v2/AbonentsBlockHistory/' -d 'method1=objects.filter&arg1={"abonent_id":1392,"b_negbal":1,"time_changed__range":["2019-06-01", "2019-06-30"]}&fields=["id"]'{code}
Получить ID блокировок абонента ID 1392 снятых с 1 по 30 июня 2019 года
{code}curl -XPOST 'http://169.254.80.82:8082/rest_api/v2/AbonentsBlockHistory/' -d 'method1=objects.filter&arg1={"abonent_id":1392,"b_negbal":1,"time_del__range":["2019-06-01", "2019-06-30"]}&fields=["id"]'{code}
Изменить запись в истории блокировок ID 118, установить время изменения и снятия на 1 июня 2019 года
{code}curl -XPOST 'http://169.254.80.82:8082/rest_api/v2/AbonentsBlockHistory/' -d 'method1=objects.get&arg1={"id":118}&method2=set&arg2={"time_changed":"2019-06-01 00:00:00","time_del":"2019-06-01 00:00:00"}&method3=save'{code}

h3. Лицевой счёт

# h5. Получение баланса по абоненту.
{code}curl -XPOST -d 'method1=objects.get&arg1={"account_id_abonents":"<ID-абонента>"}&fields=["balance"]' http://<ip-биллинга>:8082/rest_api/v2/AdminAccounts/ -D -{code}
Вариант 2
{code}curl -XPOST -d 'method1=objects.get&arg1={"id":"номер лицевого счета"}&fields=["balance"]' http://<ip-биллинга>:8082/rest_api/v2/AdminAccounts/ -D -{code}
# h5. Установка значения в поле "Порог отключения"
{code}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 -{code}
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
{code}
# h5. Установить абоненту c id 2003 опцию "Не отключать при превышении порога"
{code}
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 -
{code}
# h5. Установить всем абонентам с блокировкой по отрицательному балансу и балансом больше, чем 2, опцию "Не отключать при превышении порога"
{code}
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
{code}
# h5. Выставить всем абонентам из папки с id 1433 порог отключения '-5000'
{code}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{code}
# h5. Установка значения в поле "Порог предупреждения" всем абонентам в соответствии со значением в тарифе с помощью bash скрипта.
{code}
sqlexec "set heading off; select a.id, cast(t.USERS_LIMIT_WARNING as numeric(10,2))/10000000000 from abonents a left join tarif t on a.tarif_id=t.id left join admin_accounts aa on a.account_id = aa.id where t.USERS_LIMIT_WARNING != aa.LIMIT_WARNING" | sed '/^$/d' | while read abonent_id sum; do curl -XPOST -d 'method1=objects.get&arg1={"account_id_abonents":'$abonent_id'}&method2=set&arg2={"limit_warning":'$sum'}&method3=save&arg3={}' http://169.254.80.82:8082/rest_api/v2/AdminAccounts/ -D -; done
{code}
# h5. Получить полный лог звонков абонентов за указанный период (включая обе даты)
{code}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 -{code}
# h5. Поменять учетной записи с id 1395 snatip на 8.8.8.8
# h5. Установка порога отключения на сумма тарифа + 1 всем абонентам из папки.
{code}sqlexec "set heading off; select distinct a.id ||' ' || (round(u.SUMMA / cast((select CONST_VALUE from VPN_CONST where CONST_ID = 1) as numeric(18,5)), 2)+1 ) from abon LEFT JOIN TARIF_USERS_USLUGA tus ON tus.TARIF_ID=t.ID LEFT JOIN USLUGA u ON u.ID=tus.USLUGA_ID where a.parent_id=89" | while read -r a b; do curl -XPOST -d 'method1=objects.get&arg1={"account_id_abonents":'$a'}&method2=set&arg2={"limit":'$b'}&method3=save&arg3={}' http://169.254.80.82:8082/rest_api/v2/AdminAccounts/ -D -; done
{code}
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 -
# h5. Всем абонентам из папки 14724, у которых выставлена опция "Не отключать при превышении порога" отключить опцию "Не отключать при превышении порога"
{code}
# h5. Поменять всем абонентам из папки с id 1000 snat_pull на snat_pull с id 1030 и выделить новый snat адрес из пула
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 aa.unlimited=1 and a.parent_id=14724" | awk ' {print $2} ' | sed '/^$/d' | while read line; do curl -XPOST -d 'method1=objects.get&arg1={"account_id_abonents":'$line'}&method2=set&arg2={"unlimited":false}&method3=save&arg3={}' http://169.254.80.82:8082/rest_api/v2/AdminAccounts/ -D -; done
{code}
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={"snatip":"","snat_pull":"1030"}&method3=save&arg3={}' http://169.254.80.82:8082/rest_api/v2/Users/ -D -; done
# h5. Добавить абоненту с ID 2566 и лицевым счётом 10002566 тысячу бонусных баллов
{code}
# h5. Изменить пул выдачи ip-адресов на pull 6 в учетной записи user 324 и выдать новый ip
{code}sqlexec "set list on; select u.id from users u left join abonents a on a.id=u.abonent_id where u.id=324" | awk ' {print $2} ' | sed '/^$/d' | while read line; do curl -XPOST -d 'method1=objects.get&arg1={"id":'$line'}&method2=set&arg2={"ip":"","pull":"6"}&method3=save&arg3={}&fields=["ip", "pull"]' http://169.254.80.82:8082/rest_api/v2/Users/ -D - ; done
curl -XPOST -d 'method1=objects.create&arg1={"bonus_score":1000,"abonent_id":2566,"account_id":10002566}' http://169.254.80.82:8082/rest_api/v2/AccountStack/ -D -
{code}
# h5. Поменять всем учетным записям дополнительный параметр opt82 со 100 на 3100
{code}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{code}
# h5. Установить абоненту с номером договора BILL0000014 статус с id 26
Если нужно убавить бонусные баллы, то введите отрицательное значение:
{code}
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/' 'method1=objects.create&arg1={"bonus_score":-1000,"abonent_id":2566,"account_id":10002566}' http://169.254.80.82:8082/rest_api/v2/AccountStack/ -D -
{code}
# h5. Установить абонентам из папки с id 1354 статус с id 26
Чтобы обновить информацию об абоненте в веб-интерфейсе обновим кэш:
{code}
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
curl -XPOST -d 'method1=objects.get&arg1={"id":2566}&method2=set&arg2={"need_refresh_cache":1}&method3=save&arg3={}' http://169.254.80.82:8082/rest_api/v2/Abonents/ -D -
{code}
# h5. Установить учетной записи с id 1418 nas c id 1116.
Отменить операцию добавления/вычитания баллов можно сторнировав её:
{code}
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/ 'method1=objects.get&arg1={"id":7885702}&method2=storno_it' http://169.254.80.82:8082/rest_api/v2/ArchAccountStack/ -D -
{code}
# h5. Установить всем учетным записям абонентов из папки 1386 nas c id 1116.
# h5. Получить детальную информацию по расходам абонента на интернет, телефонию и другие услуги за определённый период времени
## [Вкладка "Расход", таблица "Расход"|CarbonBilling:Счетчики услуг. Вкладка "Расход".]
{code}
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
curl -XPOST -d 'method1=objects.filter&arg1={"abonent_id":"1242","s_date__range":["2018-10-01", "2018-11-01"]}' http://169.254.80.82:8082/rest_api/v2/Counters/ -D -
{code}
# h5. Установить всем абонентам из папки id 1386 пул ip-адресов с id 1003 и выдать новый ip-адрес из пула
{code}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{code}
# h5. Добавить всем абонентам с блокировкой по отрицательному балансу и балансом меньше, чем '-1' приход 600 рублей
{code}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{code}
# h5. Установить абоненту c id 2003 опцию "Не отключать при превышении порога"
## [Детализация списаний за период|CarbonBilling:Детализация расхода]
{code}
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 -
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 -
{code}
# h5. Установить всем абонентам с блокировкой по отрицательному балансу и балансом больше, чем 2, опцию "Не отключать при превышении порога"
# h5. Изменить валюту счета
{code}
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
curl -XPOST -d 'method1=objects.get&arg1={"account_id_abonents":"id абоненета"}&method2=set&arg2={"currency":"id валюты"}&method3=save&arg3={}' http://169.254.80.82:8082/rest_api/v2/AdminAccounts/ -D -
{code}
# h5. Перенести всех неудаленных абонентов с тарифом, у которого id 1212 , в группу, у которой id 4911

h3. Финансовые операции

# h5. Ввод начальных остатков/синхронизация балансов. Установить абоненту с id 1111 баланс бухгалтерский в объёме 50.5р, комментарий к финансовой операции "Миграция балансов"
{code}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 -{code}
# h5. Ввод начальных остатков в зависимости от номера договора. В примере указан номер договора 'test'. Номер договора обязательно должен быть экранирован кавычками ''.
{code}
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
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
{code}
# h5. Удаление абонента с ID 1234
Удалить абонента в корзину
{code}curl -XPOST -d 'method1=objects.get&arg1={"id": "1234"}&method2=delete&arg2={}' 'http://169.254.80.82:8082/rest_api/v2/Abonents/' -D -{code}
Удалить абонента в корзину и разорвать связть с подключенными услугами:
{code}curl -XPOST -d 'method1=objects.get&arg1={"id": "1234"}&method2=delete&arg2={"clean_links": "UsersUsluga"}' 'http://169.254.80.82:8082/rest_api/v2/Abonents/' -D -{code}
Удалить абонента и разорвать все связи: с учетными записями, подключенными услугами и тд.
{code}curl -XPOST -d 'method1=objects.get&arg1={"id": "1234"}&method2=delete&arg2={"clean_links": true}' 'http://169.254.80.82:8082/rest_api/v2/Abonents/' -D -{code}
# h5. Удаление всех абонентов, которые не являются папками, из папки 5293
{code}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{code}
# h5. Выставить всем абонентам из папки с id 1433 порог отключения '-5000'
{code}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{code}
# h5. Изменить массово тариф всем абонентам с тарифа 1137 на тариф 1134
{code}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{code}
# h5. Применить административную блокировку с комментарием "Блокировка" к абоненту c id 1607
{note}Если у абонента нет услуг, которые можно заблокировать - блокировка применена не будет\!{note}
# h5. Получение данных о счете абонента
1) Выведем общую сумму к оплате, дату выставления,номер счёта и период, также в запросе мы увидим pk (это id счёта, у нас он - 13707416)
{code}curl -XPOST 'http://169.254.80.82:8082/rest_api/v2/FinanceOperations/' -d 'method1=objects.filter&arg1={"abonent_id":6019,"op_type":5}&fields=["op_summa", "op_date", "number", "period_end_date"]'{code}
2) Подставляем айди полученного счёта (pk из предыдущего запроса подставляем как finance_operation_id), увидим список услуг, количество единиц, названия и суммы.
{code}curl -XPOST 'http://169.254.80.82:8082/rest_api/v2/FinanceOperationsDetail/' -d 'method1=objects.filter&arg1={"finance_operation_id":13707416}&fields=["usluga", "unit", "vv", "price", "name"]'{code}
# h5. Сторнировать все синхронизированные c 1C финансовые операции
{code}
curl -XPOST -d 'method1=objects.get&arg1={"id":"1607"}&method2=block&arg2={"comment":"Блокировка"}' http://169.254.80.82:8082/rest_api/v2/Abonents/ -D -
sqlexec "set list on; select op_id from finance_operations where code1c!='' and storno=0" | awk ' {print $2} ' | sed '/^$/d' | while read line; do curl -XPOST -d 'method1=objects.get&arg1={"op_id": '$line'}&method2=storno_op&arg2={"extra_descr": "Test_1C_Sync"}' 'http://169.254.80.82:8082/rest_api/v2/FinanceOperations/' -D - ; done
{code}
# h5. Применить административную блокировку с комментарием "Блокировка" к абонентам, у которых баланс меньше 0
{code}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{code}
# h5. Убрать административную блокировку с абонента с id 1607 от имени администратора root
# h5. Сменить дату выставления акта в карточке абонента для выставления счета абоненту (см. [Ручное выставление счета|https://docs.carbonsoft.ru/pages/viewpage.action?pageId=138477590#Счетнапредоплату-Каквыставитьсчётвручную%3F])
Параметр *parent_id* \- ID-каталога в котором находятся абоненты.
{code}
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 -
sqlexec "set list on; select distinct id from abonents where parent_id=1408" | awk ' {print $2} ' | sed '/^$/d' | while read line; do curl -XPOST -d 'method1=objects.get&arg1={"id":'$line'}&method2=set&arg2={"next_auto_acount":"2021-05-18"}&method3=save&arg3={}' http://169.254.80.82:8082/rest_api/v2/Abonents/ -D -; done
{code}
# h5. Убрать административную блокировку с абонентов, у которых баланс больше 0 от имени администратора root.

h3. Услуги

# h5. Подключить обещанный платёж
{code}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 -{code}
*manager_id* \- это ID администраторов, получить их список можно так:
{code}curl -XPOST -d 'method1=objects.filter' http://169.254.80.82:8082/rest_api/v2/DjangoUsersProfile/ -D -{code}
# h5. Удаление услуги
В примере: массовое удаление [автоматический подключенных обещанных платежей по льготному периоду|CarbonBilling:Льготный период оплаты]
{code}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{code}
# h5. Привязать услугу с id 105 к оператору связи с id 3
{code}
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
curl -XPOST -d 'method1=objects.get&arg1={"id":"105"}&method2=set&arg2{"operator_id":"3"}&method3=save&arg3={}' 'http://169.254.80.82:8082/rest_api/v2/Usluga/' -D -
{code}
# h5. Получить детальную информацию по расходам абонента на интернет, телефонию и другие услуги за определённый период времени
## [Вкладка "Расход", таблица "Расход"|CarbonBilling:Счетчики услуг. Вкладка "Расход".]
# h5. Назначить новую дату "Cледующего списания" по подключенной услуге 127 на 13.09.2020 у абонента 94
{code}
curl -XPOST -d 'method1=objects.get&arg1={"abonent_id":94, "usluga_id":"127"}&method2=set&arg2={"next_date":"2020-09-13 00:00:00"}&method3=save&arg3={"allow_set_none_manager":true}' http://169.254.80.82:8082/rest_api/v2/UsersUsluga/ -D -;
{code}
# h5. Удалить все версии услуги с ID 167
ID услуги указывается в переменной usluga_id в начале скрипта.
{code}
usluga_id=167; sqlexec -l "select id from usluga_history where usluga_id=$usluga_id" | awk '$2{print $2}' | while read usluga_version_id; do curl -XPOST 'http://169.254.80.82:8082/rest_api/v2/UslugaHistory/' -d 'method1=objects.get&arg1={"id":'$usluga_version_id'}&method2=delete'; done
{code}
# h5. Назначить новую дату списания на 13.09.2020 услуге, которая имеет статус "включена" у абонента с id 9135.
{code}
sqlexec "set list on;select uu.id from users_usluga uu join abonents a on uu.abonent_id=a.id where a.id=9135 and uu.enabled=1 " | awk ' {print $2} ' | sed '/^$/d' | while read line; do curl -XPOST -d 'method1=objects.get&arg1={"id":'$line'}&method2=set&arg2={"next_date":"2020-09-13 00:00:00"}&method3=save&arg3={"allow_set_none_manager":true}' 'http://169.254.80.82:8082/rest_api/v2/UsersUsluga/' -D -; done
{code}
# h5. Подключить всем абонентам физ.лицам, у которых она не подключена, услугу с ID 234
{code}
sqlexec "set list; select id from abonents where is_folder=0 and deleted=0 and company=0 and id not in (select abonent_id from users_usluga where usluga_id=234)" | awk ' {print $2} ' | sed '/^$/d' | while read line; do curl -XPOST -d 'method1=objects.create&arg1={"abonent_id":'$line',"usluga_id":234,"manager_id": 33}' http://169.254.80.82:8082/rest_api/v2/UsersUsluga/ -D -; done
{code}
# h5. Вывести название услуг, примечание и комментарий к услугам, подключенным абоненту 1360
{code}
curl -XPOST 'http://169.254.80.82:8082/rest_api/v2/UsersUsluga/' -d 'method1=objects.filter&arg1={"abonent_id":1360}&fields=["usluga__name","usluga__comments","comment"]'
{code}
# h5. Выставить дату включения услуги 01.02.2020, если ранее она по какой-то причине дата отсутствовала (bash-скрипт)
Редактируя sql-запрос можно отсортировать услуги с определенной датой создания, назначив в where условие отбора uu.create_date='2018-02-14'
{code}
#!/bin/bash
#Получить ID услуги где нет даты активации услуги
get_id(){

return_id=`sqlexec "set heading off;
select uu.id from users_usluga uu left join Abonents a on uu.abonent_id=a.id where uu.enable_date is null and uu.enabled=1 and a.is_folder=0 and a.deleted=0" | sed '/^$/d' | sed 's/ *//g' `
echo $return_id
}

for id in `get_id`
do
echo $id
#Cмена даты включения услуги
curl -XPOST -d 'method1=objects.get&arg1={"id":'$id'}&method2=set&arg2={"enable_date":"2020-02-01 00:00:00"}&method3=save&arg3={"allow_set_none_manager":true}' http://169.254.80.82:8082/rest_api/v2/UsersUsluga/ -D -;
sleep 10
echo "Done"
wait
done
{code}
# h5. Настроить в услуге для [межоператорских расчетов|Взаиморасчеты между операторами, агентская схема телефонии и транзит] транк-группу
{code}curl -ss 'http://169.254.80.82:8082/rest_api/v2/UsersUsluga/' -d 'method1=objects.get&arg1={"pk":1610}&method2=set&arg2={"voip_operator_match_format":"Beeline"}'{code}
# h5. Изменить дату окончания работы услуги.
{code}
curl -XPOST -d 'method1=objects.get&arg1={"id":'230999'}&method2=set&arg2={"end_time":"2023-06-07","manager_id": 33}&method3=save&arg3={}' http://169.254.80.82:8082/rest_api/v2/UsersUsluga/ -D -;
{code}

h3. Дома

# h5. Добавление дома в справочник "Дома". Дом будет создан с адресом г.Москва Ленина 5
{code}curl -XPOST -d 'method1=objects.create&arg1={"city":"Москва", "street":"Ленина", "s_number":'5'}' http://169.254.80.82:8082/rest_api/v2/Homes/ -D{code}
# h5. Добавления пула домов с помощью Bash скрипта. Будет создано 5 домов :1,2,3,4,5 c адресом г. Москва Ленина 1, г. Москва Ленина 2 и т.д. X - номер первого дома в пуле.
{code}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{code}
# h5. Удаление всех неиспользуемых домов
{code}
sqlexec "set list; select H.id from abonents A right join homes H on A.home_id = H.id where A.home_id is null" | 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/Homes/' -D -; done
{code}
# h5. Синхронизировать дома
{code}sqlexec -l "select id from homes where s_number is not null and HOME_TYPES_ID=6 and KLADR_SYNC=0" | awk '$2{print $2}' | while read home_id; do curl -ss -XPOST 'http://169.254.80.82:8082/rest_api/v2/Homes/' -d 'method1=objects.get&arg1={"id":'$home_id'}&method2=set&arg2={"kladr_sync":1}&method3=save' | jq .;done{code}
# h5. Список городов, улиц, домов.
#* API запрос для получения списка городов:
{code}curl -XPOST -d 'method1=objects.filter&arg1={"abonent_id":"1242","s_date__range":["2018-10-01", "2018-11-01"]}' http://169.254.80.82:8082/rest_api/v2/Counters/ 'method1=get_cities&arg1={}' http://169.254.80.82:8082/rest_api/v2/Homes/ -D -{code}
## [Детализация списаний за период|CarbonBilling:Детализация расхода]
#* API запрос для получения списка улиц:
{code}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/ 'method1=get_streets&arg1={}' http://169.254.80.82:8082/rest_api/v2/Homes/ -D -{code}
# h5. Применить добровольную блокировку
#* API запрос для получения списка домов:
{code}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/ 'method1=objects.filter&arg1={"home_types_id": 6}' http://169.254.80.82:8082/rest_api/v2/Homes/ -D -{code}

h3. Личный кабинет

# h5. Подключить обещанный платеж из личного кабинета
Делается в три этапа:
## Авторизоваться, получив SUID
{code}curl "http://169.254.80.82:8082/rest_api/v2/Users/" -d 'method1=objects.get&arg1={"abonent_id":"12230"}&method2=get_or_create_dynamic_session&arg2={}'{code}
Пример ответа с SUID - 144997776676316356
{code}{"call": "/rest_api/v2/Users/", "result": {"pk": null, "model": "DynamicSessions", "fields": {"ttype": "None", "id": 12200, "suid": "144997776676316356"}}}{code}
SUID активен до следующей попытки авторизации в личном кабинете.
## Использовать SUID чтобы получить список обещанных платежей доступных абоненту для подключения из личного кабинета
{code}curl "http://169.254.80.82:8082/rest_api/v2/Users/" -d 'method1=web_cabinet.get_promise_pay_list&arg1={"suid":"144997776676316356"}'{code}
## Подключить обещанный платеж
{code}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 -{code}
*manager_id* \- это ID администраторов, получить их список можно так:
{code}curl -XPOST -d 'method1=objects.filter' http://169.254.80.82:8082/rest_api/v2/DjangoUsersProfile/ -D -{code}
## Подключить обещанный платеж, испоьзовав id обещанного платежа promise_pay_id.
{code}
curl "http://169.254.80.82:8082/rest_api/v2/Users/" -d 'method1=web_cabinet.add_promise_pay&arg1={"suid":"193972505915951057","promise_pay_id": 144}'
{code}
# h5. Получить список услуг доступных абоненту для подключения в личном кабинете и подключить\отключить услугу
Делается в три этапа:
## Авторизоваться, получив ID авторизации
{code}curl "http://169.254.80.82:8082/rest_api/v2/Users/" -d 'method1=objects.get&arg1={"abonent_id":"12230"}&method2=get_or_create_dynamic_session&arg2={}'{code}
12 Пакет услуг
13 Системный {code}
# h5. Сторнирование услуг
В примере: массовое сторнирование по всем неудаленным абонентам за период с 1 января 2017 по 1 января 2018 года
{code}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 {code}
# h5. Удаление услуг
В примере: массовое удаление [автоматический подключенных обещанных платежей по льготному периоду|CarbonBilling:Льготный период оплаты]

{code}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{code}
# h5. Смена пароля учетной записи


h6. Установить определенный пароль:
{code}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}'{code}
*psw* \- новый пароль
*dontshow* \- +false+ чтобы пароль сохранился в открытом виде и отображался в администраторской панели, +true+ \- чтобы не отображался.
h6. Сгенерировать случайный пароль:
Сделайте два запроса: первым уберите пароль абонента, вторым инициируйте сохранение учетной записи:
## Подключить услугу
{code}
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={}
curl "http://169.254.80.82:8082/rest_api/v2/Users/" -d 'method1=web_cabinet.set_user_usluga&arg1={"suid":"144997776676316356","usluga_id": 144}'
{code}
## Отключить услугу
{code}
curl "http://169.254.80.82:8082/rest_api/v2/Users/" -d 'method1=web_cabinet.remove_user_usluga&arg1={"suid":"144997776676316356","usluga_id": 144}'
{code}
h6. # h5. Установить пароль через форму восстановления пароля:
Отправляем по API запрос на восстановление reset_password, параметры login (login или email), base_url.
{code}
curl -XPOST "http://169.254.80.82:8082/rest_api/v2/Users/" -d 'method1=web_cabinet.submit_password&arg1={"token":"475GZ4", "uid":"297", "psw1":"123456", "psw2":"123456"}'
{code}
# h5. Всем абонентам из папки 14724, у которых выставлена опция "Не отключать при превышении порога" отключить опцию "Не отключать при превышении порога"
{code}
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 aa.unlimited=1 and a.parent_id=14724" | awk ' {print $2} ' | sed '/^$/d' | while read line; do curl -XPOST -d 'method1=objects.get&arg1={"account_id_abonents":'$line'}&method2=set&arg2={"unlimited":false}&method3=save&arg3={}' http://169.254.80.82:8082/rest_api/v2/AdminAccounts/ -D -; done
{code}
# h5. Скрипт для создания абонента и учетной записи. Создаёт абонента в папке "Все" с именем "ФИО1", номером договора TEST_API1, тарифом с id=1, балансом 10, логином abonent2, паролем 1234
{code}
#!/bin/bash

curl -XPOST -d 'method1=objects.create&arg1={"name":"ФИО1", "parent_id":1, "tarif_id":1, "contract_number":"TEST_API1"}&method2=add_payment&arg2={"SUM_IN": "10"}' http://169.254.80.82:8082/rest_api/v2/Abonents/ -D -
h3. Сообщения

sqlexec "set list on; select id from abonents where contract_number='TEST_API1'" | awk ' {print $2} ' | sed '/^$/d' | while read line; do curl -XPOST -d 'method1=objects.create&arg1={"abonent_id":'$line', "login":"abonent2"}&method2=set_password&arg2={"psw":"1234","dontshow":false}' http://169.254.80.82:8082/rest_api/v2/Users/ -D -; done
# h5. Отправить абоненту id 1313 сообщение по шаблону с id 1 методом sms-оповещения
{code}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 -{code}

h3. Отчёты

# h5. Выполнение отчёта 1003 с параметром phone="+79222222222"
{code}
# h5. Сменить абонентам с оператором связи ID 3 оператора связи с ID 1444
{code}sqlexec "set list; select id from abonents where operator_id=3 and id>3" | awk '$2{print $2}' | while read abon; do curl -XPOST 'http://169.254.80.82:8082/rest_api/v2/Abonents/' -d 'method1=objects.get&arg1={"id":'$abon'}&method2=set&arg2={"operator_id":1444}&method3=save&arg3={}'; done{code}
# h5. Получить данные учетной записи абонента, авторизованного в личном кабинете, по идентификатору сессии suid
{code}curl "http://169.254.80.82:8082/rest_api/v2/Users/" -d 'method1=get_user_by_suid&arg1={"suid": "144997776676316356"}'{code}
# h5. Список абонентов блокировкой negbal, выводим логин и IP адерес.
{code}curl -XPOST -d 'method1=objects.filter&arg1={"abonent__deleted": 0, "abonent__abonent_id_abonentsblock__b_negbal": 1 }&method2=distinct&fields=["login", "ip"]' "http://169.254.80.82:8082/rest_api/v2/Users/" -D -{code}
# h5. Рассылка сообщения по населенному пункту.
{code}sqlexec "set heading off; select id from abonents where home_id in (select id from homes where CITY='Тихорецк') and deleted=0 and is_folder=0"| sed '/^$/d' | sed 's/ *//g' | while read line; do curl -XPOST -d 'method1=objects.get&arg1={"id": '$line'}&method2=send_message&arg2={"tmpl_id": "6", "send_date": "2019-04-08 12:30:00" }' 'http://169.254.80.82:8082/rest_api/v2/Abonents/' -D -; done{code}
# h5. Работа с реквизитами
Добавить абоненту с ID 1376 реквизит с ID 33 и значением "Тест"
{code}curl -XPOST 'http://169.254.80.82:8082/rest_api/v2/AttributeValues/' -d 'method1=objects.create&arg1={"attribute_id":33,"abonent_id":1376,"attribute_value":"Тест"}'{code}
Удалить реквизит с ID 1684
{code}curl -XPOST 'http://169.254.80.82:8082/rest_api/v2/AttributeValues/' -d 'method1=objects.get&arg1={"id":1684}&method2=delete'{code}
# h5. Получить список абонентов со статусом "заблокирован или нет" (наличие блокировок в AbonentsBlock), поля: ID, Наименование/ФИО, статус
{code}curl -XPOST 'http://169.254.80.82:8082/rest_api/v2/Abonents/' -d 'method1=objects.filter&arg1={"is_folder":0}&fields=["id","name","allow_internet"]'{code}
# h5. Работа с блокировками абонентов и их историей
Получить ID текущих блокировок по балансу абонента с ID 1392
{code}curl -XPOST 'http://169.254.80.82:8082/rest_api/v2/AbonentsBlock/' -d 'method1=objects.filter&arg1={"abonent_id":1392,"b_negbal":1}&fields=["id"]'{code}
Снять блокировку с ID 243068
{code}curl -XPOST 'http://169.254.80.82:8082/rest_api/v2/AbonentsBlock/' -d 'method1=objects.get&arg1={"id":243068}&method2=delete'{code}
Получить ID блокировок абонента ID 1392 измененных с 1 по 30 июня 2019 года
{code}curl -XPOST 'http://169.254.80.82:8082/rest_api/v2/AbonentsBlockHistory/' -d 'method1=objects.filter&arg1={"abonent_id":1392,"b_negbal":1,"time_changed__range":["2019-06-01", "2019-06-30"]}&fields=["id"]'{code}
Получить ID блокировок абонента ID 1392 снятых с 1 по 30 июня 2019 года
{code}curl -XPOST 'http://169.254.80.82:8082/rest_api/v2/AbonentsBlockHistory/' -d 'method1=objects.filter&arg1={"abonent_id":1392,"b_negbal":1,"time_del__range":["2019-06-01", "2019-06-30"]}&fields=["id"]'{code}
Изменить запись в истории блокировок ID 118, установить время изменения и снятия на 1 июня 2019 года
{code}curl -XPOST 'http://169.254.80.82:8082/rest_api/v2/AbonentsBlockHistory/' -d 'method1=objects.get&arg1={"id":118}&method2=set&arg2={"time_changed":"2019-06-01 00:00:00","time_del":"2019-06-01 00:00:00"}&method3=save'{code}
# h5. Перерасчетать абонента начиная с выбранного периода (обязательно указывать первое число месяца\!)
Перерасчет абонента с ID 1392 с июня 2019 года
{code}curl -XPOST 'http://169.254.80.82:8082/rest_api/v2/Abonents/' -d 'method1=objects.get&arg1={"id":"1392"}&method2=set&arg2={"need_recalc":"2019-06-01"}&method3=save&arg3={}'{code}
# h5. Получение данных о счете абонента
1) Выведем общую сумму к оплате, дату выставления,номер счёта и период, также в запросе мы увидим pk (это id счёта, у нас он - 13707416)
{code}curl -XPOST 'http://169.254.80.82:8082/rest_api/v2/FinanceOperations/' -d 'method1=objects.filter&arg1={"abonent_id":6019,"op_type":5}&fields=["op_summa", "op_date", "number", "period_end_date"]'{code}
2) Подставляем айди полученного счёта (pk из предыдущего запроса подставляем как finance_operation_id), увидим список услуг, количество единиц, названия и суммы.
{code}curl -XPOST 'http://169.254.80.82:8082/rest_api/v2/FinanceOperationsDetail/' -d 'method1=objects.filter&arg1={"finance_operation_id":13707416}&fields=["usluga", "unit", "vv", "price", "name"]'{code}
# h5. Получение данных об операторе, обслуживающем абонента
{code}curl -XPOST 'http://169.254.80.82:8082/rest_api/v2/Abonents/' -d 'method1=objects.filter&arg1={"id":1111}&fields=["operator"]'{code}
# h5. Установка порога отключения на сумма тарифа + 1 всем абонентам из папки.
{code}sqlexec "set heading off; select distinct a.id ||' ' || (round(u.SUMMA / cast((select CONST_VALUE from VPN_CONST where CONST_ID = 1) as numeric(18,5)), 2)+1 ) from abon LEFT JOIN TARIF_USERS_USLUGA tus ON tus.TARIF_ID=t.ID LEFT JOIN USLUGA u ON u.ID=tus.USLUGA_ID where a.parent_id=89" | while read -r a b; do curl -XPOST -d 'method1=objects.get&arg1={"account_id_abonents":'$a'}&method2=set&arg2={"limit":'$b'}&method3=save&arg3={}' http://169.254.80.82:8082/rest_api/v2/AdminAccounts/ -D -; done
curl -XPOST -d 'method1=objects.get&arg1={"id":1003}&method2=get_data&arg2={"phone":"+79222222222"}' http://169.254.80.82:8082/rest_api/v2/AdminCustomReports/ -D -
{code}
# h5. Вывести данные по абоненту, у которого номер SMS для оповещений \+71234567899
# h5. Выполнение отчёта 250081 с параметрами даты за январь 2022 года
{code}
curl -XPOST -d 'method1=objects.filter&arg1={"sms":"'%2B'71234567899"}' http://169.254.80.82:8082/rest_api/v2/Abonents/ -D -
curl -XPOST -d 'method1=objects.get&arg1={"id":250081}&method2=get_data&arg2={"start":"2022-01-01 00:00:00.0000", "end":"2022-01-31 23:59:59.0000"} ' http://169.254.80.82:8082/rest_api/v2/AdminCustomReports/ -D -
{code}
# h5. Удаление учетной записи.
* В отчёте переменные должны быть объявлены на латинице.
* Переменные должны быть произвольного типа.
{code}
curl -XPOST -d 'method1=objects.get&arg1={"id":6242}&method2=delete&arg2={"clean_links": true}'' http://169.254.80.82:8082/rest_api/v2/Users/ -D -
':start$'
':end$'
{code}
Аргумент "clean_links" обязателен.
# h5. Установить абонентам в папке с ID 1405 галочку "Юр. лицо"

h3. Тарифы

# h5. Стоимость тарифа с id 1128
{code}curl -XPOST -d 'method1=objects.get&arg1={"id":"1128"}&method2=get_abon_sum&arg2={}' http://169.254.80.82:8082/rest_api/v2/Tarif/ -D -{code}
# h5. Информация об услугах тарифа с id 1128(название, цена, комментарий)
{code}curl -XPOST 'http://169.254.80.82:8082/rest_api/v2/TarifUsersUsluga/' -d 'method1=objects.filter&arg1={"tarif_id":1128}&fields=["usluga__name","usluga__comments",usluga__summa]'{code}
# h5. Установить тарифам из выборки функции "Всегда переопределять при переходе на этот тариф:" и "Порог включения:" = 200
{code}
sqlexec "set list on; select id from abonents where parent_id=1405" | awk ' {print $2} ' | sed '/^$/d' | while read line; do curl -XPOST -d 'method1=objects.get&arg1={"id":'$line'}&method2=set&arg2={"company":"1"}&method3=save&arg3={}' 'http://169.254.80.82:8082/rest_api/v2/Abonents/' -D -; done
sqlexec "set list on; select id from tarif where id!=1 and id!=-170000" | awk ' {print $2} ' | sed '/^$/d' | while read line; do curl -XPOST -d 'method1=objects.get&arg1={"id":'$line'}&method2=set&arg2={"allways_apply":1, "allow_limit":200}&method3=save&arg3={}' http://169.254.80.82:8082/rest_api/v2/Tarif/ -D -; done
{code}
# h5. Снять абонентам в папке с ID 1405 галочку "Юр. лицо"

h3. Запланированные задачи

# h5. Создать запланированную задачу по смене услуги
{code}
sqlexec "set list on; select id from abonents where parent_id=1405" | awk ' {print $2} ' | sed '/^$/d' | while read line; do curl -XPOST -d 'method1=objects.get&arg1={"id":'$line'}&method2=set&arg2={"company":false}&method3=save&arg3={}' 'http://169.254.80.82:8082/rest_api/v2/Abonents/' -D -; done
curl -XPOST -d 'method1=objects.create&arg1={"abonent_id": 12857, "job_type_id": 6, "plan_date": "2023-04-16 00:00:00.0000", "from_users_usluga_id": 60075, "to_usluga_id":228}' http://169.254.80.82:8082/rest_api/v2/JobsStack/ -D -
{code}
# h5. Добавить абоненту с ID 2566 и лицевым счётом 10002566 тысячу бонусных баллов

h3. AbonentsComments

# h5. Добавить комментарий пользователю.

parent_id = id абонента.
text = текст комментария.
creator_id = id администратора, кто добавил комментарий.
{code}
curl -XPOST -d 'method1=objects.create&arg1={"bonus_score":1000,"abonent_id":2566,"account_id":10002566}' http://169.254.80.82:8082/rest_api/v2/AccountStack/ 'method1=objects.create&arg1={"parent_id":"14","text":"test","creator_id":"33"}' http://169.254.80.82:8082/rest_api/v2/AbonentsComments/ -D -
{code}
Если нужно убавить бонусные баллы, то введите отрицательное значение:

h3. Прочее

# h5. Получить логин, ip адрес, название атрибута в тарифе абонента, значение атрибута в тарифе абонента по незаблокированным абонентам
{code}
curl -XPOST -d 'method1=objects.create&arg1={"bonus_score":-1000,"abonent_id":2566,"account_id":10002566}' http://169.254.80.82:8082/rest_api/v2/AccountStack/ -D -
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"]'
{code}
Чтобы обновить информацию об абоненте в веб-интерфейсе обновим кэш:
# h5. Получить полный лог звонков абонентов за указанный период (включая обе даты)
{code}
curl -XPOST -d 'method1=objects.get&arg1={"id":2566}&method2=set&arg2={"need_refresh_cache":1}&method3=save&arg3={}' http://169.254.80.82:8082/rest_api/v2/Abonents/ '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 -
{code}
Отменить операцию добавления/вычитания баллов можно сторнировав её:
# h5. Переименование каталогов.
В данном примере отбираем из таблицы Abonents записи о каталогах(is_folder=1) и те которые находятся в корзине(deleted=1), далее, назначаем им новое название "do_not_use"
{code}
curl -XPOST -d 'method1=objects.get&arg1={"id":7885702}&method2=storno_it' http://169.254.80.82:8082/rest_api/v2/ArchAccountStack/ -D -
sqlexec "set list on; select distinct id from abonents a where a.is_folder=1 and a.deleted=1" | awk ' {print $2} ' | sed '/^$/d' | while read line; do curl -XPOST -d 'method1=objects.get&arg1={"id":'$line'}&method2=set&arg2={"name":"do_not_use"}&method3=save&arg3={}' http://169.254.80.82:8082/rest_api/v2/Abonents/ -D - ; done
{code}
# h5. Восстановить абонента с id 1360 из корзины
# h5. Создать задачу в CRM по абоненту с id 1367, темой "Не работает интернет" и описанием "Не работает интернет в течение часа".
{code}
curl -XPOST -d 'method1=objects.get&arg1={"id": "1360"}&method2=restore&arg2={}' 'http://169.254.80.82:8082/rest_api/v2/Abonents/' -D -
curl -XPOST -d 'method1=objects.create&arg1={"subj":"Не работает интернет", "text":"Не работает интернет в течение часа", "abonent_id":1367}' http://169.254.80.82:8082/rest_api/v2/Hdsk/ -D -
{code}
# h5. Привязать услугу с id 105 к оператору связи с id 3
# h5. Не учитывать регистр при поиске, на примере поиска по MAC (Добавляем функцию iexact)
{code}
curl -XPOST -d 'method1=objects.get&arg1={"id":"105"}&method2=set&arg2{"operator_id":"3"}&method3=save&arg3={}' 'http://169.254.80.82:8082/rest_api/v2/Usluga/' -D -
curl -XPOST -d 'method1=objects.get&arg1={"mac__iexact":"00:1d:60:b6:59:c5"}&fields=["login","ip"]' http://169.254.80.82:8082/rest_api/v2/Users/ -D -
{code}
# h5. Назначить новую дату "Cледующего списания" по подключенной услуге 127 на 13.09.2020 у абонента 94
{code}
curl -XPOST -d 'method1=objects.get&arg1={"abonent_id":94, "usluga_id":"127"}&method2=set&arg2={"next_date":"2020-09-13 00:00:00"}&method3=save&arg3={"allow_set_none_manager":true}' http://169.254.80.82:8082/rest_api/v2/UsersUsluga/ -D -;
{code}
# h5. Для проверки корректности логин/пароль у абонента в биллинге, необходимо использовать специальную функцию checkpass.
Для этого необходимо знать id учетной записи абонента. В данном случае id абонента 1111 и пароль 8fqm11
{code}curl -XPOST -d 'method1=objects.get&arg1={"id":1111}&method2=check_pass&arg2={"passwd":"8fqm11"}' http://169.254.80.82:8082/rest_api/v2/Users/ -D -
{code}
Функция возвращает значение true или false
# h5. Синхронизировать дома
{code}sqlexec -l "select id from homes where s_number is not null and HOME_TYPES_ID=6 and KLADR_SYNC=0" | awk '$2{print $2}' | while read home_id; do curl -ss -XPOST 'http://169.254.80.82:8082/rest_api/v2/Homes/' -d 'method1=objects.get&arg1={"id":'$home_id'}&method2=set&arg2={"kladr_sync":1}&method3=save' | jq .;done{code}


{code}chroot /app/asr_billing/ service admin_web_server restart{code}
По окончанию отладки, рекомендуется вернуть уровень логирования в статус *error*.

h3. Неудобно читать ответ биллинга при выполнении curl: всё в одну стороку и вместо русских символов что-то вроде "\u043f\u0440\u043e\u0432\u0430\u0439\u0434\u0435\u0440"

Используйте утилиту *jq* для форматирования вывода.
{note:title=Установите утилиту jq командоой:}
{code}yum install -y jq{code}
{note}
Например:
{code:title=Команда}curl -ss -XPOST 'http://169.254.80.82:8082/rest_api/v2/Abonents/' -d 'method1=objects.get&arg1={"id":"3"}&fields=["name"]' | jq .{code}
{code:title=Вывод}{
"result": {
"fields": {
"name": "ООО Лучший провайдер"
},
"model": "Abonents",
"pk": 3
},
"call": "/rest_api/v2/Abonents/"
}{code}