feat(api): add comprehensive repository management API endpoints
- Introduce new repo module with complete repository functionality - Add endpoints for repository CRUD operations (create, get, update, archive, delete) - Implement branch management with create, list, delete and protection features - Add tag management with create, list and delete operations - Include release management with create, update and delete capabilities - Support repository forking with sync functionality - Implement starring and watching mechanisms for repositories - Add member management with roles and invitations - Provide deploy key management for CI/CD integration - Create webhook management for external integrations - Implement branch protection rules with approval requirements - Add commit status and comment functionality for code reviews - Include merge checking logic for pull requests - Register all new endpoints in OpenAPI documentation - Configure routes to handle new repository-specific paths
This commit is contained in:
+152
@@ -5,9 +5,18 @@ use crate::api::auth::regenerate_2fa_backup_codes::{
|
||||
};
|
||||
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,
|
||||
@@ -25,6 +34,18 @@ 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;
|
||||
@@ -46,6 +67,7 @@ use crate::service::workspace::webhooks::{CreateWebhookParams, UpdateWebhookPara
|
||||
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
|
||||
@@ -110,6 +132,66 @@ use crate::service::workspace::webhooks::{CreateWebhookParams, UpdateWebhookPara
|
||||
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,
|
||||
@@ -193,6 +275,76 @@ use crate::service::workspace::webhooks::{CreateWebhookParams, UpdateWebhookPara
|
||||
RequestApprovalParams,
|
||||
ReviewApprovalRequest,
|
||||
WorkspaceAuditLog,
|
||||
// Repos
|
||||
ApiResponse<Repo>,
|
||||
ApiResponse<Vec<Repo>>,
|
||||
ApiResponse<RepoBranch>,
|
||||
ApiResponse<Vec<RepoBranch>>,
|
||||
ApiResponse<RepoTag>,
|
||||
ApiResponse<Vec<RepoTag>>,
|
||||
ApiResponse<RepoRelease>,
|
||||
ApiResponse<Vec<RepoRelease>>,
|
||||
ApiResponse<RepoFork>,
|
||||
ApiResponse<Vec<RepoFork>>,
|
||||
ApiResponse<RepoStar>,
|
||||
ApiResponse<Vec<RepoStar>>,
|
||||
ApiResponse<RepoWatch>,
|
||||
ApiResponse<Vec<RepoWatch>>,
|
||||
ApiResponse<RepoMember>,
|
||||
ApiResponse<Vec<RepoMember>>,
|
||||
ApiResponse<RepoInvitation>,
|
||||
ApiResponse<Vec<RepoInvitation>>,
|
||||
ApiResponse<RepoDeployKey>,
|
||||
ApiResponse<Vec<RepoDeployKey>>,
|
||||
ApiResponse<RepoWebhook>,
|
||||
ApiResponse<Vec<RepoWebhook>>,
|
||||
ApiResponse<BranchProtectionRule>,
|
||||
ApiResponse<Vec<BranchProtectionRule>>,
|
||||
ApiResponse<Option<BranchProtectionRule>>,
|
||||
ApiResponse<BranchMergeCheck>,
|
||||
ApiResponse<RepoCommitStatus>,
|
||||
ApiResponse<Vec<RepoCommitStatus>>,
|
||||
ApiResponse<RepoCommitComment>,
|
||||
ApiResponse<Vec<RepoCommitComment>>,
|
||||
ApiResponse<RepoStats>,
|
||||
ApiResponse<String>,
|
||||
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;
|
||||
|
||||
Reference in New Issue
Block a user