Как пользоваться API?

Доступны методы: регистрация пользователя, добавление, выборка, обновление и удаление записей.

Где и как можно использовать API

  1. Есть необходимость при регистрации клиента на вашем сайте, также создавать для него учетную запись в системе.
  2. У вас на сайте есть оформление заказа и вам нужно, чтобы часть данных попадала в Спрутон для отчетности.
  3. Вы хотите отобразить у себя на сайте часть публичных данных из какого-либо отчета.
  4. Интеграция со сторонними сервисами. К примеру, у вас есть база адресов, и вы хотите показать их на карте в своем формате. С помощью API можно выбрать данные из базы и отобразить с помощью стороннего сервиса. Это можно делать в реальном времени.

Чтобы начать использовать API, вам необходимо разрешить доступ к API и сгенерировать ключ. Это можно сделать на странице: Плагины — Инструменты — API.

Обратите внимание, приведенные ниже примеры не предназначены для применения в вашем решении. Каждое решение, созданное на базе платформы Спрутон, имеет свои уникальные идентификаторы полей и сущностей, которые необходимо использовать в API коде.

Добавление одной или нескольких записей (insert)

<?php

$items = array();
$items[] = array(
  'field_338' => 'Заявка Тест', //338 - ID текстового поля
  'field_426' => '2018-12-29', //426 - ID поля типа "Дата с календарем"
  'field_429' => '166,167', //429 - ID поля типа "Выпадающий список с выбором нескольких значений"
);

$params = array(
  'key' => 'GgDXFsTbfRhdHehH81bBrmRAf56i5oS0oN9bp4jLH', //API ключ  
  'username' => 'admin', //Имя пользователя
  'password' => 'admin', //Пароль
  'action' => 'insert', //действие
  'entity_id' => 34, //ID сущности, в которую будет добавлена запись
  'items' => $items, //массив записей
);
 						                                    
$ch = curl_init('http://my.domen.com/api/rest.php'); //API Url
curl_setopt($ch, CURLOPT_HEADER, false);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($params));
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_TIMEOUT, 10);			
$result = curl_exec($ch);
curl_close($ch);

if($result)
{
  $result = json_decode($result,true);
  
  print_r($result);
}

 

При успешном выполнении возвращает ID добавленных записей:

Array
(
    [status] => success
    [data] => Array
        (
            [id] => 119
        )

)

 

В случае ошибки, возвращает текст ошибки:

Array
(
    [status] => error
    [error_code] => 
    [error_message] => field_429 not exist in entity 34
)

 

Поле Описание
key API ключ. Сгенерировать на странице: Плагины — Инструменты — API.
username Имя пользователя, у которого есть права на выполнение действия.
password Пароль пользователя.
action Действие, которое необходимо выполнить.
entity_id ID сущности, для которой выполняется действие.
items Массив записей, включающий в себя поля записи.
parent_item_id — необязательное поле, необходимо в том случае, если запись добавляется в родительскую запись.
field_X — поле, которое необходимо добавить, где X — это ID поля. ID полей можно узнать на странице «Конфигурация полей». Данное поле принимает значение в виде строки.

Дата
Для типа поля «дата» используйте формат YYYY-MM-DD.

Выпадающий список
Для типа поля «Выпадающий список» используйте ID опции, которое можно узнать на странице «Опции» для каждого поля. В случае использования глобального списка, используйте ID опции из глобального списка. Если список с выбором нескольких значений, укажите их через запятую.

Вложения
Для передачи вложений через API в значении поля укажите http ссылку на файл. Можно перечислить несколько ссылок через запятую.

 

Регистрация нового пользователя (insert)

Работает аналогично добавлению новой записи и имеет обязательные поля для регистрации пользователя.

<?php

$items = array();
$items[] = array(
  'group_id' => 4, //4 - ID группы пользователя
  'firstname' => 'Андрей',
  'lastname' => 'Петров',
  'username' => 'admin',
  'email' => 'support@spruton.ru',
  'password' => '', //Если не указан, будет сгенерирован автоматически.
);

