fix: manually specify params

This commit is contained in:
Zomatree
2025-11-18 14:57:34 +00:00
parent d198796fde
commit 7780aa69c0
76 changed files with 298 additions and 33 deletions

View File

@@ -3,14 +3,6 @@ use std::str::FromStr;
use revolt_result::Result; use revolt_result::Result;
#[cfg(feature = "rocket-impl")] #[cfg(feature = "rocket-impl")]
use rocket::request::FromParam; use rocket::request::FromParam;
#[cfg(feature = "utoipa")]
use utoipa::{
openapi::{
path::{Parameter, ParameterBuilder, ParameterIn},
Required,
},
IntoParams,
};
use crate::{ use crate::{
Bot, Channel, Database, Emoji, Invite, Member, Message, Server, ServerBan, User, Webhook, Bot, Channel, Database, Emoji, Invite, Member, Message, Server, ServerBan, User, Webhook,
@@ -115,15 +107,3 @@ impl<'r> FromParam<'r> for Reference<'r> {
Ok(Reference::from_unchecked(param)) Ok(Reference::from_unchecked(param))
} }
} }
#[cfg(feature = "utoipa")]
impl IntoParams for Reference<'_> {
fn into_params(parameter_in_provider: impl Fn() -> Option<ParameterIn>) -> Vec<Parameter> {
vec![ParameterBuilder::new()
.name("id")
.required(Required::True)
.description(Some("An ID".to_string()))
.parameter_in(parameter_in_provider().unwrap_or_default())
.build()]
}
}

View File

@@ -1,4 +1,13 @@
use utoipa::{Modify, openapi::{OpenApi, security::{ApiKey, ApiKeyValue, SecurityScheme}}}; use utoipa::{
openapi::{
schema::SchemaType,
security::{ApiKey, ApiKeyValue, SecurityScheme},
ObjectBuilder, OpenApi, RefOr, Schema, Type,
},
Modify, PartialSchema, ToSchema,
};
use crate::util::reference::Reference;
pub struct TokenSecurity; pub struct TokenSecurity;
@@ -19,3 +28,22 @@ impl Modify for TokenSecurity {
); );
} }
} }
impl ToSchema for Reference<'_> {
fn name() -> std::borrow::Cow<'static, str> {
std::borrow::Cow::Borrowed("Reference")
}
}
impl PartialSchema for Reference<'_> {
fn schema() -> RefOr<Schema> {
RefOr::T(
ObjectBuilder::new()
.description(Some("An id referencing a stoat model."))
.schema_type(SchemaType::Type(Type::String))
.examples(["01FD58YK5W7QRV5H3D64KTQYX3"])
.build()
.into(),
)
}
}

View File

@@ -13,6 +13,10 @@ use rocket_empty::EmptyResponse;
#[utoipa::path( #[utoipa::path(
tag = "Messaging", tag = "Messaging",
security(("Session-Token" = [])), security(("Session-Token" = [])),
params(
("target" = Reference, Path),
("message" = Reference, Path),
),
responses( responses(
(status = 204) (status = 204)
) )

View File

@@ -15,7 +15,10 @@ use rocket_empty::EmptyResponse;
#[utoipa::path( #[utoipa::path(
tag = "Channel Information", tag = "Channel Information",
security(("Session-Token" = []), ("Bot-Token" = [])), security(("Session-Token" = []), ("Bot-Token" = [])),
params(v0::OptionsChannelDelete), params(
("target" = Reference, Path),
v0::OptionsChannelDelete,
),
responses( responses(
(status = 204), (status = 204),
), ),

View File

@@ -15,6 +15,9 @@ use validator::Validate;
#[utoipa::path( #[utoipa::path(
tag = "Channel Information", tag = "Channel Information",
security(("Session-Token" = []), ("Bot-Token" = [])), security(("Session-Token" = []), ("Bot-Token" = [])),
params(
("target" = Reference, Path),
),
responses( responses(
(status = 200, body = v0::Channel), (status = 200, body = v0::Channel),
), ),

View File

@@ -14,6 +14,9 @@ use rocket::{serde::json::Json, State};
#[utoipa::path( #[utoipa::path(
tag = "Channel Information", tag = "Channel Information",
security(("Session-Token" = []), ("Bot-Token" = [])), security(("Session-Token" = []), ("Bot-Token" = [])),
params(
("target" = Reference, Path),
),
responses( responses(
(status = 200, body = v0::Channel), (status = 200, body = v0::Channel),
), ),

View File

@@ -14,6 +14,10 @@ use rocket_empty::EmptyResponse;
#[utoipa::path( #[utoipa::path(
tag = "Groups", tag = "Groups",
security(("Session-Token" = [])), security(("Session-Token" = [])),
params(
("group_id" = Reference, Path),
("member_id" = Reference, Path),
),
responses( responses(
(status = 204), (status = 204),
), ),

