pyke.models.match_v5

  1# generated by datamodel-codegen:
  2#   filename:  schema.json
  3#   timestamp: 2025-10-19T17:24:31+00:00
  4
  5from __future__ import annotations
  6
  7from enum import Enum
  8from typing import Dict, List, Optional
  9
 10from pydantic import BaseModel, Field
 11
 12
 13class MetadataDto(BaseModel):
 14    """@public"""
 15
 16    data_version: str = Field(
 17        ..., alias="dataVersion", description="Match data version."
 18    )
 19    match_id: str = Field(..., alias="matchId", description="Match id.")
 20    participants: List[str] = Field(..., description="A list of participant PUUIDs.")
 21
 22
 23class FasterSupportQuestCompletion(Enum):
 24    """@public"""
 25
 26    integer_0 = 0
 27    integer_1 = 1
 28
 29
 30class HadAfkTeammate(Enum):
 31    """@public"""
 32
 33    integer_0 = 0
 34    integer_1 = 1
 35
 36
 37class HighestCrowdControlScore(Enum):
 38    """@public"""
 39
 40    integer_0 = 0
 41    integer_1 = 1
 42
 43
 44class HighestWardKills(Enum):
 45    """@public"""
 46
 47    integer_0 = 0
 48    integer_1 = 1
 49
 50
 51class LaningPhaseGoldExpAdvantage(Enum):
 52    """@public"""
 53
 54    integer_0 = 0
 55    integer_1 = 1
 56
 57
 58class PlayedChampSelectPosition(Enum):
 59    """@public"""
 60
 61    integer_0 = 0
 62    integer_1 = 1
 63
 64
 65class ChallengesDto(BaseModel):
 66    """@public"""
 67
 68    field_12_assist_streak_count: Optional[int] = Field(
 69        None, alias="12AssistStreakCount"
 70    )
 71    baron_buff_gold_advantage_over_threshold: Optional[int] = Field(
 72        None, alias="baronBuffGoldAdvantageOverThreshold"
 73    )
 74    control_ward_time_coverage_in_river_or_enemy_half: Optional[float] = Field(
 75        None, alias="controlWardTimeCoverageInRiverOrEnemyHalf"
 76    )
 77    earliest_baron: Optional[float] = Field(None, alias="earliestBaron")
 78    earliest_dragon_takedown: Optional[float] = Field(
 79        None, alias="earliestDragonTakedown"
 80    )
 81    earliest_elder_dragon: Optional[float] = Field(None, alias="earliestElderDragon")
 82    early_laning_phase_gold_exp_advantage: Optional[float] = Field(
 83        None, alias="earlyLaningPhaseGoldExpAdvantage"
 84    )
 85    faster_support_quest_completion: Optional[FasterSupportQuestCompletion] = Field(
 86        None, alias="fasterSupportQuestCompletion"
 87    )
 88    fastest_legendary: Optional[float] = Field(None, alias="fastestLegendary")
 89    had_afk_teammate: Optional[HadAfkTeammate] = Field(None, alias="hadAfkTeammate")
 90    highest_champion_damage: Optional[int] = Field(None, alias="highestChampionDamage")
 91    highest_crowd_control_score: Optional[HighestCrowdControlScore] = Field(
 92        None, alias="highestCrowdControlScore"
 93    )
 94    highest_ward_kills: Optional[HighestWardKills] = Field(
 95        None, alias="highestWardKills"
 96    )
 97    jungler_kills_early_jungle: Optional[int] = Field(
 98        None, alias="junglerKillsEarlyJungle"
 99    )
