Подтвердите, что вы не робот
Получить демо-доступ
Получить демо-доступ
Начать бесплатно
Разделы
Свернуть

API

API интерфейс предназначен для разработчиков и используется для интеграции ваших приложений с системой ИНСАЙДЕР. Если у вас имеются вопросы по работе API или требуются дополнительные возможности интеграции, то свяжитесь с нами по адресу: sale@insider.sale

API работает по протоколу HTTP и представляет собой набор методов, с помощью которых совершаются запросы и возвращаются ответы для каждой операции. Все ответы приходят в виде JSON структур.

Начало работы

Работа с API:

Для работы с API необходимо:

  1. Получить ключ API (apikey) в личном кабинете администратора в разделе Настройки - Ключ API

  2. Использовать данный ключ в каждом запросе к 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


API-метод

Описание

Пользователи

GET /api/users/find

Возвращает список пользователей

POST /api/users/save

Создает нового пользователя или обновляет существующего, если передан id.

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 или обновляет существующую,

если передан id.

Отделы

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 пользователя для фильтрации

email

нет

string

Email пользователя для фильтрации

active

нет

boolean

фильтр по статусу активности пользователя

Создать или обновить пользователя

Создает нового пользователя или обновляет существующего, если передан id.
POST /api/users/save


Request Body

Параметр

Обязательный

Тип

Описание

id

нет

long

ID пользователя для обновления.

Если не указан, то создается новый пользователь.

email

нет

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 (например, adserver.lan).

login

да, если id не указан

string

Логин пользователя

для подключения к AD (с правами чтения пользователей и групп).

password

нет

string

Пароль пользователя для подключения к AD.

organizationalUnits

нет

string

Строка,

содержащая JSON-массив путей к OU для синхронизации.

Пример: "[\"/Groups/Developers\",\"/Groups/Admins\"]".

Если не указан, синхронизируются все пользователи домена.

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

да, если enabled = true

array[object]

Массив временных интервалов работы.

Структура объекта дня, если schedule.free = true (Гибкое расписание):

Параметр

Обязательный

Тип

Описание

enabled

да

boolean

Статус активности этого дня по расписанию

value

да, если enabled = true, формат "ЧЧ:мм"

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

да, если id не указан

string

Название приложения.

path

да, если id не указан

string

Путь к исполняемому файлу (для process) или URL/домен (для site).

type

да, если id не указан

string

Тип приложения.

Допустимые значения: process, site.

groupId

нет

long

ID группы приложений.

title

нет

string

Заголовок окна или страницы

(для дополнительной идентификации).

Удалить приложение

Удаляет приложение из списка отслеживаемых по его ID.

POST /api/applications/remove

Request Body

Параметр

Обязательный

Тип

Описание

id

да

long

ID приложения для удаления.

Активности

Получить список активностей

Возвращает список записей активностей пользователей или агентов за указанный период.

GET /api/activities/find

Параметр

Обязательный

Тип

Описание

usersId

да, если agentsId не указан

array[long]

Массив ID пользователей.

agentsId

нет, tсли указан, usersId игнорируется.

array[long]

Массив ID агентов

startDate

нет

string

Дата и время начала периода в формате ГГГГ-ММ-ДД ЧЧ:мм:сс

endDate

нет

string

Дата и время окончания периода в формате ГГГГ-ММ-ДД ЧЧ:мм:сс.

type

нет

string

Тип активности. Допустимые значения:

state, mouse, process, site, screen, keylogger, gps.

order

нет

string

Порядок сортировки (например, asc, desc).

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

Тип агента.

Допустимые значения: agent, domain.

order

нет

string

Порядок сортировки (например, asc, desc).

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);
}
```