Роли и доступы
Права в reKassa описываются доступами (users.read, roles.assign, …). Доступы не выдаются
напрямую — их несут роли, а роли назначаются пользователям. У каждой роли есть ранг:
чем он выше, тем старше роль. Ранг решает, кем сотрудник может управлять.
Таблицы ниже собраны из каталога ролей в коде бэкенда при сборке документации — это ровно тот набор, который API создаёт в базе при запуске.
Роли платформы
Заголовок раздела «Роли платформы»Роли сотрудников reKassa. Назначаются на уровне всей платформы и дают доступ к методам
/v1/portal/*. Доступ на уровне платформы действует и во всех организациях
клиентов.
| Роль | Ранг | Доступы |
|---|---|---|
Директорplatform.director | 100 |
|
Технический директорplatform.tech_director | 90 |
|
Руководитель технической поддержкиplatform.support_lead | 70 |
|
Главный бухгалтерplatform.chief_accountant | 60 |
|
Клиентский менеджерplatform.client_manager | 50 |
|
Маркетинговый менеджерplatform.marketing_manager | 50 | нет |
Техническая поддержкаplatform.support | 40 |
|
Бухгалтерplatform.accountant | 40 |
|
Кем можно управлять
Заголовок раздела «Кем можно управлять»Ранг сотрудника — наибольший ранг среди его ролей платформы. Если ролей платформы нет, ранга нет вовсе, и управлять другими пользователями нельзя.
-
Директор (ранг 100) — высший ранг. Может изменять, блокировать и назначать роли кому угодно, включая других директоров, и выдавать любую роль.
-
Остальные управляют только теми, чей ранг строго ниже их собственного, и выдают только роли строго ниже своего ранга. Руководитель технической поддержки (70) может заблокировать сотрудника поддержки (40), но не другого руководителя поддержки (70) и не технического директора (90).
-
Нельзя выдать то, чего нет у вас. Роль можно назначить или снять, только если у вас есть все её доступы. Пользователя можно изменить или заблокировать, только если у вас есть все доступы его ролей платформы. Это правило действует и для директора.
Нарушение правил 1–2 даёт 403 insufficient_rank, правила 3 — 403 permission_not_held со списком
недостающих доступов в details.missing:
{ "error": { "code": "permission_not_held", "message": "Нельзя выдать доступы, которых нет у вас самих", "details": { "missing": ["roles.assign"] }, "requestId": "7d2b9e40-3a1c-4f86-b5e2-0c8f1a6d9e37" }}Роль «Пользователь»
Заголовок раздела «Роль «Пользователь»»Базовая роль каждого, кто зарегистрировался сам через /v1/auth/register.
Даёт работу со своим аккаунтом через /v1/me и право
добавить свою организацию (orgs.create) — тогда пользователь становится
«Владельцем» нового клиента. Доступ orgs.create этой роли действует только для нового клиента:
в чужие клиенты и в портал он не пускает.
| Роль | Ранг | Доступы |
|---|---|---|
Пользовательaccount.user | 0 |
|
Роли клиента
Заголовок раздела «Роли клиента»Шаблоны ролей для сотрудников клиента: владельца бизнеса, бухгалтерии, кассиров. У клиента своя
шкала рангов, и «Владелец» (100) — высший ранг внутри клиента: он управляет всеми, включая других
владельцев. Доступы users.block и orgs.verify ролям клиента не выдаются.
| Роль | Ранг | Доступы |
|---|---|---|
Владелецclient.owner | 100 |
|
Директорclient.director | 90 |
|
Управляющийclient.manager | 70 |
|
Главный бухгалтерclient.chief_accountant | 60 |
|
Кассирclient.cashier | 10 |
|
Роли клиента действуют на одном из уровней и не назначаются на уровне платформы
(422 role_scope_mismatch):
| Уровень | Как назначается |
|---|---|
| весь клиент | «Владелец» — автоматически тому, кто создал клиента первой организацией |
| организация | POST /v1/orgs/{id}/members без branchId |
| филиал | POST /v1/orgs/{id}/members с branchId |
Один и тот же доступ означает разный охват в зависимости от уровня назначения: users.manage
на уровне платформы — управление всеми пользователями, у «Владельца» — сотрудниками всех
организаций его клиента, у роли, назначенной на филиал, — только этим филиалом. Правила рангов для
сотрудников организаций — в разделе Сотрудники и PIN.
Каталог доступов
Заголовок раздела «Каталог доступов»| Доступ | Что разрешает |
|---|---|
users.read | Просмотр пользователей |
users.manage | Создание и изменение пользователей |
users.block | Блокировка и разблокировка пользователей |
roles.read | Просмотр ролей и доступов |
roles.assign | Назначение и снятие ролей |
orgs.create | Добавление организаций |
orgs.read | Просмотр организаций и филиалов |
orgs.manage | Изменение реквизитов и подача на проверку |
orgs.verify | Проверка организаций (сотрудники платформы) |
branches.manage | Создание и изменение филиалов |
contracts.read | Просмотр договоров с клиентами (сотрудники платформы) |
contracts.manage | Генерация и отправка договоров в Didox (сотрудники платформы) |
Список ролей
Заголовок раздела «Список ролей»Требует доступ roles.read. Необязательный параметр audience — platform, client или
account — фильтрует роли по назначению. Сортировка: по назначению, затем по убыванию ранга.
curl 'https://api.rekassa.uz/v1/portal/roles?audience=platform' \ -H 'Authorization: Bearer <accessToken>'[ { "id": "b2e8d4a1-7c3f-4e95-a0d6-5f1c9e3b7a82", "code": "platform.support", "name": "Техническая поддержка", "audience": "platform", "rank": 40, "isSystem": true, "permissions": ["users.read", "roles.read", "orgs.read"] }]isSystem: true — роль из каталога системы. У ролей, созданных клиентом, code может быть null.
Каталог доступов через API
Заголовок раздела «Каталог доступов через API»Требует доступ roles.read. Возвращает все доступы с описаниями, по алфавиту:
[ { "code": "branches.manage", "description": "Создание и изменение филиалов" }, { "code": "orgs.create", "description": "Добавление организаций" }, { "code": "orgs.manage", "description": "Изменение реквизитов и подача на проверку" }, { "code": "orgs.read", "description": "Просмотр организаций и филиалов" }, { "code": "orgs.verify", "description": "Проверка организаций (сотрудники платформы)" }, { "code": "roles.assign", "description": "Назначение и снятие ролей" }, { "code": "roles.read", "description": "Просмотр ролей и доступов" }, { "code": "users.block", "description": "Блокировка и разблокировка пользователей" }, { "code": "users.manage", "description": "Создание и изменение пользователей" }, { "code": "users.read", "description": "Просмотр пользователей" }]