use super::channel::RESTPutAPIChannelPermissionJSONBody;
use super::common::Locale;
use crate::models::payloads::{
APIBan, APIChannel, APIExtendedInvite, APIGuild, APIGuildIntegration, APIGuildMember,
APIGuildMembershipScreening, APIGuildOnboarding, APIGuildOnboardingPromptOption,
APIGuildPreview, APIGuildWelcomeScreen, APIGuildWidget, APIGuildWidgetSettings, APIRole,
APIRoleColors, APIThreadList, APIVoiceRegion, GuildDefaultMessageNotifications,
GuildExplicitContentFilter, GuildFeature, GuildMFALevel, GuildSystemChannelFlags,
GuildVerificationLevel, GuildWidgetStyle,
};
use serde::{Deserialize, Serialize};
use serde_json::Value;
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq, Hash)]
#[serde(untagged)]
pub enum NumberOrString {
Number(u64),
String(String),
}
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq, Hash)]
#[serde(untagged)]
pub enum SnowflakeOrNumber {
String(String),
Number(u64),
}
pub type RESTAPIGuildChannelResolvable = APIChannel;
#[deprecated(note = "Use RESTAPIGuildChannelResolvable instead")]
pub type APIGuildChannelResolvable = RESTAPIGuildChannelResolvable;
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq)]
pub struct RESTAPIGuildCreateOverwrite {
pub id: NumberOrString,
#[serde(flatten)]
pub perms: RESTPutAPIChannelPermissionJSONBody,
}
#[deprecated(note = "Use RESTAPIGuildCreateOverwrite instead")]
pub type APIGuildCreateOverwrite = RESTAPIGuildCreateOverwrite;
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq)]
pub struct RESTAPIGuildCreatePartialChannel {
pub name: String,
pub id: Option<NumberOrString>,
pub parent_id: Option<Option<NumberOrString>>,
pub permission_overwrites: Option<Vec<RESTAPIGuildCreateOverwrite>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub available_tags: Option<Vec<APIGuildOnboardingPromptOption>>, #[serde(skip_serializing_if = "Option::is_none")]
pub bitrate: Option<u32>,
#[serde(skip_serializing_if = "Option::is_none")]
pub default_auto_archive_duration: Option<u16>,
#[serde(skip_serializing_if = "Option::is_none")]
pub default_forum_layout: Option<u8>,
#[serde(skip_serializing_if = "Option::is_none")]
pub default_reaction_emoji: Option<Value>,
#[serde(skip_serializing_if = "Option::is_none")]
pub default_sort_order: Option<u8>,
#[serde(skip_serializing_if = "Option::is_none")]
pub default_thread_rate_limit_per_user: Option<u64>,
#[serde(skip_serializing_if = "Option::is_none")]
pub flags: Option<u64>,
#[serde(skip_serializing_if = "Option::is_none")]
pub nsfw: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
pub position: Option<i32>,
#[serde(skip_serializing_if = "Option::is_none")]
pub rate_limit_per_user: Option<u64>,
#[serde(skip_serializing_if = "Option::is_none")]
pub rtc_region: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub topic: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub r#type: Option<u8>,
#[serde(skip_serializing_if = "Option::is_none")]
pub user_limit: Option<u16>,
#[serde(skip_serializing_if = "Option::is_none")]
pub video_quality_mode: Option<u8>,
}
#[deprecated(note = "Use RESTAPIGuildCreatePartialChannel instead")]
pub type APIGuildCreatePartialChannel = RESTAPIGuildCreatePartialChannel;
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq)]
pub struct RESTAPIGuildCreateRole {
pub id: NumberOrString,
#[serde(skip_serializing_if = "Option::is_none")]
pub name: Option<Option<String>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub permissions: Option<Option<String>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub color: Option<Option<u32>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub colors: Option<APIRoleColors>,
#[serde(skip_serializing_if = "Option::is_none")]
pub hoist: Option<Option<bool>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub icon: Option<Option<String>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub unicode_emoji: Option<Option<String>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub mentionable: Option<Option<bool>>,
}
#[deprecated(note = "Use RESTAPIGuildCreateRole instead")]
pub type APIGuildCreateRole = RESTAPIGuildCreateRole;
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq)]
pub struct RESTPostAPIGuildsJSONBody {
pub name: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub region: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub icon: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub verification_level: Option<GuildVerificationLevel>,
#[serde(skip_serializing_if = "Option::is_none")]
pub default_message_notifications: Option<GuildDefaultMessageNotifications>,
#[serde(skip_serializing_if = "Option::is_none")]
pub explicit_content_filter: Option<GuildExplicitContentFilter>,
#[serde(skip_serializing_if = "Option::is_none")]
pub roles: Option<Vec<RESTAPIGuildCreateRole>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub channels: Option<Vec<RESTAPIGuildCreatePartialChannel>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub afk_channel_id: Option<Option<SnowflakeOrNumber>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub afk_timeout: Option<u32>,
#[serde(skip_serializing_if = "Option::is_none")]
pub system_channel_id: Option<Option<SnowflakeOrNumber>>,
#[serde(with = "crate::utils::serde::flags_numeric")]
pub system_channel_flags: GuildSystemChannelFlags,
#[serde(skip_serializing_if = "Option::is_none")]
pub premium_progress_bar_enabled: Option<bool>,
}
pub type RESTPostAPIGuildsResult = APIGuild;
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq)]
pub struct RESTPostAPIGuildsMFAJSONBody {
pub level: GuildMFALevel,
}
pub type RESTPostAPIGuildsMFAResult = RESTPostAPIGuildsMFAJSONBody;
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Default)]
pub struct RESTGetAPIGuildQuery {
#[serde(skip_serializing_if = "Option::is_none")]
pub with_counts: Option<bool>,
}
pub type RESTGetAPIGuildResult = APIGuild;
pub type RESTGetAPIGuildPreviewResult = APIGuildPreview;
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Default)]
pub struct RESTPatchAPIGuildJSONBody {
#[serde(skip_serializing_if = "Option::is_none")]
pub name: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub region: Option<Option<String>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub verification_level: Option<Option<GuildVerificationLevel>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub default_message_notifications: Option<Option<GuildDefaultMessageNotifications>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub explicit_content_filter: Option<Option<GuildExplicitContentFilter>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub afk_channel_id: Option<Option<String>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub afk_timeout: Option<u32>,
#[serde(skip_serializing_if = "Option::is_none")]
pub icon: Option<Option<String>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub owner_id: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub splash: Option<Option<String>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub discovery_splash: Option<Option<String>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub banner: Option<Option<String>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub system_channel_id: Option<Option<String>>,
#[serde(with = "crate::utils::serde::flags_numeric")]
pub system_channel_flags: GuildSystemChannelFlags,
#[serde(skip_serializing_if = "Option::is_none")]
pub rules_channel_id: Option<Option<String>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub public_updates_channel_id: Option<Option<String>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub preferred_locale: Option<Option<Locale>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub features: Option<Vec<GuildFeature>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub description: Option<Option<String>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub premium_progress_bar_enabled: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
pub safety_alerts_channel_id: Option<Option<String>>,
}
pub type RESTPatchAPIGuildResult = APIGuild;
pub type RESTDeleteAPIGuildResult = ();
pub type RESTGetAPIGuildChannelsResult = Vec<APIChannel>;
pub type RESTPostAPIGuildChannelJSONBody = RESTAPIGuildCreatePartialChannel;
pub type RESTPostAPIGuildChannelResult = APIChannel;
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq)]
pub struct RESTPatchAPIGuildChannelPositionsJSONBodyItem {
pub id: String,
pub position: i32,
#[serde(skip_serializing_if = "Option::is_none")]
pub lock_permissions: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
pub parent_id: Option<Option<String>>,
}
pub type RESTPatchAPIGuildChannelPositionsJSONBody =
Vec<RESTPatchAPIGuildChannelPositionsJSONBodyItem>;
pub type RESTPatchAPIGuildChannelPositionsResult = ();
pub type RESTGetAPIGuildThreadsResult = APIThreadList;
pub type RESTGetAPIGuildMemberResult = APIGuildMember;
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Default)]
pub struct RESTGetAPIGuildMembersQuery {
#[serde(skip_serializing_if = "Option::is_none")]
pub limit: Option<u16>,
#[serde(skip_serializing_if = "Option::is_none")]
pub after: Option<String>,
}
pub type RESTGetAPIGuildMembersResult = Vec<APIGuildMember>;
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq)]
pub struct RESTGetAPIGuildMembersSearchQuery {
pub query: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub limit: Option<u16>,
}
pub type RESTGetAPIGuildMembersSearchResult = Vec<APIGuildMember>;
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq)]
pub struct RESTPutAPIGuildMemberJSONBody {
pub access_token: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub nick: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub roles: Option<Vec<String>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub mute: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
pub deaf: Option<bool>,
}
pub type RESTPutAPIGuildMemberResult = Option<APIGuildMember>;
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Default)]
pub struct RESTPatchAPIGuildMemberJSONBody {
#[serde(skip_serializing_if = "Option::is_none")]
pub nick: Option<Option<String>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub roles: Option<Option<Vec<String>>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub mute: Option<Option<bool>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub deaf: Option<Option<bool>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub channel_id: Option<Option<String>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub communication_disabled_until: Option<Option<String>>,
}
pub type RESTPatchAPIGuildMemberResult = APIGuildMember;
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Default)]
pub struct RESTPatchAPICurrentGuildMemberNicknameJSONBody {
#[serde(skip_serializing_if = "Option::is_none")]
pub nick: Option<Option<String>>,
}
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Default)]
pub struct RESTPatchAPICurrentGuildMemberJSONBody {
#[serde(skip_serializing_if = "Option::is_none")]
pub nick: Option<Option<String>>,
}
pub type RESTPatchAPICurrentGuildMemberNicknameResult =
RESTPatchAPICurrentGuildMemberNicknameJSONBody;
pub type RESTPutAPIGuildMemberRoleResult = ();
pub type RESTDeleteAPIGuildMemberRoleResult = ();
pub type RESTDeleteAPIGuildMemberResult = ();
pub type RESTGetAPIGuildBansResult = Vec<APIBan>;
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Default)]
pub struct RESTGetAPIGuildBansQuery {
#[serde(skip_serializing_if = "Option::is_none")]
pub before: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub after: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub limit: Option<u16>,
}
pub type RESTGetAPIGuildBanResult = APIBan;
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Default)]
pub struct RESTPutAPIGuildBanJSONBody {
#[serde(skip_serializing_if = "Option::is_none")]
pub delete_message_days: Option<u8>,
#[serde(skip_serializing_if = "Option::is_none")]
pub delete_message_seconds: Option<u32>,
}
pub type RESTPutAPIGuildBanResult = ();
pub type RESTDeleteAPIGuildBanResult = ();
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq)]
pub struct RESTPostAPIGuildBulkBanJSONBody {
pub user_ids: Vec<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub delete_message_seconds: Option<u32>,
}
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq)]
pub struct RESTPostAPIGuildBulkBanResult {
pub banned_users: Vec<String>,
pub failed_users: Vec<String>,
}
pub type RESTGetAPIGuildRolesResult = Vec<APIRole>;
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Default)]
pub struct RESTPostAPIGuildRoleJSONBody {
#[serde(skip_serializing_if = "Option::is_none")]
pub name: Option<Option<String>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub permissions: Option<Option<String>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub color: Option<Option<u32>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub colors: Option<APIRoleColors>,
#[serde(skip_serializing_if = "Option::is_none")]
pub hoist: Option<Option<bool>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub icon: Option<Option<String>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub unicode_emoji: Option<Option<String>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub mentionable: Option<Option<bool>>,
}
pub type RESTPostAPIGuildRoleResult = APIRole;
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq)]
pub struct RESTPatchAPIGuildRolePositionsJSONBodyItem {
pub id: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub position: Option<i32>,
}
pub type RESTPatchAPIGuildRolePositionsJSONBody = Vec<RESTPatchAPIGuildRolePositionsJSONBodyItem>;
pub type RESTPatchAPIGuildRolePositionsResult = Vec<APIRole>;
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Default)]
pub struct RESTPatchAPIGuildRoleJSONBody {
#[serde(skip_serializing_if = "Option::is_none")]
pub name: Option<Option<String>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub permissions: Option<Option<String>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub color: Option<Option<u32>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub colors: Option<APIRoleColors>,
#[serde(skip_serializing_if = "Option::is_none")]
pub hoist: Option<Option<bool>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub icon: Option<Option<String>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub unicode_emoji: Option<Option<String>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub mentionable: Option<Option<bool>>,
}
pub type RESTGetAPIGuildRoleResult = APIRole;
pub type RESTPatchAPIGuildRoleResult = APIRole;
pub type RESTDeleteAPIGuildRoleResult = ();
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Default)]
pub struct RESTGetAPIGuildPruneCountQuery {
#[serde(skip_serializing_if = "Option::is_none")]
pub days: Option<u16>,
#[serde(skip_serializing_if = "Option::is_none")]
pub include_roles: Option<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq)]
pub struct RESTGetAPIGuildPruneCountResult {
pub pruned: i32,
}
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Default)]
pub struct RESTPostAPIGuildPruneJSONBody {
#[serde(skip_serializing_if = "Option::is_none")]
pub days: Option<u16>,
#[serde(skip_serializing_if = "Option::is_none")]
pub compute_prune_count: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
pub include_roles: Option<Vec<String>>,
}
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq)]
pub struct RESTPostAPIGuildPruneResult {
pub pruned: Option<i32>,
}
pub type RESTGetAPIGuildVoiceRegionsResult = Vec<APIVoiceRegion>;
pub type RESTGetAPIGuildInvitesResult = Vec<APIExtendedInvite>;
pub type RESTGetAPIGuildIntegrationsResult = Vec<APIGuildIntegration>;
pub type RESTDeleteAPIGuildIntegrationResult = ();
pub type RESTGetAPIGuildWidgetSettingsResult = APIGuildWidgetSettings;
pub type RESTPatchAPIGuildWidgetSettingsJSONBody = APIGuildWidgetSettings;
pub type RESTPatchAPIGuildWidgetSettingsResult = APIGuildWidgetSettings;
pub type RESTGetAPIGuildWidgetJSONResult = APIGuildWidget;
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq)]
pub struct RESTGetAPIGuildVanityUrlResult {
pub code: Option<String>,
pub uses: i32,
}
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Default)]
pub struct RESTGetAPIGuildWidgetImageQuery {
#[serde(skip_serializing_if = "Option::is_none")]
pub style: Option<GuildWidgetStyle>,
}
pub type RESTGetAPIGuildWidgetImageResult = Vec<u8>;
pub type RESTGetAPIGuildMemberVerificationResult = APIGuildMembershipScreening;
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Default)]
pub struct RESTPatchAPIGuildMemberVerificationJSONBody {
#[serde(skip_serializing_if = "Option::is_none")]
pub enabled: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
pub form_fields: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub description: Option<Option<String>>,
}
pub type RESTPatchAPIGuildMemberVerificationResult = APIGuildMembershipScreening;
pub type RESTGetAPIGuildWelcomeScreenResult = APIGuildWelcomeScreen;
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Default)]
pub struct RESTPatchAPIGuildWelcomeScreenJSONBody {
#[serde(skip_serializing_if = "Option::is_none")]
pub enabled: Option<Option<bool>>,
#[serde(flatten, skip_serializing_if = "Option::is_none")]
pub other: Option<Value>,
}
pub type RESTPatchAPIGuildWelcomeScreenResult = APIGuildWelcomeScreen;
pub type RESTGetAPIGuildOnboardingResult = APIGuildOnboarding;
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Default)]
pub struct RESTPutAPIGuildOnboardingJSONBody {
#[serde(skip_serializing_if = "Option::is_none")]
pub prompts: Option<Vec<RESTAPIGuildOnboardingPrompt>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub default_channel_ids: Option<Vec<String>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub enabled: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
pub mode: Option<Value>,
}
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq)]
pub struct RESTAPIGuildOnboardingPrompt {
pub options: Vec<RESTAPIGuildOnboardingPromptOption>,
pub id: String,
pub title: String,
}
#[deprecated(note = "Use RESTAPIGuildOnboardingPrompt instead.")]
pub type RESTAPIModifyGuildOnboardingPromptData = RESTAPIGuildOnboardingPrompt;
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq)]
pub struct RESTAPIGuildOnboardingPromptOption {
#[serde(skip_serializing_if = "Option::is_none")]
pub emoji_id: Option<Option<String>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub emoji_name: Option<Option<String>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub emoji_animated: Option<Option<bool>>,
pub title: String,
}
#[deprecated(note = "Use RESTAPIGuildOnboardingPromptOption instead.")]
pub type RESTAPIModifyGuildOnboardingPromptOptionData = RESTAPIGuildOnboardingPromptOption;
pub type RESTPutAPIGuildOnboardingResult = APIGuildOnboarding;
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Default)]
pub struct RESTPutAPIGuildIncidentActionsJSONBody {
#[serde(skip_serializing_if = "Option::is_none")]
pub invites_disabled_until: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub dms_disabled_until: Option<String>,
}