API REST v2.0

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

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

просмотр истории страницы
fgпро{toc:maxLevel=3}

h2. Описание формата
# 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)
В примере: массовое сторнирование по всем неудаленным абонентам за период с 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}
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. Получить минимальный платеж для разблокировки по абоненту с ID 3612
{code}
curl -XPOST 'http://169.254.80.82:8082/rest_api/v2/Abonents/' -d 'method1=objects.filter&arg1={"abonent_id":"3612"}&fields=["minimal_pay_sum"]'
{code}
# h5. Установить всем абонентам из папки с id 1498 дом с id 1213
В примере Внешний ИД "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. Реквизиты
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}
# 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}
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 1684 59613
{code}
curl -XPOST 'http://169.254.80.82:8082/rest_api/v2/AttributeValues/' -d 'method1=objects.get&arg1={"pk":59613}&method2=delete'
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}
# h5. Установить всем учетным записям абонентов из папки 1386 1358 nas c id 11165.
{code}
sqlexec "set list on; select id from users where abonent_id in (select id from abonents where parent_id=1386)" (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":"11165"}&method3=save&arg3={}' http://169.254.80.82:8082/rest_api/v2/Users/ -D -; done
{code}
# h5. Установить всем абонентам из папки id 1386 пул ip-адресов с id 1003 и выдать новый ip-адрес из пула
Сделайте два запроса: первым уберите пароль абонента, вторым инициируйте сохранение учетной записи:
{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={} 'method1=objects.get&arg1={"id":4084}&method2=save&arg2={}'
{code}
# h5. Для проверки корректности логин/пароль у абонента в биллинге, необходимо использовать специальную функцию checkpass.
# 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 -
{code}
Аргумент "clean_links" обязателен.
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. Блокировки абонента

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. Изменить валюту счета
{code}
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}

h3. Финансовые операции
# 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' '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}
done
{code}
# h5. Настроить в услуге для [межоператорских расчетов|CarbonBilling:Взаиморасчеты между операторами] транк-группу
# 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. Синхронизировать дома
{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=get_cities&arg1={}' http://169.254.80.82:8082/rest_api/v2/Homes/ -D -{code}
#* API запрос для получения списка улиц:
{code}curl -XPOST -d 'method1=get_streets&arg1={}' http://169.254.80.82:8082/rest_api/v2/Homes/ -D -{code}
#* API запрос для получения списка домов:
{code}curl -XPOST -d 'method1=objects.filter&arg1={"home_types_id": 6}' http://169.254.80.82:8082/rest_api/v2/Homes/ -D -{code}

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

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 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}

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

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

h3. AbonentsComments

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

parent_id = id абонента.
text = текст комментария.
creator_id = id администратора, кто добавил комментарий.
{code}
curl -XPOST -d '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. Прочее

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. Создать задачу в CRM по абоненту с id 1367, темой "Не работает интернет" и описанием "Не работает интернет в течение часа".
{code}
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. Не учитывать регистр при поиске, на примере поиска по MAC (Добавляем функцию iexact)
{code}
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}


h2. Отладка