Files
gitks/api/openapi.rs
T
zhenyi dca717be10 refactor(workspace): pass workspace object instead of id to service methods
- Replace workspace_id parameter with Workspace object reference in all workspace service methods
- Remove redundant find_workspace_by_id calls that were duplicated in each method
- Update all method signatures across approval, audit, billing, branding, core, settings and stats modules
- Modify SQL queries to bind ws.id instead of separate workspace_id parameter
- Add Workspace import to all affected modules
- Adjust method calls in API handlers to pass workspace object instead of id
- Consolidate workspace retrieval logic to single location per operation flow
2026-06-07 18:44:01 +08:00

199 lines
8.5 KiB
Rust

use utoipa::OpenApi;
use crate::api::auth::regenerate_2fa_backup_codes::{
Regenerate2FABackupCodesRequest, Regenerate2FABackupCodesResponse,
};
use crate::api::auth::register::RegisterResponse;
use crate::api::response::{ApiEmptyResponse, ApiErrorResponse, ApiResponse};
use crate::api::workspace::accept_invitation::AcceptInvitationRequest;
use crate::api::workspace::review_approval::ReviewApprovalRequest;
use crate::api::workspace::transfer_owner::TransferOwnerRequest;
use crate::models::workspaces::{
Workspace, WorkspaceAuditLog, WorkspaceBilling, WorkspaceCustomBranding, WorkspaceDomain,
WorkspaceIntegration, WorkspaceInvitation, WorkspaceMember, WorkspacePendingApproval,
WorkspaceSettings, WorkspaceStats, WorkspaceWebhook,
};
use crate::service::auth::captcha::{CaptchaQuery, CaptchaResponse};
use crate::service::auth::email::{EmailChangeRequest, EmailResponse, EmailVerifyRequest};
use crate::service::auth::login::LoginParams;
use crate::service::auth::me::ContextMe;
use crate::service::auth::register::{
RegisterEmailCodeParams, RegisterEmailCodeResponse, RegisterParams,
};
use crate::service::auth::reset_pass::{ResetPasswordRequest, ResetPasswordVerifyParams};
use crate::service::auth::rsa::RsaResponse;
use crate::service::auth::totp::{
Disable2FAParams, Enable2FAResponse, Get2FAStatusResponse, Verify2FAParams,
};
use crate::service::workspace::approvals::RequestApprovalParams;
use crate::service::workspace::billing::UpdateBillingParams;
use crate::service::workspace::branding::UpdateBrandingParams;
use crate::service::workspace::core::{CreateWorkspaceParams, UpdateWorkspaceParams};
use crate::service::workspace::domains::AddDomainParams;
use crate::service::workspace::integrations::{CreateIntegrationParams, UpdateIntegrationParams};
use crate::service::workspace::invitations::{CreateInvitationParams, CreateInvitationResponse};
use crate::service::workspace::members::{AddMemberParams, UpdateMemberRoleParams};
use crate::service::workspace::settings::UpdateWorkspaceSettingsParams;
use crate::service::workspace::webhooks::{CreateWebhookParams, UpdateWebhookParams};
#[derive(OpenApi)]
#[openapi(
info(
title = "AppKS API",
version = "0.1.0",
description = "AppKS collaborative development platform HTTP API. Auth endpoints use server-side sessions backed by Redis and a signed/encrypted session cookie. Sensitive password fields are RSA-OAEP-SHA256 encrypted per session before transmission."
),
tags(
(name = "Auth", description = "Authentication, registration, session and email security endpoints."),
(name = "Workspaces", description = "Workspace CRUD, archiving, ownership transfer, and avatar management."),
),
paths(
// Auth
crate::api::auth::rsa::handle,
crate::api::auth::captcha::handle,
crate::api::auth::login::handle,
crate::api::auth::logout::handle,
crate::api::auth::me::handle,
crate::api::auth::register_email_code::handle,
crate::api::auth::register::handle,
crate::api::auth::get_email::handle,
crate::api::auth::request_email_change::handle,
crate::api::auth::verify_email::handle,
crate::api::auth::request_reset_password::handle,
crate::api::auth::verify_reset_password::handle,
crate::api::auth::get_2fa_status::handle,
crate::api::auth::enable_2fa::handle,
crate::api::auth::verify_2fa::handle,
crate::api::auth::disable_2fa::handle,
crate::api::auth::regenerate_2fa_backup_codes::handle,
// Workspaces
crate::api::workspace::list::handle,
crate::api::workspace::get::handle,
crate::api::workspace::create::handle,
crate::api::workspace::update::handle,
crate::api::workspace::archive::handle,
crate::api::workspace::unarchive::handle,
crate::api::workspace::delete::handle,
crate::api::workspace::transfer_owner::handle,
crate::api::workspace::upload_avatar::handle,
crate::api::workspace::list_members::handle,
crate::api::workspace::add_member::handle,
crate::api::workspace::update_member_role::handle,
crate::api::workspace::remove_member::handle,
crate::api::workspace::leave::handle,
crate::api::workspace::list_invitations::handle,
crate::api::workspace::create_invitation::handle,
crate::api::workspace::revoke_invitation::handle,
crate::api::workspace::accept_invitation::handle,
crate::api::workspace::get_billing::handle,
crate::api::workspace::update_billing::handle,
crate::api::workspace::get_branding::handle,
crate::api::workspace::update_branding::handle,
crate::api::workspace::get_settings::handle,
crate::api::workspace::update_settings::handle,
crate::api::workspace::get_stats::handle,
crate::api::workspace::refresh_stats::handle,
crate::api::workspace::list_integrations::handle,
crate::api::workspace::create_integration::handle,
crate::api::workspace::update_integration::handle,
crate::api::workspace::delete_integration::handle,
crate::api::workspace::list_webhooks::handle,
crate::api::workspace::create_webhook::handle,
crate::api::workspace::update_webhook::handle,
crate::api::workspace::delete_webhook::handle,
crate::api::workspace::list_domains::handle,
crate::api::workspace::add_domain::handle,
crate::api::workspace::verify_domain::handle,
crate::api::workspace::set_primary_domain::handle,
crate::api::workspace::delete_domain::handle,
crate::api::workspace::list_approvals::handle,
crate::api::workspace::request_approval::handle,
crate::api::workspace::review_approval::handle,
crate::api::workspace::audit_logs::handle,
),
components(schemas(
ApiEmptyResponse,
ApiErrorResponse,
ApiResponse<RsaResponse>,
ApiResponse<CaptchaResponse>,
ApiResponse<ContextMe>,
ApiResponse<RegisterEmailCodeResponse>,
ApiResponse<RegisterResponse>,
ApiResponse<EmailResponse>,
ApiResponse<Get2FAStatusResponse>,
ApiResponse<Enable2FAResponse>,
ApiResponse<Regenerate2FABackupCodesResponse>,
RsaResponse,
CaptchaQuery,
CaptchaResponse,
LoginParams,
ContextMe,
RegisterEmailCodeParams,
RegisterEmailCodeResponse,
RegisterParams,
RegisterResponse,
EmailResponse,
EmailChangeRequest,
EmailVerifyRequest,
ResetPasswordRequest,
ResetPasswordVerifyParams,
Get2FAStatusResponse,
Enable2FAResponse,
Verify2FAParams,
Disable2FAParams,
Regenerate2FABackupCodesRequest,
Regenerate2FABackupCodesResponse,
ApiResponse<Workspace>,
ApiResponse<Vec<Workspace>>,
ApiResponse<WorkspaceMember>,
ApiResponse<Vec<WorkspaceMember>>,
ApiResponse<CreateInvitationResponse>,
ApiResponse<Vec<WorkspaceInvitation>>,
ApiResponse<WorkspaceInvitation>,
ApiResponse<WorkspaceBilling>,
ApiResponse<WorkspaceCustomBranding>,
ApiResponse<WorkspaceSettings>,
ApiResponse<WorkspaceStats>,
ApiResponse<WorkspaceIntegration>,
ApiResponse<Vec<WorkspaceIntegration>>,
ApiResponse<WorkspaceWebhook>,
ApiResponse<Vec<WorkspaceWebhook>>,
ApiResponse<WorkspaceDomain>,
ApiResponse<Vec<WorkspaceDomain>>,
ApiResponse<WorkspacePendingApproval>,
ApiResponse<Vec<WorkspacePendingApproval>>,
ApiResponse<Vec<WorkspaceAuditLog>>,
Workspace,
CreateWorkspaceParams,
UpdateWorkspaceParams,
TransferOwnerRequest,
WorkspaceMember,
AddMemberParams,
UpdateMemberRoleParams,
WorkspaceInvitation,
CreateInvitationParams,
CreateInvitationResponse,
AcceptInvitationRequest,
WorkspaceBilling,
UpdateBillingParams,
WorkspaceCustomBranding,
UpdateBrandingParams,
WorkspaceSettings,
UpdateWorkspaceSettingsParams,
WorkspaceStats,
WorkspaceIntegration,
CreateIntegrationParams,
UpdateIntegrationParams,
WorkspaceWebhook,
CreateWebhookParams,
UpdateWebhookParams,
WorkspaceDomain,
AddDomainParams,
WorkspacePendingApproval,
RequestApprovalParams,
ReviewApprovalRequest,
WorkspaceAuditLog,
))
)]
pub struct OpenApiDoc;