API интерфейс предназначен для разработчиков и используется для интеграции ваших приложений с системой ИНСАЙДЕР. Если у вас имеются вопросы по работе API или требуются дополнительные возможности интеграции, то свяжитесь с нами по адресу: sale@insider.sale
API работает по протоколу HTTP и представляет собой набор методов, с помощью которых совершаются запросы и возвращаются ответы для каждой операции. Все ответы приходят в виде JSON структур.
Для работы с API необходимо:
Получить ключ API (apikey) в личном кабинете администратора в разделе Настройки - Ключ API
Использовать данный ключ в каждом запросе к API в параметрах URL или в заголовке HTTP “Authorization”
URL любого API-запроса составляется следующим образом:
https://<имя-вашего-сервера-или-ip-адрес>/api/
Пример:
https://demo.insider.box/api/users/find?key=apikey
Или
https://demo.insider.box/api/users/find
Заголовок HTTP:
Authorization: apikey
API-метод | Описание |
Пользователи | |
GET /api/users/find | Возвращает список пользователей |
POST /api/users/save | Создает нового пользователя или обновляет существующего, если передан |
GET /api/users/getAccess | Получить доступы пользователя |
POST /api/users/setAccess | Установить доступы пользователя |
POST /api/users/setPassword | Сменить пароль пользователя |
События календаря | |
GET /api/users/events/find | Получить список событий |
POST /api/users/events/save | Создать или обновить событие |
POST /api/users/events/remove | Удалить событие |
Агенты | |
GET /api/agents/find | Получить список агентов |
POST /api/agents/create | Создать агента |
POST /api/agents/active | Активировать/деактивировать агента |
POST /api/agents/setUserId | Привязать/отвязать агента от пользователя |
Интеграции (Active Directory) | |
GET /api/agents/domains/find | Получить список настроек интеграций |
POST /api/agents/domains/save | Создает новую настройку интеграции с AD или обновляет существующую, если передан |
Отделы | |
GET /api/departments/find | Возвращает иерархический список всех отделов. |
POST /api/departments/create | Создать отдел |
POST /api/departments/remove | Удалить отдел |
Должности | |
GET /api/positions/find | Получить список должностей |
POST /api/positions/create | Создать должность |
POST /api/positions/remove | Удалить должность |
Расписания | |
GET /api/schedules/find | Получить список расписаний |
POST /api/schedules/get | Получить детали расписания |
POST /api/schedules/save | Сохранить расписание |
POST /api/schedules/remove | Удалить расписание |
Приложения | |
GET /api/applications/find | Получить список приложений |
POST /api/applications/save | Создать или обновить приложение |
POST /api/applications/remove | Удалить приложение |
Активности | |
GET /api/activities/find | Получить список активностей |
GET /api/activities/reports | Получить отчеты по активностям |
GET /api/activities/searches | Получить поисковые запросы |
GET /api/activities/keylogger | Получить данные кейлоггера |
GET /api/activities/logs | Получить логи |
Ресурсы | |
GET /api/resources/get | Получить файл ресурса (скриншот) |
Возвращает список пользователей, опционально отфильтрованный по параметрам.
GET /api/users/find
Входные параметры:
Параметр | Обязательный | Тип | Описание |
id | нет | long | ID пользователя для фильтрации |
нет | string | Email пользователя для фильтрации | |
active | нет | boolean | фильтр по статусу активности пользователя |
Создает нового пользователя или обновляет существующего, если передан id
.
POST /api/users/save
Request Body
Параметр | Обязательный | Тип | Описание |
id | нет | long | ID пользователя для обновления. Если не указан, то создается новый пользователь. |
нет | string | Email пользователя | |
guid | нет | string | GUID пользователя для интеграции с внешними системами |
upn | нет | string | UPN пользователя для интеграции с Active Directory. |
firstName | да(если не указан id) | string | Имя пользователя |
lastName | нет | string | Фамилия пользователя |
secondName | нет | string | Отчество пользователя |
departmentId | нет | long | ID отдела. |
positionId | нет | long | ID должности. |
scheduleId | нет | long | ID расписания. |
active | нет | boolean | Статус активности пользователя. |
deleted | нет | boolean | Статус удаления пользователя. |
statistics | нет | boolean | Включить сбор статистики для пользователя. |
Возвращает информацию о доступах указанного пользователя.
GET /api/users/getAccess
Параметр | Обязательный | Тип | Описание |
id | да | long | ID пользователя. |
Устанавливает права доступа для указанного пользователя.
Если параметр access
не передан, доступ для пользователя будет закрыт.
POST /api/users/setAccess
Request Body
Параметр | Обязательный | Тип | Описание |
id | да | long | ID пользователя. |
access | нет | object | Объект с правами доступа |
access.menu | array[long] | Массив ID разделов меню, к которым есть доступ. | |
access.departments | array[long] | Массив ID отделов, к которым есть доступ. | |
access.users | array[long] | Массив ID пользователей, к которым есть доступ. |
Получить список событий
GET /api/users/events/find
Параметр | Обязательный | Тип | Описание |
userId | нет | long | ID пользователя, для которого запрашиваются события. |
startDate | да | string | Дата начала периода. |
endDate | да | string | Дата окончания периода. |
Создает новое событие календаря или обновляет существующее, если передан id
.
POST /api/users/events/save
Request Body
Параметр | Обязательный | Тип | Описание |
id | нет | long | ID события для обновления. |
userId | да | long | ID пользователя, к которому относится событие. |
type | да | string | Тип события. |
name | да | string | Название/описание события. |
startDate | да | string | Дата и время начала события. |
endDate | да | string | Дата и время окончания события. |
Удаляет событие календаря по его ID.
POST /api/users/events/remove
Request Body
Параметр | Обязательный | Тип | Описание |
id | да | long | ID события для удаления. |
Возвращает список агентов, опционально отфильтрованный по ID пользователя.
GET /api/agents/find
Параметр | Обязательный | Тип | Описание |
userId | нет | long | ID пользователя для фильтрации агентов. |
Создает нового агента для указанного пользователя.
При создании учитываются лимиты агентов (agentLimitEnabled
, agentLimitValue
).
POST /api/agents/create
Request Body
Параметр | Обязательный | Тип | Описание |
userId | нет | long | ID пользователя, для которого создается агент. |
Изменяет статус активности агента.
При активации учитываются лимиты агентов (agentLimitEnabled
, agentLimitValue
).
POST /api/agents/active
Request Body
Параметр | Обязательный | Тип | Описание |
id | да | long | ID агента |
active | нет | boolean | Новый статус активности |
Назначает или удаляет ID пользователя (userId
) для указанного агента.
POST /api/agents/setUserId
Request Body
Параметр | Обязательный | Тип | Описание |
id | да | long | ID агента |
userId | нет | long | ID пользователя для привязки. |
Если параметр не передан, пуст или равен null
, то userId
у агента будет сброшен.
Возвращает список всех настроенных интеграций с AD.
GET /api/agents/domains/find
Нет параметров
Создает новую настройку интеграции с AD или обновляет существующую,
если передан id
.
POST /api/agents/domains/save
Request Body
Параметр | Обязательный | Тип | Описание |
id | нет | long | ID интеграции для обновления. |
controller | нет | string | Адрес (IP или hostname) контроллера домена. |
domain | да, если id не указан | string | Имя домена Active Directory (например, |
login | да, если id не указан | string | Логин пользователя для подключения к AD (с правами чтения пользователей и групп). |
password | нет | string | Пароль пользователя для подключения к AD. |
organizationalUnits | нет | string | Строка, содержащая JSON-массив путей к OU для синхронизации. Пример: Если не указан, синхронизируются все пользователи домена. |
createDepartments | нет | boolean | Автоматически создавать отделы на основе структуры OU в AD. |
Возвращает иерархический список всех отделов.
GET /api/departments/find
Нет параметров.
Создает новый отдел.
POST /api/departments/create
Request Body
Параметр | Обязательный | Тип | Описание |
name | нет | string | Название нового отдела. |
departmentId | нет | long | ID родительского отдела |
Удаляет отдел по его ID.
POST /api/departments/remove
Request Body
Параметр | Обязательный | Тип | Описание |
id | да | long | ID отдела для удаления. |
Возвращает список всех должностей.
GET /api/positions/find
Нет параметров.
Создает новую должность.
POST /api/positions/create
Request Body
Параметр | Обязательный | Тип | Описание |
name | да | string | Название новой должности. |
Удаляет должность по её ID.
POST /api/positions/remove
Request Body
Параметр | Обязательный | Тип | Описание |
id | да | long | ID должности для удаления |
Возвращает список всех доступных расписаний.
GET /api/schedules/find
Нет параметров
Возвращает подробную информацию о расписании по его ID.
GET /api/schedules/find
Нет параметров
Возвращает подробную информацию о расписании по его ID.
POST /api/schedules/get
Request Body
Параметр | Обязательный | Тип | Описание |
id | да | long | ID расписания |
Создает новое или обновляет существующее расписание.
POST /api/schedules/save
Request Body
Параметр | Обязательный | Тип | Описание |
schedule | да | object | Объект, описывающий расписание |
id | нет | long | ID расписания для обновления. |
schedule
Параметр | Обязательный | Тип | Описание |
name | да | string | Название расписания |
free | да | boolean | Тип расписания: false - Обычное расписание с фиксированными интервалами true - Гибкое расписание ("Свободный рабочий день") с указанием общей длительности. |
data | да | array[object] | Массив из 7 объектов, представляющих дни недели (Понедельник - Воскресенье). |
default | нет | boolean |
data[object]
Структура объекта дня, если schedule.free
= false
(Обычное расписание)
Параметр | Обязательный | Тип | Описание |
enabled | да | boolean | Статус активности этого дня по расписанию |
intervals | да, если | array[object] | Массив временных интервалов работы. |
Структура объекта дня, если schedule.free
= true
(Гибкое расписание):
Параметр | Обязательный | Тип | Описание |
enabled | да | boolean | Статус активности этого дня по расписанию |
value | да, если | string | Общая продолжительность рабочего времени для этого дня. |
intervals
Массив временных интервалов работы.
Параметр | Обязательный | Тип | Описание |
from | да, формат "ЧЧ:мм | string | Время начала интервала |
to | да, формат "ЧЧ:мм | string | Время окончания интервала. |
Удаляет расписание по его ID.
POST /api/schedules/remove
Request Body
Параметр | Обязательный | Тип | Описание |
id | да | long | ID расписания для удаления. |
Возвращает список всех отслеживаемых приложений (процессы и сайты).
GET /api/applications/find
Нет параметров.
Создает новое приложение или обновляет существующее, если передан id
.
Request Body
Параметр | Обязательный | Тип | Описание |
id | да | long | ID расписания для удаления. |
name | да, если | string | Название приложения. |
path | да, если | string | Путь к исполняемому файлу (для |
type | да, если | string | Тип приложения. Допустимые значения: |
groupId | нет | long | ID группы приложений. |
title | нет | string | Заголовок окна или страницы (для дополнительной идентификации). |
Удаляет приложение из списка отслеживаемых по его ID.
POST /api/applications/remove
Request Body
Параметр | Обязательный | Тип | Описание |
id | да | long | ID приложения для удаления. |
Возвращает список записей активностей пользователей или агентов за указанный период.
GET /api/activities/find
Параметр | Обязательный | Тип | Описание |
usersId | да, если | array[long] | Массив ID пользователей. |
agentsId | нет, tсли указан, | array[long] | Массив ID агентов |
startDate | нет | string | Дата и время начала периода в формате |
endDate | нет | string | Дата и время окончания периода в формате |
type | нет | string | Тип активности. Допустимые значения:
|
order | нет | string | Порядок сортировки (например, |
limit | нет | integer | Максимальное количество записей. |
offset | нет | integer | Смещение для пагинации. |
Возвращает агрегированные данные (отчеты) по активности пользователей за период.
GET /api/activities/reports
Параметр | Обязательный | Тип | Описание |
usersId | да | array[long] | Массив ID пользователей. |
startDate | нет | string | Дата и время начала периода в формате |
endDate | нет | string | Дата и время окончания периода в формате |
Возвращает список поисковых запросов пользователей за период.
GET /api/activities/searches
Параметр | Обязательный | Тип | Описание |
usersId | да | array[long] | Массив ID пользователей. |
startDate | нет | string | Дата и время начала периода в формате |
endDate | нет | string | Дата и время окончания периода в формате |
Возвращает записи кейлоггера для пользователей за период.
GET /api/activities/keylogger
Параметр | Обязательный | Тип | Описание |
usersId | да | array[long] | Массив ID пользователей. |
startDate | нет | string | Дата и время начала периода в формате |
endDate | нет | string | Дата и время окончания периода в формате |
incidents | нет | boolean | Фильтр по инцидентам. |
Возвращает логи работы агентов или интеграций за период.
GET /api/activities/logs
Параметр | Обязательный | Тип | Описание |
usersId | да | array[long] | Массив ID пользователей. |
startDate | нет | string | Дата и время начала периода в формате |
endDate | нет | string | Дата и время окончания периода в формате |
type | нет | string | Тип агента. Допустимые значения: |
order | нет | string | Порядок сортировки (например, |
limit | нет | integer | Максимальное количество записей. |
offset | нет | integer | Смещение для пагинации. |
Скачивает файл ресурса по его ID.
GET /api/resources/get
Параметр | Обязательный | Тип | Описание |
id | да | string | ID файла для скачивания |
Это строковое значение, полученное из поля data.file
ответа эндпоинта
/api/activities/find
с type=screen
.
* Запрос (javascript):
```javascript
const url = '**********';
const key = '*************';
const body = new FormData();
body.append('name', 'Отдел тестирования');
fetch(`${url}/api/departments/create?key=${key}`, {
method: 'POST',
body
})
.then(res => res.json())
.then(json => console.log(json))
.catch(err => console.log(err));
```
* **Ожидаемый успешный ответ:**
```json
{
"status": "success",
"data": {
"id": 9,
"name": "Отдел тестирования",
"departmentId": null
}
}
```
```javascript
const url = '********';
const authorization = '*********';
fetch(`${url}/api/users/save`, {
method: 'POST',
headers: {
authorization,
'Content-Type': 'application/json'
},
body: JSON.stringify({
email: "new_user@example.com",
firstName: "Иван",
lastName: "Петров",
secondName: "Сергеевич",
departmentId: 4186916597530624,
positionId: 4186916601724928,
scheduleId: 4186916610113537
})
})
.then(res => res.json())
.then(json => console.log(json))
.catch(err => console.log(err));
```
* **Ожидаемый успешный ответ:**
```json
{
"status": "success",
"data": {
"id": 8631761579802624,
"admin": false,
"active": true,
"statistics": true,
...
}
}
```
* **Запрос (javascript):**
```javascript
const url = '*********';
const key = '***********';
const date = new Date().toISOString().slice(0, 10);
const params = new URLSearchParams({
key,
startDate: `${date} 00:00:00`,
endDate: `${date} 23:59:59`,
usersId: 4201420366544896,
type: 'screen',
limit: 1
});
const { data } = await fetch(`${url}/api/activities/find?${params.toString()}`, {
method: 'POST',
headers: {
'Content-Type': 'application/json'
}
}).then(res => res.json());
if (data?.length > 0) {
const screenshotId = data[0].data.file;
const img = document.createElement('img');
img.src = `${url}/api/resources/get?id=${screenshotId}&key=${key}`;
img.alt = `Скриншот ${screenshotId}`;
img.style.maxWidth = '500px';
document.body.appendChild(img);
}
```