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

Интеграция 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 (необязательно)
  • 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 — объект прав (необязательно)
    • menu: array[string] — разделы меню
    • departments: array[long] — доступные отделы
    • 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] — список отвлечений (необязательно)
POST POST /api/users/removeBatch
Удаление пакетно пользователей
  • ids: array[long] — Массив ID пользователей для удаления (обязательно)

События календаря — эндпоинты и параметры
GET /api/users/events/find
Получить список событий календаря
  • userId: long — ID пользователя (необязательно)
  • startDate: string — дата начала "yyyy-MM-dd HH🇲🇲ss" (обязательно)
  • endDate: string — дата окончания "yyyy-MM-dd HH🇲🇲ss" (обязательно)
  • type: string — фильтр по типам событий (например: productive,distractions,vacation) (необязательно)
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 агента (обязательно)
POST /api/agents/removeBatch
Удалить агента
  • ids: array[long] — Массив ID агентов для удаления. (обязательно)

Отделы — эндпоинты и параметры
GET /api/departments/find
Возвращает иерархический список всех отделов
POST /api/departments/save
Создать/обновить отдел
  • id: long — обновление (необязательно)
  • name: string — название отдела (обязательно)
  • departmentId: long — родительский отдел (необязательно)
POST /api/departments/remove
Удалить отдел
  • id: long — ID отдела (обязательно)
POST /api/departments/removeBatch
Удаляет несколько отделов, включая все дочерние отделы, и отвязывает от них пользователей.
  • ids: array[long] — Массив ID отделов для удаления (обязательно)

Должности — эндпоинты и параметры
GET /api/positions/find
Список должностей
POST /api/positions/save
Создать/обновить должность
  • id: long — обновление (необязательно)
  • name: string — наименование (обязательно)
POST /api/positions/remove
Удалить должность
  • id: long — ID должности (обязательно)
POST /api/positions/removeBatch
Удаляет несколько должностей и отвязывает от них пользователей.
  • ids: array[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 расписания (обязательно)
POST /api/schedules/removeBatch
Удаляет несколько расписаний.
  • ids: array[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 (обязательно)
POST /api/applications/removeBatch
Удаляет несколько приложений/сайтов
  • ids: array[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
Загрузить изображение
  • files[]: file — одно или несколько (multipart/form-data) (обязательно)
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}`} />