$params = array(
  'key' => 'GgDXFsTbfRhdHehH81bBrmRAf56i5oS0oN9bp4jLH',  
  'username' => 'manager',
  'password' => 'manager',
  'action' => 'insert',
  'entity_id' => 1,
  'notify' =>true, //Будет отправлено уведомление пользователю.
  'login_url' => 'http://my.domen.com/index.php',
  'items' => $items,
);
 						                                    
$ch = curl_init('http://my.domen.com/api/rest.php');
curl_setopt($ch, CURLOPT_HEADER, false);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($params));
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_TIMEOUT, 10);			
$result = curl_exec($ch);
curl_close($ch);

if($result)
{
  $result = json_decode($result,true);
  
  print_r($result);
}

 

Поле Описание
entity_id Необходимо указать 1
notify Для отправки уведомления на почту пользователя (true/false)
login_url Ссылка для входа, добавляется в уведомление пользователя.
items Массив записей, включающий в себя поля записи.
field_X — поле, которое необходимо добавить, где X — это ID поля. ID полей можно узнать на странице «Конфигурация полей». Данное поле принимает значение в виде строки.

Обязательные поля Описание
group_id ID группы для пользователя.
Можно узнать на странице «Группы пользователей»
firstname Имя
lastname Фамилия
username Имя пользователя для входа
email Адрес электронной почты
password Пароль. Можно оставить пустым, будет сгенерирован автоматически.

 

Выборка записей (select)

<?php

$params = array(
  'key' => 'GgDXFsTbfRhdHehH81bBrmRAf56i5oS0oN9bp4jLH',  
  'username' => 'admin',
  'password' => 'admin',
  'action' => 'select',
  'entity_id' => 34, //ID сущности, из которой будут выбираться записи
  'limit' => 0, //Если не указан, выбираются все строки 
  'select_fields' => '338,388', //ID полей, значения которых будут выбираться
  'reports_id' => 370, //ID отчета, фильтры которого будут применяться к выборке
  'filters' => array(
    '159'=>'2020-05-10,2020-05-16', //Фильтр по дате 'от,до'. Можно указать одно из значений, например '2020-05-10,', а второе оставить пустым.
    '157'=>array('value'=>37,'condition'=>'include'), //Фильтр по типу поля список. condition может быть include/exclude
    '203' => '>30' //Фильтр по числовому полю
    '203' => array('condition'=>'not_empty_value'), //empty_value или not_empty_value - пустое или не пустое значения поля 
    '158'=>array('value'=>'keywords','condition'=>'search'), //поиск по полю
    //В качестве фильтров можно использовать и системные поля, такие как: id, parent_item_id, date_added, date_updated
    'id' => '13,14',
  )
);
 						                                    
$ch = curl_init('http://my.domen.com/api/rest.php');
curl_setopt($ch, CURLOPT_HEADER, false);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($params));
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_TIMEOUT, 10);			
$result = curl_exec($ch);
curl_close($ch);

if($result)
{
  $result = json_decode($result,true);

  print_r($result);
}

 

Поле Описание
entity_id ID сущности, из которой будут выбираться записи
limit Если не указан, выбираются все строки
select_fields ID полей, значения которых будут выбираться.
Укажите ID через запятую. Если не указано, выбираются значения из всех полей.
reports_id ID отчета, фильтры и сортировка которого будут применяться к выборке. Если не указано, выбираются все записи.
filters Не обязательное поле. Дает возможность использовать пользовательские фильтры при выборе записей.

При успешном выполнении, возвращает массив записей:

Array
(
    [status] => success
    [data] => Array
        (
            [0] => Array
                (
                    [id] => 112
                    [date_added] => 01/15/2020 10:42
                    [created_by] => Petrov Andrey
                    [338] => Заявка 6
                    [388] => Новая
                )

 

Обновление записей

<?php

$data = array(
  'field_235' => '9,10,11',
);

$params = array(
  'key' => 'GgDXFsTbfRhdHehH81bBrmRAf56i5oS0oN9bp4jLH',  
  'username' => 'admin',
  'password' => 'admin',
  'action' => 'update',
  'entity_id' => 21,
  'data' => $data,
  'update_by_field' => ['field_156'=>34],
);
						                                    
$ch = curl_init('http://my.domen.com/api/rest.php');
curl_setopt($ch, CURLOPT_HEADER, false);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($params));
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_TIMEOUT, 10);			
$result = curl_exec($ch);
curl_close($ch);