View File

@@ -15,6 +15,10 @@ use rocket_empty::EmptyResponse;
#[utoipa::path( #[utoipa::path(
tag = "Groups", tag = "Groups",
security(("Session-Token" = [])), security(("Session-Token" = [])),
params(
("target" = Reference, Path),
("member" = Reference, Path),
),
responses( responses(
(status = 204), (status = 204),
), ),

View File

@@ -16,6 +16,9 @@ use rocket::{serde::json::Json, State};
#[utoipa::path( #[utoipa::path(
tag = "Channel Invites", tag = "Channel Invites",
security(("Session-Token" = [])), security(("Session-Token" = [])),
params(
("target" = Reference, Path),
),
responses( responses(
(status = 200, body = v0::Invite), (status = 200, body = v0::Invite),
), ),

View File

@@ -15,6 +15,9 @@ use rocket::{serde::json::Json, State};
#[utoipa::path( #[utoipa::path(
tag = "Groups", tag = "Groups",
security(("Session-Token" = []), ("Bot-Token" = [])), security(("Session-Token" = []), ("Bot-Token" = [])),
params(
("target" = Reference, Path),
),
responses( responses(
(status = 200, body = Vec<v0::User>), (status = 200, body = Vec<v0::User>),
), ),

View File

@@ -20,6 +20,9 @@ use validator::Validate;
#[utoipa::path( #[utoipa::path(
tag = "Messaging", tag = "Messaging",
security(("Session-Token" = []), ("Bot-Token" = [])), security(("Session-Token" = []), ("Bot-Token" = [])),
params(
("target" = Reference, Path),
),
responses( responses(
(status = 204), (status = 204),
), ),

View File

@@ -15,6 +15,10 @@ use rocket_empty::EmptyResponse;
#[utoipa::path( #[utoipa::path(
tag = "Interactions", tag = "Interactions",
security(("Session-Token" = []), ("Bot-Token" = [])), security(("Session-Token" = []), ("Bot-Token" = [])),
params(
("target" = Reference, Path),
("msg" = Reference, Path),
),
responses( responses(
(status = 204), (status = 204),
), ),

View File

@@ -13,6 +13,10 @@ use rocket_empty::EmptyResponse;
#[utoipa::path( #[utoipa::path(
tag = "Messaging", tag = "Messaging",
security(("Session-Token" = []), ("Bot-Token" = [])), security(("Session-Token" = []), ("Bot-Token" = [])),
params(
("target" = Reference, Path),
("msg" = Reference, Path),
),
responses( responses(
(status = 204), (status = 204),
), ),

View File

@@ -16,6 +16,10 @@ use validator::Validate;
#[utoipa::path( #[utoipa::path(
tag = "Messaging", tag = "Messaging",
security(("Session-Token" = []), ("Bot-Token" = [])), security(("Session-Token" = []), ("Bot-Token" = [])),
params(
("target" = Reference, Path),
("msg" = Reference, Path),
),
responses( responses(
(status = 200, body = v0::Message), (status = 200, body = v0::Message),
), ),

View File

@@ -13,6 +13,10 @@ use rocket::{serde::json::Json, State};
#[utoipa::path( #[utoipa::path(
tag = "Messaging", tag = "Messaging",
security(("Session-Token" = []), ("Bot-Token" = [])), security(("Session-Token" = []), ("Bot-Token" = [])),
params(
("target" = Reference, Path),
("msg" = Reference, Path),
),
responses( responses(
(status = 200, body = v0::Message), (status = 200, body = v0::Message),
), ),

View File

@@ -14,6 +14,10 @@ use rocket_empty::EmptyResponse;
#[utoipa::path( #[utoipa::path(
tag = "Messaging", tag = "Messaging",
security(("Session-Token" = []), ("Bot-Token" = [])), security(("Session-Token" = []), ("Bot-Token" = [])),
params(
("target" = Reference, Path),
("msg" = Reference, Path),
),
responses( responses(
(status = 204), (status = 204),
), ),

View File

@@ -14,7 +14,10 @@ use validator::Validate;
#[utoipa::path( #[utoipa::path(
tag = "Messaging", tag = "Messaging",
security(("Session-Token" = []), ("Bot-Token" = [])), security(("Session-Token" = []), ("Bot-Token" = [])),
params(v0::OptionsQueryMessages), params(
("target" = Reference, Path),
v0::OptionsQueryMessages,
),
responses( responses(
(status = 200, body = v0::BulkMessageResponse), (status = 200, body = v0::BulkMessageResponse),
), ),

View File

