Профиль и сессии
Методы /v1/me работают с аккаунтом владельца access-токена и требуют заголовок
Authorization: Bearer <accessToken>. Особых доступов не нужно — они есть у любого вошедшего
пользователя.
-
Профиль. После входа запросите
GET /v1/me— в ответе имя, телефон, способ входа и роли. По ним клиент решает, какие разделы показать. -
Изменения.
PATCH /v1/meменяет имя, фамилию и способ входа,PUT /v1/me/passwordзадаёт или меняет пароль. -
Сессии.
GET /v1/me/sessionsпоказывает устройства, где выполнен вход,DELETE /v1/me/sessions/{id}завершает сессию на одном из них.
Текущий пользователь
Заголовок раздела «Текущий пользователь»Возвращает профиль, роли и доступы. Вызывайте после входа, чтобы решить, какие разделы показать.
curl https://api.rekassa.uz/v1/me \ -H 'Authorization: Bearer <accessToken>'const response = await fetch('https://api.rekassa.uz/v1/me', { headers: { Authorization: `Bearer ${accessToken}` },})const me = await response.json(){ "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", "roleAssignments": [ { "id": "9a4c2e71-5f3b-4d08-b1e6-3c7a9d2f0e58", "scope": { "type": "platform" }, "role": { "id": "71b3e0d4-8a2c-4f95-a6e1-0c9d5b3f7a24", "code": "account.user", "name": "Пользователь", "audience": "account", "rank": 0, "permissions": [] } } ]}| Поле | Описание |
|---|---|
phone |
номер в формате E.164 |
authMethod |
способ входа: password или sms |
status |
pending — телефон не подтверждён, active, blocked |
hasPassword |
задан ли пароль. Если false, войти можно только по SMS |
lastLoginAt |
время последнего входа или null |
roleAssignments |
назначенные роли; у каждой — область действия scope и роль с доступами |
Область действия роли
Заголовок раздела «Область действия роли»scope.type показывает, на что распространяются доступы роли, — от самого широкого уровня
к самому узкому:
type |
Уровень | Поля |
|---|---|---|
platform |
вся платформа reKassa | — |
client |
клиент reKassa со всеми его организациями | clientId |
organization |
организация клиента — юрлицо или ИП со своим ИНН | clientId, organizationId |
branch |
филиал организации | clientId, organizationId, branchId |
Роль, назначенная на уровне, действует и на всех уровнях под ним: доступ на уровне клиента распространяется на все его организации и филиалы.
Изменить профиль
Заголовок раздела «Изменить профиль»Все поля необязательные — передавайте только те, что меняются.
| Поле | Тип | Описание |
|---|---|---|
firstName |
string | 1–100 символов |
lastName |
string | 1–100 символов |
authMethod |
string | password или sms |
curl -X PATCH https://api.rekassa.uz/v1/me \ -H 'Authorization: Bearer <accessToken>' \ -H 'Content-Type: application/json' \ -d '{"authMethod": "sms"}'Ответ 200 — обновлённый профиль в том же виде, что у GET /v1/me.
| Статус | Код | Когда |
|---|---|---|
400 |
validation_failed |
пустое имя, неизвестный authMethod |
422 |
password_required |
authMethod: "password", а пароль не задан (hasPassword: false) |
Телефон в профиле не меняется.
PUT/v1/me/passwordЗадаёт пароль, если его не было, или меняет существующий.
| Поле | Тип | Описание |
|---|---|---|
currentPassword |
string | текущий пароль; обязателен, если пароль уже задан |
password |
string | новый пароль, 8–128 символов |
passwordConfirmation |
string | должно совпадать с password |
curl -X PUT https://api.rekassa.uz/v1/me/password \ -H 'Authorization: Bearer <accessToken>' \ -H 'Content-Type: application/json' \ -d '{ "currentPassword": "correct-horse-42", "password": "new-horse-battery-7", "passwordConfirmation": "new-horse-battery-7" }'Ответ — 204 No Content. Все остальные сессии завершаются, текущая продолжает работать.
| Статус | Код | Когда |
|---|---|---|
400 |
validation_failed |
пароль короче 8 символов, пароли не совпадают |
422 |
current_password_invalid |
текущий пароль не передан или неверен, а пароль уже задан |
Сессия создаётся при каждом входе и живёт, пока её обновляют, — до 30 дней с последнего обновления токенов.
Список активных сессий
Заголовок раздела «Список активных сессий»Возвращает массив (без пагинации), сначала сессии с самой свежей активностью.
[ { "id": "3f1c2d9e-6b7a-4c55-9a51-0d8e7f6a1b2c", "ip": "213.230.64.10", "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) ...", "createdAt": "2026-09-20T07:12:40.000Z", "lastUsedAt": "2026-09-24T08:30:12.000Z", "expiresAt": "2026-10-24T08:30:12.000Z" }]| Поле | Описание |
|---|---|
id |
идентификатор сессии |
ip |
IP последнего входа или обновления токенов, может быть null |
userAgent |
User-Agent клиента, до 512 символов, может быть null |
lastUsedAt |
время последнего обновления токенов |
expiresAt |
когда сессия истечёт, если её не обновлять |
Чтобы отметить текущую сессию в списке, сравните id с полем sid в полезной нагрузке
access-токена (JWT). Мобильный клиент может взять его и из refresh-токена — это часть до точки.
Завершить сессию
Заголовок раздела «Завершить сессию»Завершает одну из своих сессий — например, на потерянном телефоне. Ответ — 204 No Content.
curl -X DELETE https://api.rekassa.uz/v1/me/sessions/3f1c2d9e-6b7a-4c55-9a51-0d8e7f6a1b2c \ -H 'Authorization: Bearer <accessToken>'| Статус | Код | Когда |
|---|---|---|
400 |
validation_failed |
id не UUID |
404 |
session_not_found |
сессии нет, она уже завершена или принадлежит другому пользователю |