100    kills_on_laners_early_jungle_as_jungler: Optional[int] = Field(
101        None, alias="killsOnLanersEarlyJungleAsJungler"
102    )
103    laning_phase_gold_exp_advantage: Optional[LaningPhaseGoldExpAdvantage] = Field(
104        None, alias="laningPhaseGoldExpAdvantage"
105    )
106    legendary_count: Optional[int] = Field(None, alias="legendaryCount")
107    max_cs_advantage_on_lane_opponent: Optional[float] = Field(
108        None, alias="maxCsAdvantageOnLaneOpponent"
109    )
110    max_level_lead_lane_opponent: Optional[int] = Field(
111        None, alias="maxLevelLeadLaneOpponent"
112    )
113    most_wards_destroyed_one_sweeper: Optional[int] = Field(
114        None, alias="mostWardsDestroyedOneSweeper"
115    )
116    mythic_item_used: Optional[int] = Field(None, alias="mythicItemUsed")
117    played_champ_select_position: Optional[PlayedChampSelectPosition] = Field(
118        None, alias="playedChampSelectPosition"
119    )
120    solo_turrets_lategame: Optional[int] = Field(None, alias="soloTurretsLategame")
121    takedowns_first25_minutes: Optional[int] = Field(
122        None, alias="takedownsFirst25Minutes"
123    )
124    teleport_takedowns: Optional[int] = Field(None, alias="teleportTakedowns")
125    third_inhibitor_destroyed_time: Optional[float] = Field(
126        None, alias="thirdInhibitorDestroyedTime"
127    )
128    three_wards_one_sweeper_count: Optional[int] = Field(
129        None, alias="threeWardsOneSweeperCount"
130    )
131    vision_score_advantage_lane_opponent: Optional[float] = Field(
132        None, alias="visionScoreAdvantageLaneOpponent"
133    )
134    infernal_scale_pickup: Optional[int] = Field(None, alias="InfernalScalePickup")
135    fist_bump_participation: Optional[int] = Field(None, alias="fistBumpParticipation")
136    void_monster_kill: Optional[int] = Field(None, alias="voidMonsterKill")
137    ability_uses: Optional[int] = Field(None, alias="abilityUses")
138    aces_before15_minutes: Optional[int] = Field(None, alias="acesBefore15Minutes")
139    allied_jungle_monster_kills: Optional[float] = Field(
140        None, alias="alliedJungleMonsterKills"
141    )
142    baron_takedowns: Optional[int] = Field(None, alias="baronTakedowns")
143    blast_cone_opposite_opponent_count: Optional[int] = Field(
144        None, alias="blastConeOppositeOpponentCount"
145    )
146    bounty_gold: Optional[float] = Field(None, alias="bountyGold")
147    buffs_stolen: Optional[int] = Field(None, alias="buffsStolen")
148    complete_support_quest_in_time: Optional[int] = Field(
149        None, alias="completeSupportQuestInTime"
150    )
151    control_wards_placed: Optional[int] = Field(None, alias="controlWardsPlaced")
152    damage_per_minute: Optional[float] = Field(None, alias="damagePerMinute")
153    damage_taken_on_team_percentage: Optional[float] = Field(
154        None, alias="damageTakenOnTeamPercentage"
155    )
156    danced_with_rift_herald: Optional[int] = Field(None, alias="dancedWithRiftHerald")
157    deaths_by_enemy_champs: Optional[int] = Field(None, alias="deathsByEnemyChamps")
158    dodge_skill_shots_small_window: Optional[int] = Field(
159        None, alias="dodgeSkillShotsSmallWindow"
160    )
161    double_aces: Optional[int] = Field(None, alias="doubleAces")
162    dragon_takedowns: Optional[int] = Field(None, alias="dragonTakedowns")
163    legendary_item_used: Optional[List[int]] = Field(None, alias="legendaryItemUsed")
164    effective_heal_and_shielding: Optional[float] = Field(
165        None, alias="effectiveHealAndShielding"
166    )
167    elder_dragon_kills_with_opposing_soul: Optional[int] = Field(
168        None, alias="elderDragonKillsWithOpposingSoul"
169    )
170    elder_dragon_multikills: Optional[int] = Field(None, alias="elderDragonMultikills")
171    enemy_champion_immobilizations: Optional[int] = Field(
172        None, alias="enemyChampionImmobilizations"
173    )
174    enemy_jungle_monster_kills: Optional[float] = Field(
175        None, alias="enemyJungleMonsterKills"
176    )
177    epic_monster_kills_near_enemy_jungler: Optional[int] = Field(
178        None, alias="epicMonsterKillsNearEnemyJungler"
179    )
180    epic_monster_kills_within30_seconds_of_spawn: Optional[int] = Field(
181        None, alias="epicMonsterKillsWithin30SecondsOfSpawn"
182    )
183    epic_monster_steals: Optional[int] = Field(None, alias="epicMonsterSteals")
184    epic_monster_stolen_without_smite: Optional[int] = Field(
185        None, alias="epicMonsterStolenWithoutSmite"
186    )
187    first_turret_killed: Optional[float] = Field(None, alias="firstTurretKilled")
188    first_turret_killed_time: Optional[float] = Field(
189        None, alias="firstTurretKilledTime"
190    )
191    flawless_aces: Optional[int] = Field(None, alias="flawlessAces")
192    full_team_takedown: Optional[int] = Field(None, alias="fullTeamTakedown")
193    game_length: Optional[float] = Field(None, alias="gameLength")
194    get_takedowns_in_all_lanes_early_jungle_as_laner: Optional[int] = Field(
195        None, alias="getTakedownsInAllLanesEarlyJungleAsLaner"
196    )
197    gold_per_minute: Optional[float] = Field(None, alias="goldPerMinute")
198    had_open_nexus: Optional[int] = Field(None, alias="hadOpenNexus")
199    immobilize_and_kill_with_ally: Optional[int] = Field(
200        None, alias="immobilizeAndKillWithAlly"
201    )
202    initial_buff_count: Optional[int] = Field(None, alias="initialBuffCount")
203    initial_crab_count: Optional[int] = Field(None, alias="initialCrabCount")
204    jungle_cs_before10_minutes: Optional[float] = Field(
205        None, alias="jungleCsBefore10Minutes"
206    )
207    jungler_takedowns_near_damaged_epic_monster: Optional[int] = Field(
208        None, alias="junglerTakedownsNearDamagedEpicMonster"
209    )
210    kda: Optional[float] = None
211    kill_after_hidden_with_ally: Optional[int] = Field(
212        None, alias="killAfterHiddenWithAlly"
213    )
214    killed_champ_took_full_team_damage_survived: Optional[int] = Field(
215        None, alias="killedChampTookFullTeamDamageSurvived"
216    )
217    killing_sprees: Optional[int] = Field(None, alias="killingSprees")
218    kill_participation: Optional[float] = Field(None, alias="killParticipation")
219    kills_near_enemy_turret: Optional[int] = Field(None, alias="killsNearEnemyTurret")
220    kills_on_other_lanes_early_jungle_as_laner: Optional[int] = Field(
221        None, alias="killsOnOtherLanesEarlyJungleAsLaner"
222    )
223    kills_on_recently_healed_by_aram_pack: Optional[int] = Field(
224        None, alias="killsOnRecentlyHealedByAramPack"
225    )
226    kills_under_own_turret: Optional[int] = Field(None, alias="killsUnderOwnTurret")
227    kills_with_help_from_epic_monster: Optional[int] = Field(
228        None, alias="killsWithHelpFromEpicMonster"
229    )
230    knock_enemy_into_team_and_kill: Optional[int] = Field(
231        None, alias="knockEnemyIntoTeamAndKill"
232    )
233    k_turrets_destroyed_before_plates_fall: Optional[int] = Field(
234        None, alias="kTurretsDestroyedBeforePlatesFall"
235    )
236    land_skill_shots_early_game: Optional[int] = Field(
237        None, alias="landSkillShotsEarlyGame"
238    )
239    lane_minions_first10_minutes: Optional[int] = Field(
240        None, alias="laneMinionsFirst10Minutes"
241    )
242    lost_an_inhibitor: Optional[int] = Field(None, alias="lostAnInhibitor")
243    max_kill_deficit: Optional[int] = Field(None, alias="maxKillDeficit")
244    mejais_full_stack_in_time: Optional[int] = Field(
245        None, alias="mejaisFullStackInTime"
246    )
247    more_enemy_jungle_than_opponent: Optional[float] = Field(
248        None, alias="moreEnemyJungleThanOpponent"
249    )
250    multi_kill_one_spell: Optional[int] = Field(
251        None,
252        alias="multiKillOneSpell",
253        description="This is an offshoot of the OneStone challenge. The code checks if a spell with the same instance ID does the final point of damage to at least 2 Champions. It doesn't matter if they're enemies, but you cannot hurt your friends.",
254    )
255    multikills: Optional[int] = None
256    multikills_after_aggressive_flash: Optional[int] = Field(
257        None, alias="multikillsAfterAggressiveFlash"
258    )
259    multi_turret_rift_herald_count: Optional[int] = Field(
260        None, alias="multiTurretRiftHeraldCount"
261    )
262    outer_turret_executes_before10_minutes: Optional[int] = Field(
263        None, alias="outerTurretExecutesBefore10Minutes"
264    )
265    outnumbered_kills: Optional[int] = Field(None, alias="outnumberedKills")
266    outnumbered_nexus_kill: Optional[int] = Field(None, alias="outnumberedNexusKill")
267    perfect_dragon_souls_taken: Optional[int] = Field(
268        None, alias="perfectDragonSoulsTaken"
269    )
270    perfect_game: Optional[int] = Field(None, alias="perfectGame")
271    pick_kill_with_ally: Optional[int] = Field(None, alias="pickKillWithAlly")
272    poro_explosions: Optional[int] = Field(None, alias="poroExplosions")
273    quick_cleanse: Optional[int] = Field(None, alias="quickCleanse")
274    quick_first_turret: Optional[int] = Field(None, alias="quickFirstTurret")
275    quick_solo_kills: Optional[int] = Field(None, alias="quickSoloKills")
276    rift_herald_takedowns: Optional[int] = Field(None, alias="riftHeraldTakedowns")
277    save_ally_from_death: Optional[int] = Field(None, alias="saveAllyFromDeath")
278    scuttle_crab_kills: Optional[int] = Field(None, alias="scuttleCrabKills")
279    shortest_time_to_ace_from_first_takedown: Optional[float] = Field(
280        None, alias="shortestTimeToAceFromFirstTakedown"
281    )
282    skillshots_dodged: Optional[int] = Field(None, alias="skillshotsDodged")
283    skillshots_hit: Optional[int] = Field(None, alias="skillshotsHit")
284    snowballs_hit: Optional[int] = Field(None, alias="snowballsHit")
285    solo_baron_kills: Optional[int] = Field(None, alias="soloBaronKills")
286    swarm_defeat_aatrox: Optional[int] = Field(None, alias="SWARM_DefeatAatrox")
287    swarm_defeat_briar: Optional[int] = Field(None, alias="SWARM_DefeatBriar")
288    swarm_defeat_mini_bosses: Optional[int] = Field(
289        None, alias="SWARM_DefeatMiniBosses"
290    )
291    swarm_evolve_weapon: Optional[int] = Field(None, alias="SWARM_EvolveWeapon")
292    swarm_have3_passives: Optional[int] = Field(None, alias="SWARM_Have3Passives")
293    swarm_kill_enemy: Optional[int] = Field(None, alias="SWARM_KillEnemy")
294    swarm_pickup_gold: Optional[float] = Field(None, alias="SWARM_PickupGold")
295    swarm_reach_level50: Optional[int] = Field(None, alias="SWARM_ReachLevel50")
296    swarm_survive15_min: Optional[int] = Field(None, alias="SWARM_Survive15Min")
297    swarm_win_with5_evolved_weapons: Optional[int] = Field(
298        None, alias="SWARM_WinWith5EvolvedWeapons"
299    )
300    solo_kills: Optional[int] = Field(None, alias="soloKills")
301    stealth_wards_placed: Optional[int] = Field(None, alias="stealthWardsPlaced")
302    survived_single_digit_hp_count: Optional[int] = Field(
303        None, alias="survivedSingleDigitHpCount"
304    )
305    survived_three_immobilizes_in_fight: Optional[int] = Field(
306        None, alias="survivedThreeImmobilizesInFight"
307    )
308    takedown_on_first_turret: Optional[int] = Field(None, alias="takedownOnFirstTurret")
309    takedowns: Optional[int] = None
310    takedowns_after_gaining_level_advantage: Optional[int] = Field(
311        None, alias="takedownsAfterGainingLevelAdvantage"
312    )
313    takedowns_before_jungle_minion_spawn: Optional[int] = Field(
314        None, alias="takedownsBeforeJungleMinionSpawn"
315    )
316    takedowns_first_x_minutes: Optional[int] = Field(
317        None, alias="takedownsFirstXMinutes"
318    )
319    takedowns_in_alcove: Optional[int] = Field(None, alias="takedownsInAlcove")
320    takedowns_in_enemy_fountain: Optional[int] = Field(
321        None, alias="takedownsInEnemyFountain"
322    )
323    team_baron_kills: Optional[int] = Field(None, alias="teamBaronKills")
324    team_damage_percentage: Optional[float] = Field(None, alias="teamDamagePercentage")
325    team_elder_dragon_kills: Optional[int] = Field(None, alias="teamElderDragonKills")
326    team_rift_herald_kills: Optional[int] = Field(None, alias="teamRiftHeraldKills")
327    took_large_damage_survived: Optional[int] = Field(
328        None, alias="tookLargeDamageSurvived"
329    )
330    turret_plates_taken: Optional[int] = Field(None, alias="turretPlatesTaken")
331    turrets_taken_with_rift_herald: Optional[int] = Field(
332        None,
333        alias="turretsTakenWithRiftHerald",
334        description="Any player who damages a tower that is destroyed within 30 seconds of a Rift Herald charge will receive credit. A player who does not damage the tower will not receive credit.",
335    )
336    turret_takedowns: Optional[int] = Field(None, alias="turretTakedowns")
337    twenty_minions_in3_seconds_count: Optional[int] = Field(
338        None, alias="twentyMinionsIn3SecondsCount"
339    )
340    two_wards_one_sweeper_count: Optional[int] = Field(
341        None, alias="twoWardsOneSweeperCount"
342    )
343    unseen_recalls: Optional[int] = Field(None, alias="unseenRecalls")
344    vision_score_per_minute: Optional[float] = Field(None, alias="visionScorePerMinute")
345    wards_guarded: Optional[int] = Field(None, alias="wardsGuarded")
346    ward_takedowns: Optional[int] = Field(None, alias="wardTakedowns")
347    ward_takedowns_before20_m: Optional[int] = Field(
348        None, alias="wardTakedownsBefore20M"
349    )
350    heal_from_map_sources: Optional[float] = Field(None, alias="HealFromMapSources")
351
352
353class MissionsDto(BaseModel):
354    """@public"""
355
356    player_score0: Optional[float] = Field(None, alias="playerScore0")
357    player_score1: Optional[float] = Field(None, alias="playerScore1")
358    player_score2: Optional[float] = Field(None, alias="playerScore2")
359    player_score3: Optional[float] = Field(None, alias="playerScore3")
360    player_score4: Optional[float] = Field(None, alias="playerScore4")
361    player_score5: Optional[float] = Field(None, alias="playerScore5")
362    player_score6: Optional[float] = Field(None, alias="playerScore6")
363    player_score7: Optional[float] = Field(None, alias="playerScore7")
364    player_score8: Optional[float] = Field(None, alias="playerScore8")
365    player_score9: Optional[float] = Field(None, alias="playerScore9")
366    player_score10: Optional[float] = Field(None, alias="playerScore10")
367    player_score11: Optional[float] = Field(None, alias="playerScore11")
368
369
370class PerkStatsDto(BaseModel):
371    """@public"""
372
373    defense: int
374    flex: int
375    offense: int
376
377
378class PerkStyleSelectionDto(BaseModel):
379    """@public"""
380
381    perk: int
382    var1: int
383    var2: int
384    var3: int
385
386
387class BanDto(BaseModel):
388    """@public"""
389
390    champion_id: int = Field(..., alias="championId")
391    pick_turn: int = Field(..., alias="pickTurn")
392
393
394class ObjectiveDto(BaseModel):
395    """@public"""
396
397    first: bool
398    kills: int
399
400
401class MetadataTimeLineDto(BaseModel):
402    """@public"""
403
404    data_version: str = Field(
405        ..., alias="dataVersion", description="Match data version."
406    )
407    match_id: str = Field(..., alias="matchId", description="Match id.")
408    participants: List[str] = Field(..., description="A list of participant PUUIDs.")
409
410
411class ParticipantTimeLineDto(BaseModel):
412    """@public"""
413
414    participant_id: int = Field(..., alias="participantId")
415    puuid: str
416
417
418class ChampionStatsDto(BaseModel):
419    """@public"""
420
421    ability_haste: Optional[int] = Field(None, alias="abilityHaste")
422    ability_power: int = Field(..., alias="abilityPower")
423    armor: int
424    armor_pen: int = Field(..., alias="armorPen")
425    armor_pen_percent: int = Field(..., alias="armorPenPercent")
426    attack_damage: int = Field(..., alias="attackDamage")
427    attack_speed: int = Field(..., alias="attackSpeed")
428    bonus_armor_pen_percent: int = Field(..., alias="bonusArmorPenPercent")
429    bonus_magic_pen_percent: int = Field(..., alias="bonusMagicPenPercent")
430    cc_reduction: int = Field(..., alias="ccReduction")
431    cooldown_reduction: int = Field(..., alias="cooldownReduction")
432    health: int
433    health_max: int = Field(..., alias="healthMax")
434    health_regen: int = Field(..., alias="healthRegen")
435    lifesteal: int
436    magic_pen: int = Field(..., alias="magicPen")
437    magic_pen_percent: int = Field(..., alias="magicPenPercent")
438    magic_resist: int = Field(..., alias="magicResist")
439    movement_speed: int = Field(..., alias="movementSpeed")
440    omnivamp: Optional[int] = None
441    physical_vamp: Optional[int] = Field(None, alias="physicalVamp")
442    power: int
443    power_max: int = Field(..., alias="powerMax")
444    power_regen: int = Field(..., alias="powerRegen")
445    spell_vamp: int = Field(..., alias="spellVamp")
446
447
448class DamageStatsDto(BaseModel):
449    """@public"""
450
451    magic_damage_done: int = Field(..., alias="magicDamageDone")
452    magic_damage_done_to_champions: int = Field(..., alias="magicDamageDoneToChampions")
453    magic_damage_taken: int = Field(..., alias="magicDamageTaken")
454    physical_damage_done: int = Field(..., alias="physicalDamageDone")
455    physical_damage_done_to_champions: int = Field(
456        ..., alias="physicalDamageDoneToChampions"
457    )
458    physical_damage_taken: int = Field(..., alias="physicalDamageTaken")
459    total_damage_done: int = Field(..., alias="totalDamageDone")
460    total_damage_done_to_champions: int = Field(..., alias="totalDamageDoneToChampions")
461    total_damage_taken: int = Field(..., alias="totalDamageTaken")
462    true_damage_done: int = Field(..., alias="trueDamageDone")
463    true_damage_done_to_champions: int = Field(..., alias="trueDamageDoneToChampions")
464    true_damage_taken: int = Field(..., alias="trueDamageTaken")
465
466
467class PositionDto(BaseModel):
468    """@public"""
469
470    x: int
471    y: int
472
473
474class MatchTimelineVictimDamage(BaseModel):
475    """@public"""
476
477    basic: bool
478    magic_damage: int = Field(..., alias="magicDamage")
479    name: str
480    participant_id: int = Field(..., alias="participantId")
481    physical_damage: int = Field(..., alias="physicalDamage")
482    spell_name: str = Field(..., alias="spellName")
483    spell_slot: int = Field(..., alias="spellSlot")
484    true_damage: int = Field(..., alias="trueDamage")
485    type: str
486
487
488class FeatDto(BaseModel):
489    """@public"""
490
491    feat_state: Optional[int] = Field(None, alias="featState")
492
493
494class PerkStyleDto(BaseModel):
495    """@public"""
496
497    description: str
498    selections: List[PerkStyleSelectionDto]
499    style: int
500
501
502class ObjectivesDto(BaseModel):
503    """@public"""
504
505    baron: ObjectiveDto
506    champion: ObjectiveDto
507    dragon: ObjectiveDto
508    horde: Optional[ObjectiveDto] = None
509    inhibitor: ObjectiveDto
510    rift_herald: ObjectiveDto = Field(..., alias="riftHerald")
511    tower: ObjectiveDto
512    atakhan: Optional[ObjectiveDto] = None
513
514
515class EventsTimeLineDto(BaseModel):
516    """@public"""
517
518    timestamp: int
519    real_timestamp: Optional[int] = Field(None, alias="realTimestamp")
520    type: str
521    item_id: Optional[int] = Field(None, alias="itemId")
522    participant_id: Optional[int] = Field(None, alias="participantId")
523    level_up_type: Optional[str] = Field(None, alias="levelUpType")
524    skill_slot: Optional[int] = Field(None, alias="skillSlot")
525    creator_id: Optional[int] = Field(None, alias="creatorId")
526    ward_type: Optional[str] = Field(None, alias="wardType")
527    level: Optional[int] = None
528    assisting_participant_ids: Optional[List[int]] = Field(
529        None, alias="assistingParticipantIds"
530    )
531    bounty: Optional[int] = None
532    kill_streak_length: Optional[int] = Field(None, alias="killStreakLength")
533    killer_id: Optional[int] = Field(None, alias="killerId")
534    position: Optional[PositionDto] = None
535    victim_damage_dealt: Optional[List[MatchTimelineVictimDamage]] = Field(
536        None, alias="victimDamageDealt"
537    )
538    victim_damage_received: Optional[List[MatchTimelineVictimDamage]] = Field(
539        None, alias="victimDamageReceived"
540    )
541    victim_id: Optional[int] = Field(None, alias="victimId")
542    kill_type: Optional[str] = Field(None, alias="killType")
543    lane_type: Optional[str] = Field(None, alias="laneType")
544    team_id: Optional[int] = Field(None, alias="teamId")
545    multi_kill_length: Optional[int] = Field(None, alias="multiKillLength")
546    killer_team_id: Optional[int] = Field(None, alias="killerTeamId")
547    monster_type: Optional[str] = Field(None, alias="monsterType")
548    monster_sub_type: Optional[str] = Field(None, alias="monsterSubType")
549    building_type: Optional[str] = Field(None, alias="buildingType")
550    tower_type: Optional[str] = Field(None, alias="towerType")
551    after_id: Optional[int] = Field(None, alias="afterId")
552    before_id: Optional[int] = Field(None, alias="beforeId")
553    gold_gain: Optional[int] = Field(None, alias="goldGain")
554    game_id: Optional[int] = Field(None, alias="gameId")
555    winning_team: Optional[int] = Field(None, alias="winningTeam")
556    transform_type: Optional[str] = Field(None, alias="transformType")
557    name: Optional[str] = None
558    shutdown_bounty: Optional[int] = Field(None, alias="shutdownBounty")
559    actual_start_time: Optional[int] = Field(None, alias="actualStartTime")
560    feat_type: Optional[int] = Field(None, alias="featType")
561    feat_value: Optional[int] = Field(None, alias="featValue")
562
563
564class ParticipantFrameDto(BaseModel):
565    """@public"""
566
567    champion_stats: ChampionStatsDto = Field(..., alias="championStats")
568    current_gold: int = Field(..., alias="currentGold")
569    damage_stats: DamageStatsDto = Field(..., alias="damageStats")
570    gold_per_second: int = Field(..., alias="goldPerSecond")
571    jungle_minions_killed: int = Field(..., alias="jungleMinionsKilled")
572    level: int
573    minions_killed: int = Field(..., alias="minionsKilled")
574    participant_id: int = Field(..., alias="participantId")
575    position: PositionDto
576    time_enemy_spent_controlled: int = Field(..., alias="timeEnemySpentControlled")
577    total_gold: int = Field(..., alias="totalGold")
578    xp: int
579
580
581class FeatsDto(BaseModel):
582    """@public"""
583
584    epic_monster_kill: Optional[FeatDto] = Field(None, alias="EPIC_MONSTER_KILL")
585    first_blood: Optional[FeatDto] = Field(None, alias="FIRST_BLOOD")
586    first_turret: Optional[FeatDto] = Field(None, alias="FIRST_TURRET")
587
588
589class PerksDto(BaseModel):
590    """@public"""
591
592    stat_perks: PerkStatsDto = Field(..., alias="statPerks")
593    styles: List[PerkStyleDto]
594
595
596class TeamDto(BaseModel):
597    """@public"""
598
599    bans: List[BanDto]
600    objectives: ObjectivesDto
601    team_id: int = Field(..., alias="teamId")
602    win: bool
603    feats: Optional[FeatsDto] = None
604
605
606class FramesTimeLineDto(BaseModel):
607    """@public"""
608
609    events: List[EventsTimeLineDto]
610    participant_frames: Optional[Dict[str, ParticipantFrameDto]] = Field(
611        None, alias="participantFrames"
612    )
613    timestamp: int
614
615
616class ParticipantFramesDto(BaseModel):
617    """@public"""
618
619    field_1_9: ParticipantFrameDto = Field(
620        ..., alias="1-9", description="Key value mapping for each participant"
621    )
622
623
624class ParticipantDto(BaseModel):
625    """@public"""
626
627    all_in_pings: Optional[int] = Field(
628        None, alias="allInPings", description="Yellow crossed swords"
629    )
630    assist_me_pings: Optional[int] = Field(
631        None, alias="assistMePings", description="Green flag"
632    )
633    assists: int
634    baron_kills: int = Field(..., alias="baronKills")
635    bounty_level: Optional[int] = Field(None, alias="bountyLevel")
636    champ_experience: int = Field(..., alias="champExperience")
637    champ_level: int = Field(..., alias="champLevel")
638    champion_id: int = Field(
639        ...,
640        alias="championId",
641        description="Prior to patch 11.4, on Feb 18th, 2021, this field returned invalid championIds. We recommend determining the champion based on the championName field for matches played prior to patch 11.4.",
642    )
643    champion_name: str = Field(..., alias="championName")
644    command_pings: Optional[int] = Field(
645        None, alias="commandPings", description="Blue generic ping (ALT+click)"
646    )
647    champion_transform: int = Field(
648        ...,
649        alias="championTransform",
650        description="This field is currently only utilized for Kayn's transformations. (Legal values: 0 - None, 1 - Slayer, 2 - Assassin)",
651    )
652    consumables_purchased: int = Field(..., alias="consumablesPurchased")
653    challenges: Optional[ChallengesDto] = None
654    damage_dealt_to_buildings: Optional[int] = Field(
655        None, alias="damageDealtToBuildings"
656    )
657    damage_dealt_to_objectives: int = Field(..., alias="damageDealtToObjectives")
658    damage_dealt_to_turrets: int = Field(..., alias="damageDealtToTurrets")
659    damage_self_mitigated: int = Field(..., alias="damageSelfMitigated")
660    deaths: int
661    detector_wards_placed: int = Field(..., alias="detectorWardsPlaced")
662    double_kills: int = Field(..., alias="doubleKills")
663    dragon_kills: int = Field(..., alias="dragonKills")
664    eligible_for_progression: Optional[bool] = Field(
665        None, alias="eligibleForProgression"
666    )
667    enemy_missing_pings: Optional[int] = Field(
668        None, alias="enemyMissingPings", description="Yellow questionmark"
669    )
670    enemy_vision_pings: Optional[int] = Field(
671        None, alias="enemyVisionPings", description="Red eyeball"
672    )
673    first_blood_assist: bool = Field(..., alias="firstBloodAssist")
674    first_blood_kill: bool = Field(..., alias="firstBloodKill")
675    first_tower_assist: bool = Field(..., alias="firstTowerAssist")
676    first_tower_kill: bool = Field(..., alias="firstTowerKill")
677    game_ended_in_early_surrender: bool = Field(
678        ...,
679        alias="gameEndedInEarlySurrender",
680        description="This is an offshoot of the OneStone challenge. The code checks if a spell with the same instance ID does the final point of damage to at least 2 Champions. It doesn't matter if they're enemies, but you cannot hurt your friends.",
681    )
682    game_ended_in_surrender: bool = Field(..., alias="gameEndedInSurrender")
683    hold_pings: Optional[int] = Field(None, alias="holdPings")
684    get_back_pings: Optional[int] = Field(
685        None, alias="getBackPings", description="Yellow circle with horizontal line"
686    )
687    gold_earned: int = Field(..., alias="goldEarned")
688    gold_spent: int = Field(..., alias="goldSpent")
689    individual_position: str = Field(
690        ...,
691        alias="individualPosition",
692        description="Both individualPosition and teamPosition are computed by the game server and are different versions of the most likely position played by a player. The individualPosition is the best guess for which position the player actually played in isolation of anything else. The teamPosition is the best guess for which position the player actually played if we add the constraint that each team must have one top player, one jungle, one middle, etc. Generally the recommendation is to use the teamPosition field over the individualPosition field.",
693    )
694    inhibitor_kills: int = Field(..., alias="inhibitorKills")
695    inhibitor_takedowns: Optional[int] = Field(None, alias="inhibitorTakedowns")
696    inhibitors_lost: Optional[int] = Field(None, alias="inhibitorsLost")
697    item0: int
698    item1: int
699    item2: int
700    item3: int
701    item4: int
702    item5: int
703    item6: int
704    items_purchased: int = Field(..., alias="itemsPurchased")
705    killing_sprees: int = Field(..., alias="killingSprees")
706    kills: int
707    lane: str
708    largest_critical_strike: int = Field(..., alias="largestCriticalStrike")
709    largest_killing_spree: int = Field(..., alias="largestKillingSpree")
710    largest_multi_kill: int = Field(..., alias="largestMultiKill")
711    longest_time_spent_living: int = Field(..., alias="longestTimeSpentLiving")
712    magic_damage_dealt: int = Field(..., alias="magicDamageDealt")
713    magic_damage_dealt_to_champions: int = Field(
714        ..., alias="magicDamageDealtToChampions"
715    )
716    magic_damage_taken: int = Field(..., alias="magicDamageTaken")
717    missions: Optional[MissionsDto] = None
718    neutral_minions_killed: int = Field(
719        ...,
720        alias="neutralMinionsKilled",
721        description="neutralMinionsKilled = mNeutralMinionsKilled, which is incremented on kills of kPet and kJungleMonster",
722    )
723    need_vision_pings: Optional[int] = Field(
724        None, alias="needVisionPings", description="Green ward"
725    )
726    nexus_kills: int = Field(..., alias="nexusKills")
727    nexus_takedowns: Optional[int] = Field(None, alias="nexusTakedowns")
728    nexus_lost: Optional[int] = Field(None, alias="nexusLost")
729    objectives_stolen: int = Field(..., alias="objectivesStolen")
730    objectives_stolen_assists: int = Field(..., alias="objectivesStolenAssists")
731    on_my_way_pings: Optional[int] = Field(
732        None, alias="onMyWayPings", description="Blue arrow pointing at ground"
733    )
734    participant_id: int = Field(..., alias="participantId")
735    player_score0: Optional[float] = Field(None, alias="playerScore0")
736    player_score1: Optional[float] = Field(None, alias="playerScore1")
737    player_score2: Optional[float] = Field(None, alias="playerScore2")
738    player_score3: Optional[float] = Field(None, alias="playerScore3")
739    player_score4: Optional[float] = Field(None, alias="playerScore4")
740    player_score5: Optional[float] = Field(None, alias="playerScore5")
741    player_score6: Optional[float] = Field(None, alias="playerScore6")
742    player_score7: Optional[float] = Field(None, alias="playerScore7")
743    player_score8: Optional[float] = Field(None, alias="playerScore8")
744    player_score9: Optional[float] = Field(None, alias="playerScore9")
745    player_score10: Optional[float] = Field(None, alias="playerScore10")
746    player_score11: Optional[float] = Field(None, alias="playerScore11")
747    penta_kills: int = Field(..., alias="pentaKills")
748    perks: PerksDto
749    physical_damage_dealt: int = Field(..., alias="physicalDamageDealt")
750    physical_damage_dealt_to_champions: int = Field(
751        ..., alias="physicalDamageDealtToChampions"
752    )
753    physical_damage_taken: int = Field(..., alias="physicalDamageTaken")
754    placement: Optional[int] = None
755    player_augment1: Optional[int] = Field(None, alias="playerAugment1")
756    player_augment2: Optional[int] = Field(None, alias="playerAugment2")
757    player_augment3: Optional[int] = Field(None, alias="playerAugment3")
758    player_augment4: Optional[int] = Field(None, alias="playerAugment4")
759    player_subteam_id: Optional[int] = Field(None, alias="playerSubteamId")
760    push_pings: Optional[int] = Field(
761        None, alias="pushPings", description="Green minion"
762    )
763    profile_icon: int = Field(..., alias="profileIcon")
764    puuid: str
765    quadra_kills: int = Field(..., alias="quadraKills")
766    riot_id_game_name: Optional[str] = Field(None, alias="riotIdGameName")
767    riot_id_tagline: Optional[str] = Field(None, alias="riotIdTagline")
768    role: str
769    sight_wards_bought_in_game: int = Field(..., alias="sightWardsBoughtInGame")
770    spell1_casts: int = Field(..., alias="spell1Casts")
771    spell2_casts: int = Field(..., alias="spell2Casts")
772    spell3_casts: int = Field(..., alias="spell3Casts")
773    spell4_casts: int = Field(..., alias="spell4Casts")
774    subteam_placement: Optional[int] = Field(None, alias="subteamPlacement")
775    summoner1_casts: int = Field(..., alias="summoner1Casts")
776    summoner1_id: int = Field(..., alias="summoner1Id")
777    summoner2_casts: int = Field(..., alias="summoner2Casts")
778    summoner2_id: int = Field(..., alias="summoner2Id")
779    summoner_id: str = Field(..., alias="summonerId")
780    summoner_level: int = Field(..., alias="summonerLevel")
781    summoner_name: str = Field(..., alias="summonerName")
782    team_early_surrendered: bool = Field(..., alias="teamEarlySurrendered")
783    team_id: int = Field(..., alias="teamId")
784    team_position: str = Field(
785        ...,
786        alias="teamPosition",
787        description="Both individualPosition and teamPosition are computed by the game server and are different versions of the most likely position played by a player. The individualPosition is the best guess for which position the player actually played in isolation of anything else. The teamPosition is the best guess for which position the player actually played if we add the constraint that each team must have one top player, one jungle, one middle, etc. Generally the recommendation is to use the teamPosition field over the individualPosition field.",
788    )
789    time_c_cing_others: int = Field(..., alias="timeCCingOthers")
790    time_played: int = Field(..., alias="timePlayed")
791    total_ally_jungle_minions_killed: Optional[int] = Field(
792        None, alias="totalAllyJungleMinionsKilled"
793    )
794    total_damage_dealt: int = Field(..., alias="totalDamageDealt")
795    total_damage_dealt_to_champions: int = Field(
796        ..., alias="totalDamageDealtToChampions"
797    )
798    total_damage_shielded_on_teammates: int = Field(
799        ..., alias="totalDamageShieldedOnTeammates"
800    )
801    total_damage_taken: int = Field(..., alias="totalDamageTaken")
802    total_enemy_jungle_minions_killed: Optional[int] = Field(
803        None, alias="totalEnemyJungleMinionsKilled"
804    )
805    total_heal: int = Field(
806        ...,
807        alias="totalHeal",
808        description="Whenever positive health is applied (which translates to all heals in the game but not things like regeneration), totalHeal is incremented by the amount of health received. This includes healing enemies, jungle monsters, yourself, etc",
809    )
810    total_heals_on_teammates: int = Field(
811        ...,
812        alias="totalHealsOnTeammates",
813        description="Whenever positive health is applied (which translates to all heals in the game but not things like regeneration), totalHealsOnTeammates is incremented by the amount of health received.  This is post modified, so if you heal someone missing 5 health for 100 you will get +5 totalHealsOnTeammates",
814    )
815    total_minions_killed: int = Field(
816        ...,
817        alias="totalMinionsKilled",
818        description="totalMillionsKilled = mMinionsKilled, which is only incremented on kills of kTeamMinion, kMeleeLaneMinion, kSuperLaneMinion, kRangedLaneMinion and kSiegeLaneMinion",
819    )
820    total_time_cc_dealt: int = Field(..., alias="totalTimeCCDealt")
821    total_time_spent_dead: int = Field(..., alias="totalTimeSpentDead")
822    total_units_healed: int = Field(..., alias="totalUnitsHealed")
823    triple_kills: int = Field(..., alias="tripleKills")
824    true_damage_dealt: int = Field(..., alias="trueDamageDealt")
825    true_damage_dealt_to_champions: int = Field(..., alias="trueDamageDealtToChampions")
826    true_damage_taken: int = Field(..., alias="trueDamageTaken")
827    turret_kills: int = Field(..., alias="turretKills")
828    turret_takedowns: Optional[int] = Field(None, alias="turretTakedowns")
829    turrets_lost: Optional[int] = Field(None, alias="turretsLost")
830    unreal_kills: int = Field(..., alias="unrealKills")
831    vision_score: int = Field(..., alias="visionScore")
832    vision_cleared_pings: Optional[int] = Field(None, alias="visionClearedPings")
833    vision_wards_bought_in_game: int = Field(..., alias="visionWardsBoughtInGame")
834    wards_killed: int = Field(..., alias="wardsKilled")
835    wards_placed: int = Field(..., alias="wardsPlaced")
836    win: bool
837    bait_pings: Optional[int] = Field(None, alias="baitPings")
838    danger_pings: Optional[int] = Field(
839        None,
840        alias="dangerPings",
841        description="https://github.com/RiotGames/developer-relations/issues/870",
842    )
843    basic_pings: Optional[int] = Field(
844        None,
845        alias="basicPings",
846        description="https://github.com/RiotGames/developer-relations/issues/814",
847    )
848    player_augment5: Optional[int] = Field(None, alias="playerAugment5")
849    player_augment6: Optional[int] = Field(None, alias="playerAugment6")
850    riot_id_name: Optional[str] = Field(
851        None,
852        alias="riotIdName",
853        description="Deprecated, use `riotIdGameName`. This field name was briefly used instead of `riotIdGameName`, prior to patch 14.5.",
854    )
855    retreat_pings: Optional[int] = Field(
856        None,
857        alias="retreatPings",
858        description="https://github.com/RiotGames/developer-relations/issues/814",
859    )
860    champion_skin_id: Optional[int] = Field(None, alias="championSkinId")
861
862
863class InfoTimeLineDto(BaseModel):
864    """@public"""
865
866    end_of_game_result: Optional[str] = Field(
867        None,
868        alias="endOfGameResult",
869        description="Refer to indicate if the game ended in termination.",
870    )
871    frame_interval: int = Field(..., alias="frameInterval")
872    game_id: Optional[int] = Field(None, alias="gameId")
873    participants: Optional[List[ParticipantTimeLineDto]] = None
874    frames: List[FramesTimeLineDto]
875
876
877class InfoDto(BaseModel):
878    """@public"""
879
880    end_of_game_result: Optional[str] = Field(
881        None,
882        alias="endOfGameResult",
883        description="Refer to indicate if the game ended in termination.",
884    )
885    game_creation: int = Field(
886        ...,
887        alias="gameCreation",
888        description="Unix timestamp for when the game is created on the game server (i.e., the loading screen).",
889    )
890    game_duration: int = Field(
891        ...,
892        alias="gameDuration",
893        description="Prior to patch 11.20, this field returns the game length in milliseconds calculated from gameEndTimestamp - gameStartTimestamp. Post patch 11.20, this field returns the max timePlayed of any participant in the game in seconds, which makes the behavior of this field consistent with that of match-v4. The best way to handling the change in this field is to treat the value as milliseconds if the gameEndTimestamp field isn't in the response and to treat the value as seconds if gameEndTimestamp is in the response.",
894    )
895    game_end_timestamp: Optional[int] = Field(
896        None,
897        alias="gameEndTimestamp",
898        description='Unix timestamp for when match ends on the game server. This timestamp can occasionally be significantly longer than when the match "ends". The most reliable way of determining the timestamp for the end of the match would be to add the max time played of any participant to the gameStartTimestamp. This field was added to match-v5 in patch 11.20 on Oct 5th, 2021.',
899    )
900    game_id: int = Field(..., alias="gameId")
901    game_mode: str = Field(
902        ..., alias="gameMode", description="Refer to the Game Constants documentation."
903    )
904    game_name: str = Field(..., alias="gameName")
905    game_start_timestamp: int = Field(
906        ...,
907        alias="gameStartTimestamp",
908        description="Unix timestamp for when match starts on the game server.",
909    )
910    game_type: str = Field(..., alias="gameType")
911    game_version: str = Field(
912        ...,
913        alias="gameVersion",
914        description="The first two parts can be used to determine the patch a game was played on.",
915    )
916    map_id: int = Field(
917        ..., alias="mapId", description="Refer to the Game Constants documentation."
918    )
919    participants: List[ParticipantDto]
920    platform_id: str = Field(
921        ..., alias="platformId", description="Platform where the match was played."
922    )
923    queue_id: int = Field(
924        ..., alias="queueId", description="Refer to the Game Constants documentation."
925    )
926    teams: List[TeamDto]
927    tournament_code: Optional[str] = Field(
928        None,
929        alias="tournamentCode",
930        description="Tournament code used to generate the match. This field was added to match-v5 in patch 11.13 on June 23rd, 2021.",
931    )
932    game_mode_mutators: Optional[List[str]] = Field(None, alias="gameModeMutators")
933
934
935class TimelineDto(BaseModel):
936    """@public"""
937
938    metadata: MetadataTimeLineDto = Field(..., description="Match metadata.")
939    info: InfoTimeLineDto = Field(..., description="Match info.")
940
941
942class MatchDto(BaseModel):
943    """@public"""
944
945    metadata: MetadataDto = Field(..., description="Match metadata.")
946    info: InfoDto = Field(..., description="Match info.")
class MetadataDto(pydantic.main.BaseModel):
14class MetadataDto(BaseModel):
15    """@public"""
16
17    data_version: str = Field(
18        ..., alias="dataVersion", description="Match data version."
19    )
20    match_id: str = Field(..., alias="matchId", description="Match id.")
21    participants: List[str] = Field(..., description="A list of participant PUUIDs.")

