Статус: в разработке. Публичный REST API и вебхуки спроектированы, спецификация зафиксирована, реализация в работе. Публичных эндпоинтов пока нет — эта страница честно рассказывает, что уже можно делать сегодня и каким будет API, когда он выйдет. Если интеграция для вас — условие покупки, напишите нам: мы называем сроки и подключаем к раннему доступу.
Что можно интегрировать уже сейчас
Компания на 200-1000 человек не живёт в одном инструменте. Кадры ведутся в 1С или другой учётной системе, доступы раздаются в Jira и GitHub, отчётность собирается в BI. Пока публичного API нет, DTPulse обменивается данными через файлы и через вход по SSO — способы скучные, но рабочие.
Импорт и экспорт сотрудников. В админке есть импорт из CSV с разбором ошибок по строкам и обратная выгрузка в двух форматах: CSV с тем же набором колонок, что и в импорте (его можно загрузить обратно — в другую компанию или в on-premise установку), и JSON — полный снимок с отделами, руководителями, связями подчинения и фотографиями. Ночная выгрузка из учётной системы в CSV и загрузка файлом закрывает основной сценарий синхронизации кадров.
Автосоздание учётных записей. При подключённом SAML, Google или Slack учётная запись создаётся при первом входе — новому сотруднику не нужно заводить профиль руками ни в портале, ни в скрипте.
Выгрузка журнала аудита. Журнал выгружается в CSV за произвольный период — до 50 000 строк за запрос. Этого хватает, чтобы залить события в SIEM или в корпоративное хранилище раз в сутки.
Всё перечисленное работает и покрывает большую часть того, ради чего обычно просят API. Чего оно не закрывает — реакции на событие в реальном времени и записи из внешней системы без участия человека. Ради этого и делается API.
Каким будет API
Решения по архитектуре приняты и зафиксированы в спецификации, менять их мы не планируем.
Токены компании, а не пользователя. Токен принадлежит компании, а не сотруднику, который его выпустил. Уволился автор интеграции — интеграция продолжает работать. У токена есть имя, набор прав, срок жизни (по умолчанию 90 дней) и необязательный список разрешённых IP-подсетей. В базе хранится только хеш; сам токен показывается один раз при выпуске.
Права на уровне ресурса. Не «полный доступ», а набор вроде read:employees, write:absences, approve:absences, read:pulse. Права токена не могут превышать полномочия роли, которая его выпустила: HR не сможет создать токен с правами, которых у HR нет в интерфейсе.
Чтение и запись. Сотрудники, отделы, отсутствия и согласования, циклы 360-оценки и их результаты, отчёты о работе, цели, агрегаты пульс-опросов, журнал аудита. Постраничность курсорная — на компании в тысячу человек с годовой историей отсутствий это принципиально.
Ответ будет выглядеть так:
GET /api/v1/employees?limit=200
Authorization: Bearer dtp_live_...
{ "data": [ … ], "meta": { "cursor": "…" } }
Вебхуки с подписью и повторами. События — создание и изменение сотрудника, подача, согласование и отклонение заявки на отсутствие, запуск и закрытие цикла оценки, сдача отчёта, закрытие пульс-опроса. Каждая доставка подписывается HMAC-SHA256 по схеме, знакомой всем, кто интегрировался со Stripe, и содержит уникальный идентификатор для защиты от повторной обработки. Неудачная доставка повторяется по расширяющемуся расписанию до пяти раз, дальше уходит в отдельный список, откуда её можно отправить заново вручную. Журнал доставок с кодами ответа и текстом ошибки виден в админке.
Лимиты по тарифам. Никакого «безлимита»: на TEAM — 3 токена, 3 вебхука и 60 запросов в минуту, на BUSINESS — 10, 10 и 300, на ENTERPRISE — 50, 50 и 1000. На бесплатном тарифе API не включается.
Всё под аудитом. Каждый вызов пишется в журнал аудита с пометкой, что действие совершил токен, а не человек, и с именем токена. На вопрос «кто согласовал этот отпуск» будет ответ «интеграция с 1С-Документооборотом, заявка №…».
Кому это будет полезно
Инженеру компании — вместо парсинга CSV по ночам обычный HTTP-клиент, курсорная постраничность и предсказуемый формат ошибок.
HR — кадровые изменения приходят из учётной системы сами, без ручного переноса и без расхождений между двумя списками сотрудников.
ИТ — приём на работу автоматически заводит доступы в Jira, Confluence и GitHub по событию employee.created, а увольнение их снимает.
Аналитике — результаты оценки и пульс-опросов забираются в BI по расписанию, с тем же ограничением на минимальный размер выборки, что и в интерфейсе: агрегаты меньше трёх ответов не отдаются никому.
С чего начать
Сегодня — с импорта и экспорта: они закрывают синхронизацию кадров и не требуют ни строчки кода. Если вам нужна именно программная интеграция, напишите нам с описанием сценария — мы приоритизируем эндпоинты под реальные задачи, а не по алфавиту, и подключим к API, как только он выйдет.