valorant_api/response_types/
leaderboard_v1.rs1use crate::utils::validators::valid_uuid;
2use serde::{Deserialize, Serialize};
3use std::collections::HashMap;
4use uuid::Uuid;
5
6#[derive(Serialize, Deserialize, Debug, PartialEq, Eq, Clone)]
7#[serde(rename_all = "camelCase")]
8pub struct LeaderboardV1 {
9    #[serde(rename = "Deployment")]
10    pub deployment: String,
11    #[serde(rename = "QueueID")]
12    pub queue_id: String,
13    #[serde(rename = "SeasonID")]
14    pub season_id: String,
15    #[serde(rename = "Players")]
16    pub players: Vec<LeaderboardPlayer>,
17    pub total_players: u32,
18    pub immortal_starting_page: i32,
19    pub immortal_starting_index: i32,
20    #[serde(rename = "topTierRRThreshold")]
21    pub top_tier_rr_threshold: u32,
22    pub tier_details: HashMap<String, LeaderboardTierDetail>,
23    pub start_index: u32,
24    pub query: String,
25}
26
27#[derive(Serialize, Deserialize, Debug, PartialEq, Eq, Hash, Clone)]
28#[serde(rename_all = "camelCase")]
29pub struct LeaderboardPlayer {
30    #[serde(rename = "PlayerCardID")]
31    pub player_card_id: Uuid,
32    #[serde(rename = "TitleID")]
33    pub title_id: Uuid,
34    #[serde(rename = "IsBanned")]
35    pub is_banned: bool,
36    #[serde(rename = "IsAnonymized")]
37    pub is_anonymized: bool,
38    #[serde(deserialize_with = "valid_uuid")]
39    pub puuid: Option<Uuid>,
40    pub game_name: String,
41    pub tag_line: String,
42    pub leaderboard_rank: u32,
43    pub ranked_rating: u32,
44    pub number_of_wins: u32,
45    pub competitive_tier: u32,
46}
47
48#[derive(Serialize, Deserialize, Debug, PartialEq, Eq, Hash, Clone, Copy)]
49#[serde(rename_all = "camelCase")]
50pub struct LeaderboardTierDetail {
51    pub ranked_rating_threshold: u32,
52    pub starting_page: i32,
53    pub starting_index: i32,
54}