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

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

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

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

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

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

<?php

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

$params = array(
  'key' => 'XgDXFsTbNRkMpRq81bBrmRAf56i5oS0oN9bp4jLH', //API ключ  
  'username' => 'admin', //Имя пользователя
  'password' => 'admin', //Пароль
  'action' => 'insert', //действие
  'entity_id' => 34, //ID сущности, в которую будет добавлена запись
  'items' => $items, //массив записей
);
 						                                    
$ch = curl_init('http://localhost/rukovoditel/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@rukovoditel.net',
  'password' => '', //Если не указан, будет сгенерирован автоматически.
);

$params = array(
  'key' => 'XgDXFsTbNRkMpRq81bBrmRAf56i5oS0oN9bp4jLH',  
  'username' => 'manager',
  'password' => 'manager',
  'action' => 'insert',
  'entity_id' => 1,
  'notify' =>true, //Будет отправлено уведомление пользователю.
  'login_url' => 'http://localhost/rukovoditel/index.php',
  'items' => $items,
);
 						                                    
$ch = curl_init('http://localhost/rukovoditel/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' => 'XgDXFsTbNRkMpRq81bBrmRAf56i5oS0oN9bp4jLH',  
  'username' => 'admin',
  'password' => 'admin',
  'action' => 'select',
  'entity_id' => 34, //ID сущности, из которой будут выбираться записи
  'limit' => 0, //Если не указан, выбираются все строки 
  'select_fields' => '338,388', //ID полей, значения которых будут выбираться
  'reports_id' => 370, //ID отчета, фильтры которого будут применяться к выборке
  'filters' => array(
    '159'=>'2018-05-10,2018-05-16', //Фильтр по дате 'от,до'. Можно указать одно из значений, например '2018-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://localhost/rukovoditel/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 Новая опция в версии 2.2. Не обязательное поле. Дает возможность использовать пользовательские фильтры при выборе записей.

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

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

 

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

<?php

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

$params = array(
  'key' => 'MjBm7iKWaEubxvLvVW1lF5HFbrWzOFILh216iGKJ',  
  'username' => 'admin',
  'password' => 'admin',
  'action' => 'update',
  'entity_id' => 21,
  'data' => $data,
  'update_by_field' => ['field_156'=>34],
);
						                                    
$ch = curl_init('http://localhost/rukovoditel/product_2.5/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' => 'MjBm7iKWaEubxvLvVW1lF5HFbrWzOFILh216iGKJ',  
  'username' => 'admin',
  'password' => 'admin',
  'action' => 'delete',
  'entity_id' => 21, 
  'delete_by_field' => ['id'=>40],
);
 						                                    
$ch = curl_init('http://localhost/rukovoditel/product_2.5/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