Интеграция API
API интерфейс предназначен для разработчиков и используется для интеграции ваших приложений с системой ИНСАЙДЕР. Если у вас имеются вопросы по работе API или требуются дополнительные возможности интеграции, то свяжитесь с нами по адресу: sale@insider.sale или в техническую поддержку https://support.insider.red/
API работает по протоколу HTTP и представляет собой набор методов, с помощью которых совершаются запросы и возвращаются ответы для каждой операции. Все ответы приходят в виде JSON структур.
Начало работы
Аутентификация
| Метод | Где передавать | Пример |
|---|---|---|
| API-ключ в URL | Query-параметр key |
GET /api/users/find?key=API_KEY |
| API-ключ в заголовке | Authorization |
Authorization: API_KEY |
Работа с API
Для работы с API необходимо:
-
Получить ключ API_KEY в личном кабинете администратора в Настройки - Интеграции - API ключ
-
Использовать данный ключ в каждом запросе к API в параметрах URL или в заголовке HTTP “Authorization”
Формат запроса
URL любого API-запроса составляется следующим образом:
https://<имя-вашего-сервера-или-ip-адрес>/api/
Пример c ключом в URL:
https://<имя-вашего-сервера-или-ip-адрес>/api/users/find?key=apikey
Или c ключом в заголовке HTTP:
https://<имя-вашего-сервера-или-ip-адрес>/api/users/find
Заголовок HTTP
Authorization: apikey
Обозначения
- Типы дат:
yyyy-MM-dd HH:mm:ss, если не указано иное
Список методов
Пользователи — эндпоинты и параметры
| Метод | Эндпоинт | Описание | Параметры |
|---|---|---|---|
| GET | /api/users/find | Получить список пользователей |
id: array[long] — фильтр по ID — обязательно: нетagentDomainId: long — фильтр по домену — обязательно: нетemail: string — фильтр по email — обязательно: нетactive: boolean — по активности — обязательно: нетstatistics: boolean — по флагу сбора статистики — обязательно: нет
|
| POST | /api/users/save | Создать или обновить пользователя |
id: long — для обновления существующего — обязательно: нетemail: string — Email пользователя — обязательно: нетguid: string — GUID интеграций (Bitrix24, 1С) — обязательно: нетupn: string — UPN (Active Directory) — обязательно: нетfirstName: string — обязательно при создании (если нет id) — обязательно: да*lastName: string — фамилия — обязательно: нетsecondName: string — отчество — обязательно: нетdepartmentId: long — отдел — обязательно: нетpositionId: long — должность — обязательно: нетscheduleId: long — расписание — обязательно: нетtimezone: string — часовой пояс — обязательно: нетactive: boolean — статус активности — обязательно: нетdeleted: boolean — признак удаления — обязательно: нетstatistics: boolean — включить сбор статистики — обязательно: нет
|
| GET | /api/users/getAccess | Получить права пользователя | id: long — ID пользователя — обязательно: да |
| POST | /api/users/setAccess | Установить права пользователя |
id: long — ID пользователя — обязательно: даaccess: object — объект прав — обязательно: нетaccess.menu: array[string] — разделы меню — обязательно: нетaccess.departments: array[long] — доступные отделы — обязательно: нетaccess.users: array[long] — доступные пользователи — обязательно: нет
|
| POST | /api/users/setPassword | Сменить пароль пользователя |
id: long — ID пользователя — обязательно: даpassword: string — новый пароль — обязательно: да
|
| GET | /api/users/getDistractions | Получить отвлечения пользователя | id: long — ID пользователя — обязательно: да |
| POST | /api/users/setDistractions | Назначить отвлечения пользователю |
id: long — ID пользователя — обязательно: даdistractionIds: array[long] — список отвлечений — обязательно: нет
|
События календаря — эндпоинты и параметры
| Метод | Эндпоинт | Описание | Параметры |
|---|---|---|---|
| GET | /api/users/events/find | Получить список событий календаря |
userId: long — ID пользователя — обязательно: нетstartDate: string — дата начала "yyyy-MM-dd HH:mm:ss" — обязательно: даendDate: string — дата окончания "yyyy-MM-dd HH:mm:ss" — обязательно: да
type: string — фильтр по типам событий — обязательно: нет
|
| POST | /api/users/events/save | Создать или обновить событие календаря |
id: long — для обновления — обязательно: нетuserId: long — ID пользователя — обязательно: нетtype: string — тип события — обязательно: нетname: string — название события — обязательно: нетstartDate: string — дата начала — обязательно: нетendDate: string — дата окончания — обязательно: нет
|
| POST | /api/users/events/remove | Удалить событие календаря | id: long — ID события — обязательно: да |
Типы событий — эндпоинты и параметры
| Метод | Эндпоинт | Описание | Параметры |
|---|---|---|---|
| GET | /api/events/find |
Получить список типов событий | — |
| POST | /api/events/save |
Создать или обновить тип события |
id: long — ID события (для обновления) — обязательно: нетname: string — название события — обязательно: да (если id не указан)type: string — тип активности (productive | distractions) —
обязательно: да (если id не указан)
|
| POST | /api/events/remove |
Удалить тип события |
id: long — ID события — обязательно: да
|
Агенты — эндпоинты и параметры
| Метод | Эндпоинт | Описание | Параметры |
|---|---|---|---|
| GET | /api/agents/find | Получить список агентов | userId: array[long] — фильтр по пользователям — обязательно: нет |
| POST | /api/agents/create | Создать агента | userId: long — связать с пользователем — обязательно: нет |
| POST | /api/agents/active | Активировать/деактивировать агента |
id: long — ID агента — обязательно: даactive: boolean — состояние — обязательно: да
|
| POST | /api/agents/setUserId | Привязать/отвязать пользователя |
id: long — ID агента — обязательно: даuserId: long — ID пользователя (не указывать для отвязки) — обязательно: нет
|
| POST | /api/agents/remove | Удалить агента | id: long — ID агента — обязательно: да |
Интеграции (Active Directory) — эндпоинты и параметры
| Метод | Эндпоинт | Описание | Параметры |
|---|---|---|---|
| GET | /api/agents/domains/find | Список интеграций AD | — |
| POST | /api/agents/domains/save | Создать/обновить интеграцию AD |
id: long — обновление — обязательно: нетcontroller: string — контроллер домена — обязательно: нетdomain: string — домен (если нет id) — обязательно: да*login: string — логин (если нет id) — обязательно: да*password: string — пароль — обязательно: нетorganizationalUnits: string(JSON) — например ["/Groups/Developers"] — обязательно: нетcreateDepartments: boolean — создавать отделы по OU — обязательно: нет
|
| POST | /api/agents/domains/remove | Удалить интеграцию AD | id: long — ID интеграции — обязательно: да |
Отделы — эндпоинты и параметры
| Метод | Эндпоинт | Описание | Параметры |
|---|---|---|---|
| GET | /api/departments/find | Список отделов | — |
| POST | /api/departments/save | Создать/обновить отдел |
id: long — обновление — обязательно: нетname: string — название отдела — обязательно: да*departmentId: long — родительский отдел — обязательно: нет
|
| POST | /api/departments/remove | Удалить отдел | id: long — ID отдела — обязательно: да |
Должности — эндпоинты и параметры
| Метод | Эндпоинт | Описание | Параметры |
|---|---|---|---|
| GET | /api/positions/find | Список должностей | — |
| POST | /api/positions/save | Создать/обновить должность |
id: long — обновление — обязательно: нетname: string — наименование — обязательно: да*
|
| POST | /api/positions/remove | Удалить должность | id: long — ID должности — обязательно: да |
Расписания — эндпоинты и параметры
| Метод | Эндпоинт | Описание | Параметры |
|---|---|---|---|
| GET | /api/schedules/find | Список расписаний | id: array[long] — фильтр по ID — обязательно: нет |
| POST | /api/schedules/save | Создать/обновить расписание |
id: long — обновление — обязательно: нетname: string — имя расписания — обязательно: да*free: boolean — гибкий режим (true/false) — обязательно: нетdata: array[object] — 7 объектов Пн–Вс — обязательно: да*Если free=false: data[].intervals[].from, data[].intervals[].to (HH:mm) — обязательно: да*Если free=true: data[].value (HH:mm) — обязательно: да*
|
| POST | /api/schedules/remove | Удалить расписание | id: long — ID расписания — обязательно: да |
Приложения и сайты — эндпоинты и параметры
| Метод | Эндпоинт | Описание | Параметры |
|---|---|---|---|
| GET | /api/applications/find | Список приложений/сайтов | id: array[long] — фильтр по ID — обязательно: нет |
| POST | /api/applications/save | Создать/обновить приложение/сайт |
id: long — обновление — обязательно: нетname: string — имя — обязательно: да*path: string — путь/домен/шаблон — обязательно: да*type: string — process или site — обязательно: да*groupId: long — группа — обязательно: нетtitle: string — отображаемое имя — обязательно: нет
|
| POST | /api/applications/remove | Удалить приложение/сайт | id: long — ID — обязательно: да |
Политики отвлечений — эндпоинты и параметры
| Метод | Эндпоинт | Описание | Параметры |
|---|---|---|---|
| GET | /api/distractions/find | Список политик отвлечений | — |
| POST | /api/distractions/save | Создать/обновить политику отвлечений |
id: long — обновление — обязательно: нетname: string — имя политики — обязательно: да*
|
| GET | /api/distractions/getApplications | Получить приложения политики | id: long — ID политики — обязательно: да |
| POST | /api/distractions/setApplications | Назначить приложения политике |
id: long — ID политики — обязательно: даapplicationIds: array[long] — список приложений — обязательно: нет
|
| GET | /api/distractions/getUsers | Получить пользователей политики | id: long — ID политики — обязательно: да |
| POST | /api/distractions/setUsers | Назначить пользователей политике |
id: long — ID политики — обязательно: даuserIds: array[long] — список пользователей — обязательно: нет
|
| POST | /api/distractions/remove | Удалить политику отвлечений | id: long — ID политики — обязательно: да |
Активности — эндпоинты и параметры
| Метод | Эндпоинт | Описание | Параметры |
|---|---|---|---|
| GET | /api/activities/find | Список активностей |
usersId: array[long] — если нет agentsId — обязательно: да*agentsId: array[long] — если нет usersId — обязательно: да*startDate: string — дата начала — обязательно: даendDate: string — дата окончания — обязательно: даtype: string — state|mouse|process|site|screen|keylogger|gps — обязательно: нетorder: string — asc | desc — обязательно: нетlimit: integer — лимит — обязательно: нетoffset: integer — смещение — обязательно: нетsearch: string — строка поиска — обязательно: нетincludeTotal: boolean — вернуть счётчик — обязательно: нет
|
| GET | /api/activities/reports | Отчёты по активностям |
usersId: array[long] — обязательно: даstartDate: string — обязательно: нетendDate: string — обязательно: нет
|
| GET | /api/activities/searches | Поисковые запросы пользователей |
usersId: array[long] — обязательно: даstartDate: string — обязательно: нетendDate: string — обязательно: нет
|
| GET | /api/activities/keylogger | Данные кейлоггера |
usersId: array[long] — обязательно: даstartDate: string — обязательно: нетendDate: string — обязательно: нетincidents: boolean — только инциденты — обязательно: нет
|
| POST | /api/activities/screenshots | OCR по скриншотам |
usersId: array[long] — обязательно: даsearch: string — строка поиска — обязательно: даstartDate: string — обязательно: нетendDate: string — обязательно: нетТребуется опция screenshotSearchServiceUrl
|
| GET | /api/activities/logs | Логи агентов/интеграций |
agentsId: array[long] — обязательно: даtype: string — agent | domain — обязательно: даstartDate: string — обязательно: даendDate: string — обязательно: даorder: string — обязательно: нетlimit: integer — обязательно: нетoffset: integer — обязательно: нет
|
Ресурсы — эндпоинты и параметры
| Метод | Эндпоинт | Описание | Параметры |
|---|---|---|---|
| POST | /api/resources/uploadPicture | Загрузить изображение | multipart/form-data: files[]: file — одно или несколько — обязательно: да |
| POST | /api/resources/loadPicture | Получить URL изображения | id: long — ID ресурса — обязательно: да |
| POST | /api/resources/removePicture | Удалить изображение | id: long — ID ресурса — обязательно: да |
| GET | /api/resources/get | Скачать файл ресурса | id: long — ID ресурса — обязательно: да |
Примеры запросов
Создание отдела
fetch(`${url}/api/departments/save?key=${key}`, { method:'POST', body: formData })
Создание пользователя
fetch(`${url}/api/users/save`, { method:'POST', headers:{authorization: API_KEY,'Content-Type':'application/json'}, body: JSON.stringify({...}) })
Получение и отображение скриншота
const { data } = await fetch(`${url}/api/activities/find?${params}`).then(r=>r.json());
const screenshotId = JSON.parse(data.data).file;
<img src={`${url}/api/resources/get?id=${screenshotId}&key=${key}`} />