headless_lms_server/
openapi.rs

1use utoipa::OpenApi;
2
3#[derive(OpenApi)]
4#[openapi(
5    nest((path = "/api/v0/cms", api = crate::controllers::cms::CmsRoutesApiDoc)),
6    info(
7        title = "CMS API",
8        version = "0.1.0"
9    )
10)]
11pub struct CmsApiDoc;
12
13#[derive(OpenApi)]
14#[openapi(
15    nest(
16        (
17            path = "/api/v0/main-frontend",
18            api = crate::controllers::main_frontend::MainFrontendRoutesApiDoc
19        ),
20        (path = "/api/v0/files", api = crate::controllers::files::FilesApiDoc)
21    ),
22    tags(
23        (name = "glossary", description = "Glossary endpoints used by main-frontend")
24    ),
25    info(
26        title = "Main Frontend API",
27        version = "0.1.0"
28    )
29)]
30pub struct MainFrontendApiDoc;
31
32#[derive(OpenApi)]
33#[openapi(
34    nest(
35        (
36            path = "/api/v0/course-material",
37            api = crate::controllers::course_material::CourseMaterialRoutesApiDoc
38        )
39    ),
40    components(schemas(
41        headless_lms_models::teacher_grading_decisions::TeacherDecisionType
42    )),
43    info(
44        title = "Course Material API",
45        version = "0.1.0"
46    )
47)]
48pub struct CourseMaterialApiDoc;
49
50#[derive(OpenApi)]
51#[openapi(
52    nest((path = "/api/v0/auth", api = crate::controllers::auth::AuthRoutesApiDoc)),
53    info(
54        title = "Auth API",
55        version = "0.1.0"
56    )
57)]
58pub struct AuthApiDoc;