Skip to main content

docbox_http/
docs.rs

1use utoipa::OpenApi;
2
3use crate::{
4    models::document_box::DocumentBoxScope,
5    routes::{
6        admin::{self, ADMIN_TAG},
7        document_box::{self, DOCUMENT_BOX_TAG},
8        file::{self, FILE_TAG},
9        folder::{self, FOLDER_TAG},
10        link::{self, LINK_TAG},
11        task::{self, TASK_TAG},
12        utils::{self, UTILS_TAG},
13    },
14};
15
16#[derive(OpenApi)]
17#[openapi(
18    info(
19        title = "Docbox API",
20        description = "Docbox HTTP API",
21        license(
22            name = "MIT",
23            url = "https://raw.githubusercontent.com/docbox-nz/docbox/refs/heads/main/LICENSE.md",
24        )
25    ),
26    tags(
27        (name = DOCUMENT_BOX_TAG, description = "Document box related APIs"),
28        (name = FILE_TAG, description = "File related APIs"),
29        (name = LINK_TAG, description = "Link related APIs"),
30        (name = FOLDER_TAG, description = "Folder related APIs"),
31        (name = TASK_TAG, description = "Background task related APIs"),
32        (name = ADMIN_TAG, description = "Administrator and higher privilege APIs"),
33        (name = UTILS_TAG, description = "Utility APIs")
34    ),
35    components(
36        schemas(DocumentBoxScope)
37    ),
38    paths(
39        // Admin routes
40        admin::tenant_stats,
41        admin::tenant_boxes,
42        admin::search_tenant,
43        admin::reprocess_octet_stream_files_tenant,
44        admin::rebuild_search_index_tenant,
45        admin::flush_database_pool_cache,
46        admin::flush_tenant_cache,
47        admin::http_purge_expired_presigned_tasks,
48        // Document box routes
49        document_box::create,
50        document_box::get,
51        document_box::stats,
52        document_box::delete,
53        document_box::search,
54        // File routes
55        file::upload,
56        file::create_presigned,
57        file::get_presigned,
58        file::get,
59        file::get_children,
60        file::get_edit_history,
61        file::update,
62        file::get_raw,
63        file::get_raw_presigned,
64        file::get_raw_named,
65        file::delete,
66        file::get_generated,
67        file::get_generated_raw,
68        file::get_generated_raw_presigned,
69        file::get_generated_raw_named,
70        file::search,
71        // Folder routes
72        folder::create,
73        folder::get,
74        folder::get_edit_history,
75        folder::update,
76        folder::delete,
77        // Link routes
78        link::create,
79        link::get,
80        link::get_metadata,
81        link::get_favicon,
82        link::get_image,
83        link::get_edit_history,
84        link::update,
85        link::delete,
86        // Task routes
87        task::get,
88        // Utils routes
89        utils::get_options,
90        utils::health,
91        utils::server_details,
92    )
93)]
94#[allow(unused)]
95pub struct ApiDoc;
96
97#[test]
98#[ignore = "generates api documentation"]
99fn generate_api_docs() {
100    let docs = ApiDoc::openapi().to_pretty_json().unwrap();
101    std::fs::write("docbox.json", docs).unwrap();
102}