1use serde::{Deserialize, Serialize};
2
3#[derive(Debug, Deserialize, Serialize)]
4pub struct ApiErrorResponse {
5 #[serde(rename = "errorCode")]
6 pub error_code: String,
7 pub message: String,
8 pub detail: Option<String>,
9 pub context: Option<serde_json::Value>,
10}
11
12#[derive(Debug, Deserialize, Serialize)]
13pub struct RobloxUser {
14 pub id: u64,
15 pub username: String,
16 #[serde(rename = "displayName")]
17 pub display_name: String,
18 pub description: Option<String>,
19 #[serde(rename = "hasVerifiedBadge")]
20 pub has_verified_badge: bool,
21}
22
23#[derive(Debug, Deserialize, Serialize)]
24pub struct DiscordUser {
25 pub id: String,
26 pub username: String,
27 pub discriminator: String,
28 pub avatar: Option<String>,
29 #[serde(rename = "globalName")]
30 pub global_name: Option<String>,
31}
32
33#[derive(Debug, Deserialize, Serialize)]
34pub struct DiscordGuildMember {
35 pub user: DiscordUser,
36 pub nick: Option<String>,
37 pub roles: Vec<String>,
38 #[serde(rename = "joinedAt")]
39 pub joined_at: String,
40 #[serde(rename = "premiumSince")]
41 pub premium_since: Option<String>,
42}
43
44#[derive(Debug, Deserialize, Serialize)]
45pub struct DiscordToRobloxResponse {
46 pub roblox: RobloxUser,
47 #[serde(rename = "discordId")]
48 pub discord_id: String,
49 #[serde(rename = "guildId")]
50 pub guild_id: String,
51}
52
53#[derive(Debug, Deserialize, Serialize)]
54pub struct RobloxToDiscordResponse {
55 pub members: Vec<DiscordGuildMember>,
56}
57
58#[derive(Debug, Deserialize, Serialize)]
59pub struct RoleUpdate {
60 pub added: Vec<String>,
61 pub removed: Vec<String>,
62}
63
64#[derive(Debug, Deserialize, Serialize)]
65pub struct UpdateUserResponse {
66 pub roles: RoleUpdate,
67 pub nickname: Option<String>,
68 #[serde(rename = "previousNickname")]
69 pub previous_nickname: Option<String>,
70 pub permissions: Option<serde_json::Value>,
71}