data_version: str
match_id: str
participants: List[str]
model_config: ClassVar[pydantic.config.ConfigDict] = {}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

class FasterSupportQuestCompletion(enum.Enum):
24class FasterSupportQuestCompletion(Enum):
25    """@public"""
26
27    integer_0 = 0
28    integer_1 = 1

class HadAfkTeammate(enum.Enum):
31class HadAfkTeammate(Enum):
32    """@public"""
33
34    integer_0 = 0
35    integer_1 = 1

integer_0 = <HadAfkTeammate.integer_0: 0>
integer_1 = <HadAfkTeammate.integer_1: 1>
class HighestCrowdControlScore(enum.Enum):
38class HighestCrowdControlScore(Enum):
39    """@public"""
40
41    integer_0 = 0
42    integer_1 = 1

class HighestWardKills(enum.Enum):
45class HighestWardKills(Enum):
46    """@public"""
47
48    integer_0 = 0
49    integer_1 = 1

integer_0 = <HighestWardKills.integer_0: 0>
integer_1 = <HighestWardKills.integer_1: 1>
class LaningPhaseGoldExpAdvantage(enum.Enum):
52class LaningPhaseGoldExpAdvantage(Enum):
53    """@public"""
54
55    integer_0 = 0
56    integer_1 = 1

