Scanning documentation library
Scanning documentation library
Scanning documentation library
Платформа Ring надає комплексний адміністративний API із 12 захищеними кінцевими точками для управління системою, адміністрування користувачів, доступу до аналітики та контролю конфігурації. Усі адмін кінцеві точки вимагають ролі ADMIN та реалізують заходи безпеки корпоративного рівня.
Усі адмін кінцеві точки вимагають аутентифікації ролі ADMIN та підлягають суворому обмеженню швидкості та логуванню аудитів. Спроби несанкціонованого доступу логуються та можуть спричинити сповіщення безпеки.
Аутентифікація → Перевірка ролі → Перевірка дозволів → Логування дій → ВідповідьGET /api/admin/usersСписок та пошук користувачів платформи із розширеним фільтруванням та пагінацією.
| Параметр | Тип | Обов'язковий | Опис |
|---|---|---|---|
page | number | Ні | Номер сторінки (за замовчуванням: 1) |
limit | number | Ні | Користувачів на сторінку (за замовчуванням: 50, макс: 200) |
search | string | Ні | Пошук за ім'ям, email або ім'ям користувача |
role | string | Ні | Фільтр за роллю: VISITOR, MEMBER, CONFIDENTIAL, ADMIN |
status | string | Ні | Фільтр за статусом: active, suspended, banned |
verified | boolean | Ні | Фільтр за статусом верифікації email |
createdAfter | string | Ні | ISO дата - користувачі створені після цієї дати |
createdBefore | string | Ні | ISO дата - користувачі створені до цієї дати |
lastLoginAfter | string | Ні | ISO дата - користувачі увійшли після цієї дати |
sortBy | string | Ні | Сортувати за: createdAt, lastLogin, name, email |
sortOrder | string | Ні | Порядок сортування: asc, desc (за замовчуванням: desc) |
curl -X GET "http://localhost:3000/api/admin/users?page=1&limit=20&role=MEMBER&status=active&sortBy=createdAt&sortOrder=desc" \
-H "Authorization: Bearer admin-session-token"GET /api/admin/users/{id}Отримати детальну інформацію про конкретного користувача.
PUT /api/admin/users/{id}/roleОновити роль та дозволи користувача.
PUT /api/admin/users/{id}/statusОновити статус облікового запису користувача (призупинити, заблокувати, активувати).
DELETE /api/admin/users/{id}Назавжди видалити обліковий запис користувача (відповідність GDPR).
| Параметр | Тип | Обов'язковий | Опис |
|---|---|---|---|
anonymize | boolean | Ні | Замінити дані користувача анонімними плейсхолдерами (за замовчуванням: true) |
deleteContent | boolean | Ні | Видалити весь користувацький контент (за замовчуванням: false) |
reason | string | Так | Причина видалення облікового запису |
GET /api/admin/analyticsОтримати комплексну аналітику та метрики платформи.
| Параметр | Тип | Обов'язковий | Опис |
|---|---|---|---|
period | string | Ні | Період часу: hour, day, week, month, year (за замовчуванням: week) |
startDate | string | Ні | ISO дата для власного діапазону |
endDate | string | Ні | ISO дата для власного діапазону |
metrics | string[] | Ні | Конкретні метрики для включення |
GET /api/admin/analytics/usersОтримати детальну аналітику користувачів.
| Параметр | Тип | Обов'язковий | Опис |
|---|---|---|---|
groupBy | string | Ні | Групувати результати за: day, week, month, role, status |
includeInactive | boolean | Ні | Включити неактивних користувачів у результати (за замовчуванням: false) |
GET /api/admin/configОтримати поточні налаштування конфігурації системи.
PUT /api/admin/configОновити налаштування конфігурації системи.
POST /api/admin/config/rollbackВідкатити зміни конфігурації.
GET /api/admin/auditОтримати логи аудитів для адмін дій.
| Параметр | Тип | Обов'язковий | Опис |
|---|---|---|---|
page | number | Ні | Номер сторінки (за замовчуванням: 1) |
limit | number | Ні | Логів на сторінку (за замовчуванням: 50) |
action | string | Ні | Фільтр за типом дії |
userId | string | Ні | Фільтр за користувачем, який виконав дію |
targetUserId | string | Ні | Фільтр за користувачем, на якого вплинула дія |
startDate | string | Ні | ISO дата - логи після цієї дати |
endDate | string | Ні | ISO дата - логи до цієї дати |
// components/admin/AdminDashboard.tsx
import { useState, useEffect } from 'react'
interface AdminStats {
totalUsers: number
activeUsers: number
newUsersToday: number
totalEntities: number
totalOpportunities: number
systemHealth: 'healthy' | 'warning' | 'critical'
}
export function AdminDashboard() {
const [stats, setStats] = useState<AdminStats | null>(null)
const [loading, setLoading] = useState(true)
useEffect(() => {
fetchAdminStats()
}, [])
const fetchAdminStats = async () => {
try {
const [usersRes, analyticsRes] = await Promise.all([
fetch('/api/admin/users?limit=1'),
fetch('/api/admin/analytics?period=day')
])
const usersData = await usersRes.json()
const analyticsData = await analyticsRes.json()
setStats({
totalUsers: usersData.pagination.total,
activeUsers: analyticsData.userMetrics.activity.dailyActiveUsers,
newUsersToday: analyticsData.userMetrics.registrations.byDay.slice(-1)[0],
totalEntities: analyticsData.contentMetrics.entities.active,
totalOpportunities: analyticsData.contentMetrics.opportunities.posted,
systemHealth: analyticsData.systemMetrics.performance.errorRate < 0.01 ? 'healthy' :
analyticsData.systemMetrics.performance.errorRate < 0.05 ? 'warning' : 'critical'
})
} catch (error) {
console.error('Не вдалося отримати адмін статистику:', error)
} finally {
setLoading(false)
}
}
if (loading) return <div>Завантаження адмін дашборду...</div>
return (
<div className="admin-dashboard">
<h1 className="text-2xl font-bold mb-6">Адмін дашборд</h1>
<div className="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-4 gap-4 mb-6">
<UiCard>
<UiCardHeader className="pb-2">
<UiCardTitle className="text-sm font-medium">Загалом користувачів</UiCardTitle>
</UiCardHeader>
<UiCardContent>
<div className="text-2xl font-bold">{stats?.totalUsers.toLocaleString()}</div>
</UiCardContent>
</UiCard>
<UiCard>
<UiCardHeader className="pb-2">
<UiCardTitle className="text-sm font-medium">Активних сьогодні</UiCardTitle>
</UiCardHeader>
<UiCardContent>
<div className="text-2xl font-bold">{stats?.activeUsers.toLocaleString()}</div>
</UiCardContent>
</UiCard>
<UiCard>
<UiCardHeader className="pb-2">
<UiCardTitle className="text-sm font-medium">Нових сьогодні</UiCardTitle>
</UiCardHeader>
<UiCardContent>
<div className="text-2xl font-bold text-green-600">+{stats?.newUsersToday}</div>
</UiCardContent>
</UiCard>
<UiCard>
<UiCardHeader className="pb-2">
<UiCardTitle className="text-sm font-medium">Стан системи</UiCardTitle>
</UiCardHeader>
<UiCardContent>
<div className={`text-2xl font-bold ${
stats?.systemHealth === 'healthy' ? 'text-green-600' :
stats?.systemHealth === 'warning' ? 'text-yellow-600' : 'text-red-600'
}`}>
{stats?.systemHealth.toUpperCase()}
</div>
</UiCardContent>
</UiCard>
</div>
{/* Додаткові адмін компоненти */}
<UserManagement />
<SystemConfiguration />
<AuditLogs />
</div>
)
}// Недостатні дозволи
// Відстеження адмін дій для моніторингу
Безпека адміністратора Логування аудиту Захист системи Моніторинг
Адмін API платформи Ring забезпечує корпоративний контроль із комплексною безпекою, слідами аудиту та операційним моніторингом.
Платформа Ring надає комплексний адміністративний API із 12 захищеними кінцевими точками для управління системою, адміністрування користувачів, доступу до аналітики та контролю конфігурації. Усі адмін кінцеві точки вимагають ролі ADMIN та реалізують заходи безпеки корпоративного рівня.
Усі адмін кінцеві точки вимагають аутентифікації ролі ADMIN та підлягають суворому обмеженню швидкості та логуванню аудитів. Спроби несанкціонованого доступу логуються та можуть спричинити сповіщення безпеки.
Аутентифікація → Перевірка ролі → Перевірка дозволів → Логування дій → ВідповідьGET /api/admin/usersСписок та пошук користувачів платформи із розширеним фільтруванням та пагінацією.
| Параметр | Тип | Обов'язковий | Опис |
|---|---|---|---|
page | number | Ні | Номер сторінки (за замовчуванням: 1) |
limit | number | Ні | Користувачів на сторінку (за замовчуванням: 50, макс: 200) |
search | string | Ні | Пошук за ім'ям, email або ім'ям користувача |
role | string | Ні | Фільтр за роллю: VISITOR, MEMBER, CONFIDENTIAL, ADMIN |
status | string | Ні | Фільтр за статусом: active, suspended, banned |
verified | boolean | Ні | Фільтр за статусом верифікації email |
createdAfter | string | Ні | ISO дата - користувачі створені після цієї дати |
createdBefore | string | Ні | ISO дата - користувачі створені до цієї дати |
lastLoginAfter | string | Ні | ISO дата - користувачі увійшли після цієї дати |
sortBy | string | Ні | Сортувати за: createdAt, lastLogin, name, email |
sortOrder | string | Ні | Порядок сортування: asc, desc (за замовчуванням: desc) |
curl -X GET "http://localhost:3000/api/admin/users?page=1&limit=20&role=MEMBER&status=active&sortBy=createdAt&sortOrder=desc" \
-H "Authorization: Bearer admin-session-token"GET /api/admin/users/{id}Отримати детальну інформацію про конкретного користувача.
PUT /api/admin/users/{id}/roleОновити роль та дозволи користувача.
PUT /api/admin/users/{id}/statusОновити статус облікового запису користувача (призупинити, заблокувати, активувати).
DELETE /api/admin/users/{id}Назавжди видалити обліковий запис користувача (відповідність GDPR).
| Параметр | Тип | Обов'язковий | Опис |
|---|---|---|---|
anonymize | boolean | Ні | Замінити дані користувача анонімними плейсхолдерами (за замовчуванням: true) |
deleteContent | boolean | Ні | Видалити весь користувацький контент (за замовчуванням: false) |
reason | string | Так | Причина видалення облікового запису |
GET /api/admin/analyticsОтримати комплексну аналітику та метрики платформи.
| Параметр | Тип | Обов'язковий | Опис |
|---|---|---|---|
period | string | Ні | Період часу: hour, day, week, month, year (за замовчуванням: week) |
startDate | string | Ні | ISO дата для власного діапазону |
endDate | string | Ні | ISO дата для власного діапазону |
metrics | string[] | Ні | Конкретні метрики для включення |
GET /api/admin/analytics/usersОтримати детальну аналітику користувачів.
| Параметр | Тип | Обов'язковий | Опис |
|---|---|---|---|
groupBy | string | Ні | Групувати результати за: day, week, month, role, status |
includeInactive | boolean | Ні | Включити неактивних користувачів у результати (за замовчуванням: false) |
GET /api/admin/configОтримати поточні налаштування конфігурації системи.
PUT /api/admin/configОновити налаштування конфігурації системи.
POST /api/admin/config/rollbackВідкатити зміни конфігурації.
GET /api/admin/auditОтримати логи аудитів для адмін дій.
| Параметр | Тип | Обов'язковий | Опис |
|---|---|---|---|
page | number | Ні | Номер сторінки (за замовчуванням: 1) |
limit | number | Ні | Логів на сторінку (за замовчуванням: 50) |
action | string | Ні | Фільтр за типом дії |
userId | string | Ні | Фільтр за користувачем, який виконав дію |
targetUserId | string | Ні | Фільтр за користувачем, на якого вплинула дія |
startDate | string | Ні | ISO дата - логи після цієї дати |
endDate | string | Ні | ISO дата - логи до цієї дати |
// components/admin/AdminDashboard.tsx
import { useState, useEffect } from 'react'
interface AdminStats {
totalUsers: number
activeUsers: number
newUsersToday: number
totalEntities: number
totalOpportunities: number
systemHealth: 'healthy' | 'warning' | 'critical'
}
export function AdminDashboard() {
const [stats, setStats] = useState<AdminStats | null>(null)
const [loading, setLoading] = useState(true)
useEffect(() => {
fetchAdminStats()
}, [])
const fetchAdminStats = async () => {
try {
const [usersRes, analyticsRes] = await Promise.all([
fetch('/api/admin/users?limit=1'),
fetch('/api/admin/analytics?period=day')
])
const usersData = await usersRes.json()
const analyticsData = await analyticsRes.json()
setStats({
totalUsers: usersData.pagination.total,
activeUsers: analyticsData.userMetrics.activity.dailyActiveUsers,
newUsersToday: analyticsData.userMetrics.registrations.byDay.slice(-1)[0],
totalEntities: analyticsData.contentMetrics.entities.active,
totalOpportunities: analyticsData.contentMetrics.opportunities.posted,
systemHealth: analyticsData.systemMetrics.performance.errorRate < 0.01 ? 'healthy' :
analyticsData.systemMetrics.performance.errorRate < 0.05 ? 'warning' : 'critical'
})
} catch (error) {
console.error('Не вдалося отримати адмін статистику:', error)
} finally {
setLoading(false)
}
}
if (loading) return <div>Завантаження адмін дашборду...</div>
return (
<div className="admin-dashboard">
<h1 className="text-2xl font-bold mb-6">Адмін дашборд</h1>
<div className="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-4 gap-4 mb-6">
<UiCard>
<UiCardHeader className="pb-2">
<UiCardTitle className="text-sm font-medium">Загалом користувачів</UiCardTitle>
</UiCardHeader>
<UiCardContent>
<div className="text-2xl font-bold">{stats?.totalUsers.toLocaleString()}</div>
</UiCardContent>
</UiCard>
<UiCard>
<UiCardHeader className="pb-2">
<UiCardTitle className="text-sm font-medium">Активних сьогодні</UiCardTitle>
</UiCardHeader>
<UiCardContent>
<div className="text-2xl font-bold">{stats?.activeUsers.toLocaleString()}</div>
</UiCardContent>
</UiCard>
<UiCard>
<UiCardHeader className="pb-2">
<UiCardTitle className="text-sm font-medium">Нових сьогодні</UiCardTitle>
</UiCardHeader>
<UiCardContent>
<div className="text-2xl font-bold text-green-600">+{stats?.newUsersToday}</div>
</UiCardContent>
</UiCard>
<UiCard>
<UiCardHeader className="pb-2">
<UiCardTitle className="text-sm font-medium">Стан системи</UiCardTitle>
</UiCardHeader>
<UiCardContent>
<div className={`text-2xl font-bold ${
stats?.systemHealth === 'healthy' ? 'text-green-600' :
stats?.systemHealth === 'warning' ? 'text-yellow-600' : 'text-red-600'
}`}>
{stats?.systemHealth.toUpperCase()}
</div>
</UiCardContent>
</UiCard>
</div>
{/* Додаткові адмін компоненти */}
<UserManagement />
<SystemConfiguration />
<AuditLogs />
</div>
)
}// Недостатні дозволи
// Відстеження адмін дій для моніторингу
Безпека адміністратора Логування аудиту Захист системи Моніторинг
Адмін API платформи Ring забезпечує корпоративний контроль із комплексною безпекою, слідами аудиту та операційним моніторингом.
Платформа Ring надає комплексний адміністративний API із 12 захищеними кінцевими точками для управління системою, адміністрування користувачів, доступу до аналітики та контролю конфігурації. Усі адмін кінцеві точки вимагають ролі ADMIN та реалізують заходи безпеки корпоративного рівня.
Усі адмін кінцеві точки вимагають аутентифікації ролі ADMIN та підлягають суворому обмеженню швидкості та логуванню аудитів. Спроби несанкціонованого доступу логуються та можуть спричинити сповіщення безпеки.
Аутентифікація → Перевірка ролі → Перевірка дозволів → Логування дій → ВідповідьGET /api/admin/usersСписок та пошук користувачів платформи із розширеним фільтруванням та пагінацією.
| Параметр | Тип | Обов'язковий | Опис |
|---|---|---|---|
page | number | Ні | Номер сторінки (за замовчуванням: 1) |
limit | number | Ні | Користувачів на сторінку (за замовчуванням: 50, макс: 200) |
search | string | Ні | Пошук за ім'ям, email або ім'ям користувача |
role | string | Ні | Фільтр за роллю: VISITOR, MEMBER, CONFIDENTIAL, ADMIN |
status | string | Ні | Фільтр за статусом: active, suspended, banned |
verified | boolean | Ні | Фільтр за статусом верифікації email |
createdAfter | string | Ні | ISO дата - користувачі створені після цієї дати |
createdBefore | string | Ні | ISO дата - користувачі створені до цієї дати |
lastLoginAfter | string | Ні | ISO дата - користувачі увійшли після цієї дати |
sortBy | string | Ні | Сортувати за: createdAt, lastLogin, name, email |
sortOrder | string | Ні | Порядок сортування: asc, desc (за замовчуванням: desc) |
curl -X GET "http://localhost:3000/api/admin/users?page=1&limit=20&role=MEMBER&status=active&sortBy=createdAt&sortOrder=desc" \
-H "Authorization: Bearer admin-session-token"GET /api/admin/users/{id}Отримати детальну інформацію про конкретного користувача.
PUT /api/admin/users/{id}/roleОновити роль та дозволи користувача.
PUT /api/admin/users/{id}/statusОновити статус облікового запису користувача (призупинити, заблокувати, активувати).
DELETE /api/admin/users/{id}Назавжди видалити обліковий запис користувача (відповідність GDPR).
| Параметр | Тип | Обов'язковий | Опис |
|---|---|---|---|
anonymize | boolean | Ні | Замінити дані користувача анонімними плейсхолдерами (за замовчуванням: true) |
deleteContent | boolean | Ні | Видалити весь користувацький контент (за замовчуванням: false) |
reason | string | Так | Причина видалення облікового запису |
GET /api/admin/analyticsОтримати комплексну аналітику та метрики платформи.
| Параметр | Тип | Обов'язковий | Опис |
|---|---|---|---|
period | string | Ні | Період часу: hour, day, week, month, year (за замовчуванням: week) |
startDate | string | Ні | ISO дата для власного діапазону |
endDate | string | Ні | ISO дата для власного діапазону |
metrics | string[] | Ні | Конкретні метрики для включення |
GET /api/admin/analytics/usersОтримати детальну аналітику користувачів.
| Параметр | Тип | Обов'язковий | Опис |
|---|---|---|---|
groupBy | string | Ні | Групувати результати за: day, week, month, role, status |
includeInactive | boolean | Ні | Включити неактивних користувачів у результати (за замовчуванням: false) |
GET /api/admin/configОтримати поточні налаштування конфігурації системи.
PUT /api/admin/configОновити налаштування конфігурації системи.
POST /api/admin/config/rollbackВідкатити зміни конфігурації.
GET /api/admin/auditОтримати логи аудитів для адмін дій.
| Параметр | Тип | Обов'язковий | Опис |
|---|---|---|---|
page | number | Ні | Номер сторінки (за замовчуванням: 1) |
limit | number | Ні | Логів на сторінку (за замовчуванням: 50) |
action | string | Ні | Фільтр за типом дії |
userId | string | Ні | Фільтр за користувачем, який виконав дію |
targetUserId | string | Ні | Фільтр за користувачем, на якого вплинула дія |
startDate | string | Ні | ISO дата - логи після цієї дати |
endDate | string | Ні | ISO дата - логи до цієї дати |
// components/admin/AdminDashboard.tsx
import { useState, useEffect } from 'react'
interface AdminStats {
totalUsers: number
activeUsers: number
newUsersToday: number
totalEntities: number
totalOpportunities: number
systemHealth: 'healthy' | 'warning' | 'critical'
}
export function AdminDashboard() {
const [stats, setStats] = useState<AdminStats | null>(null)
const [loading, setLoading] = useState(true)
useEffect(() => {
fetchAdminStats()
}, [])
const fetchAdminStats = async () => {
try {
const [usersRes, analyticsRes] = await Promise.all([
fetch('/api/admin/users?limit=1'),
fetch('/api/admin/analytics?period=day')
])
const usersData = await usersRes.json()
const analyticsData = await analyticsRes.json()
setStats({
totalUsers: usersData.pagination.total,
activeUsers: analyticsData.userMetrics.activity.dailyActiveUsers,
newUsersToday: analyticsData.userMetrics.registrations.byDay.slice(-1)[0],
totalEntities: analyticsData.contentMetrics.entities.active,
totalOpportunities: analyticsData.contentMetrics.opportunities.posted,
systemHealth: analyticsData.systemMetrics.performance.errorRate < 0.01 ? 'healthy' :
analyticsData.systemMetrics.performance.errorRate < 0.05 ? 'warning' : 'critical'
})
} catch (error) {
console.error('Не вдалося отримати адмін статистику:', error)
} finally {
setLoading(false)
}
}
if (loading) return <div>Завантаження адмін дашборду...</div>
return (
<div className="admin-dashboard">
<h1 className="text-2xl font-bold mb-6">Адмін дашборд</h1>
<div className="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-4 gap-4 mb-6">
<UiCard>
<UiCardHeader className="pb-2">
<UiCardTitle className="text-sm font-medium">Загалом користувачів</UiCardTitle>
</UiCardHeader>
<UiCardContent>
<div className="text-2xl font-bold">{stats?.totalUsers.toLocaleString()}</div>
</UiCardContent>
</UiCard>
<UiCard>
<UiCardHeader className="pb-2">
<UiCardTitle className="text-sm font-medium">Активних сьогодні</UiCardTitle>
</UiCardHeader>
<UiCardContent>
<div className="text-2xl font-bold">{stats?.activeUsers.toLocaleString()}</div>
</UiCardContent>
</UiCard>
<UiCard>
<UiCardHeader className="pb-2">
<UiCardTitle className="text-sm font-medium">Нових сьогодні</UiCardTitle>
</UiCardHeader>
<UiCardContent>
<div className="text-2xl font-bold text-green-600">+{stats?.newUsersToday}</div>
</UiCardContent>
</UiCard>
<UiCard>
<UiCardHeader className="pb-2">
<UiCardTitle className="text-sm font-medium">Стан системи</UiCardTitle>
</UiCardHeader>
<UiCardContent>
<div className={`text-2xl font-bold ${
stats?.systemHealth === 'healthy' ? 'text-green-600' :
stats?.systemHealth === 'warning' ? 'text-yellow-600' : 'text-red-600'
}`}>
{stats?.systemHealth.toUpperCase()}
</div>
</UiCardContent>
</UiCard>
</div>
{/* Додаткові адмін компоненти */}
<UserManagement />
<SystemConfiguration />
<AuditLogs />
</div>
)
}// Недостатні дозволи
// Відстеження адмін дій для моніторингу
Безпека адміністратора Логування аудиту Захист системи Моніторинг
Адмін API платформи Ring забезпечує корпоративний контроль із комплексною безпекою, слідами аудиту та операційним моніторингом.