Разделы документации

Admin API: пользователи

Методы Admin API для команды: список и создание пользователей, роли, пароли, ограничения доступа и личные настройки создателя токена.

Через API доступны те же действия, что и в разделе панели Админ-панель → Команда: управление пользователями, их ролями, паролями и правами. Все 13 методов требуют токен с доступом Полный доступ (full). Авторизация описана на странице Admin API: обзор и авторизация, формат ответов и ошибок — на странице Формат запросов, ответов и ошибок.

Объект пользователя

ПолеТипОписание
idстрока, UUIDID пользователя
workspace_idстрока, UUIDID команды
emailстрокаЛогин для входа в панель
roleстрокаРоль, одно из шести значений ниже
manager_idстрока, UUIDID тимлида, за которым закреплён сотрудник. Если тимлида нет, поля в ответе нет
created_atстрока, дата RFC 3339Время создания. Приходит в списках

Значения role:

ЗначениеРоль в панели
ownerВладелец
adminАдминистратор
teamleadТимлид Баеров
buyerБаер
designerВерстальщик
viewerФинансист

Что может каждая роль — на странице Команда и роли.

Особенности запросов по Api-Key

  • Запрос выполняется от имени создателя токена — см. От чьего имени работает токен. «Текущий пользователь» и «свой пароль» в методах ниже — это создатель токена.
  • Панель после изменения собственной учётной записи получает код 200 и новую сессию. Запрос с Api-Key в тех же случаях получает 204 без тела.
  • Токен, созданный администратором, не меняет учётные записи владельцев: такие запросы отвечают 403 — см. Защита владельца.
  • Изменение логина, роли, тимлида или пароля завершает открытые сессии этого пользователя в панели. Ему нужно войти заново.
Внимание.

Если создателю токена дать роль ниже admin, все его токены удаляются. Следующий запрос с таким токеном получит 401.

Команда

Список пользователей

http
GET /api/v1/users

Возвращает всех пользователей команды. Параметров нет.

Ответ — код 200 и массив объектов пользователя в порядке создания.

bash
curl https://panel.example.com/api/v1/users \
  -H "Api-Key: <токен>"
json
[
  {
    "id": "3f2b8c1e-5a47-4d1b-9c0e-7a6d2f4b8e10",
    "workspace_id": "9a1d4c77-0b52-4e8f-a3c6-2d5e7f8a9b01",
    "email": "[email protected]",
    "role": "owner",
    "created_at": "2026-10-01T08:15:22.104518Z"
  },
  {
    "id": "c41a9e07-52bd-4f13-8a60-9d7e6f5a4b3c",
    "workspace_id": "9a1d4c77-0b52-4e8f-a3c6-2d5e7f8a9b01",
    "email": "buyer7",
    "role": "buyer",
    "manager_id": "7b0c1d52-3f4e-4a6b-9c8d-1e2f3a4b5c6d",
    "created_at": "2026-10-03T14:22:05.418332Z"
  }
]

Создать пользователя

http
POST /api/v1/users

Создаёт учётную запись с логином, паролем и ролью.

ПолеТипОбязательностьОписание
emailстрокадаЛогин. Пробелы по краям отбрасываются. Регистр букв при проверке на совпадение не учитывается
passwordстрокадаПароль, не короче 8 символов
roleстроканетРоль. По умолчанию buyer
manager_idстрока, UUIDнетID тимлида. Учитывается только для ролей buyer и designer — см. Тимлид и его баеры

Ответ — код 201 и объект пользователя без created_at.

КодcodemessageКогда
400bad_requestinvalid jsonТело не разобрано
422validationemail и пароль (мин. 8 символов) обязательныЛогин пустой или пароль короче 8 символов
422validationнедопустимая рольЗначения role нет в списке ролей
403forbiddenназначить роль владельца может только владелецrole = owner, а токен создан администратором
409conflictпользователь с таким email уже естьЛогин занят
bash
curl -X POST https://panel.example.com/api/v1/users \
  -H "Api-Key: <токен>" \
  -H "Content-Type: application/json" \
  -d '{"email": "buyer8", "password": "S3cure-pass", "role": "buyer", "manager_id": "7b0c1d52-3f4e-4a6b-9c8d-1e2f3a4b5c6d"}'

Изменить пользователя

http
PUT /api/v1/users/{id}

Меняет роль, тимлида и логин. id в пути — ID пользователя.

ПолеТипОбязательностьОписание
roleстрокадаРоль. Отправляйте и тогда, когда она не меняется
manager_idстрока, UUIDнетID тимлида для ролей buyer и designer. Если поля нет или оно пустое, закрепление снимается
emailстроканетНовый логин. Пустое значение оставляет прежний

Ответ — код 204 без тела. Если новая роль ниже admin, API-токены этого пользователя удаляются.

КодcodemessageКогда
422validationнедопустимая рольrole не передана, её нет в списке ролей или тело не разобрано
403forbiddenназначить роль владельца может только владелецrole = owner, а токен создан администратором
403forbiddenуправлять учётками владельца может только владелецИзменяемый пользователь — владелец, а токен создан администратором
404not_foundпользователь не найден или resource not foundПользователя с таким ID нет
409conflictпользователь с таким логином уже естьЛогин занят
422validationнельзя удалить/разжаловать последнего владельцаЕдинственному владельцу назначается другая роль

Задать пароль пользователю

http
POST /api/v1/users/{id}/password

Задаёт новый пароль без знания старого.

ПолеТипОбязательностьОписание
passwordстрокадаНовый пароль, не короче 8 символов

Ответ — код 204 без тела.

Ошибки: 400 invalid json; 422 пароль — минимум 8 символов; 403 управлять учётками владельца может только владелец; 404 пользователь не найден или resource not found, если пользователя нет.

