feat(api): expand API endpoints for repo, PR, user, workspace management

- Add git operation endpoints: archive, compare branches, diff, tree,
  repository extras
- Add repo endpoints: contributors, delete fork, get branch/commit
  status/deploy key/invitation/member/release/tag/webhook, topics,
  release assets, webhook deliveries/retry
- Add PR endpoints: review requests, templates
- Add user endpoints: block/unblock, follow/unfollow, presence,
  personal access tokens, account restore
- Add workspace endpoints: billing history, approvals, domains,
  integrations, invitations, members, webhooks, restore
- Add internal API, notification API, IM API modules
- Update route configuration and OpenAPI spec
This commit is contained in:
zhenyi
2026-06-10 18:49:27 +08:00
parent 4586b79cb8
commit cec6dce955
161 changed files with 7522 additions and 349 deletions
+95 -9
View File
@@ -5,6 +5,7 @@ pub mod add_deploy_key;
pub mod add_member;
pub mod archive;
pub mod check_branch_merge;
pub mod contributors;
pub mod create;
pub mod create_branch;
pub mod create_commit_comment;
@@ -17,14 +18,24 @@ pub mod create_webhook;
pub mod delete;
pub mod delete_branch;
pub mod delete_deploy_key;
pub mod delete_fork;
pub mod delete_protection_rule;
pub mod delete_release;
pub mod delete_tag;
pub mod delete_webhook;
pub mod fork_repo;
pub mod get;
pub mod get_branch;
pub mod get_commit_status;
pub mod get_deploy_key;
pub mod get_invitation;
pub mod get_member;
pub mod get_protection_rule;
pub mod get_release;
pub mod get_stats;
pub mod get_tag;
pub mod get_webhook;
pub mod git;
pub mod leave_repo;
pub mod list;
pub mod list_branches;
@@ -42,27 +53,33 @@ pub mod list_watchers;
pub mod list_webhooks;
pub mod match_protection;
pub mod refresh_stats;
pub mod release_assets;
pub mod remove_member;
pub mod repo_webhook_deliveries;
pub mod repo_webhook_retry;
pub mod resolve_commit_comment;
pub mod revoke_invitation;
pub mod set_branch_protection;
pub mod set_default_branch;
pub mod star_repo;
pub mod sync_fork;
pub mod topics;
pub mod transfer_owner;
pub mod unarchive;
pub mod unstar_repo;
pub mod unwatch_repo;
pub mod update;
pub mod update_commit_comment;
pub mod update_member_role;
pub mod update_protection_rule;
pub mod update_release;
pub mod update_tag;
pub mod update_webhook;
pub mod watch_repo;
pub fn configure(cfg: &mut web::ServiceConfig) {
cfg.service(
web::scope("/workspaces/{workspace_name}/repos")
web::scope("")
.route("", web::get().to(list::list))
.route("", web::post().to(create::create))
.route("/{repo_name}", web::get().to(get::get))
@@ -86,21 +103,33 @@ pub fn configure(cfg: &mut web::ServiceConfig) {
web::post().to(create_branch::create_branch),
)
.route(
"/{repo_name}/branches/{branch_id}/default",
"/{repo_name}/branches/{branch_name}/default",
web::put().to(set_default_branch::set_default_branch),
)
.route(
"/{repo_name}/branches/{branch_id}/protection",
"/{repo_name}/branches/{branch_name}/protection",
web::put().to(set_branch_protection::set_branch_protection),
)
.route(
"/{repo_name}/branches/{branch_id}",
"/{repo_name}/branches/{branch_name}",
web::get().to(get_branch::get_branch),
)
.route(
"/{repo_name}/branches/{branch_name}",
web::delete().to(delete_branch::delete_branch),
)
.route("/{repo_name}/tags", web::get().to(list_tags::list_tags))
.route("/{repo_name}/tags", web::post().to(create_tag::create_tag))
.route(
"/{repo_name}/tags/{tag_id}",
"/{repo_name}/tags/{tag_name}",
web::get().to(get_tag::get_tag),
)
.route(
"/{repo_name}/tags/{tag_name}",
web::put().to(update_tag::update_tag),
)
.route(
"/{repo_name}/tags/{tag_name}",
web::delete().to(delete_tag::delete_tag),
)
.route(
@@ -111,6 +140,10 @@ pub fn configure(cfg: &mut web::ServiceConfig) {
"/{repo_name}/releases",
web::post().to(create_release::create_release),
)
.route(
"/{repo_name}/releases/{release_id}",
web::get().to(get_release::get_release),
)
.route(
"/{repo_name}/releases/{release_id}",
web::put().to(update_release::update_release),
@@ -121,7 +154,12 @@ pub fn configure(cfg: &mut web::ServiceConfig) {
)
.route("/{repo_name}/forks", web::get().to(list_forks::list_forks))
.route("/{repo_name}/fork", web::post().to(fork_repo::fork_repo))
.route(
"/{repo_name}/fork",
web::delete().to(delete_fork::delete_fork),
)
.route("/{repo_name}/sync", web::post().to(sync_fork::sync_fork))
.route("/{repo_name}/topics", web::put().to(topics::update_topics))
.route("/{repo_name}/star", web::post().to(star_repo::star_repo))
.route(
"/{repo_name}/star",
@@ -152,6 +190,10 @@ pub fn configure(cfg: &mut web::ServiceConfig) {
"/{repo_name}/members/{member_id}/role",
web::put().to(update_member_role::update_member_role),
)
.route(
"/{repo_name}/members/{member_id}",
web::get().to(get_member::get_member),
)
.route(
"/{repo_name}/members/{member_id}",
web::delete().to(remove_member::remove_member),
@@ -165,6 +207,10 @@ pub fn configure(cfg: &mut web::ServiceConfig) {
"/{repo_name}/invitations",
web::post().to(create_invitation::create_invitation),
)
.route(
"/{repo_name}/invitations/{invitation_id}",
web::get().to(get_invitation::get_invitation),
)
.route(
"/{repo_name}/invitations/{invitation_id}",
web::delete().to(revoke_invitation::revoke_invitation),
@@ -177,6 +223,10 @@ pub fn configure(cfg: &mut web::ServiceConfig) {
"/{repo_name}/deploy-keys",
web::post().to(add_deploy_key::add_deploy_key),
)
.route(
"/{repo_name}/deploy-keys/{key_id}",
web::get().to(get_deploy_key::get_deploy_key),
)
.route(
"/{repo_name}/deploy-keys/{key_id}",
web::delete().to(delete_deploy_key::delete_deploy_key),
@@ -189,6 +239,10 @@ pub fn configure(cfg: &mut web::ServiceConfig) {
"/{repo_name}/webhooks",
web::post().to(create_webhook::create_webhook),
)
.route(
"/{repo_name}/webhooks/{webhook_id}",
web::get().to(get_webhook::get_webhook),
)
.route(
"/{repo_name}/webhooks/{webhook_id}",
web::put().to(update_webhook::update_webhook),
@@ -197,6 +251,14 @@ pub fn configure(cfg: &mut web::ServiceConfig) {
"/{repo_name}/webhooks/{webhook_id}",
web::delete().to(delete_webhook::delete_webhook),
)
.route(
"/{repo_name}/webhooks/{webhook_id}/deliveries",
web::get().to(repo_webhook_deliveries::repo_webhook_deliveries),
)
.route(
"/{repo_name}/webhooks/{webhook_id}/deliveries/{delivery_id}/retry",
web::post().to(repo_webhook_retry::repo_webhook_retry),
)
.route(
"/{repo_name}/protection-rules",
web::get().to(list_protection_rules::list_protection_rules),
@@ -229,6 +291,10 @@ pub fn configure(cfg: &mut web::ServiceConfig) {
"/{repo_name}/commits/{push_commit_id}/statuses",
web::get().to(list_commit_statuses::list_commit_statuses),
)
.route(
"/{repo_name}/commits/{push_commit_id}/statuses/{status_id}",
web::get().to(get_commit_status::get_commit_status),
)
.route(
"/{repo_name}/commit-statuses",
web::post().to(create_commit_status::create_commit_status),
@@ -245,14 +311,34 @@ pub fn configure(cfg: &mut web::ServiceConfig) {
"/{repo_name}/commit-comments/{comment_id}/resolve",
web::post().to(resolve_commit_comment::resolve_commit_comment),
)
.route(
"/{repo_name}/commit-comments/{comment_id}",
web::put().to(update_commit_comment::update_commit_comment),
)
.route("/{repo_name}/stats", web::get().to(get_stats::get_stats))
.route(
"/{repo_name}/stats/refresh",
web::post().to(refresh_stats::refresh_stats),
)
.route(
"/{repo_name}/contributors",
web::get().to(contributors::list_contributors),
)
.route(
"/{repo_name}/releases/{release_id}/assets",
web::post().to(release_assets::upload_asset),
)
.route(
"/{repo_name}/releases/{release_id}/assets",
web::get().to(release_assets::list_assets),
)
.route(
"/{repo_name}/releases/{release_id}/assets/{asset_id}",
web::delete().to(release_assets::delete_asset),
)
.route(
"/{repo_name}/releases/{release_id}/assets/{asset_id}/download",
web::get().to(release_assets::download_asset),
),
)
.route(
"/repos/invitations/accept",
web::post().to(accept_invitation::accept_invitation),
);
}