1use utoipa::{
4 Modify, OpenApi,
5 openapi::security::{HttpAuthScheme, HttpBuilder, SecurityScheme},
6};
7
8use super::handlers;
9
10#[derive(OpenApi)]
12#[openapi(
13 paths(
14 handlers::health,
15 handlers::get_sessions,
16 handlers::get_configurations,
17 handlers::get_nodes,
18 handlers::get_groups,
19 handlers::get_images,
20 handlers::get_templates,
21 handlers::get_boot_parameters,
22 handlers::get_kernel_parameters,
23 handlers::get_redfish_endpoints,
24 handlers::get_groups_nodes,
25 handlers::get_groups_hardware,
26 handlers::get_clusters_deprecated,
27 handlers::get_hardware_clusters_deprecated,
28 handlers::get_hardware_nodes_list,
29 handlers::delete_node,
30 handlers::add_node,
31 handlers::delete_group,
32 handlers::create_group,
33 handlers::add_nodes_to_group,
34 handlers::delete_group_members,
35 handlers::delete_boot_parameters,
36 handlers::add_boot_parameters,
37 handlers::update_boot_parameters,
38 handlers::delete_redfish_endpoint,
39 handlers::add_redfish_endpoint,
40 handlers::update_redfish_endpoint,
41 handlers::delete_session,
42 handlers::delete_images,
43 handlers::delete_configurations,
44 handlers::create_session,
45 handlers::apply_boot_config,
46 handlers::apply_kernel_parameters,
47 handlers::add_kernel_parameters,
48 handlers::delete_kernel_parameters,
49 handlers::migrate_nodes,
50 handlers::migrate_backup,
51 handlers::migrate_restore,
52 handlers::create_ephemeral_env,
53 handlers::post_power,
54 handlers::post_template_session,
55 handlers::get_session_logs,
56 handlers::post_sat_file,
57 handlers::add_hw_component,
58 handlers::delete_hw_component,
59 handlers::apply_hw_configuration,
60 handlers::console_node_ws,
61 handlers::console_session_ws,
62 handlers::auth_token,
63 handlers::auth_validate,
64 handlers::get_available_groups,
65 handlers::get_all_groups,
66 ),
67 components(schemas(
68 handlers::ErrorResponse,
69 handlers::ImageEntry,
70 handlers::AddNodeRequest,
71 handlers::AddNodesToGroupRequest,
72 handlers::AddNodesToGroupResponse,
73 handlers::DeleteBootParametersRequest,
74 handlers::CreateSessionRequest,
75 handlers::ApplyBootConfigRequest,
76 handlers::KernelParamOp,
77 handlers::ApplyKernelParametersRequest,
78 handlers::MigrateNodesRequest,
79 handlers::MigrateBackupRequest,
80 handlers::MigrateRestoreRequest,
81 handlers::CreateEphemeralEnvRequest,
82 handlers::DeleteGroupMembersRequest,
83 handlers::PowerAction,
84 handlers::PowerTargetType,
85 handlers::PowerRequest,
86 handlers::BosOperation,
87 handlers::PostTemplateSessionRequest,
88 handlers::PostSatFileRequest,
89 handlers::PostSatFileResponse,
90 handlers::AddKernelParametersRequest,
91 handlers::DeleteKernelParametersRequest,
92 handlers::AddHwComponentRequest,
93 handlers::DeleteHwComponentRequest,
94 handlers::HwClusterMode,
95 handlers::ApplyHwConfigurationRequest,
96 manta_shared::shared::auth::AuthTokenRequest,
97 manta_shared::shared::auth::AuthTokenResponse,
98 manta_shared::shared::auth::ValidateTokenRequest,
99 crate::service::boot_parameters::UpdateBootParametersParams,
100 crate::service::redfish_endpoints::UpdateRedfishEndpointParams,
101 manta_backend_dispatcher::types::Group,
102 manta_backend_dispatcher::types::Member,
103 manta_backend_dispatcher::types::XnameId,
104 manta_backend_dispatcher::types::bss::BootParameters,
105 )),
106 modifiers(&SecurityAddon),
107 info(
108 title = "Manta API",
109 version = env!("CARGO_PKG_VERSION"),
110 description = "REST API for managing CSM/OpenCHAMI HPC clusters via manta.",
111 )
112)]
113pub struct ApiDoc;
114
115struct SecurityAddon;
116
117impl Modify for SecurityAddon {
118 fn modify(&self, openapi: &mut utoipa::openapi::OpenApi) {
119 if let Some(components) = openapi.components.as_mut() {
120 components.add_security_scheme(
121 "bearerAuth",
122 SecurityScheme::Http(
123 HttpBuilder::new()
124 .scheme(HttpAuthScheme::Bearer)
125 .bearer_format("JWT")
126 .build(),
127 ),
128 );
129 }
130 openapi.servers = Some(vec![
133 utoipa::openapi::ServerBuilder::new()
134 .url("/api/v1")
135 .description(Some("manta API v1"))
136 .build(),
137 ]);
138 }
139}