Администрирование
Операционное руководство для администраторов: пользователи, роли (RBAC), workspace, audit, лицензии и административные бэкапы. Все операции требуют authMiddleware плюс конкретные разрешения - полный инвентарь endpoint'ов см. в API Reference.
Операционное руководство для администраторов: пользователи, роли (RBAC), workspace, audit, лицензии и административные бэкапы. Все операции требуют authMiddleware плюс конкретные разрешения - полный инвентарь endpoint'ов см. в API Reference.
Bootstrap-админ
При первом запуске (если SEED_BOOTSTRAP_ADMIN=true) сервер создаёт админа с учётными данными из env (SEED_ADMIN_USERNAME=admin, SEED_ADMIN_PASSWORD=admin123, [email protected]). У аккаунта mustChangePassword=true → первый вход требует смены пароля. Setup wizard через GET /api/system/is-initialized → POST /api/system/initialize.
Безопасность: сразу смени bootstrap-пароль и задай сильныйJWT_SECRETв продакшене. FallbackscryptSync(JWT_SECRET, ...)дляENCRYPTION_KEYделаетJWT_SECRETкриптографическим материалом - не раскрывай его.
Пользователи - /api/users
| Операция | Endpoint | Разрешение |
|---|---|---|
| Пагинированный список | GET /users | requireAdmin |
| Детали | GET /users/:id | self/admin |
| Изменение | PUT/PATCH /users/:id | self/admin (updateUserSchema) |
| Удаление | DELETE /users/:id | requireAdmin |
| Avatar | POST/DELETE /users/:id/avatar | JWT (multipart) |
Delete: DELETE - это hard delete с очисткой связей (UserRole, ProjectAccess, WorkspaceAccess) и инвалидацией auth-кэша; админ не может удалить себя. updateUserSchema валидирует username/email/password/firstName/lastName/customInstructions/textSize (custom instructions добавляются в начало system prompt агента); не-админы не могут сменить свой пароль через этот endpoint.
Роли и RBAC - /api/roles
31 разрешение определены в packages/shared/src/constants/permissions.ts (PERMISSION_NAMES). 13 секций меню (MENU_SECTIONS, включая uploads).
| Операция | Endpoint | Разрешение |
|---|---|---|
| Видимые секции меню | GET /roles/me/menu-sections | JWT |
| Список ролей | GET /roles | requireAdmin |
| Детали | GET /roles/:roleId | requireAdmin (UUID) |
| Создание | POST /roles | requireAdmin (createRoleSchema, isDefault=false) |
| Update | PUT /roles/:roleId | requireAdmin (атомарный replace разрешений) |
| Секции меню роли | PUT /roles/:roleId/menu-sections | requireAdmin |
| Удаление | DELETE /roles/:roleId | requireAdmin |
| Назначение/Отзыв | POST /roles/assign /revoke | requireAdmin |
Роли по умолчанию: admin (все 31 разрешение) и user (11 разрешений: 9 базовых плюс memory:read/memory:write для per-user memory; filters:manage зарезервирован за admin/superuser). "Superuser" совпадает с admin. Разрешения проверяются через requirePermission(name) или shortcut requireAdmin. Назначение - many-to-many (UserRole).
Workspaces и Projects
Workspace (/api/workspaces): единица изоляции для чатов, документов, agent config.
- Создание:
workspace:create+ licensemax_workspaces(Community 3, Enterprise ∞). - Доступ: middleware
requireWorkspaceAccess(join tableWorkspaceAccess). - Soft-delete + restore (
PUT /:id/restore). - Папки чатов:
/:id/folders[/:folderId]+ restore.
Project (/api/projects): группирует связанные workspace.
- Создание:
project:create+ licensemax_projects. - Доступ:
requireProjectAccess(ProjectAccess). - Экспорт архива:
GET /:projectId/export(stream). - Usage stats:
GET /:projectId/usage.
Audit / Event Log - /api/event-logs
License audit_log_immutable (Enterprise). GET с фильтрами entityType/entityId/userId + limit/offset (пагинация). eventLogService.logEvent делегирует запись enterprise-плагину (no-op в Community) и dispatch'ит webhook fire-and-forget. Логируемые сущности (EntityType): user, workspace, project, chat, document, mcp_connection, dlp, archive/archive_page/archive_import, ocr_job, synthesis_run, wiki_edit, backup_destination/backup_job, provider, memory. Когда immutable-флаг активен, записи неизменяемы/неудаляемы (append-only на уровне приложения).
Лицензии
- Community (по умолчанию): ограниченные флаги (см. 03 - Configuration).
- Enterprise:
LICENSE_KEY(JWT HS256) +LICENSE_SECRET. Payload валидируется поlicensePayloadSchema. Истёк/невалиден → fallback Community с warn, graceful degradation в runtime (без restart). - Endpoint:
GET /api/license/info(публичный) →{ license, features }. - Gating:
requireFeature(flag)→ 402;requireFeatureLimit(flag, model)→ 402 еслиcount >= limit(Enterprise =Infinity).
Административные бэкапы
См. 05 - Feature Guide § Backup. Admin endpoint'ы:
- Logs
/api/system/backups(backup:log:read). - Destinations
/api/backup-destinations(backup:destination:read/write, licensemax_backup_destinations). - Jobs
/api/backup-jobs(backup:job:read/write), ручной triggerPOST /:id/run. - Restore
/api/backups/restore/:logId[/dry-run](backup:restore:write). - Тест назначения
POST /backup-destinations/:id/test.
Settings - /api/system/settings
GET/PUT bulk (возвращает { updated, rejected }). Группы: LLM, Embedding/Vector, порты/URL, Auth, Branding (gated white_label), Feature, OCR, Synthesis, Retention. Ключи ALWAYS_READONLY отклоняются. Chat retention только через PUT /api/system/chat-retention (audited, confirmDataLoss: true). Детали в 03 - Configuration.
SSO - /api/sso
License sso_enabled. GET/PUT /config, POST /test. Конфигурация SAML/OIDC enterprise.
Cross-link
- Разрешения/флаги: 03 - Configuration
- Полные endpoint'ы: 04 - API Reference
- Операционный deploy: 09 - Deployment