mlbt-api 0.4.2

Internal API client for mlbt
Documentation
use crate::boxscore::Boxscore;
use crate::plays::Plays;
use crate::schedule::Status;
use serde::{Deserialize, Serialize};
use std::collections::HashMap;

#[derive(Default, Debug, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct LiveResponse {
    pub game_pk: u64,
    pub link: String,
    pub meta_data: MetaData,
    pub game_data: GameData,
    pub live_data: LiveData,
}

#[derive(Default, Debug, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct MetaData {
    pub wait: i64,
    pub time_stamp: String,
    pub game_events: Vec<String>,
    pub logical_events: Vec<String>,
}

#[derive(Default, Debug, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct GameData {
    pub game: Game,
    pub teams: Teams,
    pub players: HashMap<String, FullPlayer>,
    pub abs_challenges: Option<AbsChallenges>,
    pub status: Status,
}

#[derive(Default, Debug, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct LiveData {
    pub plays: Plays,
    pub linescore: Linescore,
    pub boxscore: Boxscore,
}

#[derive(Default, Debug, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct Linescore {
    pub current_inning: Option<u8>,
    pub current_inning_ordinal: Option<String>,
    pub inning_state: Option<String>,
    pub inning_half: Option<String>,
    pub is_top_inning: Option<bool>,
    pub scheduled_innings: Option<u8>,
    pub innings: Vec<Inning>,
    // pub teams:
    // pub defense:
    pub offense: Offense,
    pub balls: Option<u8>,
    pub strikes: Option<u8>,
    pub outs: Option<u8>,
}

#[derive(Default, Debug, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct Inning {
    pub num: u8,
    pub ordinal_num: String,
    pub home: TeamInningDetail,
    pub away: TeamInningDetail,
}

#[derive(Default, Debug, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct TeamInningDetail {
    pub runs: Option<u8>,
    pub hits: u8,
    pub errors: u8,
    pub left_on_base: u8,
}

#[derive(Default, Debug, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct Offense {
    pub on_deck: Option<PlayerIdName>,
    pub in_hole: Option<PlayerIdName>,
}

#[derive(Default, Debug, Serialize, Deserialize)]
pub struct PlayerIdName {
    pub id: u64,
    #[serde(rename = "fullName")]
    pub full_name: String,
}

#[derive(Default, Debug, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct Game {
    pub pk: i64,
    #[serde(rename = "type")]
    pub type_field: String,
    pub double_header: String,
    pub id: String,
    pub gameday_type: String,
    pub tiebreaker: String,
    pub game_number: i64,
    #[serde(rename = "calendarEventID")]
    pub calendar_event_id: String,
    pub season: String,
    pub season_display: String,
}

#[derive(Default, Debug, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct PerTeamChallenges {
    pub used_successful: u8,
    pub used_failed: u8,
    pub remaining: u8,
}

#[derive(Default, Debug, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct AbsChallenges {
    pub has_challenges: bool,
    pub away: PerTeamChallenges,
    pub home: PerTeamChallenges,
}

#[derive(Default, Debug, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct Teams {
    pub away: Team,
    pub home: Team,
}

#[derive(Default, Debug, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct Team {
    pub id: u16,
    pub name: String,
    pub team_name: String,
    pub short_name: String,
    pub season: u16,
    pub team_code: String,
    pub abbreviation: String,
}

#[derive(Default, Debug, Serialize, Deserialize)]
pub struct Person {
    pub id: u64,
    #[serde(rename = "fullName")]
    pub full_name: String,
    pub link: Option<String>,
}

#[derive(Debug, Serialize, Deserialize)]
pub struct Side {
    pub code: String,
    pub description: String,
}

#[derive(Debug, Serialize, Deserialize)]
pub struct PrimaryPosition {
    pub code: String,
    pub name: String,
    #[serde(rename = "type")]
    pub r#type: String,
    pub abbreviation: String,
}

#[derive(Debug, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct FullPlayer {
    pub id: u64,
    pub full_name: String,
    pub link: Option<String>,
    pub first_name: String,
    pub last_name: String,
    pub primary_number: Option<String>,
    pub birth_date: Option<String>,
    pub current_age: Option<i64>,
    pub birth_city: Option<String>,
    pub birth_state_province: Option<String>,
    pub birth_country: Option<String>,
    pub height: Option<String>,
    pub weight: Option<u16>,
    pub active: Option<bool>,
    pub primary_position: Option<PrimaryPosition>,
    pub use_name: Option<String>,
    pub use_last_name: Option<String>,
    pub middle_name: Option<String>,
    pub boxscore_name: Option<String>,
    pub gender: Option<String>,
    pub is_player: Option<bool>,
    pub is_verified: Option<bool>,
    pub draft_year: Option<i64>,
    pub mlb_debut_date: Option<String>,
    pub bat_side: Option<Side>,
    pub pitch_hand: Option<Side>,
    pub name_first_last: Option<String>,
    pub name_slug: Option<String>,
    pub first_last_name: Option<String>,
    pub last_first_name: Option<String>,
    pub last_init_name: Option<String>,
    pub init_last_name: String,
    #[serde(rename = "fullFMLName")]
    pub full_fmlname: Option<String>,
    #[serde(rename = "fullLFMName")]
    pub full_lfmname: Option<String>,
    pub strike_zone_top: Option<f64>,
    pub strike_zone_bottom: Option<f64>,
}