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

Management API

REST API для программного управления пользователями, приложениями, ролями и API-ресурсами вашего realm.

Базовый URL: https://your-domain.com/api/v1/{realmUUID}

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

Management API использует M2M (Machine-to-Machine) токены. Получите токен через client_credentials grant:

curl -X POST https://your-domain.com/oauth2/{realmUUID}/token \
-H "Content-Type: application/x-www-form-urlencoded" \
-d "grant_type=client_credentials" \
-d "client_id=YOUR_CLIENT_ID" \
-d "client_secret=YOUR_CLIENT_SECRET" \
-d "scope=users:read users:write roles:read"

Ответ:

{
"access_token": "eyJhbGciOiJSUzI1NiJ9...",
"token_type": "Bearer",
"expires_in": 3600
}

Используйте токен во всех запросах к API:

curl https://your-domain.com/api/v1/{realmUUID}/users \
-H "Authorization: Bearer {access_token}"
подсказка

Запрашивайте только необходимые скоупы. Доступные скоупы: users:read, users:write, users:roles, applications:read, applications:write, roles:read, roles:write, resources:read, resources:write.

Формат ошибок

Все ошибки возвращают единую JSON-структуру:

{
"error": "not_found",
"message": "User not found"
}

Основные HTTP-коды:

КодЗначение
400Некорректное тело запроса или параметры
401Отсутствует или невалидный токен
403У токена нет требуемого скоупа
404Ресурс не найден
422Ошибка валидации

Users API

Базовый путь: /api/v1/{realmUUID}/users

МетодПутьСкоупОписание
GET/usersusers:readСписок пользователей (с пагинацией)
POST/usersusers:writeСоздать пользователя
GET/users/{id}users:readПолучить пользователя
PATCH/users/{id}users:writeОбновить пользователя
DELETE/users/{id}users:writeУдалить пользователя
PATCH/users/{id}/passwordusers:writeСменить пароль
PATCH/users/{id}/is-suspendedusers:writeЗаблокировать/разблокировать
GET/users/{id}/rolesusers:rolesРоли пользователя
POST/users/{id}/rolesusers:rolesНазначить роли
DELETE/users/{id}/roles/{roleId}users:rolesУдалить роль
GET/users/{id}/identitiesusers:readПодключенные провайдеры

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

curl "https://your-domain.com/api/v1/{realmUUID}/users?page=1&per_page=20&search=john" \
-H "Authorization: Bearer {token}"
{
"data": [
{
"id": "01HQ...",
"email": "john@example.com",
"name": "John Doe",
"is_suspended": false,
"created_at": "2026-01-15T10:30:00Z"
}
],
"meta": {
"current_page": 1,
"per_page": 20,
"total": 1
}
}

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

curl -X POST https://your-domain.com/api/v1/{realmUUID}/users \
-H "Authorization: Bearer {token}" \
-H "Content-Type: application/json" \
-d '{
"email": "jane@example.com",
"name": "Jane Doe",
"password": "securePassword123"
}'

Обновить пользователя

curl -X PATCH https://your-domain.com/api/v1/{realmUUID}/users/{id} \
-H "Authorization: Bearer {token}" \
-H "Content-Type: application/json" \
-d '{"name": "Jane Smith"}'

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

curl -X PATCH https://your-domain.com/api/v1/{realmUUID}/users/{id}/password \
-H "Authorization: Bearer {token}" \
-H "Content-Type: application/json" \
-d '{"password": "newSecurePassword456"}'

Заблокировать/разблокировать пользователя

curl -X PATCH https://your-domain.com/api/v1/{realmUUID}/users/{id}/is-suspended \
-H "Authorization: Bearer {token}" \
-H "Content-Type: application/json" \
-d '{"is_suspended": true}'

Назначить роли пользователю

curl -X POST https://your-domain.com/api/v1/{realmUUID}/users/{id}/roles \
-H "Authorization: Bearer {token}" \
-H "Content-Type: application/json" \
-d '{"role_ids": ["role-uuid-1", "role-uuid-2"]}'

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

curl -X DELETE https://your-domain.com/api/v1/{realmUUID}/users/{id}/roles/{roleId} \
-H "Authorization: Bearer {token}"

Applications API