@@ -13,6 +13,11 @@ use rocket_empty::EmptyResponse;
#[utoipa::path( #[utoipa::path(
tag = "Interactions", tag = "Interactions",
security(("Session-Token" = []), ("Bot-Token" = [])), security(("Session-Token" = []), ("Bot-Token" = [])),
params(
("target" = Reference, Path),
("msg" = Reference, Path),
("emoji" = Reference, Path),
),
responses( responses(
(status = 204), (status = 204),
), ),

View File

@@ -14,6 +14,9 @@ use validator::Validate;
#[utoipa::path( #[utoipa::path(
tag = "Messaging", tag = "Messaging",
security(("Session-Token" = [])), security(("Session-Token" = [])),
params(
("target" = Reference, Path),
),
responses( responses(
(status = 200, body = v0::BulkMessageResponse), (status = 200, body = v0::BulkMessageResponse),
), ),

View File

@@ -19,6 +19,9 @@ use validator::Validate;
tag = "Messaging", tag = "Messaging",
security(("Session-Token" = []), ("Bot-Token" = [])), security(("Session-Token" = []), ("Bot-Token" = [])),
params(IdempotencyKey), params(IdempotencyKey),
params(
("target" = Reference, Path),
),
responses( responses(
(status = 200, body = v0::Message), (status = 200, body = v0::Message),
), ),

View File

@@ -14,6 +14,10 @@ use rocket_empty::EmptyResponse;
#[utoipa::path( #[utoipa::path(
tag = "Messaging", tag = "Messaging",
security(("Session-Token" = []), ("Bot-Token" = [])), security(("Session-Token" = []), ("Bot-Token" = [])),
params(
("target" = Reference, Path),
("msg" = Reference, Path),
),
responses( responses(
(status = 204), (status = 204),
), ),

View File

@@ -16,7 +16,12 @@ use rocket_empty::EmptyResponse;
#[utoipa::path( #[utoipa::path(
tag = "Interactions", tag = "Interactions",
security(("Session-Token" = []), ("Bot-Token" = [])), security(("Session-Token" = []), ("Bot-Token" = [])),
params(v0::OptionsUnreact), params(
("target" = Reference, Path),
("msg" = Reference, Path),
("emoji" = Reference, Path),
v0::OptionsUnreact,
),
responses( responses(
(status = 204), (status = 204),
), ),

View File

@@ -14,6 +14,10 @@ use rocket::{serde::json::Json, State};
#[utoipa::path( #[utoipa::path(
tag = "Channel Permissions", tag = "Channel Permissions",
security(("Session-Token" = []), ("Bot-Token" = [])), security(("Session-Token" = []), ("Bot-Token" = [])),
params(
("target" = Reference, Path),
("role_id" = Reference, Path),
),
responses( responses(
(status = 200, body = v0::Channel), (status = 200, body = v0::Channel),
), ),

View File

@@ -14,6 +14,9 @@ use rocket::{serde::json::Json, State};
#[utoipa::path( #[utoipa::path(
tag = "Channel Permissions", tag = "Channel Permissions",
security(("Session-Token" = []), ("Bot-Token" = [])), security(("Session-Token" = []), ("Bot-Token" = [])),
params(
("target" = Reference, Path),
),
responses( responses(
(status = 200, body = v0::Channel), (status = 200, body = v0::Channel),
), ),

View File

@@ -19,6 +19,9 @@ use rocket::{serde::json::Json, State};
#[utoipa::path( #[utoipa::path(
tag = "Voice", tag = "Voice",
security(("Session-Token" = []), ("Bot-Token" = [])), security(("Session-Token" = []), ("Bot-Token" = [])),
params(
("target" = Reference, Path),
),
responses( responses(
(status = 200, body = v0::DataJoinCall), (status = 200, body = v0::DataJoinCall),
), ),

View File

@@ -17,6 +17,10 @@ use rocket_empty::EmptyResponse;
#[utoipa::path( #[utoipa::path(
tag = "Voice", tag = "Voice",
security(("Session-Token" = []), ("Bot-Token" = [])), security(("Session-Token" = []), ("Bot-Token" = [])),
params(
("target" = Reference, Path),
("target_user." = Reference, Path),
),
responses( responses(
(status = 204), (status = 204),
), ),

View File

@@ -17,6 +17,9 @@ use validator::Validate;
#[utoipa::path( #[utoipa::path(
tag = "Webhooks", tag = "Webhooks",
security(("Session-Token" = []), ("Bot-Token" = [])), security(("Session-Token" = []), ("Bot-Token" = [])),
params(
("target" = Reference, Path),
),
responses( responses(
(status = 200, body = v0::Webhook), (status = 200, body = v0::Webhook),
), ),

View File

