f0a1552
ZhenYi
feat(chat): add chat module with room management, message handling, and session revocation
f0a1552
use utoipa::OpenApi;
#[derive(OpenApi)]
#[openapi(
info(
title = "gitdata admin api",
version = "1.0",
description = "GitData 管理后台 API。独立进程(adminhost)、独立会话 Cookie(gitdata_admin_session)、固定角色 super_admin/operator/viewer。"
),
paths(
crate::handlers::auth::login,
crate::handlers::auth::logout,
crate::handlers::auth::me,
crate::handlers::auth::change_password,
crate::handlers::admins::list_admins,
crate::handlers::admins::create_admin,
crate::handlers::admins::get_admin,
crate::handlers::admins::update_admin,
crate::handlers::admins::delete_admin,
crate::handlers::admins::reset_admin_password,
crate::handlers::admins::revoke_admin_sessions,
crate::handlers::users::list_users,
crate::handlers::users::get_user,
crate::handlers::users::update_user,
crate::handlers::users::suspend_user,
crate::handlers::users::revoke_suspension,
crate::handlers::users::reset_user_password,
crate::handlers::users::revoke_user_sessions,
crate::handlers::users::delete_user,
crate::handlers::users::create_user,
crate::handlers::users::bulk_users,
crate::handlers::users::export_users,
crate::handlers::users::list_user_sessions,
crate::handlers::users::revoke_user_session,
crate::handlers::users::get_user_security,
crate::handlers::users::clear_user_two_factor,
crate::handlers::chat::stats,
crate::handlers::chat::list_rooms,
crate::handlers::chat::get_room,
crate::handlers::chat::update_room,
crate::handlers::chat::delete_room,
crate::handlers::chat::list_members,
crate::handlers::chat::remove_member,
crate::handlers::chat::purge_room,
crate::handlers::chat::list_messages,
crate::handlers::chat::export_messages,
crate::handlers::chat::get_message,
crate::handlers::chat::bulk_delete_messages,
crate::handlers::chat::list_attachments,
crate::handlers::chat::delete_attachment,
crate::handlers::spaces::list_spaces,
crate::handlers::spaces::get_space,
crate::handlers::spaces::update_space,
crate::handlers::spaces::transfer_space,
crate::handlers::spaces::delete_space,
crate::handlers::spaces::list_space_members,
crate::handlers::spaces::remove_space_member,
crate::handlers::spaces::add_space_member,
crate::handlers::storage::overview,
crate::handlers::storage::list_objects,
crate::handlers::storage::download_url,
crate::handlers::storage::delete_object,
crate::handlers::queues::list_queues,
crate::handlers::queues::requeue_failed,
crate::handlers::queues::purge,
crate::handlers::queues::failed_jobs,
crate::handlers::tasks::list_tasks,
crate::handlers::tasks::get_task,
crate::handlers::tasks::retry_task,
crate::handlers::tasks::cancel_task,
crate::handlers::tasks::delete_task,
crate::handlers::tasks::task_stats,
crate::handlers::tasks::bulk_tasks,
crate::handlers::logs::list_audit_logs,
crate::handlers::logs::list_job_logs,
crate::handlers::logs::export_audit_logs,
crate::handlers::system::status,
crate::handlers::system::config,
crate::handlers::system::dashboard
),
components(schemas(
export::rest::NoData,
export::pagination::PageQuery,
models::admin::admin_user::AdminRole,
models::users::user_suspensions::SuspensionType,
crate::services::auth::AdminLoginCmd,
crate::services::auth::AdminLoginResp,
crate::services::auth::AdminDto,
crate::services::auth::ChangePasswordCmd,
crate::services::auth::CreateAdminCmd,
crate::services::auth::UpdateAdminCmd,
crate::services::auth::ResetAdminPasswordCmd,
crate::services::users::AdminUserSummary,
crate::services::users::AdminUserEmailDto,
crate::services::users::AdminUserSessionDto,
crate::services::users::AdminUserSpaceDto,
crate::services::users::AdminSuspensionDto,
crate::services::users::AdminUserDetail,
crate::services::users::UpdateUserCmd,
crate::services::users::SuspendUserCmd,
crate::services::users::ResetUserPasswordCmd,
crate::services::users::RevokeSessionsResp,
crate::services::users::DeleteUserResp,
crate::services::users::CreateUserCmd,
crate::services::users::CreateUserResp,
crate::services::users::BulkUsersCmd,
crate::services::users::BulkUsersResp,
crate::services::users::BulkUserFailure,
crate::services::users::AdminUserSessionRow,
crate::services::users::AdminUserSessionPage,
crate::services::users::AdminUserSecurityDto,
crate::services::chat::AdminChatKindCount,
crate::services::chat::AdminChatStatsDto,
crate::services::chat::AdminChatRoomSummary,
crate::services::chat::AdminChatRoomDetail,
crate::services::chat::UpdateChatRoomCmd,
crate::services::chat::AdminChatRoomMemberDto,
crate::services::chat::AdminChatMessageDto,
crate::services::chat::AdminChatMessageEditDto,
crate::services::chat::AdminChatReactionGroupDto,
crate::services::chat::AdminChatAttachmentDto,
crate::services::chat::AdminChatThreadDto,
crate::services::chat::AdminChatMessageDetail,
crate::services::chat::BulkDeleteChatMessagesCmd,
crate::services::chat::BulkChatMessageFailure,
crate::services::chat::BulkDeleteChatMessagesResp,
crate::services::chat::PurgeChatMessagesResp,
crate::services::chat::DeleteChatRoomResp,
crate::services::chat::DeleteChatAttachmentResp,
crate::services::chat::RemoveChatMemberResp,
crate::services::spaces::AdminSpaceSummary,
crate::services::spaces::AdminSpaceDetail,
crate::services::spaces::UpdateSpaceCmd,
crate::services::spaces::TransferSpaceCmd,
crate::services::spaces::AdminSpaceMemberDto,
crate::services::spaces::RemoveMemberResp,
crate::services::spaces::AddSpaceMemberCmd,
crate::services::spaces::AddSpaceMemberResp,
crate::services::storage::StorageCategoryDto,
crate::services::storage::StorageOverviewDto,
crate::services::storage::StorageObjectDto,
crate::services::storage::StorageObjectPageDto,
crate::services::storage::DownloadUrlDto,
crate::services::storage::DeleteObjectResp,
crate::services::queues::QueueSnapshotDto,
crate::services::queues::QueueActionResp,
crate::services::tasks::TaskDto,
crate::services::tasks::TaskPageDto,
crate::services::tasks::TaskDetailDto,
crate::services::tasks::TaskActionResp,
crate::services::tasks::TaskSourceStatDto,
crate::services::tasks::TaskStatsDto,
crate::services::tasks::BulkTaskCmd,
crate::services::tasks::BulkTaskResp,
crate::services::tasks::BulkTaskFailure,
crate::services::logs::AuditLogDto,
crate::services::logs::AuditLogPageDto,
crate::services::logs::JobLogDto,
crate::services::logs::JobLogPageDto,
crate::services::system::ProcessInfoDto,
crate::services::system::DependencyDto,
crate::services::system::DependenciesDto,
crate::services::system::FeaturesDto,
crate::services::system::CountsDto,
crate::services::system::SystemStatusDto,
crate::services::system::HostEntryDto,
crate::services::system::AdminEndpointDto,
crate::services::system::SearchConfigDto,
crate::services::system::ImportConfigDto,
crate::services::system::GitConfigDto,
crate::services::system::StorageConfigDto,
crate::services::system::DatabaseConfigDto,
crate::services::system::RedisConfigDto,
crate::services::system::SessionConfigDto,
crate::services::system::EmailConfigDto,
crate::services::system::SystemConfigDto,
crate::services::system::TrendPointDto,
crate::services::system::DashboardDto
))
)]
pub struct AdminApiDoc;
pub fn api_doc() -> utoipa::openapi::OpenApi {
let mut doc = AdminApiDoc::openapi();
doc.servers = Some(vec![utoipa::openapi::Server::new("/api/v1")]);
{
use utoipa::openapi::security::{ApiKey, ApiKeyValue, SecurityScheme};
let components = doc
.components
.get_or_insert_with(utoipa::openapi::Components::default);
components.add_security_scheme(
"admin_session_cookie",
SecurityScheme::ApiKey(ApiKey::Cookie(ApiKeyValue::new("gitdata_admin_session"))),
);
}
doc.security = Some(vec![
utoipa::openapi::security::SecurityRequirement::new(
"admin_session_cookie",
Vec::<String>::new(),
),
]);
doc
}