Доступны методы: регистрация пользователя, добавление, выборка, обновление и удаление записей.
Где и как можно использовать API
- Есть необходимость при регистрации клиента на вашем сайте, также создавать для него учетную запись в системе.
- У вас на сайте есть оформление заказа и вам нужно, чтобы часть данных попадала в Спрутон для отчетности.
- Вы хотите отобразить у себя на сайте часть публичных данных из какого-либо отчета.
- Интеграция со сторонними сервисами. К примеру, у вас есть база адресов, и вы хотите показать их на карте в своем формате. С помощью 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 полей можно узнать на странице «Конфигурация полей». Данное поле принимает значение в виде строки.
Дата Выпадающий список Вложения |
Регистрация нового пользователя (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 полей можно узнать на странице «Конфигурация полей». Данное поле принимает значение в виде строки.
|
Выборка записей (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 или по значению поля, например обновить все записи с определенным статусом.
|
Удаление записей
<?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 или по значению поля, например удалить все записи с определенным статусом.
|
Список всех сущностей (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', ];