Skip to main content

mlbt_api/
player.rs

1use crate::live::{PrimaryPosition, Side};
2use crate::schedule::IdNameLink;
3use crate::stats::Stat;
4use serde::Deserialize;
5
6#[derive(Default, Debug, Deserialize)]
7pub struct PeopleResponse {
8    pub people: Vec<PersonFull>,
9}
10
11/// Full player info with hydrated currentTeam and inline stats.
12#[derive(Debug, Deserialize)]
13#[serde(rename_all = "camelCase")]
14pub struct PersonFull {
15    pub id: u64,
16    pub full_name: String,
17    pub primary_number: Option<String>,
18    pub birth_date: Option<String>,
19    pub current_age: Option<u8>,
20    pub birth_city: Option<String>,
21    pub birth_state_province: Option<String>,
22    pub birth_country: Option<String>,
23    pub height: Option<String>,
24    pub weight: Option<u16>,
25    pub primary_position: Option<PrimaryPosition>,
26    pub bat_side: Option<Side>,
27    pub pitch_hand: Option<Side>,
28    pub mlb_debut_date: Option<String>,
29    pub active: Option<bool>,
30    pub draft_year: Option<u16>,
31    pub current_team: Option<IdNameLink>,
32    pub nick_name: Option<String>,
33    pub pronunciation: Option<String>,
34    /// Inline stats from hydration. Contains one entry per requested stat type
35    /// (season, yearByYear, career, gameLog).
36    #[serde(default)]
37    pub stats: Vec<Stat>,
38    pub drafts: Option<Vec<DraftInfo>>,
39}
40
41#[derive(Debug, Deserialize)]
42#[serde(rename_all = "camelCase")]
43pub struct DraftInfo {
44    pub pick_round: String,
45    pub pick_number: u16,
46    pub round_pick_number: u8,
47    pub team: IdNameLink,
48    pub is_drafted: bool,
49    pub is_pass: bool,
50    pub year: String,
51}