use axum::Json; use utoipa::openapi::security::{HttpAuthScheme, HttpBuilder, SecurityScheme}; use utoipa::{Modify, OpenApi}; struct BearerAuth; impl Modify for BearerAuth { fn modify(&self, openapi: &mut utoipa::openapi::OpenApi) { let components = openapi.components.get_or_insert_with(Default::default); components.add_security_scheme( "bearer", SecurityScheme::Http( HttpBuilder::new() .scheme(HttpAuthScheme::Bearer) .bearer_format("JWT") .build(), ), ); } } #[derive(OpenApi)] #[openapi( info(title = "SoftVisor Monitoring API", version = "0.1.0"), paths( crate::auth::login, crate::auth::refresh, crate::auth::logout, crate::auth::me, crate::users::list, crate::users::create, crate::users::get_one, crate::users::update, crate::users::reset_password, crate::settings::get_smtp, crate::settings::put_smtp, crate::settings::test_smtp, crate::settings::list_schedules, crate::settings::put_schedule, crate::jobs::list, crate::jobs::kinds, crate::jobs::get_one, crate::jobs::run, ), modifiers(&BearerAuth) )] pub struct ApiDoc; pub async fn spec() -> Json { Json(ApiDoc::openapi()) }