Удалить пользователя

http
DELETE /api/v1/users/{id}

Удаляет учётную запись. Кампании, офферы и лендинги пользователя переходят его тимлиду, а если тимлида нет — создателю токена. API-токены удалённого пользователя перестают работать.

Ответ — код 204 без тела.

КодcodemessageКогда
422validationнельзя удалить самого себяid — создатель токена
403forbiddenуправлять учётками владельца может только владелецУдаляется владелец, а токен создан администратором
404not_foundпользователь не найден или resource not foundПользователя с таким ID нет

Ограничения доступа

Ограничения задаются для ролей teamlead, buyer, designer и viewer. Как они действуют — на странице Права пользователя.

Получить ограничения пользователя

http
GET /api/v1/users/{id}/access

Ответ — код 200 и объект ограничений:

ПолеТипОписание
denied_sectionsмассив строк или nullРазделы со значением Нет доступа
read_only_sectionsмассив строк или nullРазделы со значением Просмотр
campaign_groupsмассив строк или nullРазрешённые группы кампаний. null — ограничения нет. Пустая строка в массиве разрешает кампании без группы
hidden_fieldsмассив строк или nullЗапрещённые поля отчётов
revisionчислоВерсия ограничений. 0 — ограничения ещё не сохранялись

Ключи разделов: campaigns, offers, landers, reports, domains, traffic-sources.

Ошибка: 404 not_found с текстом resource not found, если пользователя нет.

Сохранить ограничения пользователя

http
PUT /api/v1/users/{id}/access

Заменяет ограничения целиком. Сначала прочитайте текущие ограничения, измените нужные поля и отправьте объект обратно с тем же revision.

ПолеТипОбязательностьОписание
denied_sectionsмассив строкнетКлючи закрытых разделов
read_only_sectionsмассив строкнетКлючи разделов только для просмотра
campaign_groupsмассив строк или nullнетНазвания разрешённых групп, до 200. null снимает ограничение
hidden_fieldsмассив строкнетКлючи метрик и группировок отчёта, до 100. Формат ключа — в разделе Запрещённые поля отчётов
revisionчислодаЗначение из последнего чтения. Для первого сохранения — 0

Ответ — код 200 и сохранённый объект с новым revision.

Внимание.

Пустой массив campaign_groups закрывает пользователю все кампании. Чтобы снять ограничение по группам, передайте null.

КодcodemessageКогда
422validationОграничения применяются к рабочим ролям; администраторы имеют полный доступПользователь — владелец или администратор
422validationНекорректные ограниченияТело не разобрано, отрицательный revision, больше 100 полей или больше 200 групп
422validationНеизвестный разделВ списке разделов есть ключ не из шести допустимых
422validationНекорректное полеКлюча из hidden_fields нет среди метрик и группировок отчёта
409access_conflictПрава изменились. Перечитайте их перед сохранением.revision не совпал с сохранённым. Прочитайте ограничения заново и повторите запрос
404not_foundresource not foundПользователя с таким ID нет
bash
curl -X PUT https://panel.example.com/api/v1/users/c41a9e07-52bd-4f13-8a60-9d7e6f5a4b3c/access \
  -H "Api-Key: <токен>" \
  -H "Content-Type: application/json" \
  -d '{"denied_sections": ["domains"], "read_only_sections": ["offers"], "campaign_groups": ["PL Nutra", ""], "hidden_fields": ["revenue", "cost"], "revision": 0}'

Вход под пользователем и сотрудники тимлида

Войти под пользователем

http
POST /api/v1/users/{id}/impersonate

Выдаёт сессию панели от имени сотрудника — то же, что кнопка Войти как ↗ на странице Вход под пользователем. Тела запроса нет.

Ответ — код 200: поле token с сессией на 2 часа и поле user с полями id, workspace_id, email и role. Сессия передаётся в заголовке Authorization: Bearer, а не в Api-Key.

Ошибки: 403 входить под владельцем может только владелец; 404 resource not found, если пользователя нет.

Сотрудники тимлида

http
GET /api/v1/my-buyers

Возвращает сотрудников, закреплённых за текущим пользователем-тимлидом. У остальных ролей ответ — пустой массив [] с кодом 200. Токен работает от имени владельца или администратора, поэтому по Api-Key приходит []. Чтобы получить сотрудников тимлида, возьмите список пользователей и отберите записи по manager_id.

Профиль создателя токена

Получить часовой пояс

http
GET /api/v1/profile/preferences

Ответ — код 200 и объект с одним полем timezone: личный часовой пояс новых отчётов — см. Мой профиль: пароль и часовой пояс.

Сохранить часовой пояс

http
PUT /api/v1/profile/preferences
ПолеТипОбязательностьОписание
timezoneстрокадаНазвание зоны IANA, например Europe/Warsaw

Ответ — код 200 и сохранённый объект {"timezone": "Europe/Warsaw"}.

Ошибки: 400 Некорректный запрос; 422 Некорректная IANA-таймзона.

Действующие ограничения текущего пользователя

http
GET /api/v1/profile/access

Возвращает те же поля, что ограничения пользователя, и массив effective_hidden_fields — запрещённые поля вместе с зависимыми показателями. Для владельца и администратора ограничений нет: списки приходят со значением null, effective_hidden_fields — пустой массив, revision — 0.

Сменить свой пароль

http
POST /api/v1/profile/password

Меняет пароль создателя токена.

ПолеТипОбязательностьОписание
currentстрокадаТекущий пароль
newстрокадаНовый пароль, не короче 8 символов

Ответ по Api-Key — код 204 без тела.

Ошибки: 400 invalid json; 422 новый пароль — минимум 8 символов; 422 текущий пароль неверен.

Общие ошибки

Обновлено Нужна помощь? ↗