From fce04901963856964ca99ae30dedd7ff56f03d96 Mon Sep 17 00:00:00 2001 From: perf3ct Date: Wed, 25 Jun 2025 23:47:27 +0000 Subject: [PATCH] feat(swagger): add missing endpoints to swagger-ui --- src/lib.rs | 9 +++++++++ src/swagger.rs | 33 ++++++++++++++++++++++++++++++--- 2 files changed, 39 insertions(+), 3 deletions(-) diff --git a/src/lib.rs b/src/lib.rs index 4db6ed4..a88c8a1 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -35,6 +35,7 @@ mod tests; pub mod test_utils; use axum::{http::StatusCode, Json}; +use utoipa; use config::Config; use db::Database; @@ -48,6 +49,14 @@ pub struct AppState { } /// Health check endpoint for monitoring +#[utoipa::path( + get, + path = "/api/health", + tag = "health", + responses( + (status = 200, description = "Service is healthy", body = serde_json::Value), + ) +)] pub async fn health_check() -> Result, StatusCode> { Ok(Json(serde_json::json!({"status": "ok"}))) } diff --git a/src/swagger.rs b/src/swagger.rs index d132f98..27ac635 100644 --- a/src/swagger.rs +++ b/src/swagger.rs @@ -15,8 +15,14 @@ use crate::{ WebDAVCrawlEstimate, WebDAVTestConnection, WebDAVConnectionResult, WebDAVSyncStatus, ProcessedImage, CreateProcessedImage, IgnoredFileResponse, IgnoredFilesQuery }, - routes::metrics::{ - SystemMetrics, DatabaseMetrics, OcrMetrics, DocumentMetrics, UserMetrics, GeneralSystemMetrics + routes::{ + metrics::{ + SystemMetrics, DatabaseMetrics, OcrMetrics, DocumentMetrics, UserMetrics, GeneralSystemMetrics + }, + labels::{ + Label, CreateLabel, UpdateLabel, LabelAssignment, LabelQuery, BulkUpdateRequest as LabelBulkUpdateRequest + }, + documents::BulkDeleteRequest }, AppState, }; @@ -32,6 +38,8 @@ use crate::{ crate::routes::documents::upload_document, crate::routes::documents::list_documents, crate::routes::documents::get_document_by_id, + crate::routes::documents::delete_document, + crate::routes::documents::bulk_delete_documents, crate::routes::documents::download_document, crate::routes::documents::view_document, crate::routes::documents::get_document_thumbnail, @@ -40,6 +48,17 @@ use crate::{ crate::routes::documents::retry_ocr, crate::routes::documents::get_failed_ocr_documents, crate::routes::documents::get_user_duplicates, + // Labels endpoints + crate::routes::labels::get_labels, + crate::routes::labels::create_label, + crate::routes::labels::get_label, + crate::routes::labels::update_label, + crate::routes::labels::delete_label, + crate::routes::labels::get_document_labels, + crate::routes::labels::update_document_labels, + crate::routes::labels::add_document_label, + crate::routes::labels::remove_document_label, + crate::routes::labels::bulk_update_document_labels, // Search endpoints crate::routes::search::search_documents, crate::routes::search::enhanced_search_documents, @@ -91,6 +110,8 @@ use crate::{ crate::routes::ignored_files::delete_ignored_file, crate::routes::ignored_files::bulk_delete_ignored_files, crate::routes::ignored_files::get_ignored_files_stats, + // Health check + crate::health_check, ), components( schemas( @@ -105,12 +126,17 @@ use crate::{ crate::routes::ignored_files::BulkDeleteIgnoredFilesRequest, crate::routes::ignored_files::IgnoredFilesStats, crate::routes::ignored_files::SourceTypeCount, - SystemMetrics, DatabaseMetrics, OcrMetrics, DocumentMetrics, UserMetrics, GeneralSystemMetrics + SystemMetrics, DatabaseMetrics, OcrMetrics, DocumentMetrics, UserMetrics, GeneralSystemMetrics, + // Labels schemas + Label, CreateLabel, UpdateLabel, LabelAssignment, LabelQuery, LabelBulkUpdateRequest, + // Document schemas + BulkDeleteRequest ) ), tags( (name = "auth", description = "Authentication endpoints"), (name = "documents", description = "Document management endpoints"), + (name = "labels", description = "Document labeling and categorization endpoints"), (name = "search", description = "Document search endpoints"), (name = "settings", description = "User settings endpoints"), (name = "users", description = "User management endpoints"), @@ -120,6 +146,7 @@ use crate::{ (name = "sources", description = "Document source management endpoints"), (name = "webdav", description = "WebDAV synchronization endpoints"), (name = "ignored_files", description = "Ignored files management endpoints"), + (name = "health", description = "Health check endpoint"), ), modifiers(&SecurityAddon), info(