class PlayedChampSelectPosition(enum.Enum):
59class PlayedChampSelectPosition(Enum):
60    """@public"""
61
62    integer_0 = 0
63    integer_1 = 1

class ChallengesDto(pydantic.main.BaseModel):
 66class ChallengesDto(BaseModel):
 67    """@public"""
 68
 69    field_12_assist_streak_count: Optional[int] = Field(
 70        None, alias="12AssistStreakCount"
 71    )
 72    baron_buff_gold_advantage_over_threshold: Optional[int] = Field(
 73        None, alias="baronBuffGoldAdvantageOverThreshold"
 74    )
 75    control_ward_time_coverage_in_river_or_enemy_half: Optional[float] = Field(
 76        None, alias="controlWardTimeCoverageInRiverOrEnemyHalf"
 77    )
 78    earliest_baron: Optional[float] = Field(None, alias="earliestBaron")
 79    earliest_dragon_takedown: Optional[float] = Field(
 80        None, alias="earliestDragonTakedown"
 81    )
 82    earliest_elder_dragon: Optional[float] = Field(None, alias="earliestElderDragon")
 83    early_laning_phase_gold_exp_advantage: Optional[float] = Field(
 84        None, alias="earlyLaningPhaseGoldExpAdvantage"
 85    )
 86    faster_support_quest_completion: Optional[FasterSupportQuestCompletion] = Field(
 87        None, alias="fasterSupportQuestCompletion"
 88    )
 89    fastest_legendary: Optional[float] = Field(None, alias="fastestLegendary")
 90    had_afk_teammate: Optional[HadAfkTeammate] = Field(None, alias="hadAfkTeammate")
 91    highest_champion_damage: Optional[int] = Field(None, alias="highestChampionDamage")
 92    highest_crowd_control_score: Optional[HighestCrowdControlScore] = Field(
 93        None, alias="highestCrowdControlScore"
 94    )
 95    highest_ward_kills: Optional[HighestWardKills] = Field(
 96        None, alias="highestWardKills"
 97    )
 98    jungler_kills_early_jungle: Optional[int] = Field(
 99        None, alias="junglerKillsEarlyJungle"
100    )
101    kills_on_laners_early_jungle_as_jungler: Optional[int] = Field(
102        None, alias="killsOnLanersEarlyJungleAsJungler"
103    )
104    laning_phase_gold_exp_advantage: Optional[LaningPhaseGoldExpAdvantage] = Field(
105        None, alias="laningPhaseGoldExpAdvantage"
106    )
107    legendary_count: Optional[int] = Field(None, alias="legendaryCount")
108    max_cs_advantage_on_lane_opponent: Optional[float] = Field(
109        None, alias="maxCsAdvantageOnLaneOpponent"
110    )
111    max_level_lead_lane_opponent: Optional[int] = Field(
112        None, alias="maxLevelLeadLaneOpponent"
113    )
114    most_wards_destroyed_one_sweeper: Optional[int] = Field(
115        None, alias="mostWardsDestroyedOneSweeper"
116    )
117    mythic_item_used: Optional[int] = Field(None, alias="mythicItemUsed")
118    played_champ_select_position: Optional[PlayedChampSelectPosition] = Field(
119        None, alias="playedChampSelectPosition"
120    )
121    solo_turrets_lategame: Optional[int] = Field(None, alias="soloTurretsLategame")
122    takedowns_first25_minutes: Optional[int] = Field(
123        None, alias="takedownsFirst25Minutes"
124    )
125    teleport_takedowns: Optional[int] = Field(None, alias="teleportTakedowns")
126    third_inhibitor_destroyed_time: Optional[float] = Field(
127        None, alias="thirdInhibitorDestroyedTime"
128    )
129    three_wards_one_sweeper_count: Optional[int] = Field(
130        None, alias="threeWardsOneSweeperCount"
131    )
132    vision_score_advantage_lane_opponent: Optional[float] = Field(
133        None, alias="visionScoreAdvantageLaneOpponent"
134    )
135    infernal_scale_pickup: Optional[int] = Field(None, alias="InfernalScalePickup")
136    fist_bump_participation: Optional[int] = Field(None, alias="fistBumpParticipation")
137    void_monster_kill: Optional[int] = Field(None, alias="voidMonsterKill")
138    ability_uses: Optional[int] = Field(None, alias="abilityUses")
139    aces_before15_minutes: Optional[int] = Field(None, alias="acesBefore15Minutes")
140    allied_jungle_monster_kills: Optional[float] = Field(
141        None, alias="alliedJungleMonsterKills"
142    )
143    baron_takedowns: Optional[int] = Field(None, alias="baronTakedowns")
144    blast_cone_opposite_opponent_count: Optional[int] = Field(
145        None, alias="blastConeOppositeOpponentCount"
146    )
147    bounty_gold: Optional[float] = Field(None, alias="bountyGold")
148    buffs_stolen: Optional[int] = Field(None, alias="buffsStolen")
149    complete_support_quest_in_time: Optional[int] = Field(
150        None, alias="completeSupportQuestInTime"
151    )
152    control_wards_placed: Optional[int] = Field(None, alias="controlWardsPlaced")
153    damage_per_minute: Optional[float] = Field(None, alias="damagePerMinute")
154    damage_taken_on_team_percentage: Optional[float] = Field(
155        None, alias="damageTakenOnTeamPercentage"
156    )
157    danced_with_rift_herald: Optional[int] = Field(None, alias="dancedWithRiftHerald")
158    deaths_by_enemy_champs: Optional[int] = Field(None, alias="deathsByEnemyChamps")
159    dodge_skill_shots_small_window: Optional[int] = Field(
160        None, alias="dodgeSkillShotsSmallWindow"
161    )
162    double_aces: Optional[int] = Field(None, alias="doubleAces")
163    dragon_takedowns: Optional[int] = Field(None, alias="dragonTakedowns")
164    legendary_item_used: Optional[List[int]] = Field(None, alias="legendaryItemUsed")
165    effective_heal_and_shielding: Optional[float] = Field(
166        None, alias="effectiveHealAndShielding"
167    )
168    elder_dragon_kills_with_opposing_soul: Optional[int] = Field(
169        None, alias="elderDragonKillsWithOpposingSoul"
170    )
171    elder_dragon_multikills: Optional[int] = Field(None, alias="elderDragonMultikills")
172    enemy_champion_immobilizations: Optional[int] = Field(
173        None, alias="enemyChampionImmobilizations"
174    )
175    enemy_jungle_monster_kills: Optional[float] = Field(
176        None, alias="enemyJungleMonsterKills"
177    )
178    epic_monster_kills_near_enemy_jungler: Optional[int] = Field(
179        None, alias="epicMonsterKillsNearEnemyJungler"
180    )
181    epic_monster_kills_within30_seconds_of_spawn: Optional[int] = Field(
182        None, alias="epicMonsterKillsWithin30SecondsOfSpawn"
183    )
184    epic_monster_steals: Optional[int] = Field(None, alias="epicMonsterSteals")
185    epic_monster_stolen_without_smite: Optional[int] = Field(
186        None, alias="epicMonsterStolenWithoutSmite"
187    )
188    first_turret_killed: Optional[float] = Field(None, alias="firstTurretKilled")
189    first_turret_killed_time: Optional[float] = Field(
190        None, alias="firstTurretKilledTime"
191    )
192    flawless_aces: Optional[int] = Field(None, alias="flawlessAces")
193    full_team_takedown: Optional[int] = Field(None, alias="fullTeamTakedown")
194    game_length: Optional[float] = Field(None, alias="gameLength")
195    get_takedowns_in_all_lanes_early_jungle_as_laner: Optional[int] = Field(
196        None, alias="getTakedownsInAllLanesEarlyJungleAsLaner"
197    )
198    gold_per_minute: Optional[float] = Field(None, alias="goldPerMinute")
199    had_open_nexus: Optional[int] = Field(None, alias="hadOpenNexus")
200    immobilize_and_kill_with_ally: Optional[int] = Field(
201        None, alias="immobilizeAndKillWithAlly"
202    )
203    initial_buff_count: Optional[int] = Field(None, alias="initialBuffCount")
204    initial_crab_count: Optional[int] = Field(None, alias="initialCrabCount")
205    jungle_cs_before10_minutes: Optional[float] = Field(
206        None, alias="jungleCsBefore10Minutes"
207    )
208    jungler_takedowns_near_damaged_epic_monster: Optional[int] = Field(
209        None, alias="junglerTakedownsNearDamagedEpicMonster"
210    )
211    kda: Optional[float] = None
212    kill_after_hidden_with_ally: Optional[int] = Field(
213        None, alias="killAfterHiddenWithAlly"
214    )
215    killed_champ_took_full_team_damage_survived: Optional[int] = Field(
216        None, alias="killedChampTookFullTeamDamageSurvived"
217    )
218    killing_sprees: Optional[int] = Field(None, alias="killingSprees")
219    kill_participation: Optional[float] = Field(None, alias="killParticipation")
220    kills_near_enemy_turret: Optional[int] = Field(None, alias="killsNearEnemyTurret")
221    kills_on_other_lanes_early_jungle_as_laner: Optional[int] = Field(
222        None, alias="killsOnOtherLanesEarlyJungleAsLaner"
223    )
224    kills_on_recently_healed_by_aram_pack: Optional[int] = Field(
225        None, alias="killsOnRecentlyHealedByAramPack"
226    )
227    kills_under_own_turret: Optional[int] = Field(None, alias="killsUnderOwnTurret")
228    kills_with_help_from_epic_monster: Optional[int] = Field(
229        None, alias="killsWithHelpFromEpicMonster"
230    )
231    knock_enemy_into_team_and_kill: Optional[int] = Field(
232        None, alias="knockEnemyIntoTeamAndKill"
233    )
234    k_turrets_destroyed_before_plates_fall: Optional[int] = Field(
235        None, alias="kTurretsDestroyedBeforePlatesFall"
236    )
237    land_skill_shots_early_game: Optional[int] = Field(
238        None, alias="landSkillShotsEarlyGame"
239    )
240    lane_minions_first10_minutes: Optional[int] = Field(
241        None, alias="laneMinionsFirst10Minutes"
242    )
243    lost_an_inhibitor: Optional[int] = Field(None, alias="lostAnInhibitor")
244    max_kill_deficit: Optional[int] = Field(None, alias="maxKillDeficit")
245    mejais_full_stack_in_time: Optional[int] = Field(
246        None, alias="mejaisFullStackInTime"
247    )
248    more_enemy_jungle_than_opponent: Optional[float] = Field(
249        None, alias="moreEnemyJungleThanOpponent"
250    )
251    multi_kill_one_spell: Optional[int] = Field(
252        None,
253        alias="multiKillOneSpell",
254        description="This is an offshoot of the OneStone challenge. The code checks if a spell with the same instance ID does the final point of damage to at least 2 Champions. It doesn't matter if they're enemies, but you cannot hurt your friends.",
255    )
256    multikills: Optional[int] = None
257    multikills_after_aggressive_flash: Optional[int] = Field(
258        None, alias="multikillsAfterAggressiveFlash"
259    )
260    multi_turret_rift_herald_count: Optional[int] = Field(
261        None, alias="multiTurretRiftHeraldCount"
262    )
263    outer_turret_executes_before10_minutes: Optional[int] = Field(
264        None, alias="outerTurretExecutesBefore10Minutes"
265    )
266    outnumbered_kills: Optional[int] = Field(None, alias="outnumberedKills")
267    outnumbered_nexus_kill: Optional[int] = Field(None, alias="outnumberedNexusKill")
268    perfect_dragon_souls_taken: Optional[int] = Field(
269        None, alias="perfectDragonSoulsTaken"
270    )
271    perfect_game: Optional[int] = Field(None, alias="perfectGame")
272    pick_kill_with_ally: Optional[int] = Field(None, alias="pickKillWithAlly")
273    poro_explosions: Optional[int] = Field(None, alias="poroExplosions")
274    quick_cleanse: Optional[int] = Field(None, alias="quickCleanse")
275    quick_first_turret: Optional[int] = Field(None, alias="quickFirstTurret")
276    quick_solo_kills: Optional[int] = Field(None, alias="quickSoloKills")
277    rift_herald_takedowns: Optional[int] = Field(None, alias="riftHeraldTakedowns")
278    save_ally_from_death: Optional[int] = Field(None, alias="saveAllyFromDeath")
279    scuttle_crab_kills: Optional[int] = Field(None, alias="scuttleCrabKills")
280    shortest_time_to_ace_from_first_takedown: Optional[float] = Field(
281        None, alias="shortestTimeToAceFromFirstTakedown"
282    )
283    skillshots_dodged: Optional[int] = Field(None, alias="skillshotsDodged")
284    skillshots_hit: Optional[int] = Field(None, alias="skillshotsHit")
285    snowballs_hit: Optional[int] = Field(None, alias="snowballsHit")
286    solo_baron_kills: Optional[int] = Field(None, alias="soloBaronKills")
287    swarm_defeat_aatrox: Optional[int] = Field(None, alias="SWARM_DefeatAatrox")
288    swarm_defeat_briar: Optional[int] = Field(None, alias="SWARM_DefeatBriar")
289    swarm_defeat_mini_bosses: Optional[int] = Field(
290        None, alias="SWARM_DefeatMiniBosses"
291    )
292    swarm_evolve_weapon: Optional[int] = Field(None, alias="SWARM_EvolveWeapon")
293    swarm_have3_passives: Optional[int] = Field(None, alias="SWARM_Have3Passives")
294    swarm_kill_enemy: Optional[int] = Field(None, alias="SWARM_KillEnemy")
295    swarm_pickup_gold: Optional[float] = Field(None, alias="SWARM_PickupGold")
296    swarm_reach_level50: Optional[int] = Field(None, alias="SWARM_ReachLevel50")
297    swarm_survive15_min: Optional[int] = Field(None, alias="SWARM_Survive15Min")
298    swarm_win_with5_evolved_weapons: Optional[int] = Field(
299        None, alias="SWARM_WinWith5EvolvedWeapons"
300    )
301    solo_kills: Optional[int] = Field(None, alias="soloKills")
302    stealth_wards_placed: Optional[int] = Field(None, alias="stealthWardsPlaced")
303    survived_single_digit_hp_count: Optional[int] = Field(
304        None, alias="survivedSingleDigitHpCount"
305    )
306    survived_three_immobilizes_in_fight: Optional[int] = Field(
307        None, alias="survivedThreeImmobilizesInFight"
308    )
309    takedown_on_first_turret: Optional[int] = Field(None, alias="takedownOnFirstTurret")
310    takedowns: Optional[int] = None
311    takedowns_after_gaining_level_advantage: Optional[int] = Field(
312        None, alias="takedownsAfterGainingLevelAdvantage"
313    )
314    takedowns_before_jungle_minion_spawn: Optional[int] = Field(
315        None, alias="takedownsBeforeJungleMinionSpawn"
316    )
317    takedowns_first_x_minutes: Optional[int] = Field(
318        None, alias="takedownsFirstXMinutes"
319    )
320    takedowns_in_alcove: Optional[int] = Field(None, alias="takedownsInAlcove")
321    takedowns_in_enemy_fountain: Optional[int] = Field(
322        None, alias="takedownsInEnemyFountain"
323    )
324    team_baron_kills: Optional[int] = Field(None, alias="teamBaronKills")
325    team_damage_percentage: Optional[float] = Field(None, alias="teamDamagePercentage")
326    team_elder_dragon_kills: Optional[int] = Field(None, alias="teamElderDragonKills")
327    team_rift_herald_kills: Optional[int] = Field(None, alias="teamRiftHeraldKills")
328    took_large_damage_survived: Optional[int] = Field(
329        None, alias="tookLargeDamageSurvived"
330    )
331    turret_plates_taken: Optional[int] = Field(None, alias="turretPlatesTaken")
332    turrets_taken_with_rift_herald: Optional[int] = Field(
333        None,
334        alias="turretsTakenWithRiftHerald",
335        description="Any player who damages a tower that is destroyed within 30 seconds of a Rift Herald charge will receive credit. A player who does not damage the tower will not receive credit.",
336    )
337    turret_takedowns: Optional[int] = Field(None, alias="turretTakedowns")
338    twenty_minions_in3_seconds_count: Optional[int] = Field(
339        None, alias="twentyMinionsIn3SecondsCount"
340    )
341    two_wards_one_sweeper_count: Optional[int] = Field(
342        None, alias="twoWardsOneSweeperCount"
343    )
344    unseen_recalls: Optional[int] = Field(None, alias="unseenRecalls")
345    vision_score_per_minute: Optional[float] = Field(None, alias="visionScorePerMinute")
346    wards_guarded: Optional[int] = Field(None, alias="wardsGuarded")
347    ward_takedowns: Optional[int] = Field(None, alias="wardTakedowns")
348    ward_takedowns_before20_m: Optional[int] = Field(
349        None, alias="wardTakedownsBefore20M"
350    )
351    heal_from_map_sources: Optional[float] = Field(None, alias="HealFromMapSources")