if($result)
{
  $result = json_decode($result,true);  
}

 

Поле Описание
entity_id ID сущности, данные из которой будут обновлены
data Массив полей, которые необходимо обновить. Допускается обновление системных полей:
created_by, parent_item_id, password
update_by_field Поле по которому будет происходить обновление записи. Запись можно обновить по ID или по значению поля, например обновить все записи с определенным статусом.

Примеры
‘update_by_field’ => [‘id’=>37] Обновление записи где ID = 37
‘update_by_field’ => [‘id’=>[37,38]], Обновление записей с ID 37 и 38
‘update_by_field’ => [‘field_156’=>34] Обновление записей где поле  с номером 156 имеет значение 34

Удаление записей

<?php
 
$params = array(
  'key' => 'GgDXFsTbfRhdHehH81bBrmRAf56i5oS0oN9bp4jLH',  
  'username' => 'admin',
  'password' => 'admin',
  'action' => 'delete',
  'entity_id' => 21, 
  'delete_by_field' => ['id'=>40],
);
 						                                    
$ch = curl_init('http://my.domen.com/api/rest.php');
curl_setopt($ch, CURLOPT_HEADER, false);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($params));
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_TIMEOUT, 10);			
$result = curl_exec($ch);
curl_close($ch);

if($result)
{
  $result = json_decode($result,true);
}

 

Поле Описание
entity_id ID сущности, данные из которой будут удалены
delete_by_field Поле по которому будет происходить удаление записи. Запись можно удалить по ID или по значению поля, например удалить все записи с определенным статусом.

Примеры
‘delete_by_field’ => [‘id’=>37] Удаление записи где ID = 37
‘delete_by_field’ => [‘id’=>[37,38]], Удаление записей с ID 37 и 38
‘delete_by_field’ => [‘field_156’=>34] Удаление записей где поле  с номером 156 имеет значение 34

Список всех сущностей (get_entities)

$params = [
  'key' => '---',  
  'username' => 'admin',
  'password' => 'admin',
  'action' => 'get_entities',
];

Список полей заданной сущности (get_entity_fields)

$params = [
  'key' => '---',  
  'username' => 'admin',
  'password' => 'admin',
  'action' => 'get_entity_fields',
  'entity_id' => 21, //ID сущности
];

Список значений заданного поля (get_field_choices)

$params = [
  'key' => '---',  
  'username' => 'admin',
  'password' => 'admin',
  'action' => 'get_field_choices',
  'entity_id' => 21, //ID сущности
  'field_id' => 157, //ID поля
];

Перечень глобальных списков (get_global_lists)

$params = [
  'key' => '---',  
  'username' => 'admin',
  'password' => 'admin',
  'action' => 'get_global_lists',    
];

Перечень значений глобального списка (get_global_list_choices)

$params = [
  'key' => '---',  
  'username' => 'admin',
  'password' => 'admin',
  'action' => 'get_global_list_choices',
    'list_id' => 2, //ID списка
];

Получить все кнопки автоматизации для конкретной сущности (get_process_buttons)

$params = [
  'key' => '---',  
  'username' => 'admin',
  'password' => 'admin',
  'action' => 'get_process_buttons',
  'entity_id' =>21, //ID сущности
  'item_id' =>1, //ID записи (опционально)
];

Выполнить процесс автоматизации (run_process)

$params = [
  'key' => '---',  
  'username' => 'admin',
  'password' => 'admin',
  'action' => 'run_process',
  'entity_id' =>21, //ID сущности
  'item_id' =>1, //ID записи
  'process_id' => 7, //ID процесса 
];

 

Изменить пароль пользователя

$params = [
  'key' => '---',  
  'username' => 'admin',
  'password' => 'asdasd',
  'action' => 'change_user_password',
  'new_password'=>'admin',
];

 

Ваш вопрос решен?

Похожие статьи