API REST SOAP (Устарело)

Skip to end of metadata
Go to start of metadata
Эта версия API больше не поддерживается. Пожалуйста, используйте API REST v2.0

Отличия API REST v1 и v2

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

Описание API REST v1

Api работает через порт 8082.

В api можно получить подробные сведения о каждой модели веб-интерфейса администратора Carbon Billing 5.

  • поля модели;
  • методы модели;
  • методы объекта.

Создадим тариф с помощью api. Обязательно указываем аргумент, даже если он пустой.

Возвращается XML документ с подробными описаниями для нового объекта.

Можно задать сразу имя тарифа:

В файле можно увидеть, что тариф создался с именем:

Также мы можем получить файл не в XML виде, а в json, для этого пишем в командной строке: 

После создания или изменения объекта, его нужно сохранить:

Логика биллинга отработает и вернет значения, которые после сохранения выставились в тарифе.
Теперь этот тариф можно увидеть в веб-интерфейсе администратора Carbon Billing 5.

Чтобы авторизоваться для работы в api, необходимо зайти в веб-интерфейс администратора Carbon Billing 5, раздел Настройки/Настройки (в файле)/Настройка Сети.

Также нужно указать hash_key, который обычно известен при авторизации.

Тогда все запросы будут считаться авторизованными.

Задача: Требуется создавать абонентов с реквизитами.

1.Необходимо узнать имена моделей для составления к ним запросов, для этого заходим в администраторскую панель и нажимаем на соответствующие пункты, чтобы в строке url браузера увидеть название модели.


Некоторые модели можно узнать только через настройку прав доступа.

2.Также необходимо узнать ид реквизитов который хотим добавлять абоненту.


Например мы хотим добавить прописку: 15
3.Создадим группу или используем существующую для новых абонентов и узнаем ее номер для запросов:


Например 90
4.Итак узнав имена моделей (Abonents и AttributeValues), для создания запросов необходимо узнать имена полей который мы хотим заполнять, для этого делаем запросы

http://195.64.222.86:8082/rest_api/?model=Abonents

и

http://195.64.222.86:8082/rest_api/?model=AttributeValues

соответственно.
5.Имея всю необходимую информацию по абонентам и их реквизитам сначала создаем запрос на создание абонента:

http://195.64.222.86:8082/rest_api/?model=Abonents&method1=new&arg1={"name":"Тест","parent_id":90}&method2=save&arg2={}&format=json

, в ответ мы получим json массив откуда узнаем pk созданного абонента и по нему формируем запрос на создание реквизитов указывая его каждый раз как abonent_id:

http://195.64.222.86:8082/rest_api/?model=AttributeValues&method1=new&arg1={"abonent_id":pk,"attribute_id":15,"attribute_value":"Россия"}&method2=save&arg2={}&format=json

6.Мы успешно создали абонента с именем Тест в группе VIP с реквизитом Прописка:Россия

Синтаксис. Диапазон параметров

Если требуется передать диапазон параметров, например при запросе данных, то синтаксис будет такой:

'id__in":[1,2,3]

Вообще доступен весь синтаксис django

Авторизация через API

С примером класса авторизации через php можете ознакомиться здесь: https://github.com/carbonsoft/billing_api_tools

Примеры

Пример 1. Внести абоненту с номером договора SL0000001 на счет 500 рублей.

http://<ip_сервера>:8082/rest_api/?model=Abonents&method1=objects.get&arg1={"contract_number":"SL0000001"}&method2=add_payment&arg2={"SUM_IN":500}

Пример 2. Получить все данные абонента с номером договора BILL0000029.

http://<ip_сервера>:8082/rest_api/?model=Abonents&method1=objects.get&arg1={"contract_number":"BILL0000029"}&format=json

Ищем строку

"account": 10002143

И берем цифровое значение
Далее вставляем его в запрос:

http://<ip_сервера>:8082/rest_api/?model=AdminAccounts&method1=objects.get&arg1={"id":"10002143"}&format=json

После этого операция debit-credit+ostatok даст баланс абонента
Пример 3. Получить данные по отчету номер 15 из конструктора отчетов.

http://<ip_сервера>:8082/rest_api/?model=AdminCustomReports&method1=objects.get&arg1={"pk":"15"}&method2=get_data&arg2={}

Пример 4. Получить данные по отчету номер 15 из конструктора отчетов. если в отчет нужно передать параметры.
Например при запуске отчета выводится 2 поля для заполнения, которые называются "C_даты" и "По_дату"

http://<ip_сервера>:8082/rest_api/?
model=AdminCustomReports&method1=objects.get&arg1={"pk":"<номер_отчета_в_конструкторе_отчетов>"}&method2=get_data&arg2={"C_даты":"05.12.2014","По_дату":"10.12.2014"}

Пример 5. Получить список учетных записей заблокированных абонентов


http://<ip_сервера>:8082/rest_api/?
model=Users&method1=objects.extra&arg1={ "where": ["users.abonent_id in (select abonent_id from abonents_block)"] }

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