field_12_assist_streak_count: Optional[int]
baron_buff_gold_advantage_over_threshold: Optional[int]
control_ward_time_coverage_in_river_or_enemy_half: Optional[float]
earliest_baron: Optional[float]
earliest_dragon_takedown: Optional[float]
earliest_elder_dragon: Optional[float]
early_laning_phase_gold_exp_advantage: Optional[float]
faster_support_quest_completion: Optional[FasterSupportQuestCompletion]
fastest_legendary: Optional[float]
had_afk_teammate: Optional[HadAfkTeammate]
highest_champion_damage: Optional[int]
highest_crowd_control_score: Optional[HighestCrowdControlScore]
highest_ward_kills: Optional[HighestWardKills]
jungler_kills_early_jungle: Optional[int]
kills_on_laners_early_jungle_as_jungler: Optional[int]
laning_phase_gold_exp_advantage: Optional[LaningPhaseGoldExpAdvantage]
legendary_count: Optional[int]
max_cs_advantage_on_lane_opponent: Optional[float]
max_level_lead_lane_opponent: Optional[int]
most_wards_destroyed_one_sweeper: Optional[int]
mythic_item_used: Optional[int]
played_champ_select_position: Optional[PlayedChampSelectPosition]
solo_turrets_lategame: Optional[int]
takedowns_first25_minutes: Optional[int]
teleport_takedowns: Optional[int]
third_inhibitor_destroyed_time: Optional[float]
three_wards_one_sweeper_count: Optional[int]
vision_score_advantage_lane_opponent: Optional[float]
infernal_scale_pickup: Optional[int]
fist_bump_participation: Optional[int]
void_monster_kill: Optional[int]
ability_uses: Optional[int]
aces_before15_minutes: Optional[int]
allied_jungle_monster_kills: Optional[float]
baron_takedowns: Optional[int]
blast_cone_opposite_opponent_count: Optional[int]
bounty_gold: Optional[float]
buffs_stolen: Optional[int]
complete_support_quest_in_time: Optional[int]
control_wards_placed: Optional[int]
damage_per_minute: Optional[float]
damage_taken_on_team_percentage: Optional[float]
danced_with_rift_herald: Optional[int]
deaths_by_enemy_champs: Optional[int]
dodge_skill_shots_small_window: Optional[int]
double_aces: Optional[int]
dragon_takedowns: Optional[int]
legendary_item_used: Optional[List[int]]
effective_heal_and_shielding: Optional[float]
elder_dragon_kills_with_opposing_soul: Optional[int]
elder_dragon_multikills: Optional[int]
enemy_champion_immobilizations: Optional[int]
enemy_jungle_monster_kills: Optional[float]
epic_monster_kills_near_enemy_jungler: Optional[int]
epic_monster_kills_within30_seconds_of_spawn: Optional[int]
epic_monster_steals: Optional[int]
epic_monster_stolen_without_smite: Optional[int]
first_turret_killed: Optional[float]
first_turret_killed_time: Optional[float]
flawless_aces: Optional[int]
full_team_takedown: Optional[int]
game_length: Optional[float]
get_takedowns_in_all_lanes_early_jungle_as_laner: Optional[int]
gold_per_minute: Optional[float]
had_open_nexus: Optional[int]
immobilize_and_kill_with_ally: Optional[int]
initial_buff_count: Optional[int]
initial_crab_count: Optional[int]
jungle_cs_before10_minutes: Optional[float]
jungler_takedowns_near_damaged_epic_monster: Optional[int]
kda: Optional[float]
kill_after_hidden_with_ally: Optional[int]
killed_champ_took_full_team_damage_survived: Optional[int]
killing_sprees: Optional[int]
kill_participation: Optional[float]
kills_near_enemy_turret: Optional[int]
kills_on_other_lanes_early_jungle_as_laner: Optional[int]
kills_on_recently_healed_by_aram_pack: Optional[int]
kills_under_own_turret: Optional[int]
kills_with_help_from_epic_monster: Optional[int]
knock_enemy_into_team_and_kill: Optional[int]
k_turrets_destroyed_before_plates_fall: Optional[int]
land_skill_shots_early_game: Optional[int]
lane_minions_first10_minutes: Optional[int]
lost_an_inhibitor: Optional[int]
max_kill_deficit: Optional[int]
mejais_full_stack_in_time: Optional[int]
more_enemy_jungle_than_opponent: Optional[float]
multi_kill_one_spell: Optional[int]
multikills: Optional[int]
multikills_after_aggressive_flash: Optional[int]
multi_turret_rift_herald_count: Optional[int]
outer_turret_executes_before10_minutes: Optional[int]
outnumbered_kills: Optional[int]
outnumbered_nexus_kill: Optional[int]
perfect_dragon_souls_taken: Optional[int]
perfect_game: Optional[int]
pick_kill_with_ally: Optional[int]
poro_explosions: Optional[int]
quick_cleanse: Optional[int]
quick_first_turret: Optional[int]
quick_solo_kills: Optional[int]
rift_herald_takedowns: Optional[int]
save_ally_from_death: Optional[int]
scuttle_crab_kills: Optional[int]
shortest_time_to_ace_from_first_takedown: Optional[float]
skillshots_dodged: Optional[int]
skillshots_hit: Optional[int]
snowballs_hit: Optional[int]
solo_baron_kills: Optional[int]
swarm_defeat_aatrox: Optional[int]
swarm_defeat_briar: Optional[int]
swarm_defeat_mini_bosses: Optional[int]
swarm_evolve_weapon: Optional[int]
swarm_have3_passives: Optional[int]
swarm_kill_enemy: Optional[int]
swarm_pickup_gold: Optional[float]
swarm_reach_level50: Optional[int]
swarm_survive15_min: Optional[int]
swarm_win_with5_evolved_weapons: Optional[int]
solo_kills: Optional[int]
stealth_wards_placed: Optional[int]
survived_single_digit_hp_count: Optional[int]
survived_three_immobilizes_in_fight: Optional[int]
takedown_on_first_turret: Optional[int]
takedowns: Optional[int]
takedowns_after_gaining_level_advantage: Optional[int]
takedowns_before_jungle_minion_spawn: Optional[int]
takedowns_first_x_minutes: Optional[int]
takedowns_in_alcove: Optional[int]
takedowns_in_enemy_fountain: Optional[int]
team_baron_kills: Optional[int]
team_damage_percentage: Optional[float]
team_elder_dragon_kills: Optional[int]
team_rift_herald_kills: Optional[int]
took_large_damage_survived: Optional[int]
turret_plates_taken: Optional[int]
turrets_taken_with_rift_herald: Optional[int]
turret_takedowns: Optional[int]
twenty_minions_in3_seconds_count: Optional[int]
two_wards_one_sweeper_count: Optional[int]
unseen_recalls: Optional[int]
vision_score_per_minute: Optional[float]
wards_guarded: Optional[int]
ward_takedowns: Optional[int]
ward_takedowns_before20_m: Optional[int]
heal_from_map_sources: Optional[float]
model_config: ClassVar[pydantic.config.ConfigDict] = {}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

