Перейти к основному содержимому

Аутентификация

Каждый вызов интеграционного API идёт от имени сервисного аккаунта организации: клиента Keycloak с client credentials. Токен передают заголовком:

Authorization: Bearer <access_token>

Токен​

  • Токен выдаёт тот же realm Keycloak, через который входят сотрудники установки: https://<keycloak>/realms/<realm>/protocol/openid-connect/token, grant_type=client_credentials. Адрес показывает страница Интеграции → API организации.
  • У токена должна быть аудитория helpdesk-integration-api: её добавляет маппер клиента Keycloak, запрашивать её отдельно не нужно.
  • Токен пользователя (с сессией входа или человеческим логином) интеграционный API не принимает.
  • SDK получают токен сами, держат его до истечения с запасом и обновляют один раз на 401.

Сервисный аккаунт​

  • Клиента в Keycloak создаёт и привязывает к организации администратор установки: организация не может занять чужой клиент. Организация видит свои аккаунты в Настройки → API и выбирает им роль.
  • Организация берётся из записи аккаунта, а не из токена: один клиент действует за одну организацию.
  • Права аккаунта — его роль на всю организацию. Отключённый аккаунт или отключённая организация получают отказ.
  • Автор изменений в истории обращения и журнале аудита — система с меткой service:<client_id>. Заметку в рабочем месте оператора подписывает название аккаунта.

Роли​

РольЧто даёт
«Интеграция» (integration_sa)чтение обращений, клиентов, справочников; начать обращение, сообщения и «печатает…» клиента, атрибуты клиента, ответы бота
«Интеграция: ведение обращений» (integration_operator)всё из «Интеграции», а также закрыть, переоткрыть, передать, приоритет, тема, категория, метки, заметка, блокировка клиента, подписки на вебхуки
«Интеграция: отчёты» (integration_reports)чтение обращений, монитор очередей, оценки, ответы форм, отчёты файлами (без имён клиентов)
«Интеграция: выгрузки» (integration_exports, привилегированная)отчёты файлами с именами клиентов, выгрузки обращений с историей (текст фильтра ищется по сообщениям и заметкам) и клиентов с контактами
«Интеграция: журнал аудита» (integration_audit, привилегированная)журнал аудита организации файлом, без чтения журнала в API
«Интеграция: конфигурация» (integration_config, привилегированная)пакет конфигурации организации файлом, без ввоза; секреты в пакете — заглушки

Привилегированные роли при регистрации не выдаются. Смену роли на такую запрашивает один администратор организации, а одобряет другой (Настройки → API). До одобрения аккаунт работает с прежней ролью; запрос и одобрение пишутся в журнал аудита.

У каждой операции в справочнике указаны нужное право (x-helpdesk-permission) и роли, где оно есть (x-helpdesk-roles).

Отказы​

ОтветЧто значит
401 UNAUTHENTICATEDнет токена, он истёк или подписан чужим realm, клиент не зарегистрирован сервисным аккаунтом
403 FORBIDDENроли аккаунта не хватает права или организация отключена
404 NOT_FOUNDобъекта нет или он чужой организации: интеграционный API никогда не отвечает 403 на чужой объект

Конверт ответа — в разделе Ошибки.