feat(api): add pull request and wiki API endpoints with OpenAPI generator
- Add gen_openapi binary for generating OpenAPI specification - Implement comprehensive pull request API endpoints including core operations - Add pull request reviews, check runs, labels, assignees, and events APIs - Include pull request status and merge strategy management endpoints - Add wiki page CRUD operations with revision history and comparison - Update OpenAPI documentation with Pull Requests and Wiki tags - Modify workspace find function visibility for external access - Integrate new API modules into main OpenAPI router configuration
This commit is contained in:
+157
-14
@@ -7,6 +7,8 @@ use crate::api::auth::register::RegisterResponse;
|
||||
use crate::api::issue::lock::LockIssueParams;
|
||||
use crate::api::issue::subscribers::MuteIssueParams;
|
||||
use crate::api::issue::transfer::TransferIssueParams;
|
||||
use crate::api::pr::lock::LockPrParams;
|
||||
use crate::api::pr::subscriptions::MutePrParams;
|
||||
use crate::api::repo::accept_invitation::AcceptInvitationParams;
|
||||
use crate::api::repo::set_branch_protection::SetBranchProtectionParams;
|
||||
use crate::api::repo::transfer_owner::TransferOwnerParams;
|
||||
@@ -18,6 +20,11 @@ use crate::models::issues::{
|
||||
Issue, IssueAssignee, IssueComment, IssueEvent, IssueLabel, IssueLabelRelation, IssueMilestone,
|
||||
IssuePrRelation, IssueReaction, IssueRepoRelation, IssueSubscriber, IssueTemplate,
|
||||
};
|
||||
use crate::models::prs::{
|
||||
PrAssignee, PrCheckRun, PrCommit, PrEvent, PrFile, PrLabel, PrLabelRelation, PrMergeStrategy,
|
||||
PrReaction, PrReview, PrReviewComment, PrStatus, PrSubscription, PullRequest,
|
||||
};
|
||||
use crate::models::wiki::{WikiPage, WikiPageRevision};
|
||||
use crate::models::repos::{
|
||||
BranchProtectionRule, Repo, RepoBranch, RepoCommitComment, RepoCommitStatus, RepoDeployKey,
|
||||
RepoFork, RepoInvitation, RepoMember, RepoRelease, RepoStar, RepoStats, RepoTag, RepoWatch,
|
||||
@@ -52,6 +59,17 @@ use crate::service::issues::pr_relations::LinkPrParams;
|
||||
use crate::service::issues::reactions::CreateIssueReactionParams;
|
||||
use crate::service::issues::repo_relations::LinkRepoParams;
|
||||
use crate::service::issues::templates::{CreateTemplateParams, UpdateTemplateParams};
|
||||
use crate::service::pr::check_runs::{CreateCheckRunParams, UpdateCheckRunParams};
|
||||
use crate::service::pr::core::{CreatePrParams, MergePrParams, PrListFilters, UpdatePrParams};
|
||||
use crate::service::pr::labels::{CreatePrLabelParams, UpdatePrLabelParams};
|
||||
use crate::service::pr::merge_strategy::UpdateMergeStrategyParams;
|
||||
use crate::service::pr::reactions::CreateReactionParams;
|
||||
use crate::service::pr::reviews::{
|
||||
AddReplyParams, CreateReviewParams, DismissReviewParams, ReviewCommentParams,
|
||||
SubmitReviewParams,
|
||||
};
|
||||
use crate::api::wiki::compare_revisions::WikiCompareResult;
|
||||
use crate::service::wiki::core::{CreateWikiPageParams, UpdateWikiPageParams};
|
||||
use crate::service::repo::branches::CreateBranchParams;
|
||||
use crate::service::repo::commit_status::{CreateCommitCommentParams, CreateCommitStatusParams};
|
||||
use crate::service::repo::core::{CreateRepoParams, UpdateRepoParams};
|
||||
@@ -92,14 +110,16 @@ use crate::service::workspace::webhooks::{CreateWebhookParams, UpdateWebhookPara
|
||||
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."
|
||||
description = "AppKS collaborative development platform HTTP API."
|
||||
),
|
||||
tags(
|
||||
(name = "Auth", description = "Authentication, registration, session and email security endpoints."),
|
||||
(name = "User", description = "User account management, profile, appearance, notification settings, SSH/GPG keys, sessions, devices, OAuth accounts, security logs, and personal access tokens."),
|
||||
(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."),
|
||||
(name = "Issues", description = "Issue tracking, comments, labels, milestones, assignees, events, reactions, subscribers, templates, and cross-references with repos and pull requests."),
|
||||
(name = "Issues", description = "Issue tracking, comments, labels, milestones, assignees, events, reactions, subscribers, templates, and cross-references."),
|
||||
(name = "Pull Requests", description = "Pull request lifecycle including reviews, check runs, merge strategies, labels, assignees, events, reactions, and subscriptions."),
|
||||
(name = "Wiki", description = "Wiki page management including CRUD operations, revision history, version comparison, and page reversion."),
|
||||
),
|
||||
paths(
|
||||
// Auth
|
||||
@@ -146,7 +166,7 @@ use crate::service::workspace::webhooks::{CreateWebhookParams, UpdateWebhookPara
|
||||
crate::api::user::list_security_logs::list_security_logs,
|
||||
crate::api::user::list_personal_access_tokens::list_tokens,
|
||||
crate::api::user::revoke_personal_access_token::revoke_token,
|
||||
// Issues - Core
|
||||
// Issues
|
||||
crate::api::issue::list::list,
|
||||
crate::api::issue::get::get,
|
||||
crate::api::issue::create::create,
|
||||
@@ -156,53 +176,107 @@ use crate::service::workspace::webhooks::{CreateWebhookParams, UpdateWebhookPara
|
||||
crate::api::issue::delete::delete,
|
||||
crate::api::issue::lock::lock,
|
||||
crate::api::issue::transfer::transfer,
|
||||
// Issues - Comments
|
||||
crate::api::issue::list_comments::list_comments,
|
||||
crate::api::issue::create_comment::create_comment,
|
||||
crate::api::issue::update_comment::update_comment,
|
||||
crate::api::issue::delete_comment::delete_comment,
|
||||
// Issues - Labels (repo-level)
|
||||
crate::api::issue::list_labels::list_labels,
|
||||
crate::api::issue::create_label::create_label,
|
||||
crate::api::issue::update_label::update_label,
|
||||
crate::api::issue::delete_label::delete_label,
|
||||
// Issues - Label relations (issue-level)
|
||||
crate::api::issue::list_issue_labels::list_issue_labels,
|
||||
crate::api::issue::assign_label::assign_label,
|
||||
crate::api::issue::unassign_label::unassign_label,
|
||||
// Issues - Milestones (repo-level)
|
||||
crate::api::issue::list_milestones::list_milestones,
|
||||
crate::api::issue::create_milestone::create_milestone,
|
||||
crate::api::issue::update_milestone::update_milestone,
|
||||
crate::api::issue::delete_milestone::delete_milestone,
|
||||
// Issues - Assignees
|
||||
crate::api::issue::list_assignees::list_assignees,
|
||||
crate::api::issue::assign_issue::assign_issue,
|
||||
crate::api::issue::unassign_issue::unassign_issue,
|
||||
// Issues - Events
|
||||
crate::api::issue::list_events::list_events,
|
||||
// Issues - Reactions
|
||||
crate::api::issue::reactions::list_reactions,
|
||||
crate::api::issue::reactions::add_reaction,
|
||||
crate::api::issue::reactions::remove_reaction,
|
||||
// Issues - Subscribers
|
||||
crate::api::issue::subscribers::list_subscribers,
|
||||
crate::api::issue::subscribers::subscribe,
|
||||
crate::api::issue::subscribers::unsubscribe,
|
||||
crate::api::issue::subscribers::mute,
|
||||
// Issues - Templates (repo-level)
|
||||
crate::api::issue::templates::list_templates,
|
||||
crate::api::issue::templates::create_template,
|
||||
crate::api::issue::templates::update_template,
|
||||
crate::api::issue::templates::delete_template,
|
||||
// Issues - Repo relations
|
||||
crate::api::issue::repo_relations::list_repo_relations,
|
||||
crate::api::issue::repo_relations::link_repo,
|
||||
crate::api::issue::repo_relations::unlink_repo,
|
||||
// Issues - PR relations
|
||||
crate::api::issue::pr_relations::list_pr_relations,
|
||||
crate::api::issue::pr_relations::link_pr,
|
||||
crate::api::issue::pr_relations::unlink_pr,
|
||||
// Pull Requests - Core
|
||||
crate::api::pr::list::list,
|
||||
crate::api::pr::get::get,
|
||||
crate::api::pr::create::create,
|
||||
crate::api::pr::update::update,
|
||||
crate::api::pr::mark_ready::mark_ready,
|
||||
crate::api::pr::close::close,
|
||||
crate::api::pr::reopen::reopen,
|
||||
crate::api::pr::delete::delete,
|
||||
crate::api::pr::lock::lock,
|
||||
crate::api::pr::merge::merge,
|
||||
// Pull Requests - Commits & Files
|
||||
crate::api::pr::list_commits::list_commits,
|
||||
crate::api::pr::list_files::list_files,
|
||||
// Pull Requests - Status & Merge Strategy
|
||||
crate::api::pr::get_status::get_status,
|
||||
crate::api::pr::merge_strategy::get_merge_strategy,
|
||||
crate::api::pr::merge_strategy::update_merge_strategy,
|
||||
// Pull Requests - Labels
|
||||
crate::api::pr::labels::list_labels,
|
||||
crate::api::pr::labels::create_label,
|
||||
crate::api::pr::labels::update_label,
|
||||
crate::api::pr::labels::delete_label,
|
||||
crate::api::pr::labels::list_label_relations,
|
||||
crate::api::pr::labels::assign_label,
|
||||
crate::api::pr::labels::unassign_label,
|
||||
// Pull Requests - Assignees
|
||||
crate::api::pr::assignees::list_assignees,
|
||||
crate::api::pr::assignees::assign_user,
|
||||
crate::api::pr::assignees::unassign_user,
|
||||
// Pull Requests - Reviews
|
||||
crate::api::pr::reviews::list_reviews,
|
||||
crate::api::pr::reviews::create_review,
|
||||
crate::api::pr::reviews::submit_review,
|
||||
crate::api::pr::reviews::dismiss_review,
|
||||
crate::api::pr::reviews::list_review_comments,
|
||||
crate::api::pr::reviews::add_review_reply,
|
||||
crate::api::pr::reviews::update_review_comment,
|
||||
crate::api::pr::reviews::delete_review_comment,
|
||||
// Pull Requests - Check Runs
|
||||
crate::api::pr::check_runs::list_check_runs,
|
||||
crate::api::pr::check_runs::create_check_run,
|
||||
crate::api::pr::check_runs::update_check_run,
|
||||
crate::api::pr::check_runs::delete_check_run,
|
||||
// Pull Requests - Events
|
||||
crate::api::pr::events::list_events,
|
||||
// Pull Requests - Reactions
|
||||
crate::api::pr::reactions::list_reactions,
|
||||
crate::api::pr::reactions::add_reaction,
|
||||
crate::api::pr::reactions::remove_reaction,
|
||||
// Pull Requests - Subscriptions
|
||||
crate::api::pr::subscriptions::list_subscriptions,
|
||||
crate::api::pr::subscriptions::subscribe,
|
||||
crate::api::pr::subscriptions::unsubscribe,
|
||||
crate::api::pr::subscriptions::mute,
|
||||
// Wiki
|
||||
crate::api::wiki::list_pages::list_pages,
|
||||
crate::api::wiki::get_page::get_page,
|
||||
crate::api::wiki::create_page::create_page,
|
||||
crate::api::wiki::update_page::update_page,
|
||||
crate::api::wiki::delete_page::delete_page,
|
||||
crate::api::wiki::revert_page::revert_page,
|
||||
crate::api::wiki::list_revisions::list_revisions,
|
||||
crate::api::wiki::get_revision::get_revision,
|
||||
crate::api::wiki::compare_revisions::compare_revisions,
|
||||
// Workspaces
|
||||
crate::api::workspace::list::handle,
|
||||
crate::api::workspace::get::handle,
|
||||
@@ -434,6 +508,75 @@ use crate::service::workspace::webhooks::{CreateWebhookParams, UpdateWebhookPara
|
||||
ApiResponse<Vec<IssuePrRelation>>,
|
||||
IssuePrRelation,
|
||||
LinkPrParams,
|
||||
// Pull Requests
|
||||
ApiResponse<PullRequest>,
|
||||
ApiResponse<Vec<PullRequest>>,
|
||||
PullRequest,
|
||||
CreatePrParams,
|
||||
UpdatePrParams,
|
||||
PrListFilters,
|
||||
MergePrParams,
|
||||
LockPrParams,
|
||||
ApiResponse<PrCommit>,
|
||||
ApiResponse<Vec<PrCommit>>,
|
||||
PrCommit,
|
||||
ApiResponse<PrFile>,
|
||||
ApiResponse<Vec<PrFile>>,
|
||||
PrFile,
|
||||
ApiResponse<PrStatus>,
|
||||
PrStatus,
|
||||
ApiResponse<PrMergeStrategy>,
|
||||
PrMergeStrategy,
|
||||
UpdateMergeStrategyParams,
|
||||
ApiResponse<PrLabel>,
|
||||
ApiResponse<Vec<PrLabel>>,
|
||||
PrLabel,
|
||||
CreatePrLabelParams,
|
||||
UpdatePrLabelParams,
|
||||
ApiResponse<PrLabelRelation>,
|
||||
ApiResponse<Vec<PrLabelRelation>>,
|
||||
PrLabelRelation,
|
||||
ApiResponse<PrAssignee>,
|
||||
ApiResponse<Vec<PrAssignee>>,
|
||||
PrAssignee,
|
||||
ApiResponse<PrReview>,
|
||||
ApiResponse<Vec<PrReview>>,
|
||||
PrReview,
|
||||
CreateReviewParams,
|
||||
ReviewCommentParams,
|
||||
SubmitReviewParams,
|
||||
DismissReviewParams,
|
||||
AddReplyParams,
|
||||
ApiResponse<PrReviewComment>,
|
||||
ApiResponse<Vec<PrReviewComment>>,
|
||||
PrReviewComment,
|
||||
ApiResponse<PrCheckRun>,
|
||||
ApiResponse<Vec<PrCheckRun>>,
|
||||
PrCheckRun,
|
||||
CreateCheckRunParams,
|
||||
UpdateCheckRunParams,
|
||||
ApiResponse<PrEvent>,
|
||||
ApiResponse<Vec<PrEvent>>,
|
||||
PrEvent,
|
||||
ApiResponse<PrReaction>,
|
||||
ApiResponse<Vec<PrReaction>>,
|
||||
PrReaction,
|
||||
CreateReactionParams,
|
||||
ApiResponse<PrSubscription>,
|
||||
ApiResponse<Vec<PrSubscription>>,
|
||||
PrSubscription,
|
||||
MutePrParams,
|
||||
// Wiki
|
||||
ApiResponse<WikiPage>,
|
||||
ApiResponse<Vec<WikiPage>>,
|
||||
WikiPage,
|
||||
CreateWikiPageParams,
|
||||
UpdateWikiPageParams,
|
||||
ApiResponse<WikiPageRevision>,
|
||||
ApiResponse<Vec<WikiPageRevision>>,
|
||||
ApiResponse<WikiCompareResult>,
|
||||
WikiCompareResult,
|
||||
WikiPageRevision,
|
||||
// Workspaces
|
||||
ApiResponse<Workspace>,
|
||||
ApiResponse<Vec<Workspace>>,
|
||||
|
||||
Reference in New Issue
Block a user