neptunium_http/endpoints/meta/
limits.rs1use std::collections::HashMap;
2
3use serde::Deserialize;
4
5#[derive(Deserialize, Copy, Clone, Debug, Hash, PartialEq, Eq)]
6#[serde(rename_all = "snake_case")]
7pub enum LimitKey {
8 AvatarMaxSize,
9 EmojiMaxSize,
10 FeatureAnimatedAvatar,
11 FeatureAnimatedBanner,
12 FeatureCustomDiscriminator,
13 FeatureCustomNotificationSounds,
14 FeatureEarlyAccess,
15 FeatureGlobalExpressions,
16 FeatureHigherVideoQuality,
17 FeaturePerGuildProfiles,
18 FeatureVoiceEntranceSounds,
19 MaxAttachmentsPerMessage,
20 MaxBioLength,
21 MaxBookmarks,
22 MaxChannelsPerCategory,
23 MaxCreatedPacks,
24 MaxCustomBackgrounds,
25 MaxEmbedsPerMessage,
26 MaxFavoriteMemeTags,
27 MaxFavoriteMemes,
28 MaxGroupDmRecipients,
29 MaxGroupDmsPerUser,
30 MaxGuildChannels,
31 MaxGuildEmojisAnimatedMore,
32 MaxGuildEmojisAnimated,
33 MaxGuildEmojisStaticMore,
34 MaxGuildEmojisStatic,
35 MaxGuildInvites,
36 MaxGuildMembers,
37 MaxGuildRoles,
38 MaxGuildStickersMore,
39 MaxGuildStickers,
40 MaxGuilds,
41 MaxInstalledPacks,
42 MaxAttachmentFileSize,
43 MaxMessageLength,
44 MaxPackExpressions,
45 MaxPrivateChannelsPerUser,
46 MaxReactionsPerMessage,
47 MaxRelationships,
48 MaxUsersPerMessageReaction,
49 MaxVoiceMessageDuration,
50 MaxWebhooksPerChannel,
51 MaxWebhooksPerGuild,
52 StickerMaxSize,
53}
54
55#[derive(Deserialize, Clone, Debug)]
56pub struct InstanceDiscoveryDocumentLimitsRuleFilters {
57 #[serde(skip_serializing_if = "Option::is_none")]
58 pub traits: Option<Vec<String>>,
59 #[serde(skip_serializing_if = "Option::is_none", rename = "guildFeatures")]
60 pub guild_features: Option<Vec<String>>,
61}
62
63#[derive(Deserialize, Clone, Debug)]
64pub struct InstanceDiscoveryDocumentLimitsRule {
65 pub id: String,
67 pub overrides: HashMap<LimitKey, i64>,
68 #[serde(skip_serializing_if = "Option::is_none")]
69 pub filters: Option<InstanceDiscoveryDocumentLimitsRuleFilters>,
70}
71
72#[derive(Deserialize, Clone, Debug)]
73pub struct InstanceDiscoveryDocumentLimits {
74 pub version: u32,
76 #[serde(rename = "traitDefinitions")]
78 pub trait_definitions: Vec<String>,
79 pub rules: Vec<InstanceDiscoveryDocumentLimitsRule>,
80 #[serde(rename = "defaultsHash")]
82 pub defaults_hash: String,
83}