fix: add OpenAPI documentation to API endpoints and integrate Swagger UI

Co-authored-by: aider (openai/andrew/openrouter/qwen/qwen3-coder) <aider@aider.chat>
This commit is contained in:
Andrew Phillips
2025-08-12 16:47:16 -03:00
parent 96bfc09c51
commit 90d4f3f10b
4 changed files with 197 additions and 1 deletions

View File

@@ -2,11 +2,45 @@ pub mod item;
pub mod status;
use axum::{
routing::get,
routing::{get, post, delete},
Router,
};
use crate::modes::server::common::AppState;
use utoipa::OpenApi;
use utoipa_swagger_ui::SwaggerUi;
#[derive(OpenApi)]
#[openapi(
paths(
status::handle_status,
item::handle_list_items,
item::handle_post_item,
item::handle_delete_item,
item::handle_get_item_latest,
item::handle_get_item_latest_meta,
item::handle_get_item_latest_content,
item::handle_get_item,
item::handle_get_item_meta,
item::handle_get_item_content,
),
components(
schemas(
crate::modes::server::common::ApiResponse<crate::modes::server::api::status::StatusInfo>,
crate::modes::server::common::ApiResponse<Vec<crate::modes::server::api::item::ItemInfo>>,
crate::modes::server::common::ApiResponse<crate::modes::server::api::item::ItemInfo>,
crate::modes::server::common::ApiResponse<HashMap<String, String>>,
crate::modes::server::common::ApiResponse<()>,
crate::modes::server::api::status::StatusInfo,
crate::modes::server::api::item::ItemInfo,
)
),
tags(
(name = "status", description = "Status API endpoints"),
(name = "items", description = "Item management API endpoints")
)
)]
struct ApiDoc;
pub fn add_routes(router: Router<AppState>) -> Router<AppState> {
router
@@ -22,3 +56,8 @@ pub fn add_routes(router: Router<AppState>) -> Router<AppState> {
.route("/api/item/:id/meta", get(item::handle_get_item_meta))
.route("/api/item/:id/content", get(item::handle_get_item_content))
}
pub fn add_docs_routes(router: Router<AppState>) -> Router<AppState> {
router
.merge(SwaggerUi::new("/swagger-ui").url("/api-docs/openapi.json", ApiDoc::openapi()))
}