Базовый путь: /api/v1/{realmUUID}/applications

МетодПутьСкоупОписание
GET/applicationsapplications:readСписок приложений
POST/applicationsapplications:writeСоздать приложение
GET/applications/{id}applications:readПолучить приложение
PATCH/applications/{id}applications:writeОбновить приложение
DELETE/applications/{id}applications:writeУдалить приложение
GET/applications/{id}/rolesapplications:readРоли приложения
POST/applications/{id}/rolesapplications:writeНазначить роли
DELETE/applications/{id}/roles/{roleId}applications:writeУдалить роль

Создать приложение

curl -X POST https://your-domain.com/api/v1/{realmUUID}/applications \
-H "Authorization: Bearer {token}" \
-H "Content-Type: application/json" \
-d '{
"name": "My SPA",
"type": "spa",
"redirect_uris": ["https://myapp.com/callback"]
}'
{
"data": {
"id": "01HQ...",
"name": "My SPA",
"type": "spa",
"client_id": "abc123",
"redirect_uris": ["https://myapp.com/callback"],
"created_at": "2026-01-15T10:30:00Z"
}
}

Назначить роли приложению

curl -X POST https://your-domain.com/api/v1/{realmUUID}/applications/{id}/roles \
-H "Authorization: Bearer {token}" \
-H "Content-Type: application/json" \
-d '{"role_ids": ["role-uuid-1"]}'

Roles API

Базовый путь: /api/v1/{realmUUID}/roles

МетодПутьСкоупОписание
GET/rolesroles:readСписок ролей
POST/rolesroles:writeСоздать роль
GET/roles/{id}roles:readПолучить роль
PATCH/roles/{id}roles:writeОбновить роль
DELETE/roles/{id}roles:writeУдалить роль
GET/roles/{id}/scopesroles:readСкоупы роли
POST/roles/{id}/scopesroles:writeНазначить скоупы
DELETE/roles/{id}/scopes/{scopeId}roles:writeУдалить скоуп

Создать роль

curl -X POST https://your-domain.com/api/v1/{realmUUID}/roles \
-H "Authorization: Bearer {token}" \
-H "Content-Type: application/json" \
-d '{
"name": "editor",
"description": "Can edit content"
}'

Назначить скоупы роли

curl -X POST https://your-domain.com/api/v1/{realmUUID}/roles/{id}/scopes \
-H "Authorization: Bearer {token}" \
-H "Content-Type: application/json" \
-d '{"scope_ids": ["scope-uuid-1", "scope-uuid-2"]}'

Resources API

Базовый путь: /api/v1/{realmUUID}/resources

МетодПутьСкоупОписание
GET/resourcesresources:readСписок API-ресурсов
POST/resourcesresources:writeСоздать ресурс
GET/resources/{id}resources:readПолучить ресурс
PATCH/resources/{id}resources:writeОбновить ресурс
DELETE/resources/{id}resources:writeУдалить ресурс
GET/resources/{id}/scopesresources:readСкоупы ресурса
POST/resources/{id}/scopesresources:writeДобавить скоуп
PATCH/resources/{id}/scopes/{scopeId}resources:writeОбновить скоуп
DELETE/resources/{id}/scopes/{scopeId}resources:writeУдалить скоуп

Создать API-ресурс

curl -X POST https://your-domain.com/api/v1/{realmUUID}/resources \
-H "Authorization: Bearer {token}" \
-H "Content-Type: application/json" \
-d '{
"name": "My API",
"indicator": "https://api.myapp.com"
}'
{
"data": {
"id": "01HQ...",
"name": "My API",
"indicator": "https://api.myapp.com",
"created_at": "2026-01-15T10:30:00Z"
}
}

Добавить скоуп к ресурсу

curl -X POST https://your-domain.com/api/v1/{realmUUID}/resources/{id}/scopes \
-H "Authorization: Bearer {token}" \
-H "Content-Type: application/json" \
-d '{
"name": "read:posts",
"description": "Read blog posts"
}'

Обновить скоуп

curl -X PATCH https://your-domain.com/api/v1/{realmUUID}/resources/{id}/scopes/{scopeId} \
-H "Authorization: Bearer {token}" \
-H "Content-Type: application/json" \
-d '{"description": "Read all blog posts"}'