@@ -13,6 +13,9 @@ use rocket::{serde::json::Json, State};
#[utoipa::path( #[utoipa::path(
tag = "Webhooks", tag = "Webhooks",
security(("Session-Token" = []), ("Bot-Token" = [])), security(("Session-Token" = []), ("Bot-Token" = [])),
params(
("target" = Reference, Path),
),
responses( responses(
(status = 200, body = Vec<Webhook>), (status = 200, body = Vec<Webhook>),
), ),

View File

@@ -1,5 +1,5 @@
use revolt_config::config; use revolt_config::config;
use revolt_database::{util::permissions::DatabasePermissionQuery, Database, Emoji, File, User}; use revolt_database::{Database, Emoji, File, User, util::{permissions::DatabasePermissionQuery, reference::Reference}};
use revolt_models::v0; use revolt_models::v0;
use revolt_permissions::{calculate_server_permissions, ChannelPermission}; use revolt_permissions::{calculate_server_permissions, ChannelPermission};
use revolt_result::{create_error, Result}; use revolt_result::{create_error, Result};
@@ -13,6 +13,9 @@ use rocket::{serde::json::Json, State};
#[utoipa::path( #[utoipa::path(
tag = "Emojis", tag = "Emojis",
security(("Session-Token" = []), ("Bot-Token" = [])), security(("Session-Token" = []), ("Bot-Token" = [])),
params(
("id" = Reference, Path),
),
responses( responses(
(status = 200, body = v0::Emoji), (status = 200, body = v0::Emoji),
), ),

View File

@@ -14,6 +14,9 @@ use rocket_empty::EmptyResponse;
#[utoipa::path( #[utoipa::path(
tag = "Emojis", tag = "Emojis",
security(("Session-Token" = []), ("Bot-Token" = [])), security(("Session-Token" = []), ("Bot-Token" = [])),
params(
("emoji_id" = Reference, Path),
),
responses( responses(
(status = 204), (status = 204),
), ),

View File

@@ -10,6 +10,9 @@ use rocket::{serde::json::Json, State};
#[utoipa::path( #[utoipa::path(
tag = "Emojis", tag = "Emojis",
security(("Session-Token" = []), ("Bot-Token" = [])), security(("Session-Token" = []), ("Bot-Token" = [])),
params(
("emoji_id" = Reference, Path),
),
responses( responses(
(status = 200, body = v0::Emoji), (status = 200, body = v0::Emoji),
), ),

View File

@@ -13,6 +13,9 @@ use rocket_empty::EmptyResponse;
#[utoipa::path( #[utoipa::path(
tag = "Invites", tag = "Invites",
security(("Session-Token" = []), ("Bot-Token" = [])), security(("Session-Token" = []), ("Bot-Token" = [])),
params(
("target" = Reference, Path),
),
responses( responses(
(status = 204), (status = 204),
), ),

View File

@@ -9,6 +9,9 @@ use rocket::{serde::json::Json, State};
#[utoipa::path( #[utoipa::path(
tag = "Invites", tag = "Invites",
security(("Session-Token" = []), ("Bot-Token" = [])), security(("Session-Token" = []), ("Bot-Token" = [])),
params(
("target" = Reference, Path),
),
responses( responses(
(status = 200, body = v0::InviteResponse), (status = 200, body = v0::InviteResponse),
), ),

View File

@@ -9,6 +9,9 @@ use rocket::{serde::json::Json, State};
#[utoipa::path( #[utoipa::path(
tag = "Invites", tag = "Invites",
security(("Session-Token" = [])), security(("Session-Token" = [])),
params(
("target" = Reference, Path),
),
responses( responses(
(status = 200, body = v0::InviteJoinResponse), (status = 200, body = v0::InviteJoinResponse),
), ),

View File

