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::repo::accept_invitation::AcceptInvitationParams; use crate::api::repo::set_branch_protection::SetBranchProtectionParams; use crate::api::repo::transfer_owner::TransferOwnerParams; use crate::service::repo::watches::WatchParams; use crate::api::workspace::accept_invitation::AcceptInvitationRequest; use crate::api::workspace::review_approval::ReviewApprovalRequest; use crate::api::workspace::transfer_owner::TransferOwnerRequest; use crate::models::repos::{ BranchProtectionRule, Repo, RepoBranch, RepoCommitComment, RepoCommitStatus, RepoDeployKey, RepoFork, RepoInvitation, RepoMember, RepoRelease, RepoStar, RepoStats, RepoTag, RepoWatch, RepoWebhook, }; 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::repo::branches::CreateBranchParams; use crate::service::repo::commit_status::{CreateCommitCommentParams, CreateCommitStatusParams}; use crate::service::repo::core::{CreateRepoParams, UpdateRepoParams}; use crate::service::repo::deploy_keys::AddDeployKeyParams; use crate::service::repo::fork::ForkRepoParams; use crate::service::repo::invitations::CreateRepoInvitationParams; use crate::service::repo::members::{AddRepoMemberParams, UpdateRepoMemberRoleParams}; use crate::service::repo::protection::{ BranchMergeCheck, CreateProtectionRuleParams, UpdateProtectionRuleParams, }; use crate::service::repo::releases::{CreateReleaseParams, UpdateReleaseParams}; use crate::service::repo::tags::CreateTagParams; 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."), (name = "Repos", description = "Repository management including branches, tags, releases, forks, stars, watches, members, invitations, deploy keys, webhooks, protection rules, commit statuses, and statistics."), ), 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, // Repos crate::api::repo::list::list, crate::api::repo::get::get, crate::api::repo::create::create, crate::api::repo::update::update, crate::api::repo::archive::archive, crate::api::repo::unarchive::unarchive, crate::api::repo::delete::delete, crate::api::repo::transfer_owner::transfer_owner, crate::api::repo::list_branches::list_branches, crate::api::repo::create_branch::create_branch, crate::api::repo::set_default_branch::set_default_branch, crate::api::repo::set_branch_protection::set_branch_protection, crate::api::repo::delete_branch::delete_branch, crate::api::repo::list_tags::list_tags, crate::api::repo::create_tag::create_tag, crate::api::repo::delete_tag::delete_tag, crate::api::repo::list_releases::list_releases, crate::api::repo::create_release::create_release, crate::api::repo::update_release::update_release, crate::api::repo::delete_release::delete_release, crate::api::repo::list_forks::list_forks, crate::api::repo::fork_repo::fork_repo, crate::api::repo::sync_fork::sync_fork, crate::api::repo::star_repo::star_repo, crate::api::repo::unstar_repo::unstar_repo, crate::api::repo::list_stargazers::list_stargazers, crate::api::repo::watch_repo::watch_repo, crate::api::repo::unwatch_repo::unwatch_repo, crate::api::repo::list_watchers::list_watchers, crate::api::repo::list_members::list_members, crate::api::repo::add_member::add_member, crate::api::repo::update_member_role::update_member_role, crate::api::repo::remove_member::remove_member, crate::api::repo::leave_repo::leave_repo, crate::api::repo::list_invitations::list_invitations, crate::api::repo::create_invitation::create_invitation, crate::api::repo::revoke_invitation::revoke_invitation, crate::api::repo::accept_invitation::accept_invitation, crate::api::repo::list_deploy_keys::list_deploy_keys, crate::api::repo::add_deploy_key::add_deploy_key, crate::api::repo::delete_deploy_key::delete_deploy_key, crate::api::repo::list_webhooks::list_webhooks, crate::api::repo::create_webhook::create_webhook, crate::api::repo::update_webhook::update_webhook, crate::api::repo::delete_webhook::delete_webhook, crate::api::repo::list_protection_rules::list_protection_rules, crate::api::repo::get_protection_rule::get_protection_rule, crate::api::repo::match_protection::match_protection, crate::api::repo::create_protection_rule::create_protection_rule, crate::api::repo::update_protection_rule::update_protection_rule, crate::api::repo::delete_protection_rule::delete_protection_rule, crate::api::repo::check_branch_merge::check_branch_merge, crate::api::repo::list_commit_statuses::list_commit_statuses, crate::api::repo::create_commit_status::create_commit_status, crate::api::repo::list_commit_comments::list_commit_comments, crate::api::repo::create_commit_comment::create_commit_comment, crate::api::repo::resolve_commit_comment::resolve_commit_comment, crate::api::repo::get_stats::get_stats, crate::api::repo::refresh_stats::refresh_stats, ), components(schemas( ApiEmptyResponse, ApiErrorResponse, ApiResponse, ApiResponse, ApiResponse, ApiResponse, ApiResponse, ApiResponse, ApiResponse, ApiResponse, ApiResponse, RsaResponse, CaptchaQuery, CaptchaResponse, LoginParams, ContextMe, RegisterEmailCodeParams, RegisterEmailCodeResponse, RegisterParams, RegisterResponse, EmailResponse, EmailChangeRequest, EmailVerifyRequest, ResetPasswordRequest, ResetPasswordVerifyParams, Get2FAStatusResponse, Enable2FAResponse, Verify2FAParams, Disable2FAParams, Regenerate2FABackupCodesRequest, Regenerate2FABackupCodesResponse, ApiResponse, ApiResponse>, ApiResponse, ApiResponse>, ApiResponse, ApiResponse>, ApiResponse, ApiResponse, ApiResponse, ApiResponse, ApiResponse, ApiResponse, ApiResponse>, ApiResponse, ApiResponse>, ApiResponse, ApiResponse>, ApiResponse, ApiResponse>, ApiResponse>, 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, // Repos ApiResponse, ApiResponse>, ApiResponse, ApiResponse>, ApiResponse, ApiResponse>, ApiResponse, ApiResponse>, ApiResponse, ApiResponse>, ApiResponse, ApiResponse>, ApiResponse, ApiResponse>, ApiResponse, ApiResponse>, ApiResponse, ApiResponse>, ApiResponse, ApiResponse>, ApiResponse, ApiResponse>, ApiResponse, ApiResponse>, ApiResponse>, ApiResponse, ApiResponse, ApiResponse>, ApiResponse, ApiResponse>, ApiResponse, ApiResponse, Repo, CreateRepoParams, UpdateRepoParams, TransferOwnerParams, RepoBranch, CreateBranchParams, SetBranchProtectionParams, RepoTag, CreateTagParams, RepoRelease, CreateReleaseParams, UpdateReleaseParams, RepoFork, ForkRepoParams, RepoStar, RepoWatch, WatchParams, RepoMember, AddRepoMemberParams, UpdateRepoMemberRoleParams, RepoInvitation, CreateRepoInvitationParams, AcceptInvitationParams, RepoDeployKey, AddDeployKeyParams, RepoWebhook, CreateWebhookParams, UpdateWebhookParams, BranchProtectionRule, CreateProtectionRuleParams, UpdateProtectionRuleParams, BranchMergeCheck, RepoCommitStatus, CreateCommitStatusParams, RepoCommitComment, CreateCommitCommentParams, RepoStats, )) )] pub struct OpenApiDoc;