class MissionsDto(pydantic.main.BaseModel):
354class MissionsDto(BaseModel):
355    """@public"""
356
357    player_score0: Optional[float] = Field(None, alias="playerScore0")
358    player_score1: Optional[float] = Field(None, alias="playerScore1")
359    player_score2: Optional[float] = Field(None, alias="playerScore2")
360    player_score3: Optional[float] = Field(None, alias="playerScore3")
361    player_score4: Optional[float] = Field(None, alias="playerScore4")
362    player_score5: Optional[float] = Field(None, alias="playerScore5")
363    player_score6: Optional[float] = Field(None, alias="playerScore6")
364    player_score7: Optional[float] = Field(None, alias="playerScore7")
365    player_score8: Optional[float] = Field(None, alias="playerScore8")
366    player_score9: Optional[float] = Field(None, alias="playerScore9")
367    player_score10: Optional[float] = Field(None, alias="playerScore10")
368    player_score11: Optional[float] = Field(None, alias="playerScore11")

player_score0: Optional[float]
player_score1: Optional[float]
player_score2: Optional[float]
player_score3: Optional[float]
player_score4: Optional[float]
player_score5: Optional[float]
player_score6: Optional[float]
player_score7: Optional[float]
player_score8: Optional[float]
player_score9: Optional[float]
player_score10: Optional[float]
player_score11: Optional[float]
model_config: ClassVar[pydantic.config.ConfigDict] = {}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

class PerkStatsDto(pydantic.main.BaseModel):
371class PerkStatsDto(BaseModel):
372    """@public"""
373
374    defense: int
375    flex: int
376    offense: int

defense: int
flex: int
offense: int
model_config: ClassVar[pydantic.config.ConfigDict] = {}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

class PerkStyleSelectionDto(pydantic.main.BaseModel):
379class PerkStyleSelectionDto(BaseModel):
380    """@public"""
381
382    perk: int
383    var1: int
384    var2: int
385    var3: int

perk: int
var1: int
var2: int
var3: int
model_config: ClassVar[pydantic.config.ConfigDict] = {}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

class BanDto(pydantic.main.BaseModel):
388class BanDto(BaseModel):
389    """@public"""
390
391    champion_id: int = Field(..., alias="championId")
392    pick_turn: int = Field(..., alias="pickTurn")

champion_id: int
pick_turn: int
model_config: ClassVar[pydantic.config.ConfigDict] = {}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

class ObjectiveDto(pydantic.main.BaseModel):
395class ObjectiveDto(BaseModel):
396    """@public"""
397
398    first: bool
399    kills: int

first: bool
kills: int
model_config: ClassVar[pydantic.config.ConfigDict] = {}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

class MetadataTimeLineDto(pydantic.main.BaseModel):
402class MetadataTimeLineDto(BaseModel):
403    """@public"""
404
405    data_version: str = Field(
406        ..., alias="dataVersion", description="Match data version."
407    )
408    match_id: str = Field(..., alias="matchId", description="Match id.")
409    participants: List[str] = Field(..., description="A list of participant PUUIDs.")

data_version: str
match_id: str
participants: List[str]
model_config: ClassVar[pydantic.config.ConfigDict] = {}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

class ParticipantTimeLineDto(pydantic.main.BaseModel):
412class ParticipantTimeLineDto(BaseModel):
413    """@public"""
414
415    participant_id: int = Field(..., alias="participantId")
416    puuid: str

participant_id: int
puuid: str
model_config: ClassVar[pydantic.config.ConfigDict] = {}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

class ChampionStatsDto(pydantic.main.BaseModel):
419class ChampionStatsDto(BaseModel):
420    """@public"""
421
422    ability_haste: Optional[int] = Field(None, alias="abilityHaste")
423    ability_power: int = Field(..., alias="abilityPower")
424    armor: int
425    armor_pen: int = Field(..., alias="armorPen")
426    armor_pen_percent: int = Field(..., alias="armorPenPercent")
427    attack_damage: int = Field(..., alias="attackDamage")
428    attack_speed: int = Field(..., alias="attackSpeed")
429    bonus_armor_pen_percent: int = Field(..., alias="bonusArmorPenPercent")
430    bonus_magic_pen_percent: int = Field(..., alias="bonusMagicPenPercent")
431    cc_reduction: int = Field(..., alias="ccReduction")
432    cooldown_reduction: int = Field(..., alias="cooldownReduction")
433    health: int
434    health_max: int = Field(..., alias="healthMax")
435    health_regen: int = Field(..., alias="healthRegen")
436    lifesteal: int
437    magic_pen: int = Field(..., alias="magicPen")
438    magic_pen_percent: int = Field(..., alias="magicPenPercent")
439    magic_resist: int = Field(..., alias="magicResist")
440    movement_speed: int = Field(..., alias="movementSpeed")
441    omnivamp: Optional[int] = None
442    physical_vamp: Optional[int] = Field(None, alias="physicalVamp")
443    power: int
444    power_max: int = Field(..., alias="powerMax")
445    power_regen: int = Field(..., alias="powerRegen")
446    spell_vamp: int = Field(..., alias="spellVamp")

ability_haste: Optional[int]
ability_power: int
armor: int
armor_pen: int
armor_pen_percent: int
attack_damage: int
attack_speed: int
bonus_armor_pen_percent: int
bonus_magic_pen_percent: int
cc_reduction: int
cooldown_reduction: int
health: int
health_max: int
health_regen: int
lifesteal: int
magic_pen: int
magic_pen_percent: int
magic_resist: int
movement_speed: int
omnivamp: Optional[int]
physical_vamp: Optional[int]
power: int
power_max: int
power_regen: int
spell_vamp: int
model_config: ClassVar[pydantic.config.ConfigDict] = {}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

class DamageStatsDto(pydantic.main.BaseModel):
449class DamageStatsDto(BaseModel):
450    """@public"""
451
452    magic_damage_done: int = Field(..., alias="magicDamageDone")
453    magic_damage_done_to_champions: int = Field(..., alias="magicDamageDoneToChampions")
454    magic_damage_taken: int = Field(..., alias="magicDamageTaken")
455    physical_damage_done: int = Field(..., alias="physicalDamageDone")
456    physical_damage_done_to_champions: int = Field(
457        ..., alias="physicalDamageDoneToChampions"
458    )
459    physical_damage_taken: int = Field(..., alias="physicalDamageTaken")
460    total_damage_done: int = Field(..., alias="totalDamageDone")
461    total_damage_done_to_champions: int = Field(..., alias="totalDamageDoneToChampions")
462    total_damage_taken: int = Field(..., alias="totalDamageTaken")
463    true_damage_done: int = Field(..., alias="trueDamageDone")
464    true_damage_done_to_champions: int = Field(..., alias="trueDamageDoneToChampions")
465    true_damage_taken: int = Field(..., alias="trueDamageTaken")

magic_damage_done: int
magic_damage_done_to_champions: int
magic_damage_taken: int
physical_damage_done: int
physical_damage_done_to_champions: int
physical_damage_taken: int
total_damage_done: int
total_damage_done_to_champions: int
total_damage_taken: int
true_damage_done: int
true_damage_done_to_champions: int
true_damage_taken: int
model_config: ClassVar[pydantic.config.ConfigDict] = {}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

class PositionDto(pydantic.main.BaseModel):
468class PositionDto(BaseModel):
469    """@public"""
470
471    x: int
472    y: int

x: int
y: int
model_config: ClassVar[pydantic.config.ConfigDict] = {}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

class MatchTimelineVictimDamage(pydantic.main.BaseModel):
475class MatchTimelineVictimDamage(BaseModel):
476    """@public"""
477
478    basic: bool
479    magic_damage: int = Field(..., alias="magicDamage")
480    name: str
481    participant_id: int = Field(..., alias="participantId")
482    physical_damage: int = Field(..., alias="physicalDamage")
483    spell_name: str = Field(..., alias="spellName")
484    spell_slot: int = Field(..., alias="spellSlot")
485    true_damage: int = Field(..., alias="trueDamage")
486    type: str

basic: bool
magic_damage: int
name: str
participant_id: int
physical_damage: int
spell_name: str
spell_slot: int
true_damage: int
type: str
model_config: ClassVar[pydantic.config.ConfigDict] = {}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

class FeatDto(pydantic.main.BaseModel):
489class FeatDto(BaseModel):
490    """@public"""
491
492    feat_state: Optional[int] = Field(None, alias="featState")

feat_state: Optional[int]
model_config: ClassVar[pydantic.config.ConfigDict] = {}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

class PerkStyleDto(pydantic.main.BaseModel):
495class PerkStyleDto(BaseModel):
496    """@public"""
497
498    description: str
499    selections: List[PerkStyleSelectionDto]
500    style: int

description: str
selections: List[PerkStyleSelectionDto]
style: int
model_config: ClassVar[pydantic.config.ConfigDict] = {}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

class ObjectivesDto(pydantic.main.BaseModel):
503class ObjectivesDto(BaseModel):
504    """@public"""
505
506    baron: ObjectiveDto
507    champion: ObjectiveDto
508    dragon: ObjectiveDto
509    horde: Optional[ObjectiveDto] = None
510    inhibitor: ObjectiveDto
511    rift_herald: ObjectiveDto = Field(..., alias="riftHerald")
512    tower: ObjectiveDto
513    atakhan: Optional[ObjectiveDto] = None

baron: ObjectiveDto
champion: ObjectiveDto
dragon: ObjectiveDto
horde: Optional[ObjectiveDto]
inhibitor: ObjectiveDto
rift_herald: ObjectiveDto
tower: ObjectiveDto
atakhan: Optional[ObjectiveDto]
model_config: ClassVar[pydantic.config.ConfigDict] = {}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

class EventsTimeLineDto(pydantic.main.BaseModel):
516class EventsTimeLineDto(BaseModel):
517    """@public"""
518
519    timestamp: int
520    real_timestamp: Optional[int] = Field(None, alias="realTimestamp")
521    type: str
522    item_id: Optional[int] = Field(None, alias="itemId")
523    participant_id: Optional[int] = Field(None, alias="participantId")
524    level_up_type: Optional[str] = Field(None, alias="levelUpType")
525    skill_slot: Optional[int] = Field(None, alias="skillSlot")
526    creator_id: Optional[int] = Field(None, alias="creatorId")
527    ward_type: Optional[str] = Field(None, alias="wardType")
528    level: Optional[int] = None
529    assisting_participant_ids: Optional[List[int]] = Field(
530        None, alias="assistingParticipantIds"
531    )
532    bounty: Optional[int] = None
533    kill_streak_length: Optional[int] = Field(None, alias="killStreakLength")
534    killer_id: Optional[int] = Field(None, alias="killerId")
535    position: Optional[PositionDto] = None
536    victim_damage_dealt: Optional[List[MatchTimelineVictimDamage]] = Field(
537        None, alias="victimDamageDealt"
538    )
539    victim_damage_received: Optional[List[MatchTimelineVictimDamage]] = Field(
540        None, alias="victimDamageReceived"
541    )
542    victim_id: Optional[int] = Field(None, alias="victimId")
543    kill_type: Optional[str] = Field(None, alias="killType")
544    lane_type: Optional[str] = Field(None, alias="laneType")
545    team_id: Optional[int] = Field(None, alias="teamId")
546    multi_kill_length: Optional[int] = Field(None, alias="multiKillLength")
547    killer_team_id: Optional[int] = Field(None, alias="killerTeamId")
548    monster_type: Optional[str] = Field(None, alias="monsterType")
549    monster_sub_type: Optional[str] = Field(None, alias="monsterSubType")
550    building_type: Optional[str] = Field(None, alias="buildingType")
551    tower_type: Optional[str] = Field(None, alias="towerType")
552    after_id: Optional[int] = Field(None, alias="afterId")
553    before_id: Optional[int] = Field(None, alias="beforeId")
554    gold_gain: Optional[int] = Field(None, alias="goldGain")
555    game_id: Optional[int] = Field(None, alias="gameId")
556    winning_team: Optional[int] = Field(None, alias="winningTeam")
557    transform_type: Optional[str] = Field(None, alias="transformType")
558    name: Optional[str] = None
559    shutdown_bounty: Optional[int] = Field(None, alias="shutdownBounty")
560    actual_start_time: Optional[int] = Field(None, alias="actualStartTime")
561    feat_type: Optional[int] = Field(None, alias="featType")
562    feat_value: Optional[int] = Field(None, alias="featValue")