@@ -1,5 +1,5 @@
use revolt_config::Settings; use revolt_config::Settings;
use revolt_database::util::utoipa::TokenSecurity; use revolt_database::util::{utoipa::TokenSecurity, reference::Reference};
use revolt_result::ErrorAddon; use revolt_result::ErrorAddon;
pub use rocket::http::Status; pub use rocket::http::Status;
pub use rocket::response::Redirect; pub use rocket::response::Redirect;
@@ -235,6 +235,11 @@ pub fn mount(config: Settings, mut rocket: Rocket<Build>) -> Rocket<Build> {
), ),
), ),
components(
schemas(
Reference,
)
),
modifiers( modifiers(
&Extensions, &Extensions,

View File

@@ -16,6 +16,10 @@ use validator::Validate;
#[utoipa::path( #[utoipa::path(
tag = "Server Members", tag = "Server Members",
security(("Session-Token" = []), ("Bot-Token" = [])), security(("Session-Token" = []), ("Bot-Token" = [])),
params(
("server" = Reference, Path),
("target" = Reference, Path),
),
responses( responses(
(status = 200, body = v0::ServerBan), (status = 200, body = v0::ServerBan),
), ),

View File

@@ -15,6 +15,9 @@ use rocket::State;
#[utoipa::path( #[utoipa::path(
tag = "Server Members", tag = "Server Members",
security(("Session-Token" = []), ("Bot-Token" = [])), security(("Session-Token" = []), ("Bot-Token" = [])),
params(
("target" = Reference, Path),
),
responses( responses(
(status = 200, body = v0::BanListResult), (status = 200, body = v0::BanListResult),
), ),

View File

@@ -13,6 +13,10 @@ use rocket_empty::EmptyResponse;
#[utoipa::path( #[utoipa::path(
tag = "Server Members", tag = "Server Members",
security(("Session-Token" = []), ("Bot-Token" = [])), security(("Session-Token" = []), ("Bot-Token" = [])),
params(
("server" = Reference, Path),
("target" = Reference, Path),
),
responses( responses(
(status = 204), (status = 204),
), ),

View File

@@ -14,6 +14,9 @@ use validator::Validate;
#[utoipa::path( #[utoipa::path(
tag = "Server Information", tag = "Server Information",
security(("Session-Token" = []), ("Bot-Token" = [])), security(("Session-Token" = []), ("Bot-Token" = [])),
params(
("server" = Reference, Path),
),
responses( responses(
(status = 200, body = v0::Channel), (status = 200, body = v0::Channel),
), ),

View File

@@ -13,6 +13,9 @@ use rocket::{serde::json::Json, State};
#[utoipa::path( #[utoipa::path(
tag = "Server Customisation", tag = "Server Customisation",
security(("Session-Token" = []), ("Bot-Token" = [])), security(("Session-Token" = []), ("Bot-Token" = [])),
params(
("target" = Reference, Path),
),
responses( responses(
(status = 200, body = Vec<v0::Emoji>), (status = 200, body = Vec<v0::Emoji>),
), ),

View File

@@ -13,6 +13,9 @@ use rocket::{serde::json::Json, State};
#[utoipa::path( #[utoipa::path(
tag = "Server Members", tag = "Server Members",
security(("Session-Token" = []), ("Bot-Token" = [])), security(("Session-Token" = []), ("Bot-Token" = [])),
params(
("target" = Reference, Path),
),
responses( responses(
(status = 200, body = Vec<v0::Invite>), (status = 200, body = Vec<v0::Invite>),
), ),

View File

@@ -28,6 +28,10 @@ use validator::Validate;
#[utoipa::path( #[utoipa::path(
tag = "Server Members", tag = "Server Members",
security(("Session-Token" = []), ("Bot-Token" = [])), security(("Session-Token" = []), ("Bot-Token" = [])),
params(
("server" = Reference, Path),
("member" = Reference, Path),
),
responses( responses(
(status = 200, body = v0::Member), (status = 200, body = v0::Member),
), ),

View File

@@ -34,7 +34,10 @@ pub struct MemberQueryResponse {
#[utoipa::path( #[utoipa::path(
tag = "Server Members", tag = "Server Members",
security(("Session-Token" = []), ("Bot-Token" = [])), security(("Session-Token" = []), ("Bot-Token" = [])),
params(OptionsQueryMembers), params(
("target" = Reference, Path),
OptionsQueryMembers,
),
responses( responses(
(status = 200, body = MemberQueryResponse), (status = 200, body = MemberQueryResponse),
), ),

View File

@@ -14,6 +14,8 @@ use rocket::{serde::json::Json, State};
tag = "Server Members", tag = "Server Members",
security(("Session-Token" = []), ("Bot-Token" = [])), security(("Session-Token" = []), ("Bot-Token" = [])),
params( params(
("target" = Reference, Path),
("member" = Reference, Path),
( (
"roles" = bool, "roles" = bool,
Query, Query,

View File

@@ -13,7 +13,10 @@ use rocket::{serde::json::Json, State};
#[utoipa::path( #[utoipa::path(
tag = "Server Members", tag = "Server Members",
security(("Session-Token" = []), ("Bot-Token" = [])), security(("Session-Token" = []), ("Bot-Token" = [])),
params(v0::OptionsFetchAllMembers), params(
("target" = Reference, Path),
v0::OptionsFetchAllMembers
),
responses( responses(
(status = 200, body = v0::AllMemberResponse), (status = 200, body = v0::AllMemberResponse),
), ),

View File

@@ -14,6 +14,10 @@ use rocket_empty::EmptyResponse;
#[utoipa::path( #[utoipa::path(
tag = "Server Members", tag = "Server Members",
security(("Session-Token" = []), ("Bot-Token" = [])), security(("Session-Token" = []), ("Bot-Token" = [])),
params(
("target" = Reference, Path),
("member" = Reference, Path),
),
responses( responses(
(status = 204), (status = 204),
), ),

View File

@@ -14,6 +14,10 @@ use rocket::{serde::json::Json, State};
#[utoipa::path( #[utoipa::path(
tag = "Server Permissions", tag = "Server Permissions",
security(("Session-Token" = []), ("Bot-Token" = [])), security(("Session-Token" = []), ("Bot-Token" = [])),
params(
("target" = Reference, Path),
("role_id" = Reference, Path),
),
responses( responses(
(status = 200, body = v0::Server), (status = 200, body = v0::Server),
), ),

View File

@@ -14,6 +14,9 @@ use rocket::{serde::json::Json, State};
#[utoipa::path( #[utoipa::path(
tag = "Server Permissions", tag = "Server Permissions",
security(("Session-Token" = []), ("Bot-Token" = [])), security(("Session-Token" = []), ("Bot-Token" = [])),
params(
("target" = Reference, Path),
),
responses( responses(
(status = 200, body = v0::Server), (status = 200, body = v0::Server),
), ),

View File

@@ -15,6 +15,9 @@ use validator::Validate;
#[utoipa::path( #[utoipa::path(
tag = "Server Permissions", tag = "Server Permissions",
security(("Session-Token" = []), ("Bot-Token" = [])), security(("Session-Token" = []), ("Bot-Token" = [])),
params(
("target" = Reference, Path),
),
responses( responses(
(status = 200, body = v0::NewRoleResponse), (status = 200, body = v0::NewRoleResponse),
), ),

View File

@@ -14,6 +14,10 @@ use rocket_empty::EmptyResponse;
#[utoipa::path( #[utoipa::path(
tag = "Server Permissions", tag = "Server Permissions",
security(("Session-Token" = []), ("Bot-Token" = [])), security(("Session-Token" = []), ("Bot-Token" = [])),
params(
("target" = Reference, Path),
("role_id" = Reference, Path),
),
responses( responses(
(status = 204), (status = 204),
), ),

View File

@@ -15,6 +15,10 @@ use validator::Validate;
#[utoipa::path( #[utoipa::path(
tag = "Server Permissions", tag = "Server Permissions",
security(("Session-Token" = []), ("Bot-Token" = [])), security(("Session-Token" = []), ("Bot-Token" = [])),
params(
("target" = Reference, Path),
("role_id" = Reference, Path),
),
responses( responses(
(status = 200, body = v0::Role), (status = 200, body = v0::Role),
), ),

View File

@@ -12,6 +12,9 @@ use rocket::{serde::json::Json, State};
#[utoipa::path( #[utoipa::path(
tag = "Server Permissions", tag = "Server Permissions",
security(("Session-Token" = []), ("Bot-Token" = [])), security(("Session-Token" = []), ("Bot-Token" = [])),
params(
("target" = Reference, Path),
),
responses( responses(
(status = 200, body = v0::Server), (status = 200, body = v0::Server),
), ),

View File

@@ -13,6 +13,10 @@ use rocket::{serde::json::Json, State};
#[utoipa::path( #[utoipa::path(
tag = "Server Permissions", tag = "Server Permissions",
security(("Session-Token" = []), ("Bot-Token" = [])), security(("Session-Token" = []), ("Bot-Token" = [])),
params(
("target" = Reference, Path),
("role_id" = Reference, Path),
),
responses( responses(
(status = 200, body = v0::Role), (status = 200, body = v0::Role),
), ),

View File

@@ -13,6 +13,9 @@ use rocket_empty::EmptyResponse;
#[utoipa::path( #[utoipa::path(
tag = "Server Permissions", tag = "Server Permissions",
security(("Session-Token" = [])), security(("Session-Token" = [])),
params(
("target" = Reference, Path),
),
responses( responses(
(status = 204), (status = 204),
), ),

View File

@@ -18,7 +18,10 @@ use rocket_empty::EmptyResponse;
#[utoipa::path( #[utoipa::path(
tag = "Server Permissions", tag = "Server Permissions",
security(("Session-Token" = []), ("Bot-Token" = [])), security(("Session-Token" = []), ("Bot-Token" = [])),
params(v0::OptionsServerDelete), params(
("target" = Reference, Path),
v0::OptionsServerDelete,
),
responses( responses(
(status = 204), (status = 204),
), ),

View File

@@ -16,6 +16,9 @@ use validator::Validate;
#[utoipa::path( #[utoipa::path(
tag = "Server Information", tag = "Server Information",
security(("Session-Token" = []), ("Bot-Token" = [])), security(("Session-Token" = []), ("Bot-Token" = [])),
params(
("target" = Reference, Path),
),
responses( responses(
(status = 200, body = v0::Server), (status = 200, body = v0::Server),
), ),

View File

@@ -13,7 +13,10 @@ use rocket::{serde::json::Json, State};
#[utoipa::path( #[utoipa::path(
tag = "Server Information", tag = "Server Information",
security(("Session-Token" = []), ("Bot-Token" = [])), security(("Session-Token" = []), ("Bot-Token" = [])),
params(v0::OptionsFetchServer), params(
("target" = Reference, Path),
v0::OptionsFetchServer
),
responses( responses(
(status = 200, body = v0::Server), (status = 200, body = v0::Server),
), ),

View File

@@ -11,6 +11,9 @@ use rocket::State;
#[utoipa::path( #[utoipa::path(
tag = "Relationships", tag = "Relationships",
security(("Session-Token" = [])), security(("Session-Token" = [])),
params(
("target" = Reference, Path),
),
responses( responses(
(status = 200, body = v0::User), (status = 200, body = v0::User),
), ),

View File

@@ -11,6 +11,9 @@ use rocket::State;
#[utoipa::path( #[utoipa::path(
tag = "Relationships", tag = "Relationships",
security(("Session-Token" = [])), security(("Session-Token" = [])),
params(
("target" = Reference, Path),
),
responses( responses(
(status = 200, body = v0::User), (status = 200, body = v0::User),
), ),

View File

@@ -12,6 +12,9 @@ use validator::Validate;
#[utoipa::path( #[utoipa::path(
tag = "User Information", tag = "User Information",
security(("Session-Token" = []), ("Bot-Token" = [])), security(("Session-Token" = []), ("Bot-Token" = [])),
params(
("target" = Reference, Path),
),
responses( responses(
(status = 200, body = v0::User), (status = 200, body = v0::User),
), ),

View File

@@ -15,6 +15,9 @@ use rocket::{serde::json::Json, State};
#[utoipa::path( #[utoipa::path(
tag = "User Information", tag = "User Information",
security(("Session-Token" = []), ("Bot-Token" = [])), security(("Session-Token" = []), ("Bot-Token" = [])),
params(
("target" = Reference, Path),
),
responses( responses(
(status = 200, body = v0::UserProfile), (status = 200, body = v0::UserProfile),
), ),

View File

@@ -14,6 +14,9 @@ use rocket::{serde::json::Json, State};
#[utoipa::path( #[utoipa::path(
tag = "User Information", tag = "User Information",
security(("Session-Token" = []), ("Bot-Token" = [])), security(("Session-Token" = []), ("Bot-Token" = [])),
params(
("target" = Reference, Path)
),
responses( responses(
(status = 200, body = v0::User), (status = 200, body = v0::User),
), ),

View File

@@ -8,6 +8,9 @@ use rocket::{serde::json::Json, State};
/// Retrieve a user's flags. /// Retrieve a user's flags.
#[utoipa::path( #[utoipa::path(
tag = "User Information", tag = "User Information",
params(
("target" = Reference, Path),
),
responses( responses(
(status = 200, body = v0::FlagResponse), (status = 200, body = v0::FlagResponse),
), ),

View File

@@ -14,6 +14,9 @@ use rocket::State;
#[utoipa::path( #[utoipa::path(
tag = "User Information", tag = "User Information",
security(("Session-Token" = []), ("Bot-Token" = [])), security(("Session-Token" = []), ("Bot-Token" = [])),
params(
("target" = Reference, Path),
),
responses( responses(
(status = 200, body = v0::MutualResponse), (status = 200, body = v0::MutualResponse),
), ),

View File

@@ -1,3 +1,4 @@
use revolt_database::util::reference::Reference;
use rocket::http::ContentType; use rocket::http::ContentType;
use rocket::response::{self, Responder}; use rocket::response::{self, Responder};
use rocket::{Request, Response}; use rocket::{Request, Response};
@@ -22,6 +23,9 @@ impl<'r> Responder<'r, 'static> for CachedFile {
#[utoipa::path( #[utoipa::path(
tag = "User Information", tag = "User Information",
security(("Session-Token" = []), ("Bot-Token" = [])), security(("Session-Token" = []), ("Bot-Token" = [])),
params(
("target" = Reference, Path),
),
responses( responses(
( (
status = 200, status = 200,

View File

@@ -15,6 +15,9 @@ use rocket::{serde::json::Json, State};
#[utoipa::path( #[utoipa::path(
tag = "Direct Messaging", tag = "Direct Messaging",
security(("Session-Token" = []), ("Bot-Token" = [])), security(("Session-Token" = []), ("Bot-Token" = [])),
params(
("target" = Reference, Path),
),
responses( responses(
(status = 200, body = v0::Channel), (status = 200, body = v0::Channel),
), ),

View File

@@ -11,6 +11,9 @@ use rocket::State;
#[utoipa::path( #[utoipa::path(
tag = "Relationships", tag = "Relationships",
security(("Session-Token" = []), ("Bot-Token" = [])), security(("Session-Token" = []), ("Bot-Token" = [])),
params(
("target" = Reference, Path),
),
responses( responses(
(status = 200, body = v0::User), (status = 200, body = v0::User),
), ),

View File

@@ -11,6 +11,9 @@ use rocket::State;
#[utoipa::path( #[utoipa::path(
tag = "Relationships", tag = "Relationships",
security(("Session-Token" = []), ("Bot-Token" = [])), security(("Session-Token" = []), ("Bot-Token" = [])),
params(
("target" = Reference, Path),
),
responses( responses(
(status = 200, body = v0::User), (status = 200, body = v0::User),
), ),

View File

@@ -13,6 +13,9 @@ use rocket_empty::EmptyResponse;
#[utoipa::path( #[utoipa::path(
tag = "Webhooks", tag = "Webhooks",
security(("Session-Token" = []), ("Bot-Token" = [])), security(("Session-Token" = []), ("Bot-Token" = [])),
params(
("webhook_id" = Reference, Path),
),
responses( responses(
(status = 204), (status = 204),
), ),

View File

@@ -8,6 +8,10 @@ use rocket_empty::EmptyResponse;
/// Deletes a webhook with a token /// Deletes a webhook with a token
#[utoipa::path( #[utoipa::path(
tag = "Webhooks", tag = "Webhooks",
params(
("webhook_id" = Reference, Path),
("token" = String, Path),
),
responses( responses(
(status = 204), (status = 204),
), ),

View File

@@ -14,6 +14,9 @@ use validator::Validate;
#[utoipa::path( #[utoipa::path(
tag = "Webhooks", tag = "Webhooks",
security(("Session-Token" = []), ("Bot-Token" = [])), security(("Session-Token" = []), ("Bot-Token" = [])),
params(
("webhook_id" = Reference, Path),
),
responses( responses(
(status = 200, body = Webhook), (status = 200, body = Webhook),
), ),

View File

@@ -10,6 +10,10 @@ use rocket::{serde::json::Json, State};
/// Edits a webhook with a token /// Edits a webhook with a token
#[utoipa::path( #[utoipa::path(
tag = "Webhooks", tag = "Webhooks",
params(
("webhook_id" = Reference, Path),
("token" = String, Path),
),
responses( responses(
(status = 200, body = Webhook), (status = 200, body = Webhook),
), ),

View File

@@ -15,7 +15,11 @@ use validator::Validate;
/// Executes a webhook and sends a message /// Executes a webhook and sends a message
#[utoipa::path( #[utoipa::path(
tag = "Webhooks", tag = "Webhooks",
params(IdempotencyKey), params(
("webhook_id" = Reference, Path),
("token" = String, Path),
IdempotencyKey,
),
responses( responses(
(status = 200, body = v0::Message) (status = 200, body = v0::Message)
) )

View File

@@ -713,7 +713,16 @@ fn convert_event(data: &str, event_name: &str) -> Result<Event> {
/// Executes a webhook specific to github and sends a message containing the relevant info about the event /// Executes a webhook specific to github and sends a message containing the relevant info about the event
#[utoipa::path( #[utoipa::path(
tag = "Webhooks", tag = "Webhooks",
params(EventHeader) request_body(
content = String,
content_type = "application/json",
description = "Github event payload",
),
params(
("webhook_id" = Reference, Path),
("token" = String, Path),
EventHeader,
),
)] )]
#[post("/<webhook_id>/<token>/github", data = "<data>")] #[post("/<webhook_id>/<token>/github", data = "<data>")]
pub async fn webhook_execute_github( pub async fn webhook_execute_github(

View File

@@ -13,6 +13,9 @@ use rocket::{serde::json::Json, State};
#[utoipa::path( #[utoipa::path(
tag = "Webhooks", tag = "Webhooks",
security(("Session-Token" = []), ("Bot-Token" = [])), security(("Session-Token" = []), ("Bot-Token" = [])),
params(
("webhook_id" = Reference, Path),
),
responses( responses(
(status = 200, body = Webhook), (status = 200, body = Webhook),
), ),

View File

@@ -8,6 +8,10 @@ use rocket::{serde::json::Json, State};
/// Gets a webhook with a token /// Gets a webhook with a token
#[utoipa::path( #[utoipa::path(
tag = "Webhooks", tag = "Webhooks",
params(
("webhook_id" = Reference, Path),
("token" = String, Path),
),
responses( responses(
(status = 200, body = Webhook), (status = 200, body = Webhook),
), ),