mod error; mod success; pub use error::ErrorResponse; use serde_json::json; pub use success::SuccessResponse; use std::collections::BTreeMap; use utoipa::{ IntoResponses, ToSchema, openapi::{ ContentBuilder, RefOr, ResponseBuilder, ResponsesBuilder, example::ExampleBuilder, response::Response, schema::RefBuilder, }, }; pub type ApiResult = Result, ErrorResponse>; pub struct GlobalResponses; impl IntoResponses for GlobalResponses { fn responses() -> BTreeMap> { ResponsesBuilder::new() .response( "400", ResponseBuilder::new() .content( "application/json", ContentBuilder::new() .schema(Some( RefBuilder::new() .ref_location_from_schema_name(ErrorResponse::name()), )) .examples_from_iter([( "Fail", ExampleBuilder::new().value(Some(json!(ErrorResponse::fail( "SomeFailKind", "some fail message" )))), )]) .build(), ) .description("General response for invalid request"), ) .response( "500", ResponseBuilder::new() .content( "application/json", ContentBuilder::new() .schema(Some( RefBuilder::new() .ref_location_from_schema_name(ErrorResponse::name()), )) .examples_from_iter([( "Error", ExampleBuilder::new().value(Some(json!(ErrorResponse::error( "SomeErrorKind", "some error message" )))), )]) .build(), ) .description("General response when a server error occurs"), ) .build() .into() } }