timestamp: int
real_timestamp: Optional[int]
type: str
item_id: Optional[int]
participant_id: Optional[int]
level_up_type: Optional[str]
skill_slot: Optional[int]
creator_id: Optional[int]
ward_type: Optional[str]
level: Optional[int]
assisting_participant_ids: Optional[List[int]]
bounty: Optional[int]
kill_streak_length: Optional[int]
killer_id: Optional[int]
position: Optional[PositionDto]
victim_damage_dealt: Optional[List[MatchTimelineVictimDamage]]
victim_damage_received: Optional[List[MatchTimelineVictimDamage]]
victim_id: Optional[int]
kill_type: Optional[str]
lane_type: Optional[str]
team_id: Optional[int]
multi_kill_length: Optional[int]
killer_team_id: Optional[int]
monster_type: Optional[str]
monster_sub_type: Optional[str]
building_type: Optional[str]
tower_type: Optional[str]
after_id: Optional[int]
before_id: Optional[int]
gold_gain: Optional[int]
game_id: Optional[int]
winning_team: Optional[int]
transform_type: Optional[str]
name: Optional[str]
shutdown_bounty: Optional[int]
actual_start_time: Optional[int]
feat_type: Optional[int]
feat_value: Optional[int]
model_config: ClassVar[pydantic.config.ConfigDict] = {}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

class ParticipantFrameDto(pydantic.main.BaseModel):
565class ParticipantFrameDto(BaseModel):
566    """@public"""
567
568    champion_stats: ChampionStatsDto = Field(..., alias="championStats")
569    current_gold: int = Field(..., alias="currentGold")
570    damage_stats: DamageStatsDto = Field(..., alias="damageStats")
571    gold_per_second: int = Field(..., alias="goldPerSecond")
572    jungle_minions_killed: int = Field(..., alias="jungleMinionsKilled")
573    level: int
574    minions_killed: int = Field(..., alias="minionsKilled")
575    participant_id: int = Field(..., alias="participantId")
576    position: PositionDto
577    time_enemy_spent_controlled: int = Field(..., alias="timeEnemySpentControlled")
578    total_gold: int = Field(..., alias="totalGold")
579    xp: int

champion_stats: ChampionStatsDto
current_gold: int
damage_stats: DamageStatsDto
gold_per_second: int
jungle_minions_killed: int
level: int
minions_killed: int
participant_id: int
position: PositionDto
time_enemy_spent_controlled: int
total_gold: int
xp: int
model_config: ClassVar[pydantic.config.ConfigDict] = {}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

class FeatsDto(pydantic.main.BaseModel):
582class FeatsDto(BaseModel):
583    """@public"""
584
585    epic_monster_kill: Optional[FeatDto] = Field(None, alias="EPIC_MONSTER_KILL")
586    first_blood: Optional[FeatDto] = Field(None, alias="FIRST_BLOOD")
587    first_turret: Optional[FeatDto] = Field(None, alias="FIRST_TURRET")

epic_monster_kill: Optional[FeatDto]
first_blood: Optional[FeatDto]
first_turret: Optional[FeatDto]
model_config: ClassVar[pydantic.config.ConfigDict] = {}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

class PerksDto(pydantic.main.BaseModel):
590class PerksDto(BaseModel):
591    """@public"""
592
593    stat_perks: PerkStatsDto = Field(..., alias="statPerks")
594    styles: List[PerkStyleDto]

stat_perks: PerkStatsDto
styles: List[PerkStyleDto]
model_config: ClassVar[pydantic.config.ConfigDict] = {}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

class TeamDto(pydantic.main.BaseModel):
597class TeamDto(BaseModel):
598    """@public"""
599
600    bans: List[BanDto]
601    objectives: ObjectivesDto
602    team_id: int = Field(..., alias="teamId")
603    win: bool
604    feats: Optional[FeatsDto] = None

bans: List[BanDto]
objectives: ObjectivesDto
team_id: int
win: bool
feats: Optional[FeatsDto]
model_config: ClassVar[pydantic.config.ConfigDict] = {}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

class FramesTimeLineDto(pydantic.main.BaseModel):
607class FramesTimeLineDto(BaseModel):
608    """@public"""
609
610    events: List[EventsTimeLineDto]
611    participant_frames: Optional[Dict[str, ParticipantFrameDto]] = Field(
612        None, alias="participantFrames"
613    )
614    timestamp: int

events: List[EventsTimeLineDto]
participant_frames: Optional[Dict[str, ParticipantFrameDto]]
timestamp: int
model_config: ClassVar[pydantic.config.ConfigDict] = {}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

class ParticipantFramesDto(pydantic.main.BaseModel):
617class ParticipantFramesDto(BaseModel):
618    """@public"""
619
620    field_1_9: ParticipantFrameDto = Field(
621        ..., alias="1-9", description="Key value mapping for each participant"
622    )

field_1_9: ParticipantFrameDto
model_config: ClassVar[pydantic.config.ConfigDict] = {}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

class ParticipantDto(pydantic.main.BaseModel):
625class ParticipantDto(BaseModel):
626    """@public"""
627
628    all_in_pings: Optional[int] = Field(
629        None, alias="allInPings", description="Yellow crossed swords"
630    )
631    assist_me_pings: Optional[int] = Field(
632        None, alias="assistMePings", description="Green flag"
633    )
634    assists: int
635    baron_kills: int = Field(..., alias="baronKills")
636    bounty_level: Optional[int] = Field(None, alias="bountyLevel")
637    champ_experience: int = Field(..., alias="champExperience")
638    champ_level: int = Field(..., alias="champLevel")
639    champion_id: int = Field(
640        ...,
641        alias="championId",
642        description="Prior to patch 11.4, on Feb 18th, 2021, this field returned invalid championIds. We recommend determining the champion based on the championName field for matches played prior to patch 11.4.",
643    )
644    champion_name: str = Field(..., alias="championName")
645    command_pings: Optional[int] = Field(
646        None, alias="commandPings", description="Blue generic ping (ALT+click)"
647    )
648    champion_transform: int = Field(
649        ...,
650        alias="championTransform",
651        description="This field is currently only utilized for Kayn's transformations. (Legal values: 0 - None, 1 - Slayer, 2 - Assassin)",
652    )
653    consumables_purchased: int = Field(..., alias="consumablesPurchased")
654    challenges: Optional[ChallengesDto] = None
655    damage_dealt_to_buildings: Optional[int] = Field(
656        None, alias="damageDealtToBuildings"
657    )
658    damage_dealt_to_objectives: int = Field(..., alias="damageDealtToObjectives")
659    damage_dealt_to_turrets: int = Field(..., alias="damageDealtToTurrets")
660    damage_self_mitigated: int = Field(..., alias="damageSelfMitigated")
661    deaths: int
662    detector_wards_placed: int = Field(..., alias="detectorWardsPlaced")
663    double_kills: int = Field(..., alias="doubleKills")
664    dragon_kills: int = Field(..., alias="dragonKills")
665    eligible_for_progression: Optional[bool] = Field(
666        None, alias="eligibleForProgression"
667    )
668    enemy_missing_pings: Optional[int] = Field(
669        None, alias="enemyMissingPings", description="Yellow questionmark"
670    )
671    enemy_vision_pings: Optional[int] = Field(
672        None, alias="enemyVisionPings", description="Red eyeball"
673    )
674    first_blood_assist: bool = Field(..., alias="firstBloodAssist")
675    first_blood_kill: bool = Field(..., alias="firstBloodKill")
676    first_tower_assist: bool = Field(..., alias="firstTowerAssist")
677    first_tower_kill: bool = Field(..., alias="firstTowerKill")
678    game_ended_in_early_surrender: bool = Field(
679        ...,
680        alias="gameEndedInEarlySurrender",
681        description="This is an offshoot of the OneStone challenge. The code checks if a spell with the same instance ID does the final point of damage to at least 2 Champions. It doesn't matter if they're enemies, but you cannot hurt your friends.",
682    )
683    game_ended_in_surrender: bool = Field(..., alias="gameEndedInSurrender")
684    hold_pings: Optional[int] = Field(None, alias="holdPings")
685    get_back_pings: Optional[int] = Field(
686        None, alias="getBackPings", description="Yellow circle with horizontal line"
687    )
688    gold_earned: int = Field(..., alias="goldEarned")
689    gold_spent: int = Field(..., alias="goldSpent")
690    individual_position: str = Field(
691        ...,
692        alias="individualPosition",
693        description="Both individualPosition and teamPosition are computed by the game server and are different versions of the most likely position played by a player. The individualPosition is the best guess for which position the player actually played in isolation of anything else. The teamPosition is the best guess for which position the player actually played if we add the constraint that each team must have one top player, one jungle, one middle, etc. Generally the recommendation is to use the teamPosition field over the individualPosition field.",
694    )
695    inhibitor_kills: int = Field(..., alias="inhibitorKills")
696    inhibitor_takedowns: Optional[int] = Field(None, alias="inhibitorTakedowns")
697    inhibitors_lost: Optional[int] = Field(None, alias="inhibitorsLost")
698    item0: int
699    item1: int
700    item2: int
701    item3: int
702    item4: int
703    item5: int
704    item6: int
705    items_purchased: int = Field(..., alias="itemsPurchased")
706    killing_sprees: int = Field(..., alias="killingSprees")
707    kills: int
708    lane: str
709    largest_critical_strike: int = Field(..., alias="largestCriticalStrike")
710    largest_killing_spree: int = Field(..., alias="largestKillingSpree")
711    largest_multi_kill: int = Field(..., alias="largestMultiKill")
712    longest_time_spent_living: int = Field(..., alias="longestTimeSpentLiving")
713    magic_damage_dealt: int = Field(..., alias="magicDamageDealt")
714    magic_damage_dealt_to_champions: int = Field(
715        ..., alias="magicDamageDealtToChampions"
716    )
717    magic_damage_taken: int = Field(..., alias="magicDamageTaken")
718    missions: Optional[MissionsDto] = None
719    neutral_minions_killed: int = Field(
720        ...,
721        alias="neutralMinionsKilled",
722        description="neutralMinionsKilled = mNeutralMinionsKilled, which is incremented on kills of kPet and kJungleMonster",
723    )
724    need_vision_pings: Optional[int] = Field(
725        None, alias="needVisionPings", description="Green ward"
726    )
727    nexus_kills: int = Field(..., alias="nexusKills")
728    nexus_takedowns: Optional[int] = Field(None, alias="nexusTakedowns")
729    nexus_lost: Optional[int] = Field(None, alias="nexusLost")
730    objectives_stolen: int = Field(..., alias="objectivesStolen")
731    objectives_stolen_assists: int = Field(..., alias="objectivesStolenAssists")
732    on_my_way_pings: Optional[int] = Field(
733        None, alias="onMyWayPings", description="Blue arrow pointing at ground"
734    )
735    participant_id: int = Field(..., alias="participantId")
736    player_score0: Optional[float] = Field(None, alias="playerScore0")
737    player_score1: Optional[float] = Field(None, alias="playerScore1")
738    player_score2: Optional[float] = Field(None, alias="playerScore2")
739    player_score3: Optional[float] = Field(None, alias="playerScore3")
740    player_score4: Optional[float] = Field(None, alias="playerScore4")
741    player_score5: Optional[float] = Field(None, alias="playerScore5")
742    player_score6: Optional[float] = Field(None, alias="playerScore6")
743    player_score7: Optional[float] = Field(None, alias="playerScore7")
744    player_score8: Optional[float] = Field(None, alias="playerScore8")
745    player_score9: Optional[float] = Field(None, alias="playerScore9")
746    player_score10: Optional[float] = Field(None, alias="playerScore10")
747    player_score11: Optional[float] = Field(None, alias="playerScore11")
748    penta_kills: int = Field(..., alias="pentaKills")
749    perks: PerksDto
750    physical_damage_dealt: int = Field(..., alias="physicalDamageDealt")
751    physical_damage_dealt_to_champions: int = Field(
752        ..., alias="physicalDamageDealtToChampions"
753    )
754    physical_damage_taken: int = Field(..., alias="physicalDamageTaken")
755    placement: Optional[int] = None
756    player_augment1: Optional[int] = Field(None, alias="playerAugment1")
757    player_augment2: Optional[int] = Field(None, alias="playerAugment2")
758    player_augment3: Optional[int] = Field(None, alias="playerAugment3")
759    player_augment4: Optional[int] = Field(None, alias="playerAugment4")
760    player_subteam_id: Optional[int] = Field(None, alias="playerSubteamId")
761    push_pings: Optional[int] = Field(
762        None, alias="pushPings", description="Green minion"
763    )
764    profile_icon: int = Field(..., alias="profileIcon")
765    puuid: str
766    quadra_kills: int = Field(..., alias="quadraKills")
767    riot_id_game_name: Optional[str] = Field(None, alias="riotIdGameName")
768    riot_id_tagline: Optional[str] = Field(None, alias="riotIdTagline")
769    role: str
770    sight_wards_bought_in_game: int = Field(..., alias="sightWardsBoughtInGame")
771    spell1_casts: int = Field(..., alias="spell1Casts")
772    spell2_casts: int = Field(..., alias="spell2Casts")
773    spell3_casts: int = Field(..., alias="spell3Casts")
774    spell4_casts: int = Field(..., alias="spell4Casts")
775    subteam_placement: Optional[int] = Field(None, alias="subteamPlacement")
776    summoner1_casts: int = Field(..., alias="summoner1Casts")
777    summoner1_id: int = Field(..., alias="summoner1Id")
778    summoner2_casts: int = Field(..., alias="summoner2Casts")
779    summoner2_id: int = Field(..., alias="summoner2Id")
780    summoner_id: str = Field(..., alias="summonerId")
781    summoner_level: int = Field(..., alias="summonerLevel")
782    summoner_name: str = Field(..., alias="summonerName")
783    team_early_surrendered: bool = Field(..., alias="teamEarlySurrendered")
784    team_id: int = Field(..., alias="teamId")
785    team_position: str = Field(
786        ...,
787        alias="teamPosition",
788        description="Both individualPosition and teamPosition are computed by the game server and are different versions of the most likely position played by a player. The individualPosition is the best guess for which position the player actually played in isolation of anything else. The teamPosition is the best guess for which position the player actually played if we add the constraint that each team must have one top player, one jungle, one middle, etc. Generally the recommendation is to use the teamPosition field over the individualPosition field.",
789    )
790    time_c_cing_others: int = Field(..., alias="timeCCingOthers")
791    time_played: int = Field(..., alias="timePlayed")
792    total_ally_jungle_minions_killed: Optional[int] = Field(
793        None, alias="totalAllyJungleMinionsKilled"
794    )
795    total_damage_dealt: int = Field(..., alias="totalDamageDealt")
796    total_damage_dealt_to_champions: int = Field(
797        ..., alias="totalDamageDealtToChampions"
798    )
799    total_damage_shielded_on_teammates: int = Field(
800        ..., alias="totalDamageShieldedOnTeammates"
801    )
802    total_damage_taken: int = Field(..., alias="totalDamageTaken")
803    total_enemy_jungle_minions_killed: Optional[int] = Field(
804        None, alias="totalEnemyJungleMinionsKilled"
805    )
806    total_heal: int = Field(
807        ...,
808        alias="totalHeal",
809        description="Whenever positive health is applied (which translates to all heals in the game but not things like regeneration), totalHeal is incremented by the amount of health received. This includes healing enemies, jungle monsters, yourself, etc",
810    )
811    total_heals_on_teammates: int = Field(
812        ...,
813        alias="totalHealsOnTeammates",
814        description="Whenever positive health is applied (which translates to all heals in the game but not things like regeneration), totalHealsOnTeammates is incremented by the amount of health received.  This is post modified, so if you heal someone missing 5 health for 100 you will get +5 totalHealsOnTeammates",
815    )
816    total_minions_killed: int = Field(
817        ...,
818        alias="totalMinionsKilled",
819        description="totalMillionsKilled = mMinionsKilled, which is only incremented on kills of kTeamMinion, kMeleeLaneMinion, kSuperLaneMinion, kRangedLaneMinion and kSiegeLaneMinion",
820    )
821    total_time_cc_dealt: int = Field(..., alias="totalTimeCCDealt")
822    total_time_spent_dead: int = Field(..., alias="totalTimeSpentDead")
823    total_units_healed: int = Field(..., alias="totalUnitsHealed")
824    triple_kills: int = Field(..., alias="tripleKills")
825    true_damage_dealt: int = Field(..., alias="trueDamageDealt")
826    true_damage_dealt_to_champions: int = Field(..., alias="trueDamageDealtToChampions")
827    true_damage_taken: int = Field(..., alias="trueDamageTaken")
828    turret_kills: int = Field(..., alias="turretKills")
829    turret_takedowns: Optional[int] = Field(None, alias="turretTakedowns")
830    turrets_lost: Optional[int] = Field(None, alias="turretsLost")
831    unreal_kills: int = Field(..., alias="unrealKills")
832    vision_score: int = Field(..., alias="visionScore")
833    vision_cleared_pings: Optional[int] = Field(None, alias="visionClearedPings")
834    vision_wards_bought_in_game: int = Field(..., alias="visionWardsBoughtInGame")
835    wards_killed: int = Field(..., alias="wardsKilled")
836    wards_placed: int = Field(..., alias="wardsPlaced")
837    win: bool
838    bait_pings: Optional[int] = Field(None, alias="baitPings")
839    danger_pings: Optional[int] = Field(
840        None,
841        alias="dangerPings",
842        description="https://github.com/RiotGames/developer-relations/issues/870",
843    )
844    basic_pings: Optional[int] = Field(
845        None,
846        alias="basicPings",
847        description="https://github.com/RiotGames/developer-relations/issues/814",
848    )
849    player_augment5: Optional[int] = Field(None, alias="playerAugment5")
850    player_augment6: Optional[int] = Field(None, alias="playerAugment6")
851    riot_id_name: Optional[str] = Field(
852        None,
853        alias="riotIdName",
854        description="Deprecated, use `riotIdGameName`. This field name was briefly used instead of `riotIdGameName`, prior to patch 14.5.",
855    )
856    retreat_pings: Optional[int] = Field(
857        None,
858        alias="retreatPings",
859        description="https://github.com/RiotGames/developer-relations/issues/814",
860    )
861    champion_skin_id: Optional[int] = Field(None, alias="championSkinId")

