From 43c475eabbdb79b2c2b210fed1f8812a0f334adf Mon Sep 17 00:00:00 2001 From: Paul Makles Date: Sat, 19 Mar 2022 14:24:19 +0000 Subject: [PATCH] chore(doc): add API information to spec --- src/routes/mod.rs | 45 ++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 44 insertions(+), 1 deletion(-) diff --git a/src/routes/mod.rs b/src/routes/mod.rs index 28733849..50ea8738 100644 --- a/src/routes/mod.rs +++ b/src/routes/mod.rs @@ -1,7 +1,7 @@ pub use rocket::http::Status; pub use rocket::response::Redirect; use rocket::{Build, Rocket}; -use rocket_okapi::settings::OpenApiSettings; +use rocket_okapi::{okapi::openapi3::OpenApi, settings::OpenApiSettings}; mod bots; mod channels; @@ -18,6 +18,7 @@ pub fn mount(mut rocket: Rocket) -> Rocket { mount_endpoints_and_merged_docs! { rocket, "/".to_owned(), settings, + "/" => (vec![], custom_openapi_spec()), "" => openapi_get_routes_spec![root::root, root::ping], "/bots" => bots::routes(), "/channels" => channels::routes(), @@ -33,3 +34,45 @@ pub fn mount(mut rocket: Rocket) -> Rocket { .mount("/push", push::routes()) .mount("/sync", sync::routes()) } + +fn custom_openapi_spec() -> OpenApi { + use rocket_okapi::okapi::openapi3::*; + + let mut extensions = schemars::Map::new(); + extensions.insert( + "x-logo".to_owned(), + json!({ + "url": "https://revolt.chat/header.png", + "altText": "Revolt Header" + }), + ); + + OpenApi { + openapi: OpenApi::default_version(), + info: Info { + title: "Revolt API".to_owned(), + description: Some("User-first privacy focused chat platform.".to_owned()), + terms_of_service: Some("https://revolt.chat/terms".to_owned()), + contact: Some(Contact { + name: Some("Revolt Support".to_owned()), + url: Some("https://revolt.chat".to_owned()), + email: Some("contact@revolt.chat".to_owned()), + ..Default::default() + }), + license: Some(License { + name: "AGPLv3".to_owned(), + url: Some("https://github.com/revoltchat/delta/blob/master/LICENSE".to_owned()), + ..Default::default() + }), + version: "0.5.3-rc.1".to_owned(), + ..Default::default() + }, + servers: vec![Server { + url: "https://api.revolt.chat".to_owned(), + description: Some("Revolt API".to_owned()), + ..Default::default() + }], + extensions, + ..Default::default() + } +}