diff --git a/src/routes/mod.rs b/src/routes/mod.rs index 528ff951..fc8aad7b 100644 --- a/src/routes/mod.rs +++ b/src/routes/mod.rs @@ -47,13 +47,77 @@ fn custom_openapi_spec() -> OpenApi { }), ); + extensions.insert( + "x-tagGroups".to_owned(), + json!([ + { + "name": "Revolt", + "tags": [ + "Core" + ] + }, + { + "name": "Users", + "tags": [ + "User Information", + "Direct Messaging", + "Relationships" + ] + }, + { + "name": "Bots", + "tags": [ + "Bots" + ] + }, + { + "name": "Channels", + "tags": [ + "Channel Information", + "Channel Invites", + "Channel Permissions", + "Messaging", + "Groups", + "Voice" + ] + }, + { + "name": "Servers", + "tags": [ + "Server Information", + "Server Members", + "Server Permissions" + ] + }, + { + "name": "Invites", + "tags": [ + "Invites" + ] + }, + { + "name": "Authentication", + "tags": [ + "Account", + "Session", + "Onboarding" + ] + }, + { + "name": "Miscellaneous", + "tags": [ + "Sync", + "Web Push" + ] + } + ]), + ); + OpenApi { openapi: OpenApi::default_version(), info: Info { title: "Revolt API".to_owned(), - description: Some( - "User-first privacy focused chat platform.\n\n".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()), @@ -69,28 +133,135 @@ fn custom_openapi_spec() -> OpenApi { 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() - }, Server { - url: "http://local.revolt.chat:8000".to_owned(), - description: Some("Local Revolt Environment".to_owned()), - ..Default::default() - }], + servers: vec![ + Server { + url: "https://api.revolt.chat".to_owned(), + description: Some("Revolt API".to_owned()), + ..Default::default() + }, + Server { + url: "http://local.revolt.chat:8000".to_owned(), + description: Some("Local Revolt Environment".to_owned()), + ..Default::default() + }, + ], external_docs: Some(ExternalDocs { url: "https://developers.revolt.chat".to_owned(), description: Some("Revolt Developer Documentation".to_owned()), ..Default::default() }), extensions, - /*tags: vec![ + tags: vec![ Tag { - name: "aaa".to_owned(), - description: Some("aaa".to_owned()), + name: "Core".to_owned(), + description: Some( + "Use in your applications to determine information about the Revolt node" + .to_owned(), + ), ..Default::default() - } - ],*/ + }, + Tag { + name: "User Information".to_owned(), + description: Some("Query and fetch users on Revolt".to_owned()), + ..Default::default() + }, + Tag { + name: "Direct Messaging".to_owned(), + description: Some("Direct message other users on Revolt".to_owned()), + ..Default::default() + }, + Tag { + name: "Relationships".to_owned(), + description: Some( + "Manage your friendships and block list on the platform".to_owned(), + ), + ..Default::default() + }, + Tag { + name: "Bots".to_owned(), + description: Some("Create and edit bots".to_owned()), + ..Default::default() + }, + Tag { + name: "Channel Information".to_owned(), + description: Some("Query and fetch channels on Revolt".to_owned()), + ..Default::default() + }, + Tag { + name: "Channel Invites".to_owned(), + description: Some("Create and manage invites for channels".to_owned()), + ..Default::default() + }, + Tag { + name: "Channel Permissions".to_owned(), + description: Some("Manage permissions for channels".to_owned()), + ..Default::default() + }, + Tag { + name: "Messaging".to_owned(), + description: Some("Send and manipulate messages".to_owned()), + ..Default::default() + }, + Tag { + name: "Groups".to_owned(), + description: Some("Create, invite users and manipulate groups".to_owned()), + ..Default::default() + }, + Tag { + name: "Voice".to_owned(), + description: Some("Join and talk with other users".to_owned()), + ..Default::default() + }, + Tag { + name: "Server Information".to_owned(), + description: Some("Query and fetch servers on Revolt".to_owned()), + ..Default::default() + }, + Tag { + name: "Server Members".to_owned(), + description: Some("Find and edit server members".to_owned()), + ..Default::default() + }, + Tag { + name: "Server Permissions".to_owned(), + description: Some("Manage permissions for servers".to_owned()), + ..Default::default() + }, + Tag { + name: "Invites".to_owned(), + description: Some("View, join and delete invites".to_owned()), + ..Default::default() + }, + Tag { + name: "Account".to_owned(), + description: Some("Manage your account".to_owned()), + ..Default::default() + }, + Tag { + name: "Session".to_owned(), + description: Some("Create and manage sessions".to_owned()), + ..Default::default() + }, + Tag { + name: "Onboarding".to_owned(), + description: Some( + "After signing up to Revolt, users must pick a unique username".to_owned(), + ), + ..Default::default() + }, + Tag { + name: "Sync".to_owned(), + description: Some("Upload and retrieve any JSON data between clients".to_owned()), + ..Default::default() + }, + Tag { + name: "Web Push".to_owned(), + description: Some( + "Subscribe to and receive Revolt push notifications while offline".to_owned(), + ), + ..Default::default() + }, + ], ..Default::default() } }