Перейти к содержанию

Интеграция 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 необходимо:

  1. Получить ключ API_KEY в личном кабинете администратора в Настройки - Интеграции - API ключ

  2. Использовать данный ключ в каждом запросе к 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Удалить интеграцию ADid: 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/screenshotsOCR по скриншотам         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}`} />