UNPKG

fpl-fetch

Version:

Wrapper for the Fantasy Premier League API

669 lines (666 loc) 16.1 kB
interface Chip { id: number; name: "wildcard" | "freehit" | "bboost" | "3xc" | "manager"; number: number; start_event: number; stop_event: number; chip_type: string; overrides: { rules: Record<string, unknown>; scoring: Record<string, unknown>; element_types: unknown[]; pick_multiplier: number | null; }; } interface GameSettings { league_join_private_max: number; league_join_public_max: number; league_max_size_public_classic: number; league_max_size_public_h2h: number; league_max_size_private_h2h: number; league_max_ko_rounds_private_h2h: number; league_prefix_public: string; league_points_h2h_win: number; league_points_h2h_lose: number; league_points_h2h_draw: number; league_ko_first_instead_of_random: boolean; squad_squadplay: number; squad_squadsize: number; squad_team_limit: number; squad_total_spend: number; ui_currency_multiplier: number; ui_use_special_shirts: boolean; stats_form_days: number; sys_vice_captain_enabled: boolean; transfers_cap: number; transfers_sell_on_fee: number; league_h2h_tiebreak_stats: string[]; timezone: string; } interface GameConfig { settings: { entry_per_event: boolean; timezone: string; }; rules: GameSettings; scoring: Record<string, unknown>; } interface Phase { id: number; name: string; start_event: number; stop_event: number; highest_score: number | null; } interface Team { code: number; id: number; name: string; short_name: string; strength: number; strength_overall_home: number; strength_overall_away: number; strength_attack_home: number; strength_attack_away: number; strength_defence_home: number; strength_defence_away: number; } interface ElementStat { label: string; name: string; } interface ElementType { id: number; plural_name: string; plural_name_short: string; singular_name: string; singular_name_short: string; squad_select: number; squad_min_play: number; squad_max_play: number; ui_shirt_specific: boolean; } /** * Bootsrap */ interface BootstrapData { chips: Chip[]; events: Event[]; game_settings: GameSettings; game_config: GameConfig; phases: Phase[]; teams: Team[]; element_stats: ElementStat[]; element_types: ElementType[]; elements: Element[]; total_players: number; } interface StatValue { value: number; element: number; } interface Fixture { code: number; event: number; finished: boolean; finished_provisional: boolean; id: number; kickoff_time: string; minutes: number; provisional_start_time: boolean; started: boolean; team_a: number; team_a_score: number; team_h: number; team_h_score: number; stats: Stat[]; team_h_difficulty: number; team_a_difficulty: number; pulse_id: number; } /** * Event Status */ interface CurrentEventStatus { bonus_added: boolean; date: string; event: number; points: string; } interface EventStatus { status: CurrentEventStatus[]; leagues: string; } /** * Gameweek summary */ interface Gameweek { elements: Element[]; } interface Element { id: number; web_name: string; element_type: number; team: number; now_cost: number; total_points: number; selected_by_percent: string; form: string; points_per_game: string; news: string; news_added: string | null; minutes: number; goals_scored: number; assists: number; clean_sheets: number; ict_index: string; expected_goals: string; expected_assists: string; } interface Element { id: number; stats: Stats; explain: Explain[]; modified: boolean; } interface Stats { minutes: number; goals_scored: number; assists: number; clean_sheets: number; goals_conceded: number; own_goals: number; penalties_saved: number; penalties_missed: number; yellow_cards: number; red_cards: number; saves: number; bonus: number; bps: number; influence: string; creativity: string; threat: string; ict_index: string; starts: number; expected_goals: string; expected_assists: string; expected_goal_involvements: string; expected_goals_conceded: string; mng_win: number; mng_draw: number; mng_loss: number; mng_underdog_win: number; mng_underdog_draw: number; mng_clean_sheets: number; mng_goals_scored: number; total_points: number; in_dreamteam: boolean; } interface Explain { fixture: number; stats: Stat[]; } interface Stat { identifier: string; a: StatValue[]; h: StatValue[]; } interface Stat { identifier: string; points: number; value: number; points_modification: number; } interface History { element: number; fixture: number; opponent_team: number; total_points: number; was_home: boolean; kickoff_time: string; team_h_score: number; team_a_score: number; round: number; modified: boolean; minutes: number; goals_scored: number; assists: number; clean_sheets: number; goals_conceded: number; own_goals: number; penalties_saved: number; penalties_missed: number; yellow_cards: number; red_cards: number; saves: number; bonus: number; bps: number; influence: string; creativity: string; threat: string; ict_index: string; starts: number; expected_goals: string; expected_assists: string; expected_goal_involvements: string; expected_goals_conceded: string; mng_win: number; mng_draw: number; mng_loss: number; mng_underdog_win: number; mng_underdog_draw: number; mng_clean_sheets: number; mng_goals_scored: number; value: number; transfers_balance: number; selected: number; transfers_in: number; transfers_out: number; } interface HistoryPast { season_name: string; element_code: number; start_cost: number; end_cost: number; total_points: number; minutes: number; goals_scored: number; assists: number; clean_sheets: number; goals_conceded: number; own_goals: number; penalties_saved: number; penalties_missed: number; yellow_cards: number; red_cards: number; saves: number; bonus: number; bps: number; influence: string; creativity: string; threat: string; ict_index: string; starts: number; expected_goals: string; expected_assists: string; expected_goal_involvements: string; expected_goals_conceded: string; mng_win: number; mng_draw: number; mng_loss: number; mng_underdog_win: number; mng_underdog_draw: number; mng_clean_sheets: number; mng_goals_scored: number; } /** * Individual player summary */ interface PlayerSummary { fixtures: Fixture[]; history: History[]; history_past: HistoryPast[]; } interface Leagues { classic: ClassicLeague[]; h2h: H2HLeague[]; cup: Cup; } interface ClassicLeague { id: number; name: string; short_name: string | null; created: string; closed: boolean; rank: number | null; max_entries: number | null; league_type: string; scoring: string; admin_entry: number | null; start_event: number; entry_can_leave: boolean; entry_can_admin: boolean; entry_can_invite: boolean; has_cup: boolean; cup_league: number | null; cup_qualified: boolean | null; rank_count: number; entry_percentile_rank: number; active_phases: ActivePhase[]; entry_rank: number; entry_last_rank: number; } interface H2HLeague { id: number; name: string; short_name: string | null; created: string; closed: boolean; rank: number | null; max_entries: number | null; league_type: string; scoring: string; admin_entry: number; start_event: number; entry_can_leave: boolean; entry_can_admin: boolean; entry_can_invite: boolean; has_cup: boolean; cup_league: number | null; cup_qualified: boolean | null; rank_count: number | null; entry_percentile_rank: number | null; active_phases: unknown[]; entry_rank: number; entry_last_rank: number; } interface Cup { matches: unknown[]; status: CupStatus; cup_league: number | null; } interface CupStatus { qualification_event: number | null; qualification_numbers: number | null; qualification_rank: number | null; qualification_state: string | null; } interface ActivePhase { phase: number; rank: number; last_rank: number; rank_sort: number; total: number; league_id: number; rank_count: number; entry_percentile_rank: number; } interface CupMatch { id: number; entry_1_entry: number; entry_1_name: string; entry_1_player_name: string; entry_1_points: number; entry_1_win: number; entry_1_draw: number; entry_1_loss: number; entry_1_total: number; entry_2_entry: number; entry_2_name: string; entry_2_player_name: string; entry_2_points: number; entry_2_win: number; entry_2_draw: number; entry_2_loss: number; entry_2_total: number; is_knockout: boolean; league: number; winner: number; seed_value: number | null; event: number; tiebreak: number | null; is_bye: boolean; knockout_name: string; } /** * Individual manager summary */ interface ManagerSummary { id: number; joined_time: string; started_event: number; favourite_team: number; player_first_name: string; player_last_name: string; player_region_id: number; player_region_name: string; player_region_iso_code_short: string; player_region_iso_code_long: string; years_active: number; summary_overall_points: number; summary_overall_rank: number; summary_event_points: number; summary_event_rank: number; current_event: number; leagues: Leagues; name: string; name_change_blocked: boolean; entered_events: number[]; kit: string; last_deadline_bank: number; last_deadline_value: number; last_deadline_total_transfers: number; cup_matches: CupMatch[]; } interface Transfer { element_in: number; element_in_cost: number; element_out: number; element_out_cost: number; entry: number; event: number; time: string; } interface CurrentEvent { event: number; points: number; total_points: number; rank: number; rank_sort: number; overall_rank: number; percentile_rank: number; bank: number; value: number; event_transfers: number; event_transfers_cost: number; points_on_bench: number; } interface PastSeason { season_name: string; total_points: number; rank: number; } interface UsedChip { name: string; time: string; event: number; } interface ManagerHistory { current: CurrentEvent[]; past: PastSeason[]; chips: UsedChip[]; } interface AutomaticSub { entry: number; element_in: number; element_out: number; event: number; } interface EntryHistory { event: number; points: number; total_points: number; rank: number; rank_sort: number; overall_rank: number; percentile_rank: number; bank: number; value: number; event_transfers: number; event_transfers_cost: number; points_on_bench: number; } interface Pick { element: number; position: number; multiplier: number; is_captain: boolean; is_vice_captain: boolean; element_type: number; } interface ManagerGameweekPicks { active_chip: null | string; automatic_subs: AutomaticSub[] | []; entry_history: EntryHistory; picks: Pick[]; } /** * Configuration options for FPL client */ interface Config { debug: boolean; } /** * Client for fetching data from the Fantasy Premier League API */ declare class FplFetch { private config; private client; /** * Creates a new FPL API client * @param config - Configuration options * * @example * ```ts * const fpl = new FplFetch({ debug: true }); * ``` */ constructor(config?: Config); /** * Retrieves the bootstrap static data from the FPL API. * This data contains core information about the current FPL season including: * teams, players, game settings and rules. * @returns Bootstrap data * * @example * ```ts * try { * const data = await fpl.getBootstrapData(); * } catch (error: unknown) { * console.error(error); * } * ``` */ getBootstrapData(): Promise<BootstrapData>; /** * Gets the current event status. * This provides information about the current gameweek, and whether bonus points have been added. * @returns Current event status data * * @example * ```ts * try { * const data = await fpl.getCurrentEvent(); * } catch (error: unknown) { * console.error(error); * } * ``` */ getCurrentEvent(): Promise<EventStatus>; /** * Gets all fixtures for the current season. * @returns List of fixtures * * @example * ```ts * try { * const data = await fpl.getFixtures(); * } catch (error: unknown) { * console.error(error); * } * ``` */ getFixtures(): Promise<Fixture[]>; /** * Gets live data for a specific gameweek * @param id - Gameweek ID * @returns Live gameweek data * * @example * ```ts * try { * const data = await fpl.getGameweek(1); * } catch (error: unknown) { * console.error(error); * } * ``` */ getGameweek(id: number): Promise<Gameweek>; /** * Gets detailed data for a specific player * @param id - Player ID * @returns Player summary data * * @example * ```ts * try { * const data = await fpl.getPlayer(1); * } catch (error: unknown) { * console.error(error); * } * ``` */ getPlayer(id: number): Promise<PlayerSummary>; /** * Gets detailed data for a specific manager * @param id - Manager ID * @returns Manager summary data * * @example * ```ts * try { * const data = await fpl.getManager(1); * } catch (error: unknown) { * console.error(error); * } * ``` */ getManager(id: number): Promise<ManagerSummary>; /** * Gets transfer history for a specific manager * @param id - Manager ID * @returns List of transfers made by the manager * * @example * ```ts * try { * const data = await fpl.getManagerTransfers(1); * } catch (error: unknown) { * console.error(error); * }} * ``` */ getManagerTransfers(id: number): Promise<Transfer[]>; /** * Gets historical data for a specific manager * @param id - Manager ID * @returns Manager history data including past seasons and current season performance * * @example * ```ts * try { * const data = await fpl.getManagerHistory(1); * } catch (error: unknown) { * console.error(error); * } * ``` */ getManagerHistory(id: number): Promise<ManagerHistory>; /** * Gets a manager's team picks for a specific gameweek * @param id - Manager ID * @param gameweekId - Gameweek ID * @returns Manager's team selection and points for the specified gameweek * * @example * ```ts * try { * const data = await fpl.getManagerGameweekPicks(1, 1); * } catch (error: unknown) { * console.error(error); * } * ``` */ getManagerGameweekPicks(id: number, gameweekId: number): Promise<ManagerGameweekPicks>; } export { FplFetch as default };