all_in_pings: Optional[int]
assist_me_pings: Optional[int]
assists: int
baron_kills: int
bounty_level: Optional[int]
champ_experience: int
champ_level: int
champion_id: int
champion_name: str
command_pings: Optional[int]
champion_transform: int
consumables_purchased: int
challenges: Optional[ChallengesDto]
damage_dealt_to_buildings: Optional[int]
damage_dealt_to_objectives: int
damage_dealt_to_turrets: int
damage_self_mitigated: int
deaths: int
detector_wards_placed: int
double_kills: int
dragon_kills: int
eligible_for_progression: Optional[bool]
enemy_missing_pings: Optional[int]
enemy_vision_pings: Optional[int]
first_blood_assist: bool
first_blood_kill: bool
first_tower_assist: bool
first_tower_kill: bool
game_ended_in_early_surrender: bool
game_ended_in_surrender: bool
hold_pings: Optional[int]
get_back_pings: Optional[int]
gold_earned: int
gold_spent: int
individual_position: str
inhibitor_kills: int
inhibitor_takedowns: Optional[int]
inhibitors_lost: Optional[int]
item0: int
item1: int
item2: int
item3: int
item4: int
item5: int
item6: int
items_purchased: int
killing_sprees: int
kills: int
lane: str
largest_critical_strike: int
largest_killing_spree: int
largest_multi_kill: int
longest_time_spent_living: int
magic_damage_dealt: int
magic_damage_dealt_to_champions: int
magic_damage_taken: int
missions: Optional[MissionsDto]
neutral_minions_killed: int
need_vision_pings: Optional[int]
nexus_kills: int
nexus_takedowns: Optional[int]
nexus_lost: Optional[int]
objectives_stolen: int
objectives_stolen_assists: int
on_my_way_pings: Optional[int]
participant_id: int
player_score0: Optional[float]
player_score1: Optional[float]
player_score2: Optional[float]
player_score3: Optional[float]
player_score4: Optional[float]
player_score5: Optional[float]
player_score6: Optional[float]
player_score7: Optional[float]
player_score8: Optional[float]
player_score9: Optional[float]
player_score10: Optional[float]
player_score11: Optional[float]
penta_kills: int
perks: PerksDto
physical_damage_dealt: int
physical_damage_dealt_to_champions: int
physical_damage_taken: int
placement: Optional[int]
player_augment1: Optional[int]
player_augment2: Optional[int]
player_augment3: Optional[int]
player_augment4: Optional[int]
player_subteam_id: Optional[int]
push_pings: Optional[int]
profile_icon: int
puuid: str
quadra_kills: int
riot_id_game_name: Optional[str]
riot_id_tagline: Optional[str]
role: str
sight_wards_bought_in_game: int
spell1_casts: int
spell2_casts: int
spell3_casts: int
spell4_casts: int
subteam_placement: Optional[int]
summoner1_casts: int
summoner1_id: int
summoner2_casts: int
summoner2_id: int
summoner_id: str
summoner_level: int
summoner_name: str
team_early_surrendered: bool
team_id: int
team_position: str
time_c_cing_others: int
time_played: int
total_ally_jungle_minions_killed: Optional[int]
total_damage_dealt: int
total_damage_dealt_to_champions: int
total_damage_shielded_on_teammates: int
total_damage_taken: int
total_enemy_jungle_minions_killed: Optional[int]
total_heal: int
total_heals_on_teammates: int
total_minions_killed: int
total_time_cc_dealt: int
total_time_spent_dead: int
total_units_healed: int
triple_kills: int
true_damage_dealt: int
true_damage_dealt_to_champions: int
true_damage_taken: int
turret_kills: int
turret_takedowns: Optional[int]
turrets_lost: Optional[int]
unreal_kills: int
vision_score: int
vision_cleared_pings: Optional[int]
vision_wards_bought_in_game: int
wards_killed: int
wards_placed: int
win: bool
bait_pings: Optional[int]
danger_pings: Optional[int]
basic_pings: Optional[int]
player_augment5: Optional[int]
player_augment6: Optional[int]
riot_id_name: Optional[str]
retreat_pings: Optional[int]
champion_skin_id: Optional[int]
model_config: ClassVar[pydantic.config.ConfigDict] = {}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

class InfoTimeLineDto(pydantic.main.BaseModel):
864class InfoTimeLineDto(BaseModel):
865    """@public"""
866
867    end_of_game_result: Optional[str] = Field(
868        None,
869        alias="endOfGameResult",
870        description="Refer to indicate if the game ended in termination.",
871    )
872    frame_interval: int = Field(..., alias="frameInterval")
873    game_id: Optional[int] = Field(None, alias="gameId")
874    participants: Optional[List[ParticipantTimeLineDto]] = None
875    frames: List[FramesTimeLineDto]

end_of_game_result: Optional[str]
frame_interval: int
game_id: Optional[int]
participants: Optional[List[ParticipantTimeLineDto]]
frames: List[FramesTimeLineDto]
model_config: ClassVar[pydantic.config.ConfigDict] = {}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

class InfoDto(pydantic.main.BaseModel):
878class InfoDto(BaseModel):
879    """@public"""
880
881    end_of_game_result: Optional[str] = Field(
882        None,
883        alias="endOfGameResult",
884        description="Refer to indicate if the game ended in termination.",
885    )
886    game_creation: int = Field(
887        ...,
888        alias="gameCreation",
889        description="Unix timestamp for when the game is created on the game server (i.e., the loading screen).",
890    )
891    game_duration: int = Field(
892        ...,
893        alias="gameDuration",
894        description="Prior to patch 11.20, this field returns the game length in milliseconds calculated from gameEndTimestamp - gameStartTimestamp. Post patch 11.20, this field returns the max timePlayed of any participant in the game in seconds, which makes the behavior of this field consistent with that of match-v4. The best way to handling the change in this field is to treat the value as milliseconds if the gameEndTimestamp field isn't in the response and to treat the value as seconds if gameEndTimestamp is in the response.",
895    )
896    game_end_timestamp: Optional[int] = Field(
897        None,
898        alias="gameEndTimestamp",
899        description='Unix timestamp for when match ends on the game server. This timestamp can occasionally be significantly longer than when the match "ends". The most reliable way of determining the timestamp for the end of the match would be to add the max time played of any participant to the gameStartTimestamp. This field was added to match-v5 in patch 11.20 on Oct 5th, 2021.',
900    )
901    game_id: int = Field(..., alias="gameId")
902    game_mode: str = Field(
903        ..., alias="gameMode", description="Refer to the Game Constants documentation."
904    )
905    game_name: str = Field(..., alias="gameName")
906    game_start_timestamp: int = Field(
907        ...,
908        alias="gameStartTimestamp",
909        description="Unix timestamp for when match starts on the game server.",
910    )
911    game_type: str = Field(..., alias="gameType")
912    game_version: str = Field(
913        ...,
914        alias="gameVersion",
915        description="The first two parts can be used to determine the patch a game was played on.",
916    )
917    map_id: int = Field(
918        ..., alias="mapId", description="Refer to the Game Constants documentation."
919    )
920    participants: List[ParticipantDto]
921    platform_id: str = Field(
922        ..., alias="platformId", description="Platform where the match was played."
923    )
924    queue_id: int = Field(
925        ..., alias="queueId", description="Refer to the Game Constants documentation."
926    )
927    teams: List[TeamDto]
928    tournament_code: Optional[str] = Field(
929        None,
930        alias="tournamentCode",
931        description="Tournament code used to generate the match. This field was added to match-v5 in patch 11.13 on June 23rd, 2021.",
932    )
933    game_mode_mutators: Optional[List[str]] = Field(None, alias="gameModeMutators")

end_of_game_result: Optional[str]
game_creation: int
game_duration: int
game_end_timestamp: Optional[int]
game_id: int
game_mode: str
game_name: str
game_start_timestamp: int
game_type: str
game_version: str
map_id: int
participants: List[ParticipantDto]
platform_id: str
queue_id: int
teams: List[TeamDto]
tournament_code: Optional[str]
game_mode_mutators: Optional[List[str]]
model_config: ClassVar[pydantic.config.ConfigDict] = {}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

class TimelineDto(pydantic.main.BaseModel):
936class TimelineDto(BaseModel):
937    """@public"""
938
939    metadata: MetadataTimeLineDto = Field(..., description="Match metadata.")
940    info: InfoTimeLineDto = Field(..., description="Match info.")

model_config: ClassVar[pydantic.config.ConfigDict] = {}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

class MatchDto(pydantic.main.BaseModel):
943class MatchDto(BaseModel):
944    """@public"""
945
946    metadata: MetadataDto = Field(..., description="Match metadata.")
947    info: InfoDto = Field(..., description="Match info.")

metadata: MetadataDto
info: InfoDto
model_config: ClassVar[pydantic.config.ConfigDict] = {}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].