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

Пользователи

Методы /v1/portal/users — для сотрудников reKassa во внутреннем портале portal.rekassa.uz. Каждый метод требует доступ на уровне платформы; доступы выдаются ролями, см. Роли и доступы. Без нужного доступа ответ — 403 forbidden с кодом доступа в details.permission.

Метод Доступ Что делает
GET /v1/portal/users users.read список с поиском
POST /v1/portal/users users.manage создать пользователя
GET /v1/portal/users/{id} users.read пользователь с ролями
PATCH /v1/portal/users/{id} users.manage изменить имя, способ входа, пароль
POST /v1/portal/users/{id}/block users.block заблокировать
POST /v1/portal/users/{id}/unblock users.block разблокировать
POST /v1/portal/users/{id}/role-assignments roles.assign назначить роль
DELETE /v1/portal/users/{id}/role-assignments/{assignmentId} roles.assign снять роль

Методы, которые меняют другого пользователя (изменение, блокировка, роли), дополнительно проверяют ранги — см. Кем можно управлять.

GET/v1/portal/users
Параметр По умолчанию Описание
search — подстрока имени, фамилии или телефона, без учёта регистра, 1–100 символов
page 1 номер страницы
size 50 размер страницы, до 5000

Сначала идут новые пользователи. Элементы списка — профили без roleAssignments.

Окно терминала
curl 'https://api.rekassa.uz/v1/portal/users?search=Каримов&page=1&size=20' \
-H 'Authorization: Bearer <accessToken>'
{
"items": [
{
"id": "0d3f5b8e-2c41-4a7e-9f10-6c8b2a7d4e11",
"phone": "+998901234567",
"firstName": "Азиз",
"lastName": "Каримов",
"authMethod": "password",
"status": "active",
"hasPassword": true,
"lastLoginAt": "2026-09-24T08:30:12.000Z",
"createdAt": "2026-09-01T10:00:00.000Z"
}
],
"page": 1,
"size": 20,
"total": 1,
"hasMore": false
}
POST/v1/portal/users
Поле Тип Обязательное Описание
phone string да см. Телефоны
firstName string да 1–100 символов
lastName string да 1–100 символов
authMethod string нет sms (по умолчанию) или password
password string нет 8–128 символов; обязателен при authMethod: "password"
Окно терминала
curl -X POST https://api.rekassa.uz/v1/portal/users \
-H 'Authorization: Bearer <accessToken>' \
-H 'Content-Type: application/json' \
-d '{"phone": "+998935551122", "firstName": "Нодира", "lastName": "Юсупова"}'

Ответ 201 — пользователь в том же виде, что у GET /v1/portal/users/{id}.

Статус Код Когда
400 validation_failed неверный телефон, пустое имя, короткий пароль
409 phone_taken номер уже зарегистрирован
422 password_required authMethod: "password" без password
GET/v1/portal/users/{id}

Профиль с назначенными ролями — в том же виде, что GET /v1/me. Если пользователя нет — 404 user_not_found.

PATCH/v1/portal/users/{id}

Все поля необязательные: firstName, lastName, authMethod, password (8–128 символов). Ответ 200 — обновлённый пользователь с ролями.

Окно терминала
curl -X PATCH https://api.rekassa.uz/v1/portal/users/0d3f5b8e-2c41-4a7e-9f10-6c8b2a7d4e11 \
-H 'Authorization: Bearer <accessToken>' \
-H 'Content-Type: application/json' \
-d '{"authMethod": "password", "password": "temporary-pass-2026"}'
Статус Код Когда
403 insufficient_rank ранг пользователя не ниже вашего
403 permission_not_held у пользователя есть доступы, которых нет у вас (details.missing)
404 user_not_found пользователя нет
422 password_required authMethod: "password", а пароль не задан и не передан
POST/v1/portal/users/{id}/block POST/v1/portal/users/{id}/unblock

Тело не нужно. Ответ 200 — пользователь с новым status.

Блокировка немедленно завершает все сессии: уже выданные access-токены перестают приниматься на следующем же запросе. Заблокированный пользователь не может войти ни по паролю (403 user_blocked), ни по SMS.

Статус Код Когда
403 insufficient_rank ранг пользователя не ниже вашего
403 permission_not_held у пользователя есть доступы, которых нет у вас
404 user_not_found пользователя нет
422 cannot_change_own_status попытка заблокировать или разблокировать себя
POST/v1/portal/users/{id}/role-assignments

Назначает роль на уровне платформы. Подходят роли платформы и «Пользователь»; роли клиента на уровне платформы не назначаются. roleId берите из GET /v1/portal/roles.

Окно терминала
curl -X POST https://api.rekassa.uz/v1/portal/users/0d3f5b8e-2c41-4a7e-9f10-6c8b2a7d4e11/role-assignments \
-H 'Authorization: Bearer <accessToken>' \
-H 'Content-Type: application/json' \
-d '{"roleId": "b2e8d4a1-7c3f-4e95-a0d6-5f1c9e3b7a82"}'

Ответ 201 — пользователь с обновлённым списком roleAssignments.

Статус Код Когда
403 insufficient_rank ранг роли не ниже вашего
403 permission_not_held у роли есть доступы, которых нет у вас (details.missing)
404 user_not_found, role_not_found нет пользователя или роли
409 role_already_assigned роль уже назначена
422 role_scope_mismatch роль клиента
DELETE/v1/portal/users/{id}/role-assignments/{assignmentId}

assignmentId — поле id элемента roleAssignments. Ответ 200 — пользователь с оставшимися ролями. Снять можно только роль, которую вы могли бы назначить: те же проверки ранга и доступов. Если назначения нет — 404 role_assignment_not_found.