@rotesblatt/hex-tractor-data-api 3.0.4 → 3.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -665,24 +665,19 @@ const LeaderboardPlayer = zod_1.z
665
665
  })
666
666
  .passthrough();
667
667
  const LeaderBoardPlayerList = zod_1.z.array(LeaderboardPlayer);
668
- const JwkPublicKey = zod_1.z
669
- .object({
670
- kty: zod_1.z.string(),
671
- crv: zod_1.z.string(),
672
- x: zod_1.z.string(),
673
- y: zod_1.z.string(),
674
- ext: zod_1.z.boolean(),
675
- })
676
- .partial()
677
- .passthrough();
678
- const Device = zod_1.z
668
+ const ChampionStatsView = zod_1.z
679
669
  .object({
680
- deviceId: zod_1.z.string(),
681
- deviceType: zod_1.z.string(),
682
- publicKeyJwk: JwkPublicKey,
683
- attestationToken: zod_1.z.string(),
670
+ championId: zod_1.z.number().int(),
671
+ picks: zod_1.z.number().int(),
672
+ wins: zod_1.z.number().int(),
673
+ losses: zod_1.z.number().int(),
674
+ bans: zod_1.z.number().int(),
675
+ winrate: zod_1.z.number(),
676
+ pickrate: zod_1.z.number(),
677
+ banrate: zod_1.z.number(),
684
678
  })
685
679
  .passthrough();
680
+ const ChampionStatsListResponseData = zod_1.z.object({ items: zod_1.z.array(ChampionStatsView) }).passthrough();
686
681
  const Region = zod_1.z.enum([
687
682
  "br1",
688
683
  "euw1",
@@ -701,11 +696,201 @@ const Region = zod_1.z.enum([
701
696
  "tw2",
702
697
  "vn2",
703
698
  ]);
704
- const Platform = zod_1.z.enum(["europe", "americas", "asia", "sea"]);
705
- const RankedQueue = zod_1.z.enum([
706
- "RANKED_SOLO_5x5",
707
- "RANKED_FLEX_SR",
708
- "RANKED_FLEX_TT",
699
+ const ChampionStatsMeta = zod_1.z
700
+ .object({
701
+ region: Region,
702
+ patch: zod_1.z.string(),
703
+ tier: zod_1.z.string(),
704
+ queue: zod_1.z.union([zod_1.z.string(), zod_1.z.number()]),
705
+ generatedAt: zod_1.z.string().datetime({ offset: true }),
706
+ dataFreshnessSeconds: zod_1.z.number().int(),
707
+ totalGames: zod_1.z.number().int(),
708
+ })
709
+ .passthrough();
710
+ const ChampionStatsListResponse = zod_1.z
711
+ .object({
712
+ success: zod_1.z.literal(true),
713
+ data: ChampionStatsListResponseData,
714
+ meta: ChampionStatsMeta,
715
+ })
716
+ .passthrough();
717
+ const ChampionStatsDetailResponse = zod_1.z
718
+ .object({
719
+ success: zod_1.z.literal(true),
720
+ data: ChampionStatsView,
721
+ meta: ChampionStatsMeta,
722
+ })
723
+ .passthrough();
724
+ const Lane = zod_1.z.enum(["top", "jungle", "mid", "bottom", "support", "unknown"]);
725
+ const ChampionMatchupStatsItem = zod_1.z
726
+ .object({
727
+ championId: zod_1.z.number().int(),
728
+ opponentChampionId: zod_1.z.number().int(),
729
+ lane: Lane,
730
+ games: zod_1.z.number().int(),
731
+ winsForChampion: zod_1.z.number().int(),
732
+ lossesForChampion: zod_1.z.number().int(),
733
+ winrateForChampion: zod_1.z.number(),
734
+ avgGoldDiffAt10: zod_1.z.number(),
735
+ avgCsDiffAt10: zod_1.z.number(),
736
+ sampleSize: zod_1.z.number().int(),
737
+ patch: zod_1.z.string(),
738
+ tier: zod_1.z.string(),
739
+ queueId: zod_1.z.number().int(),
740
+ region: Region,
741
+ })
742
+ .passthrough();
743
+ const ChampionMatchupStatsListResponseData = zod_1.z.object({ items: zod_1.z.array(ChampionMatchupStatsItem) }).passthrough();
744
+ const StatsMetaCommon = zod_1.z
745
+ .object({
746
+ region: Region,
747
+ patch: zod_1.z.string(),
748
+ tier: zod_1.z.string(),
749
+ queueId: zod_1.z.number().int(),
750
+ generatedAt: zod_1.z.string().datetime({ offset: true }),
751
+ dataFreshnessSeconds: zod_1.z.number().int(),
752
+ totalGames: zod_1.z.number().int(),
753
+ })
754
+ .passthrough();
755
+ const StatsMetaWithLane = StatsMetaCommon.and(zod_1.z.object({ lane: Lane }).passthrough());
756
+ const ChampionMatchupStatsListResponse = zod_1.z
757
+ .object({
758
+ success: zod_1.z.literal(true),
759
+ data: ChampionMatchupStatsListResponseData,
760
+ meta: StatsMetaWithLane,
761
+ })
762
+ .passthrough();
763
+ const ChampionSynergyStatsItem = zod_1.z
764
+ .object({
765
+ championId: zod_1.z.number().int(),
766
+ allyChampionId: zod_1.z.number().int(),
767
+ gamesTogether: zod_1.z.number().int(),
768
+ winsTogether: zod_1.z.number().int(),
769
+ lossesTogether: zod_1.z.number().int(),
770
+ winrateTogether: zod_1.z.number(),
771
+ avgTeamGoldShare: zod_1.z.number(),
772
+ sampleSize: zod_1.z.number().int(),
773
+ patch: zod_1.z.string(),
774
+ tier: zod_1.z.string(),
775
+ queueId: zod_1.z.number().int(),
776
+ region: Region,
777
+ })
778
+ .passthrough();
779
+ const ChampionSynergyStatsListResponseData = zod_1.z.object({ items: zod_1.z.array(ChampionSynergyStatsItem) }).passthrough();
780
+ const ChampionSynergyStatsListResponse = zod_1.z
781
+ .object({
782
+ success: zod_1.z.literal(true),
783
+ data: ChampionSynergyStatsListResponseData,
784
+ meta: StatsMetaCommon,
785
+ })
786
+ .passthrough();
787
+ const ChampionPerformanceStatsItem = zod_1.z
788
+ .object({
789
+ championId: zod_1.z.number().int(),
790
+ kdaAvg: zod_1.z.number(),
791
+ csPerMinAvg: zod_1.z.number(),
792
+ goldPerMinAvg: zod_1.z.number(),
793
+ damagePerMinAvg: zod_1.z.number(),
794
+ visionPerMinAvg: zod_1.z.number(),
795
+ sampleSize: zod_1.z.number().int(),
796
+ patch: zod_1.z.string(),
797
+ tier: zod_1.z.string(),
798
+ queueId: zod_1.z.number().int(),
799
+ region: Region,
800
+ })
801
+ .passthrough();
802
+ const ChampionPerformanceStatsListResponseData = zod_1.z.object({ items: zod_1.z.array(ChampionPerformanceStatsItem) }).passthrough();
803
+ const ChampionPerformanceStatsListResponse = zod_1.z
804
+ .object({
805
+ success: zod_1.z.literal(true),
806
+ data: ChampionPerformanceStatsListResponseData,
807
+ meta: StatsMetaCommon,
808
+ })
809
+ .passthrough();
810
+ const ChampionPerformanceStatsDetailResponse = zod_1.z
811
+ .object({
812
+ success: zod_1.z.literal(true),
813
+ data: ChampionPerformanceStatsItem,
814
+ meta: StatsMetaCommon,
815
+ })
816
+ .passthrough();
817
+ const ChampionObjectiveStatsItem = zod_1.z
818
+ .object({
819
+ championId: zod_1.z.number().int(),
820
+ dragonParticipationRate: zod_1.z.number(),
821
+ baronParticipationRate: zod_1.z.number(),
822
+ heraldParticipationRate: zod_1.z.number(),
823
+ towerParticipationRate: zod_1.z.number(),
824
+ sampleSize: zod_1.z.number().int(),
825
+ metricDefinitionVersion: zod_1.z.string(),
826
+ patch: zod_1.z.string(),
827
+ tier: zod_1.z.string(),
828
+ queueId: zod_1.z.number().int(),
829
+ region: Region,
830
+ })
831
+ .passthrough();
832
+ const ChampionObjectiveStatsListResponseData = zod_1.z.object({ items: zod_1.z.array(ChampionObjectiveStatsItem) }).passthrough();
833
+ const ChampionObjectiveStatsListResponse = zod_1.z
834
+ .object({
835
+ success: zod_1.z.literal(true),
836
+ data: ChampionObjectiveStatsListResponseData,
837
+ meta: StatsMetaCommon,
838
+ })
839
+ .passthrough();
840
+ const ChampionGameLengthStatsItem = zod_1.z
841
+ .object({
842
+ championId: zod_1.z.number().int(),
843
+ games: zod_1.z.number().int(),
844
+ wins: zod_1.z.number().int(),
845
+ winrate: zod_1.z.number(),
846
+ sampleSize: zod_1.z.number().int(),
847
+ patch: zod_1.z.string(),
848
+ tier: zod_1.z.string(),
849
+ queueId: zod_1.z.number().int(),
850
+ region: Region,
851
+ })
852
+ .passthrough();
853
+ const ChampionGameLengthStatsListResponseData = zod_1.z
854
+ .object({
855
+ short: ChampionGameLengthStatsItem,
856
+ medium: ChampionGameLengthStatsItem,
857
+ long: ChampionGameLengthStatsItem,
858
+ })
859
+ .passthrough();
860
+ const ChampionGameLengthStatsResponse = zod_1.z
861
+ .object({
862
+ success: zod_1.z.literal(true),
863
+ data: ChampionGameLengthStatsListResponseData,
864
+ meta: StatsMetaCommon,
865
+ })
866
+ .passthrough();
867
+ const ChampionEarlyGameStatsItem = zod_1.z
868
+ .object({
869
+ championId: zod_1.z.number().int(),
870
+ firstBloodInvolvementRate: zod_1.z.number(),
871
+ laneLeadAt10Rate: zod_1.z.number(),
872
+ laneLeadAt15Rate: zod_1.z.number(),
873
+ earlyDeathRate: zod_1.z.number(),
874
+ sampleSize: zod_1.z.number().int(),
875
+ metricDefinitionVersion: zod_1.z.string(),
876
+ patch: zod_1.z.string(),
877
+ tier: zod_1.z.string(),
878
+ queueId: zod_1.z.number().int(),
879
+ region: Region,
880
+ })
881
+ .passthrough();
882
+ const ChampionEarlyGameStatsResponse = zod_1.z
883
+ .object({
884
+ success: zod_1.z.literal(true),
885
+ data: ChampionEarlyGameStatsItem,
886
+ meta: StatsMetaCommon,
887
+ })
888
+ .passthrough();
889
+ const PlayerStatsType = zod_1.z.enum([
890
+ "champions",
891
+ "teammates",
892
+ "opponents",
893
+ "timeline",
709
894
  ]);
710
895
  const RankedTier = zod_1.z.enum([
711
896
  "IRON",
@@ -719,7 +904,210 @@ const RankedTier = zod_1.z.enum([
719
904
  "GRANDMASTER",
720
905
  "CHALLENGER",
721
906
  ]);
907
+ const PlayerStatsChampionsParams = zod_1.z
908
+ .object({
909
+ patch: zod_1.z.string(),
910
+ tier: RankedTier,
911
+ queueId: QueueId,
912
+ limit: zod_1.z.number().int().gte(1).lte(100),
913
+ })
914
+ .partial()
915
+ .passthrough();
916
+ const PlayerStatsTeammatesParams = zod_1.z
917
+ .object({
918
+ patch: zod_1.z.string(),
919
+ tier: RankedTier,
920
+ queueId: QueueId,
921
+ limit: zod_1.z.number().int().gte(1).lte(100),
922
+ minGames: zod_1.z.number().int().gte(1),
923
+ })
924
+ .partial()
925
+ .passthrough();
926
+ const PlayerStatsOpponentsParams = zod_1.z
927
+ .object({
928
+ patch: zod_1.z.string(),
929
+ tier: RankedTier,
930
+ queueId: QueueId,
931
+ limit: zod_1.z.number().int().gte(1).lte(100),
932
+ lane: Lane,
933
+ })
934
+ .partial()
935
+ .passthrough();
936
+ const PlayerStatsTimelineParams = zod_1.z
937
+ .object({
938
+ patch: zod_1.z.string(),
939
+ tier: RankedTier,
940
+ queueId: QueueId,
941
+ bucketMinutes: zod_1.z.number().int().gte(1).lte(10),
942
+ })
943
+ .partial()
944
+ .passthrough();
945
+ const PlayerStatsJobParams = zod_1.z.union([
946
+ PlayerStatsChampionsParams,
947
+ PlayerStatsTeammatesParams,
948
+ PlayerStatsOpponentsParams,
949
+ PlayerStatsTimelineParams,
950
+ ]);
951
+ const PlayerStatsJobRequest = zod_1.z
952
+ .object({
953
+ region: Region,
954
+ type: PlayerStatsType,
955
+ params: PlayerStatsJobParams.optional(),
956
+ })
957
+ .passthrough();
958
+ const PlayerStatsJobStatus = zod_1.z.enum([
959
+ "pending",
960
+ "running",
961
+ "ready",
962
+ "failed",
963
+ "expired",
964
+ ]);
965
+ const PlayerStatsChampionSummary = zod_1.z
966
+ .object({
967
+ championId: zod_1.z.number().int(),
968
+ games: zod_1.z.number().int(),
969
+ wins: zod_1.z.number().int(),
970
+ })
971
+ .passthrough();
972
+ const PlayerStatsChampionsResult = zod_1.z
973
+ .object({ champions: zod_1.z.array(PlayerStatsChampionSummary) })
974
+ .passthrough();
975
+ const PlayerStatsTeammateSummary = zod_1.z
976
+ .object({
977
+ puuid: zod_1.z.string(),
978
+ games: zod_1.z.number().int(),
979
+ wins: zod_1.z.number().int(),
980
+ })
981
+ .passthrough();
982
+ const PlayerStatsTeammatesResult = zod_1.z
983
+ .object({ topTeammates: zod_1.z.array(PlayerStatsTeammateSummary) })
984
+ .passthrough();
985
+ const PlayerStatsOpponentSummary = zod_1.z
986
+ .object({
987
+ puuid: zod_1.z.string(),
988
+ games: zod_1.z.number().int(),
989
+ winsAgainst: zod_1.z.number().int(),
990
+ })
991
+ .passthrough();
992
+ const PlayerStatsOpponentsResult = zod_1.z
993
+ .object({ topOpponents: zod_1.z.array(PlayerStatsOpponentSummary) })
994
+ .passthrough();
995
+ const PlayerStatsTimelineBucket = zod_1.z
996
+ .object({
997
+ minute: zod_1.z.number().int(),
998
+ games: zod_1.z.number().int(),
999
+ wins: zod_1.z.number().int(),
1000
+ })
1001
+ .passthrough();
1002
+ const PlayerStatsTimelineResult = zod_1.z
1003
+ .object({ timeline: zod_1.z.array(PlayerStatsTimelineBucket) })
1004
+ .passthrough();
1005
+ const PlayerStatsResult = zod_1.z.union([
1006
+ PlayerStatsChampionsResult,
1007
+ PlayerStatsTeammatesResult,
1008
+ PlayerStatsOpponentsResult,
1009
+ PlayerStatsTimelineResult,
1010
+ ]);
1011
+ const PlayerStatsErrorIssue = zod_1.z
1012
+ .object({ field: zod_1.z.string(), reason: zod_1.z.string() })
1013
+ .passthrough();
1014
+ const PlayerStatsErrorDetails = zod_1.z
1015
+ .object({
1016
+ retryAfterSeconds: zod_1.z.number().int(),
1017
+ traceId: zod_1.z.string(),
1018
+ issues: zod_1.z.array(PlayerStatsErrorIssue),
1019
+ })
1020
+ .partial()
1021
+ .passthrough();
1022
+ const PlayerStatsCacheEntry = zod_1.z
1023
+ .object({
1024
+ jobId: zod_1.z.string(),
1025
+ region: Region,
1026
+ puuid: zod_1.z.string(),
1027
+ type: PlayerStatsType,
1028
+ paramsHash: zod_1.z.string(),
1029
+ status: PlayerStatsJobStatus,
1030
+ computedAt: zod_1.z.string().datetime({ offset: true }).nullish(),
1031
+ expiresAt: zod_1.z.string().datetime({ offset: true }),
1032
+ lastSourceMatchAt: zod_1.z.string().datetime({ offset: true }).nullish(),
1033
+ result: PlayerStatsResult.optional(),
1034
+ error: zod_1.z
1035
+ .object({
1036
+ code: zod_1.z.string(),
1037
+ message: zod_1.z.string(),
1038
+ details: PlayerStatsErrorDetails,
1039
+ })
1040
+ .partial()
1041
+ .passthrough()
1042
+ .optional(),
1043
+ })
1044
+ .passthrough();
1045
+ const PlayerStatsRegionMeta = zod_1.z
1046
+ .object({ region: Region })
1047
+ .passthrough();
1048
+ const PlayerStatsCacheEntryResponse = zod_1.z
1049
+ .object({
1050
+ success: zod_1.z.literal(true),
1051
+ data: PlayerStatsCacheEntry,
1052
+ meta: PlayerStatsRegionMeta,
1053
+ })
1054
+ .passthrough();
1055
+ const PlayerStatsJobAccepted = zod_1.z
1056
+ .object({
1057
+ jobId: zod_1.z.string(),
1058
+ status: PlayerStatsJobStatus,
1059
+ region: Region,
1060
+ puuid: zod_1.z.string(),
1061
+ })
1062
+ .passthrough();
1063
+ const PlayerStatsJobAcceptedResponse = zod_1.z
1064
+ .object({
1065
+ success: zod_1.z.literal(true),
1066
+ data: PlayerStatsJobAccepted,
1067
+ meta: PlayerStatsRegionMeta,
1068
+ })
1069
+ .passthrough();
1070
+ const JwkPublicKey = zod_1.z
1071
+ .object({
1072
+ kty: zod_1.z.string(),
1073
+ crv: zod_1.z.string(),
1074
+ x: zod_1.z.string(),
1075
+ y: zod_1.z.string(),
1076
+ ext: zod_1.z.boolean(),
1077
+ })
1078
+ .partial()
1079
+ .passthrough();
1080
+ const Device = zod_1.z
1081
+ .object({
1082
+ deviceId: zod_1.z.string(),
1083
+ deviceType: zod_1.z.string(),
1084
+ publicKeyJwk: JwkPublicKey,
1085
+ attestationToken: zod_1.z.string(),
1086
+ })
1087
+ .passthrough();
1088
+ const Platform = zod_1.z.enum(["europe", "americas", "asia", "sea"]);
1089
+ const RankedQueue = zod_1.z.enum([
1090
+ "RANKED_SOLO_5x5",
1091
+ "RANKED_FLEX_SR",
1092
+ "RANKED_FLEX_TT",
1093
+ ]);
722
1094
  const RankedDivision = zod_1.z.enum(["I", "II", "III", "IV"]);
1095
+ const AggregatedStats = zod_1.z
1096
+ .object({
1097
+ region: Region,
1098
+ championId: zod_1.z.number().int(),
1099
+ patchVersion: zod_1.z.string(),
1100
+ tier: zod_1.z.string(),
1101
+ queueId: zod_1.z.number().int(),
1102
+ picks: zod_1.z.number().int(),
1103
+ wins: zod_1.z.number().int(),
1104
+ losses: zod_1.z.number().int(),
1105
+ bans: zod_1.z.number().int(),
1106
+ sampleSize: zod_1.z.number().int(),
1107
+ lastComputedAt: zod_1.z.string().datetime({ offset: true }),
1108
+ })
1109
+ .passthrough();
1110
+ const GameLengthBucket = zod_1.z.enum(["short", "medium", "long"]);
723
1111
  exports.schemas = {
724
1112
  LeagueMiniseries,
725
1113
  LeagueEntry,
@@ -754,13 +1142,65 @@ exports.schemas = {
754
1142
  Match,
755
1143
  LeaderboardPlayer,
756
1144
  LeaderBoardPlayerList,
1145
+ ChampionStatsView,
1146
+ ChampionStatsListResponseData,
1147
+ Region,
1148
+ ChampionStatsMeta,
1149
+ ChampionStatsListResponse,
1150
+ ChampionStatsDetailResponse,
1151
+ Lane,
1152
+ ChampionMatchupStatsItem,
1153
+ ChampionMatchupStatsListResponseData,
1154
+ StatsMetaCommon,
1155
+ StatsMetaWithLane,
1156
+ ChampionMatchupStatsListResponse,
1157
+ ChampionSynergyStatsItem,
1158
+ ChampionSynergyStatsListResponseData,
1159
+ ChampionSynergyStatsListResponse,
1160
+ ChampionPerformanceStatsItem,
1161
+ ChampionPerformanceStatsListResponseData,
1162
+ ChampionPerformanceStatsListResponse,
1163
+ ChampionPerformanceStatsDetailResponse,
1164
+ ChampionObjectiveStatsItem,
1165
+ ChampionObjectiveStatsListResponseData,
1166
+ ChampionObjectiveStatsListResponse,
1167
+ ChampionGameLengthStatsItem,
1168
+ ChampionGameLengthStatsListResponseData,
1169
+ ChampionGameLengthStatsResponse,
1170
+ ChampionEarlyGameStatsItem,
1171
+ ChampionEarlyGameStatsResponse,
1172
+ PlayerStatsType,
1173
+ RankedTier,
1174
+ PlayerStatsChampionsParams,
1175
+ PlayerStatsTeammatesParams,
1176
+ PlayerStatsOpponentsParams,
1177
+ PlayerStatsTimelineParams,
1178
+ PlayerStatsJobParams,
1179
+ PlayerStatsJobRequest,
1180
+ PlayerStatsJobStatus,
1181
+ PlayerStatsChampionSummary,
1182
+ PlayerStatsChampionsResult,
1183
+ PlayerStatsTeammateSummary,
1184
+ PlayerStatsTeammatesResult,
1185
+ PlayerStatsOpponentSummary,
1186
+ PlayerStatsOpponentsResult,
1187
+ PlayerStatsTimelineBucket,
1188
+ PlayerStatsTimelineResult,
1189
+ PlayerStatsResult,
1190
+ PlayerStatsErrorIssue,
1191
+ PlayerStatsErrorDetails,
1192
+ PlayerStatsCacheEntry,
1193
+ PlayerStatsRegionMeta,
1194
+ PlayerStatsCacheEntryResponse,
1195
+ PlayerStatsJobAccepted,
1196
+ PlayerStatsJobAcceptedResponse,
757
1197
  JwkPublicKey,
758
1198
  Device,
759
- Region,
760
1199
  Platform,
761
1200
  RankedQueue,
762
- RankedTier,
763
1201
  RankedDivision,
1202
+ AggregatedStats,
1203
+ GameLengthBucket,
764
1204
  };
765
1205
  const endpoints = (0, core_1.makeApi)([
766
1206
  {
@@ -898,7 +1338,7 @@ const endpoints = (0, core_1.makeApi)([
898
1338
  },
899
1339
  {
900
1340
  method: "get",
901
- path: "/auth/challenge",
1341
+ path: "/auth/challenge/:deviceId",
902
1342
  alias: "getAuthChallenge",
903
1343
  description: `Retrieve a unique authentication challenge that can be signed with the device's private key to authenticate requests`,
904
1344
  requestFormat: "json",
@@ -1444,6 +1884,1732 @@ const endpoints = (0, core_1.makeApi)([
1444
1884
  },
1445
1885
  ],
1446
1886
  },
1887
+ {
1888
+ method: "get",
1889
+ path: "/players/:puuid/stats/:jobId",
1890
+ alias: "getPlayerStatsJobStatus",
1891
+ description: `Retrieve the status or result for a region-scoped player stats job.`,
1892
+ requestFormat: "json",
1893
+ parameters: [
1894
+ {
1895
+ name: "puuid",
1896
+ type: "Path",
1897
+ schema: zod_1.z.string(),
1898
+ },
1899
+ {
1900
+ name: "jobId",
1901
+ type: "Path",
1902
+ schema: zod_1.z.string(),
1903
+ },
1904
+ {
1905
+ name: "region",
1906
+ type: "Query",
1907
+ schema: zod_1.z.enum([
1908
+ "br1",
1909
+ "euw1",
1910
+ "na1",
1911
+ "eun1",
1912
+ "kr",
1913
+ "jp1",
1914
+ "la1",
1915
+ "la2",
1916
+ "oc1",
1917
+ "tr1",
1918
+ "ru",
1919
+ "ph2",
1920
+ "sg2",
1921
+ "th2",
1922
+ "tw2",
1923
+ "vn2",
1924
+ ]),
1925
+ },
1926
+ ],
1927
+ response: PlayerStatsCacheEntryResponse,
1928
+ errors: [
1929
+ {
1930
+ status: 400,
1931
+ description: `Validation error.`,
1932
+ schema: validationError,
1933
+ },
1934
+ {
1935
+ status: 404,
1936
+ description: `Job not found.`,
1937
+ schema: zod_1.z.object({ message: zod_1.z.string() }).passthrough(),
1938
+ },
1939
+ {
1940
+ status: 500,
1941
+ description: `Internal server error.`,
1942
+ schema: zod_1.z.object({ message: zod_1.z.string() }).passthrough(),
1943
+ },
1944
+ ],
1945
+ },
1946
+ {
1947
+ method: "post",
1948
+ path: "/players/:puuid/stats/request",
1949
+ alias: "requestPlayerStatsJob",
1950
+ description: `Request player stats computation for a specific region and stats type.
1951
+ Behavior:
1952
+ - If valid cache exists for same (region, puuid, type, paramsHash), return 200 with cached result.
1953
+ - If equivalent in-flight job exists, return 202 with existing jobId (do not enqueue duplicate).
1954
+ - Else enqueue a new job and return 202 with new jobId.`,
1955
+ requestFormat: "json",
1956
+ parameters: [
1957
+ {
1958
+ name: "body",
1959
+ type: "Body",
1960
+ schema: PlayerStatsJobRequest,
1961
+ },
1962
+ {
1963
+ name: "puuid",
1964
+ type: "Path",
1965
+ schema: zod_1.z.string(),
1966
+ },
1967
+ ],
1968
+ response: PlayerStatsCacheEntryResponse,
1969
+ errors: [
1970
+ {
1971
+ status: 400,
1972
+ description: `Validation error.`,
1973
+ schema: validationError,
1974
+ },
1975
+ {
1976
+ status: 500,
1977
+ description: `Internal server error.`,
1978
+ schema: zod_1.z.object({ message: zod_1.z.string() }).passthrough(),
1979
+ },
1980
+ ],
1981
+ },
1982
+ {
1983
+ method: "get",
1984
+ path: "/stats/champions",
1985
+ alias: "getChampionStatsByRegionPatchTier",
1986
+ description: `Retrieve champion aggregated statistics for a specific region, patch, and tier.`,
1987
+ requestFormat: "json",
1988
+ parameters: [
1989
+ {
1990
+ name: "region",
1991
+ type: "Query",
1992
+ schema: zod_1.z.enum([
1993
+ "br1",
1994
+ "euw1",
1995
+ "na1",
1996
+ "eun1",
1997
+ "kr",
1998
+ "jp1",
1999
+ "la1",
2000
+ "la2",
2001
+ "oc1",
2002
+ "tr1",
2003
+ "ru",
2004
+ "ph2",
2005
+ "sg2",
2006
+ "th2",
2007
+ "tw2",
2008
+ "vn2",
2009
+ ]),
2010
+ },
2011
+ {
2012
+ name: "patch",
2013
+ type: "Query",
2014
+ schema: zod_1.z.string().optional(),
2015
+ },
2016
+ {
2017
+ name: "tier",
2018
+ type: "Query",
2019
+ schema: zod_1.z.enum([
2020
+ "IRON",
2021
+ "BRONZE",
2022
+ "SILVER",
2023
+ "GOLD",
2024
+ "PLATINUM",
2025
+ "EMERALD",
2026
+ "DIAMOND",
2027
+ "MASTER",
2028
+ "GRANDMASTER",
2029
+ "CHALLENGER",
2030
+ ]),
2031
+ },
2032
+ {
2033
+ name: "queue",
2034
+ type: "Query",
2035
+ schema: zod_1.z
2036
+ .union([
2037
+ zod_1.z.literal(0),
2038
+ zod_1.z.literal(2),
2039
+ zod_1.z.literal(4),
2040
+ zod_1.z.literal(6),
2041
+ zod_1.z.literal(7),
2042
+ zod_1.z.literal(8),
2043
+ zod_1.z.literal(9),
2044
+ zod_1.z.literal(14),
2045
+ zod_1.z.literal(16),
2046
+ zod_1.z.literal(17),
2047
+ zod_1.z.literal(25),
2048
+ zod_1.z.literal(31),
2049
+ zod_1.z.literal(32),
2050
+ zod_1.z.literal(33),
2051
+ zod_1.z.literal(41),
2052
+ zod_1.z.literal(42),
2053
+ zod_1.z.literal(52),
2054
+ zod_1.z.literal(61),
2055
+ zod_1.z.literal(65),
2056
+ zod_1.z.literal(67),
2057
+ zod_1.z.literal(70),
2058
+ zod_1.z.literal(72),
2059
+ zod_1.z.literal(73),
2060
+ zod_1.z.literal(75),
2061
+ zod_1.z.literal(76),
2062
+ zod_1.z.literal(78),
2063
+ zod_1.z.literal(83),
2064
+ zod_1.z.literal(91),
2065
+ zod_1.z.literal(92),
2066
+ zod_1.z.literal(93),
2067
+ zod_1.z.literal(96),
2068
+ zod_1.z.literal(98),
2069
+ zod_1.z.literal(100),
2070
+ zod_1.z.literal(300),
2071
+ zod_1.z.literal(310),
2072
+ zod_1.z.literal(313),
2073
+ zod_1.z.literal(315),
2074
+ zod_1.z.literal(317),
2075
+ zod_1.z.literal(318),
2076
+ zod_1.z.literal(325),
2077
+ zod_1.z.literal(400),
2078
+ zod_1.z.literal(410),
2079
+ zod_1.z.literal(420),
2080
+ zod_1.z.literal(430),
2081
+ zod_1.z.literal(440),
2082
+ zod_1.z.literal(450),
2083
+ zod_1.z.literal(460),
2084
+ zod_1.z.literal(470),
2085
+ zod_1.z.literal(480),
2086
+ zod_1.z.literal(490),
2087
+ zod_1.z.literal(600),
2088
+ zod_1.z.literal(610),
2089
+ zod_1.z.literal(700),
2090
+ zod_1.z.literal(720),
2091
+ zod_1.z.literal(800),
2092
+ zod_1.z.literal(810),
2093
+ zod_1.z.literal(820),
2094
+ zod_1.z.literal(830),
2095
+ zod_1.z.literal(840),
2096
+ zod_1.z.literal(850),
2097
+ zod_1.z.literal(870),
2098
+ zod_1.z.literal(880),
2099
+ zod_1.z.literal(890),
2100
+ zod_1.z.literal(900),
2101
+ zod_1.z.literal(910),
2102
+ zod_1.z.literal(920),
2103
+ zod_1.z.literal(940),
2104
+ zod_1.z.literal(950),
2105
+ zod_1.z.literal(960),
2106
+ zod_1.z.literal(980),
2107
+ zod_1.z.literal(990),
2108
+ zod_1.z.literal(1000),
2109
+ zod_1.z.literal(1010),
2110
+ zod_1.z.literal(1020),
2111
+ zod_1.z.literal(1030),
2112
+ zod_1.z.literal(1040),
2113
+ zod_1.z.literal(1050),
2114
+ zod_1.z.literal(1060),
2115
+ zod_1.z.literal(1070),
2116
+ zod_1.z.literal(1090),
2117
+ zod_1.z.literal(1100),
2118
+ zod_1.z.literal(1110),
2119
+ zod_1.z.literal(1111),
2120
+ zod_1.z.literal(1200),
2121
+ zod_1.z.literal(1210),
2122
+ zod_1.z.literal(1300),
2123
+ zod_1.z.literal(1400),
2124
+ zod_1.z.literal(1700),
2125
+ zod_1.z.literal(1710),
2126
+ zod_1.z.literal(1810),
2127
+ zod_1.z.literal(1820),
2128
+ zod_1.z.literal(1830),
2129
+ zod_1.z.literal(1840),
2130
+ zod_1.z.literal(1900),
2131
+ zod_1.z.literal(2000),
2132
+ zod_1.z.literal(2010),
2133
+ zod_1.z.literal(2020),
2134
+ zod_1.z.literal(2300),
2135
+ zod_1.z.literal(2400),
2136
+ ])
2137
+ .optional(),
2138
+ },
2139
+ ],
2140
+ response: ChampionStatsListResponse,
2141
+ errors: [
2142
+ {
2143
+ status: 400,
2144
+ description: `Validation error.`,
2145
+ schema: validationError,
2146
+ },
2147
+ {
2148
+ status: 500,
2149
+ description: `Internal server error.`,
2150
+ schema: zod_1.z.object({ message: zod_1.z.string() }).passthrough(),
2151
+ },
2152
+ ],
2153
+ },
2154
+ {
2155
+ method: "get",
2156
+ path: "/stats/champions/:championId",
2157
+ alias: "getChampionStatsDetailByRegion",
2158
+ description: `Retrieve aggregated stats for a single champion for a specific region.`,
2159
+ requestFormat: "json",
2160
+ parameters: [
2161
+ {
2162
+ name: "championId",
2163
+ type: "Path",
2164
+ schema: zod_1.z.number().int(),
2165
+ },
2166
+ {
2167
+ name: "region",
2168
+ type: "Query",
2169
+ schema: zod_1.z.enum([
2170
+ "br1",
2171
+ "euw1",
2172
+ "na1",
2173
+ "eun1",
2174
+ "kr",
2175
+ "jp1",
2176
+ "la1",
2177
+ "la2",
2178
+ "oc1",
2179
+ "tr1",
2180
+ "ru",
2181
+ "ph2",
2182
+ "sg2",
2183
+ "th2",
2184
+ "tw2",
2185
+ "vn2",
2186
+ ]),
2187
+ },
2188
+ {
2189
+ name: "patch",
2190
+ type: "Query",
2191
+ schema: zod_1.z.string(),
2192
+ },
2193
+ {
2194
+ name: "tier",
2195
+ type: "Query",
2196
+ schema: zod_1.z
2197
+ .enum([
2198
+ "IRON",
2199
+ "BRONZE",
2200
+ "SILVER",
2201
+ "GOLD",
2202
+ "PLATINUM",
2203
+ "EMERALD",
2204
+ "DIAMOND",
2205
+ "MASTER",
2206
+ "GRANDMASTER",
2207
+ "CHALLENGER",
2208
+ ])
2209
+ .optional(),
2210
+ },
2211
+ {
2212
+ name: "queue",
2213
+ type: "Query",
2214
+ schema: zod_1.z
2215
+ .union([
2216
+ zod_1.z.literal(0),
2217
+ zod_1.z.literal(2),
2218
+ zod_1.z.literal(4),
2219
+ zod_1.z.literal(6),
2220
+ zod_1.z.literal(7),
2221
+ zod_1.z.literal(8),
2222
+ zod_1.z.literal(9),
2223
+ zod_1.z.literal(14),
2224
+ zod_1.z.literal(16),
2225
+ zod_1.z.literal(17),
2226
+ zod_1.z.literal(25),
2227
+ zod_1.z.literal(31),
2228
+ zod_1.z.literal(32),
2229
+ zod_1.z.literal(33),
2230
+ zod_1.z.literal(41),
2231
+ zod_1.z.literal(42),
2232
+ zod_1.z.literal(52),
2233
+ zod_1.z.literal(61),
2234
+ zod_1.z.literal(65),
2235
+ zod_1.z.literal(67),
2236
+ zod_1.z.literal(70),
2237
+ zod_1.z.literal(72),
2238
+ zod_1.z.literal(73),
2239
+ zod_1.z.literal(75),
2240
+ zod_1.z.literal(76),
2241
+ zod_1.z.literal(78),
2242
+ zod_1.z.literal(83),
2243
+ zod_1.z.literal(91),
2244
+ zod_1.z.literal(92),
2245
+ zod_1.z.literal(93),
2246
+ zod_1.z.literal(96),
2247
+ zod_1.z.literal(98),
2248
+ zod_1.z.literal(100),
2249
+ zod_1.z.literal(300),
2250
+ zod_1.z.literal(310),
2251
+ zod_1.z.literal(313),
2252
+ zod_1.z.literal(315),
2253
+ zod_1.z.literal(317),
2254
+ zod_1.z.literal(318),
2255
+ zod_1.z.literal(325),
2256
+ zod_1.z.literal(400),
2257
+ zod_1.z.literal(410),
2258
+ zod_1.z.literal(420),
2259
+ zod_1.z.literal(430),
2260
+ zod_1.z.literal(440),
2261
+ zod_1.z.literal(450),
2262
+ zod_1.z.literal(460),
2263
+ zod_1.z.literal(470),
2264
+ zod_1.z.literal(480),
2265
+ zod_1.z.literal(490),
2266
+ zod_1.z.literal(600),
2267
+ zod_1.z.literal(610),
2268
+ zod_1.z.literal(700),
2269
+ zod_1.z.literal(720),
2270
+ zod_1.z.literal(800),
2271
+ zod_1.z.literal(810),
2272
+ zod_1.z.literal(820),
2273
+ zod_1.z.literal(830),
2274
+ zod_1.z.literal(840),
2275
+ zod_1.z.literal(850),
2276
+ zod_1.z.literal(870),
2277
+ zod_1.z.literal(880),
2278
+ zod_1.z.literal(890),
2279
+ zod_1.z.literal(900),
2280
+ zod_1.z.literal(910),
2281
+ zod_1.z.literal(920),
2282
+ zod_1.z.literal(940),
2283
+ zod_1.z.literal(950),
2284
+ zod_1.z.literal(960),
2285
+ zod_1.z.literal(980),
2286
+ zod_1.z.literal(990),
2287
+ zod_1.z.literal(1000),
2288
+ zod_1.z.literal(1010),
2289
+ zod_1.z.literal(1020),
2290
+ zod_1.z.literal(1030),
2291
+ zod_1.z.literal(1040),
2292
+ zod_1.z.literal(1050),
2293
+ zod_1.z.literal(1060),
2294
+ zod_1.z.literal(1070),
2295
+ zod_1.z.literal(1090),
2296
+ zod_1.z.literal(1100),
2297
+ zod_1.z.literal(1110),
2298
+ zod_1.z.literal(1111),
2299
+ zod_1.z.literal(1200),
2300
+ zod_1.z.literal(1210),
2301
+ zod_1.z.literal(1300),
2302
+ zod_1.z.literal(1400),
2303
+ zod_1.z.literal(1700),
2304
+ zod_1.z.literal(1710),
2305
+ zod_1.z.literal(1810),
2306
+ zod_1.z.literal(1820),
2307
+ zod_1.z.literal(1830),
2308
+ zod_1.z.literal(1840),
2309
+ zod_1.z.literal(1900),
2310
+ zod_1.z.literal(2000),
2311
+ zod_1.z.literal(2010),
2312
+ zod_1.z.literal(2020),
2313
+ zod_1.z.literal(2300),
2314
+ zod_1.z.literal(2400),
2315
+ ])
2316
+ .optional(),
2317
+ },
2318
+ ],
2319
+ response: ChampionStatsDetailResponse,
2320
+ errors: [
2321
+ {
2322
+ status: 400,
2323
+ description: `Validation error.`,
2324
+ schema: validationError,
2325
+ },
2326
+ {
2327
+ status: 404,
2328
+ description: `Champion stats not found.`,
2329
+ schema: zod_1.z.object({ message: zod_1.z.string() }).passthrough(),
2330
+ },
2331
+ {
2332
+ status: 500,
2333
+ description: `Internal server error.`,
2334
+ schema: zod_1.z.object({ message: zod_1.z.string() }).passthrough(),
2335
+ },
2336
+ ],
2337
+ },
2338
+ {
2339
+ method: "get",
2340
+ path: "/stats/champions/:championId/early-game",
2341
+ alias: "getChampionEarlyGameStatsByRegion",
2342
+ description: `Retrieve first blood, lane lead, and early death indicators for one champion.
2343
+ All metrics are computed within the requested region only.
2344
+ Early-game metrics include metricDefinitionVersion to track definition changes.
2345
+ All rates are returned as decimal values in range [0, 1].`,
2346
+ requestFormat: "json",
2347
+ parameters: [
2348
+ {
2349
+ name: "championId",
2350
+ type: "Path",
2351
+ schema: zod_1.z.number().int(),
2352
+ },
2353
+ {
2354
+ name: "region",
2355
+ type: "Query",
2356
+ schema: zod_1.z.enum([
2357
+ "br1",
2358
+ "euw1",
2359
+ "na1",
2360
+ "eun1",
2361
+ "kr",
2362
+ "jp1",
2363
+ "la1",
2364
+ "la2",
2365
+ "oc1",
2366
+ "tr1",
2367
+ "ru",
2368
+ "ph2",
2369
+ "sg2",
2370
+ "th2",
2371
+ "tw2",
2372
+ "vn2",
2373
+ ]),
2374
+ },
2375
+ {
2376
+ name: "patch",
2377
+ type: "Query",
2378
+ schema: zod_1.z.string(),
2379
+ },
2380
+ {
2381
+ name: "tier",
2382
+ type: "Query",
2383
+ schema: zod_1.z.enum([
2384
+ "IRON",
2385
+ "BRONZE",
2386
+ "SILVER",
2387
+ "GOLD",
2388
+ "PLATINUM",
2389
+ "EMERALD",
2390
+ "DIAMOND",
2391
+ "MASTER",
2392
+ "GRANDMASTER",
2393
+ "CHALLENGER",
2394
+ ]),
2395
+ },
2396
+ {
2397
+ name: "queue",
2398
+ type: "Query",
2399
+ schema: zod_1.z.union([
2400
+ zod_1.z.literal(0),
2401
+ zod_1.z.literal(2),
2402
+ zod_1.z.literal(4),
2403
+ zod_1.z.literal(6),
2404
+ zod_1.z.literal(7),
2405
+ zod_1.z.literal(8),
2406
+ zod_1.z.literal(9),
2407
+ zod_1.z.literal(14),
2408
+ zod_1.z.literal(16),
2409
+ zod_1.z.literal(17),
2410
+ zod_1.z.literal(25),
2411
+ zod_1.z.literal(31),
2412
+ zod_1.z.literal(32),
2413
+ zod_1.z.literal(33),
2414
+ zod_1.z.literal(41),
2415
+ zod_1.z.literal(42),
2416
+ zod_1.z.literal(52),
2417
+ zod_1.z.literal(61),
2418
+ zod_1.z.literal(65),
2419
+ zod_1.z.literal(67),
2420
+ zod_1.z.literal(70),
2421
+ zod_1.z.literal(72),
2422
+ zod_1.z.literal(73),
2423
+ zod_1.z.literal(75),
2424
+ zod_1.z.literal(76),
2425
+ zod_1.z.literal(78),
2426
+ zod_1.z.literal(83),
2427
+ zod_1.z.literal(91),
2428
+ zod_1.z.literal(92),
2429
+ zod_1.z.literal(93),
2430
+ zod_1.z.literal(96),
2431
+ zod_1.z.literal(98),
2432
+ zod_1.z.literal(100),
2433
+ zod_1.z.literal(300),
2434
+ zod_1.z.literal(310),
2435
+ zod_1.z.literal(313),
2436
+ zod_1.z.literal(315),
2437
+ zod_1.z.literal(317),
2438
+ zod_1.z.literal(318),
2439
+ zod_1.z.literal(325),
2440
+ zod_1.z.literal(400),
2441
+ zod_1.z.literal(410),
2442
+ zod_1.z.literal(420),
2443
+ zod_1.z.literal(430),
2444
+ zod_1.z.literal(440),
2445
+ zod_1.z.literal(450),
2446
+ zod_1.z.literal(460),
2447
+ zod_1.z.literal(470),
2448
+ zod_1.z.literal(480),
2449
+ zod_1.z.literal(490),
2450
+ zod_1.z.literal(600),
2451
+ zod_1.z.literal(610),
2452
+ zod_1.z.literal(700),
2453
+ zod_1.z.literal(720),
2454
+ zod_1.z.literal(800),
2455
+ zod_1.z.literal(810),
2456
+ zod_1.z.literal(820),
2457
+ zod_1.z.literal(830),
2458
+ zod_1.z.literal(840),
2459
+ zod_1.z.literal(850),
2460
+ zod_1.z.literal(870),
2461
+ zod_1.z.literal(880),
2462
+ zod_1.z.literal(890),
2463
+ zod_1.z.literal(900),
2464
+ zod_1.z.literal(910),
2465
+ zod_1.z.literal(920),
2466
+ zod_1.z.literal(940),
2467
+ zod_1.z.literal(950),
2468
+ zod_1.z.literal(960),
2469
+ zod_1.z.literal(980),
2470
+ zod_1.z.literal(990),
2471
+ zod_1.z.literal(1000),
2472
+ zod_1.z.literal(1010),
2473
+ zod_1.z.literal(1020),
2474
+ zod_1.z.literal(1030),
2475
+ zod_1.z.literal(1040),
2476
+ zod_1.z.literal(1050),
2477
+ zod_1.z.literal(1060),
2478
+ zod_1.z.literal(1070),
2479
+ zod_1.z.literal(1090),
2480
+ zod_1.z.literal(1100),
2481
+ zod_1.z.literal(1110),
2482
+ zod_1.z.literal(1111),
2483
+ zod_1.z.literal(1200),
2484
+ zod_1.z.literal(1210),
2485
+ zod_1.z.literal(1300),
2486
+ zod_1.z.literal(1400),
2487
+ zod_1.z.literal(1700),
2488
+ zod_1.z.literal(1710),
2489
+ zod_1.z.literal(1810),
2490
+ zod_1.z.literal(1820),
2491
+ zod_1.z.literal(1830),
2492
+ zod_1.z.literal(1840),
2493
+ zod_1.z.literal(1900),
2494
+ zod_1.z.literal(2000),
2495
+ zod_1.z.literal(2010),
2496
+ zod_1.z.literal(2020),
2497
+ zod_1.z.literal(2300),
2498
+ zod_1.z.literal(2400),
2499
+ ]),
2500
+ },
2501
+ ],
2502
+ response: ChampionEarlyGameStatsResponse,
2503
+ errors: [
2504
+ {
2505
+ status: 400,
2506
+ description: `Validation error.`,
2507
+ schema: zod_1.z.object({ message: zod_1.z.string() }).passthrough(),
2508
+ },
2509
+ {
2510
+ status: 404,
2511
+ description: `Champion not found in dataset.`,
2512
+ schema: zod_1.z.object({ message: zod_1.z.string() }).passthrough(),
2513
+ },
2514
+ {
2515
+ status: 500,
2516
+ description: `Internal server error.`,
2517
+ schema: zod_1.z.object({ message: zod_1.z.string() }).passthrough(),
2518
+ },
2519
+ ],
2520
+ },
2521
+ {
2522
+ method: "get",
2523
+ path: "/stats/champions/:championId/game-length",
2524
+ alias: "getChampionGameLengthStatsByRegion",
2525
+ description: `Retrieve short/medium/long game performance for one champion.
2526
+ All metrics are computed within the requested region only.
2527
+ All rates are returned as decimal values in range [0, 1].`,
2528
+ requestFormat: "json",
2529
+ parameters: [
2530
+ {
2531
+ name: "championId",
2532
+ type: "Path",
2533
+ schema: zod_1.z.number().int(),
2534
+ },
2535
+ {
2536
+ name: "region",
2537
+ type: "Query",
2538
+ schema: zod_1.z.enum([
2539
+ "br1",
2540
+ "euw1",
2541
+ "na1",
2542
+ "eun1",
2543
+ "kr",
2544
+ "jp1",
2545
+ "la1",
2546
+ "la2",
2547
+ "oc1",
2548
+ "tr1",
2549
+ "ru",
2550
+ "ph2",
2551
+ "sg2",
2552
+ "th2",
2553
+ "tw2",
2554
+ "vn2",
2555
+ ]),
2556
+ },
2557
+ {
2558
+ name: "patch",
2559
+ type: "Query",
2560
+ schema: zod_1.z.string(),
2561
+ },
2562
+ {
2563
+ name: "tier",
2564
+ type: "Query",
2565
+ schema: zod_1.z.enum([
2566
+ "IRON",
2567
+ "BRONZE",
2568
+ "SILVER",
2569
+ "GOLD",
2570
+ "PLATINUM",
2571
+ "EMERALD",
2572
+ "DIAMOND",
2573
+ "MASTER",
2574
+ "GRANDMASTER",
2575
+ "CHALLENGER",
2576
+ ]),
2577
+ },
2578
+ {
2579
+ name: "queue",
2580
+ type: "Query",
2581
+ schema: zod_1.z.union([
2582
+ zod_1.z.literal(0),
2583
+ zod_1.z.literal(2),
2584
+ zod_1.z.literal(4),
2585
+ zod_1.z.literal(6),
2586
+ zod_1.z.literal(7),
2587
+ zod_1.z.literal(8),
2588
+ zod_1.z.literal(9),
2589
+ zod_1.z.literal(14),
2590
+ zod_1.z.literal(16),
2591
+ zod_1.z.literal(17),
2592
+ zod_1.z.literal(25),
2593
+ zod_1.z.literal(31),
2594
+ zod_1.z.literal(32),
2595
+ zod_1.z.literal(33),
2596
+ zod_1.z.literal(41),
2597
+ zod_1.z.literal(42),
2598
+ zod_1.z.literal(52),
2599
+ zod_1.z.literal(61),
2600
+ zod_1.z.literal(65),
2601
+ zod_1.z.literal(67),
2602
+ zod_1.z.literal(70),
2603
+ zod_1.z.literal(72),
2604
+ zod_1.z.literal(73),
2605
+ zod_1.z.literal(75),
2606
+ zod_1.z.literal(76),
2607
+ zod_1.z.literal(78),
2608
+ zod_1.z.literal(83),
2609
+ zod_1.z.literal(91),
2610
+ zod_1.z.literal(92),
2611
+ zod_1.z.literal(93),
2612
+ zod_1.z.literal(96),
2613
+ zod_1.z.literal(98),
2614
+ zod_1.z.literal(100),
2615
+ zod_1.z.literal(300),
2616
+ zod_1.z.literal(310),
2617
+ zod_1.z.literal(313),
2618
+ zod_1.z.literal(315),
2619
+ zod_1.z.literal(317),
2620
+ zod_1.z.literal(318),
2621
+ zod_1.z.literal(325),
2622
+ zod_1.z.literal(400),
2623
+ zod_1.z.literal(410),
2624
+ zod_1.z.literal(420),
2625
+ zod_1.z.literal(430),
2626
+ zod_1.z.literal(440),
2627
+ zod_1.z.literal(450),
2628
+ zod_1.z.literal(460),
2629
+ zod_1.z.literal(470),
2630
+ zod_1.z.literal(480),
2631
+ zod_1.z.literal(490),
2632
+ zod_1.z.literal(600),
2633
+ zod_1.z.literal(610),
2634
+ zod_1.z.literal(700),
2635
+ zod_1.z.literal(720),
2636
+ zod_1.z.literal(800),
2637
+ zod_1.z.literal(810),
2638
+ zod_1.z.literal(820),
2639
+ zod_1.z.literal(830),
2640
+ zod_1.z.literal(840),
2641
+ zod_1.z.literal(850),
2642
+ zod_1.z.literal(870),
2643
+ zod_1.z.literal(880),
2644
+ zod_1.z.literal(890),
2645
+ zod_1.z.literal(900),
2646
+ zod_1.z.literal(910),
2647
+ zod_1.z.literal(920),
2648
+ zod_1.z.literal(940),
2649
+ zod_1.z.literal(950),
2650
+ zod_1.z.literal(960),
2651
+ zod_1.z.literal(980),
2652
+ zod_1.z.literal(990),
2653
+ zod_1.z.literal(1000),
2654
+ zod_1.z.literal(1010),
2655
+ zod_1.z.literal(1020),
2656
+ zod_1.z.literal(1030),
2657
+ zod_1.z.literal(1040),
2658
+ zod_1.z.literal(1050),
2659
+ zod_1.z.literal(1060),
2660
+ zod_1.z.literal(1070),
2661
+ zod_1.z.literal(1090),
2662
+ zod_1.z.literal(1100),
2663
+ zod_1.z.literal(1110),
2664
+ zod_1.z.literal(1111),
2665
+ zod_1.z.literal(1200),
2666
+ zod_1.z.literal(1210),
2667
+ zod_1.z.literal(1300),
2668
+ zod_1.z.literal(1400),
2669
+ zod_1.z.literal(1700),
2670
+ zod_1.z.literal(1710),
2671
+ zod_1.z.literal(1810),
2672
+ zod_1.z.literal(1820),
2673
+ zod_1.z.literal(1830),
2674
+ zod_1.z.literal(1840),
2675
+ zod_1.z.literal(1900),
2676
+ zod_1.z.literal(2000),
2677
+ zod_1.z.literal(2010),
2678
+ zod_1.z.literal(2020),
2679
+ zod_1.z.literal(2300),
2680
+ zod_1.z.literal(2400),
2681
+ ]),
2682
+ },
2683
+ ],
2684
+ response: ChampionGameLengthStatsResponse,
2685
+ errors: [
2686
+ {
2687
+ status: 400,
2688
+ description: `Validation error.`,
2689
+ schema: zod_1.z.object({ message: zod_1.z.string() }).passthrough(),
2690
+ },
2691
+ {
2692
+ status: 404,
2693
+ description: `Champion not found in dataset.`,
2694
+ schema: zod_1.z.object({ message: zod_1.z.string() }).passthrough(),
2695
+ },
2696
+ {
2697
+ status: 500,
2698
+ description: `Internal server error.`,
2699
+ schema: zod_1.z.object({ message: zod_1.z.string() }).passthrough(),
2700
+ },
2701
+ ],
2702
+ },
2703
+ {
2704
+ method: "get",
2705
+ path: "/stats/champions/:championId/matchups",
2706
+ alias: "getChampionMatchupsByRegion",
2707
+ description: `Retrieve directional champion-vs-champion matchup metrics.
2708
+ All metrics are computed within the requested region only.
2709
+ For matchup endpoints, results are directional: A vs B is distinct from B vs A.
2710
+ When lane cannot be reliably inferred, records use lane=unknown.
2711
+ All rates are returned as decimal values in range [0, 1].`,
2712
+ requestFormat: "json",
2713
+ parameters: [
2714
+ {
2715
+ name: "championId",
2716
+ type: "Path",
2717
+ schema: zod_1.z.number().int(),
2718
+ },
2719
+ {
2720
+ name: "region",
2721
+ type: "Query",
2722
+ schema: zod_1.z.enum([
2723
+ "br1",
2724
+ "euw1",
2725
+ "na1",
2726
+ "eun1",
2727
+ "kr",
2728
+ "jp1",
2729
+ "la1",
2730
+ "la2",
2731
+ "oc1",
2732
+ "tr1",
2733
+ "ru",
2734
+ "ph2",
2735
+ "sg2",
2736
+ "th2",
2737
+ "tw2",
2738
+ "vn2",
2739
+ ]),
2740
+ },
2741
+ {
2742
+ name: "patch",
2743
+ type: "Query",
2744
+ schema: zod_1.z.string(),
2745
+ },
2746
+ {
2747
+ name: "tier",
2748
+ type: "Query",
2749
+ schema: zod_1.z.enum([
2750
+ "IRON",
2751
+ "BRONZE",
2752
+ "SILVER",
2753
+ "GOLD",
2754
+ "PLATINUM",
2755
+ "EMERALD",
2756
+ "DIAMOND",
2757
+ "MASTER",
2758
+ "GRANDMASTER",
2759
+ "CHALLENGER",
2760
+ ]),
2761
+ },
2762
+ {
2763
+ name: "queue",
2764
+ type: "Query",
2765
+ schema: zod_1.z.union([
2766
+ zod_1.z.literal(0),
2767
+ zod_1.z.literal(2),
2768
+ zod_1.z.literal(4),
2769
+ zod_1.z.literal(6),
2770
+ zod_1.z.literal(7),
2771
+ zod_1.z.literal(8),
2772
+ zod_1.z.literal(9),
2773
+ zod_1.z.literal(14),
2774
+ zod_1.z.literal(16),
2775
+ zod_1.z.literal(17),
2776
+ zod_1.z.literal(25),
2777
+ zod_1.z.literal(31),
2778
+ zod_1.z.literal(32),
2779
+ zod_1.z.literal(33),
2780
+ zod_1.z.literal(41),
2781
+ zod_1.z.literal(42),
2782
+ zod_1.z.literal(52),
2783
+ zod_1.z.literal(61),
2784
+ zod_1.z.literal(65),
2785
+ zod_1.z.literal(67),
2786
+ zod_1.z.literal(70),
2787
+ zod_1.z.literal(72),
2788
+ zod_1.z.literal(73),
2789
+ zod_1.z.literal(75),
2790
+ zod_1.z.literal(76),
2791
+ zod_1.z.literal(78),
2792
+ zod_1.z.literal(83),
2793
+ zod_1.z.literal(91),
2794
+ zod_1.z.literal(92),
2795
+ zod_1.z.literal(93),
2796
+ zod_1.z.literal(96),
2797
+ zod_1.z.literal(98),
2798
+ zod_1.z.literal(100),
2799
+ zod_1.z.literal(300),
2800
+ zod_1.z.literal(310),
2801
+ zod_1.z.literal(313),
2802
+ zod_1.z.literal(315),
2803
+ zod_1.z.literal(317),
2804
+ zod_1.z.literal(318),
2805
+ zod_1.z.literal(325),
2806
+ zod_1.z.literal(400),
2807
+ zod_1.z.literal(410),
2808
+ zod_1.z.literal(420),
2809
+ zod_1.z.literal(430),
2810
+ zod_1.z.literal(440),
2811
+ zod_1.z.literal(450),
2812
+ zod_1.z.literal(460),
2813
+ zod_1.z.literal(470),
2814
+ zod_1.z.literal(480),
2815
+ zod_1.z.literal(490),
2816
+ zod_1.z.literal(600),
2817
+ zod_1.z.literal(610),
2818
+ zod_1.z.literal(700),
2819
+ zod_1.z.literal(720),
2820
+ zod_1.z.literal(800),
2821
+ zod_1.z.literal(810),
2822
+ zod_1.z.literal(820),
2823
+ zod_1.z.literal(830),
2824
+ zod_1.z.literal(840),
2825
+ zod_1.z.literal(850),
2826
+ zod_1.z.literal(870),
2827
+ zod_1.z.literal(880),
2828
+ zod_1.z.literal(890),
2829
+ zod_1.z.literal(900),
2830
+ zod_1.z.literal(910),
2831
+ zod_1.z.literal(920),
2832
+ zod_1.z.literal(940),
2833
+ zod_1.z.literal(950),
2834
+ zod_1.z.literal(960),
2835
+ zod_1.z.literal(980),
2836
+ zod_1.z.literal(990),
2837
+ zod_1.z.literal(1000),
2838
+ zod_1.z.literal(1010),
2839
+ zod_1.z.literal(1020),
2840
+ zod_1.z.literal(1030),
2841
+ zod_1.z.literal(1040),
2842
+ zod_1.z.literal(1050),
2843
+ zod_1.z.literal(1060),
2844
+ zod_1.z.literal(1070),
2845
+ zod_1.z.literal(1090),
2846
+ zod_1.z.literal(1100),
2847
+ zod_1.z.literal(1110),
2848
+ zod_1.z.literal(1111),
2849
+ zod_1.z.literal(1200),
2850
+ zod_1.z.literal(1210),
2851
+ zod_1.z.literal(1300),
2852
+ zod_1.z.literal(1400),
2853
+ zod_1.z.literal(1700),
2854
+ zod_1.z.literal(1710),
2855
+ zod_1.z.literal(1810),
2856
+ zod_1.z.literal(1820),
2857
+ zod_1.z.literal(1830),
2858
+ zod_1.z.literal(1840),
2859
+ zod_1.z.literal(1900),
2860
+ zod_1.z.literal(2000),
2861
+ zod_1.z.literal(2010),
2862
+ zod_1.z.literal(2020),
2863
+ zod_1.z.literal(2300),
2864
+ zod_1.z.literal(2400),
2865
+ ]),
2866
+ },
2867
+ {
2868
+ name: "lane",
2869
+ type: "Query",
2870
+ schema: zod_1.z
2871
+ .enum(["top", "jungle", "mid", "bottom", "support", "unknown"])
2872
+ .optional(),
2873
+ },
2874
+ {
2875
+ name: "limit",
2876
+ type: "Query",
2877
+ schema: zod_1.z.number().int().lte(100).optional().default(20),
2878
+ },
2879
+ ],
2880
+ response: ChampionMatchupStatsListResponse,
2881
+ errors: [
2882
+ {
2883
+ status: 400,
2884
+ description: `Validation error.`,
2885
+ schema: zod_1.z.object({ message: zod_1.z.string() }).passthrough(),
2886
+ },
2887
+ {
2888
+ status: 404,
2889
+ description: `Champion not found in dataset.`,
2890
+ schema: zod_1.z.object({ message: zod_1.z.string() }).passthrough(),
2891
+ },
2892
+ {
2893
+ status: 500,
2894
+ description: `Internal server error.`,
2895
+ schema: zod_1.z.object({ message: zod_1.z.string() }).passthrough(),
2896
+ },
2897
+ ],
2898
+ },
2899
+ {
2900
+ method: "get",
2901
+ path: "/stats/champions/:championId/performance",
2902
+ alias: "getChampionPerformanceDetailByRegion",
2903
+ description: `Retrieve normalized per-minute performance metrics for one champion.
2904
+ All metrics are computed within the requested region only.
2905
+ All rates are returned as decimal values in range [0, 1] where applicable.`,
2906
+ requestFormat: "json",
2907
+ parameters: [
2908
+ {
2909
+ name: "championId",
2910
+ type: "Path",
2911
+ schema: zod_1.z.number().int(),
2912
+ },
2913
+ {
2914
+ name: "region",
2915
+ type: "Query",
2916
+ schema: zod_1.z.enum([
2917
+ "br1",
2918
+ "euw1",
2919
+ "na1",
2920
+ "eun1",
2921
+ "kr",
2922
+ "jp1",
2923
+ "la1",
2924
+ "la2",
2925
+ "oc1",
2926
+ "tr1",
2927
+ "ru",
2928
+ "ph2",
2929
+ "sg2",
2930
+ "th2",
2931
+ "tw2",
2932
+ "vn2",
2933
+ ]),
2934
+ },
2935
+ {
2936
+ name: "patch",
2937
+ type: "Query",
2938
+ schema: zod_1.z.string(),
2939
+ },
2940
+ {
2941
+ name: "tier",
2942
+ type: "Query",
2943
+ schema: zod_1.z.enum([
2944
+ "IRON",
2945
+ "BRONZE",
2946
+ "SILVER",
2947
+ "GOLD",
2948
+ "PLATINUM",
2949
+ "EMERALD",
2950
+ "DIAMOND",
2951
+ "MASTER",
2952
+ "GRANDMASTER",
2953
+ "CHALLENGER",
2954
+ ]),
2955
+ },
2956
+ {
2957
+ name: "queue",
2958
+ type: "Query",
2959
+ schema: zod_1.z.union([
2960
+ zod_1.z.literal(0),
2961
+ zod_1.z.literal(2),
2962
+ zod_1.z.literal(4),
2963
+ zod_1.z.literal(6),
2964
+ zod_1.z.literal(7),
2965
+ zod_1.z.literal(8),
2966
+ zod_1.z.literal(9),
2967
+ zod_1.z.literal(14),
2968
+ zod_1.z.literal(16),
2969
+ zod_1.z.literal(17),
2970
+ zod_1.z.literal(25),
2971
+ zod_1.z.literal(31),
2972
+ zod_1.z.literal(32),
2973
+ zod_1.z.literal(33),
2974
+ zod_1.z.literal(41),
2975
+ zod_1.z.literal(42),
2976
+ zod_1.z.literal(52),
2977
+ zod_1.z.literal(61),
2978
+ zod_1.z.literal(65),
2979
+ zod_1.z.literal(67),
2980
+ zod_1.z.literal(70),
2981
+ zod_1.z.literal(72),
2982
+ zod_1.z.literal(73),
2983
+ zod_1.z.literal(75),
2984
+ zod_1.z.literal(76),
2985
+ zod_1.z.literal(78),
2986
+ zod_1.z.literal(83),
2987
+ zod_1.z.literal(91),
2988
+ zod_1.z.literal(92),
2989
+ zod_1.z.literal(93),
2990
+ zod_1.z.literal(96),
2991
+ zod_1.z.literal(98),
2992
+ zod_1.z.literal(100),
2993
+ zod_1.z.literal(300),
2994
+ zod_1.z.literal(310),
2995
+ zod_1.z.literal(313),
2996
+ zod_1.z.literal(315),
2997
+ zod_1.z.literal(317),
2998
+ zod_1.z.literal(318),
2999
+ zod_1.z.literal(325),
3000
+ zod_1.z.literal(400),
3001
+ zod_1.z.literal(410),
3002
+ zod_1.z.literal(420),
3003
+ zod_1.z.literal(430),
3004
+ zod_1.z.literal(440),
3005
+ zod_1.z.literal(450),
3006
+ zod_1.z.literal(460),
3007
+ zod_1.z.literal(470),
3008
+ zod_1.z.literal(480),
3009
+ zod_1.z.literal(490),
3010
+ zod_1.z.literal(600),
3011
+ zod_1.z.literal(610),
3012
+ zod_1.z.literal(700),
3013
+ zod_1.z.literal(720),
3014
+ zod_1.z.literal(800),
3015
+ zod_1.z.literal(810),
3016
+ zod_1.z.literal(820),
3017
+ zod_1.z.literal(830),
3018
+ zod_1.z.literal(840),
3019
+ zod_1.z.literal(850),
3020
+ zod_1.z.literal(870),
3021
+ zod_1.z.literal(880),
3022
+ zod_1.z.literal(890),
3023
+ zod_1.z.literal(900),
3024
+ zod_1.z.literal(910),
3025
+ zod_1.z.literal(920),
3026
+ zod_1.z.literal(940),
3027
+ zod_1.z.literal(950),
3028
+ zod_1.z.literal(960),
3029
+ zod_1.z.literal(980),
3030
+ zod_1.z.literal(990),
3031
+ zod_1.z.literal(1000),
3032
+ zod_1.z.literal(1010),
3033
+ zod_1.z.literal(1020),
3034
+ zod_1.z.literal(1030),
3035
+ zod_1.z.literal(1040),
3036
+ zod_1.z.literal(1050),
3037
+ zod_1.z.literal(1060),
3038
+ zod_1.z.literal(1070),
3039
+ zod_1.z.literal(1090),
3040
+ zod_1.z.literal(1100),
3041
+ zod_1.z.literal(1110),
3042
+ zod_1.z.literal(1111),
3043
+ zod_1.z.literal(1200),
3044
+ zod_1.z.literal(1210),
3045
+ zod_1.z.literal(1300),
3046
+ zod_1.z.literal(1400),
3047
+ zod_1.z.literal(1700),
3048
+ zod_1.z.literal(1710),
3049
+ zod_1.z.literal(1810),
3050
+ zod_1.z.literal(1820),
3051
+ zod_1.z.literal(1830),
3052
+ zod_1.z.literal(1840),
3053
+ zod_1.z.literal(1900),
3054
+ zod_1.z.literal(2000),
3055
+ zod_1.z.literal(2010),
3056
+ zod_1.z.literal(2020),
3057
+ zod_1.z.literal(2300),
3058
+ zod_1.z.literal(2400),
3059
+ ]),
3060
+ },
3061
+ ],
3062
+ response: ChampionPerformanceStatsDetailResponse,
3063
+ errors: [
3064
+ {
3065
+ status: 400,
3066
+ description: `Validation error.`,
3067
+ schema: zod_1.z.object({ message: zod_1.z.string() }).passthrough(),
3068
+ },
3069
+ {
3070
+ status: 404,
3071
+ description: `Champion not found in dataset.`,
3072
+ schema: zod_1.z.object({ message: zod_1.z.string() }).passthrough(),
3073
+ },
3074
+ {
3075
+ status: 500,
3076
+ description: `Internal server error.`,
3077
+ schema: zod_1.z.object({ message: zod_1.z.string() }).passthrough(),
3078
+ },
3079
+ ],
3080
+ },
3081
+ {
3082
+ method: "get",
3083
+ path: "/stats/champions/:championId/synergy",
3084
+ alias: "getChampionSynergyByRegion",
3085
+ description: `Retrieve same-team champion duo performance metrics.
3086
+ All metrics are computed within the requested region only.
3087
+ All rates are returned as decimal values in range [0, 1].`,
3088
+ requestFormat: "json",
3089
+ parameters: [
3090
+ {
3091
+ name: "championId",
3092
+ type: "Path",
3093
+ schema: zod_1.z.number().int(),
3094
+ },
3095
+ {
3096
+ name: "region",
3097
+ type: "Query",
3098
+ schema: zod_1.z.enum([
3099
+ "br1",
3100
+ "euw1",
3101
+ "na1",
3102
+ "eun1",
3103
+ "kr",
3104
+ "jp1",
3105
+ "la1",
3106
+ "la2",
3107
+ "oc1",
3108
+ "tr1",
3109
+ "ru",
3110
+ "ph2",
3111
+ "sg2",
3112
+ "th2",
3113
+ "tw2",
3114
+ "vn2",
3115
+ ]),
3116
+ },
3117
+ {
3118
+ name: "patch",
3119
+ type: "Query",
3120
+ schema: zod_1.z.string(),
3121
+ },
3122
+ {
3123
+ name: "tier",
3124
+ type: "Query",
3125
+ schema: zod_1.z.enum([
3126
+ "IRON",
3127
+ "BRONZE",
3128
+ "SILVER",
3129
+ "GOLD",
3130
+ "PLATINUM",
3131
+ "EMERALD",
3132
+ "DIAMOND",
3133
+ "MASTER",
3134
+ "GRANDMASTER",
3135
+ "CHALLENGER",
3136
+ ]),
3137
+ },
3138
+ {
3139
+ name: "queue",
3140
+ type: "Query",
3141
+ schema: zod_1.z.union([
3142
+ zod_1.z.literal(0),
3143
+ zod_1.z.literal(2),
3144
+ zod_1.z.literal(4),
3145
+ zod_1.z.literal(6),
3146
+ zod_1.z.literal(7),
3147
+ zod_1.z.literal(8),
3148
+ zod_1.z.literal(9),
3149
+ zod_1.z.literal(14),
3150
+ zod_1.z.literal(16),
3151
+ zod_1.z.literal(17),
3152
+ zod_1.z.literal(25),
3153
+ zod_1.z.literal(31),
3154
+ zod_1.z.literal(32),
3155
+ zod_1.z.literal(33),
3156
+ zod_1.z.literal(41),
3157
+ zod_1.z.literal(42),
3158
+ zod_1.z.literal(52),
3159
+ zod_1.z.literal(61),
3160
+ zod_1.z.literal(65),
3161
+ zod_1.z.literal(67),
3162
+ zod_1.z.literal(70),
3163
+ zod_1.z.literal(72),
3164
+ zod_1.z.literal(73),
3165
+ zod_1.z.literal(75),
3166
+ zod_1.z.literal(76),
3167
+ zod_1.z.literal(78),
3168
+ zod_1.z.literal(83),
3169
+ zod_1.z.literal(91),
3170
+ zod_1.z.literal(92),
3171
+ zod_1.z.literal(93),
3172
+ zod_1.z.literal(96),
3173
+ zod_1.z.literal(98),
3174
+ zod_1.z.literal(100),
3175
+ zod_1.z.literal(300),
3176
+ zod_1.z.literal(310),
3177
+ zod_1.z.literal(313),
3178
+ zod_1.z.literal(315),
3179
+ zod_1.z.literal(317),
3180
+ zod_1.z.literal(318),
3181
+ zod_1.z.literal(325),
3182
+ zod_1.z.literal(400),
3183
+ zod_1.z.literal(410),
3184
+ zod_1.z.literal(420),
3185
+ zod_1.z.literal(430),
3186
+ zod_1.z.literal(440),
3187
+ zod_1.z.literal(450),
3188
+ zod_1.z.literal(460),
3189
+ zod_1.z.literal(470),
3190
+ zod_1.z.literal(480),
3191
+ zod_1.z.literal(490),
3192
+ zod_1.z.literal(600),
3193
+ zod_1.z.literal(610),
3194
+ zod_1.z.literal(700),
3195
+ zod_1.z.literal(720),
3196
+ zod_1.z.literal(800),
3197
+ zod_1.z.literal(810),
3198
+ zod_1.z.literal(820),
3199
+ zod_1.z.literal(830),
3200
+ zod_1.z.literal(840),
3201
+ zod_1.z.literal(850),
3202
+ zod_1.z.literal(870),
3203
+ zod_1.z.literal(880),
3204
+ zod_1.z.literal(890),
3205
+ zod_1.z.literal(900),
3206
+ zod_1.z.literal(910),
3207
+ zod_1.z.literal(920),
3208
+ zod_1.z.literal(940),
3209
+ zod_1.z.literal(950),
3210
+ zod_1.z.literal(960),
3211
+ zod_1.z.literal(980),
3212
+ zod_1.z.literal(990),
3213
+ zod_1.z.literal(1000),
3214
+ zod_1.z.literal(1010),
3215
+ zod_1.z.literal(1020),
3216
+ zod_1.z.literal(1030),
3217
+ zod_1.z.literal(1040),
3218
+ zod_1.z.literal(1050),
3219
+ zod_1.z.literal(1060),
3220
+ zod_1.z.literal(1070),
3221
+ zod_1.z.literal(1090),
3222
+ zod_1.z.literal(1100),
3223
+ zod_1.z.literal(1110),
3224
+ zod_1.z.literal(1111),
3225
+ zod_1.z.literal(1200),
3226
+ zod_1.z.literal(1210),
3227
+ zod_1.z.literal(1300),
3228
+ zod_1.z.literal(1400),
3229
+ zod_1.z.literal(1700),
3230
+ zod_1.z.literal(1710),
3231
+ zod_1.z.literal(1810),
3232
+ zod_1.z.literal(1820),
3233
+ zod_1.z.literal(1830),
3234
+ zod_1.z.literal(1840),
3235
+ zod_1.z.literal(1900),
3236
+ zod_1.z.literal(2000),
3237
+ zod_1.z.literal(2010),
3238
+ zod_1.z.literal(2020),
3239
+ zod_1.z.literal(2300),
3240
+ zod_1.z.literal(2400),
3241
+ ]),
3242
+ },
3243
+ {
3244
+ name: "limit",
3245
+ type: "Query",
3246
+ schema: zod_1.z.number().int().lte(100).optional().default(20),
3247
+ },
3248
+ ],
3249
+ response: ChampionSynergyStatsListResponse,
3250
+ errors: [
3251
+ {
3252
+ status: 400,
3253
+ description: `Validation error.`,
3254
+ schema: zod_1.z.object({ message: zod_1.z.string() }).passthrough(),
3255
+ },
3256
+ {
3257
+ status: 404,
3258
+ description: `Champion not found in dataset.`,
3259
+ schema: zod_1.z.object({ message: zod_1.z.string() }).passthrough(),
3260
+ },
3261
+ {
3262
+ status: 500,
3263
+ description: `Internal server error.`,
3264
+ schema: zod_1.z.object({ message: zod_1.z.string() }).passthrough(),
3265
+ },
3266
+ ],
3267
+ },
3268
+ {
3269
+ method: "get",
3270
+ path: "/stats/champions/objectives",
3271
+ alias: "getChampionObjectiveStatsByRegion",
3272
+ description: `Retrieve objective contribution rates by champion.
3273
+ All metrics are computed within the requested region only.
3274
+ Objective metrics include metricDefinitionVersion to track definition changes.
3275
+ All rates are returned as decimal values in range [0, 1].`,
3276
+ requestFormat: "json",
3277
+ parameters: [
3278
+ {
3279
+ name: "region",
3280
+ type: "Query",
3281
+ schema: zod_1.z.enum([
3282
+ "br1",
3283
+ "euw1",
3284
+ "na1",
3285
+ "eun1",
3286
+ "kr",
3287
+ "jp1",
3288
+ "la1",
3289
+ "la2",
3290
+ "oc1",
3291
+ "tr1",
3292
+ "ru",
3293
+ "ph2",
3294
+ "sg2",
3295
+ "th2",
3296
+ "tw2",
3297
+ "vn2",
3298
+ ]),
3299
+ },
3300
+ {
3301
+ name: "patch",
3302
+ type: "Query",
3303
+ schema: zod_1.z.string(),
3304
+ },
3305
+ {
3306
+ name: "tier",
3307
+ type: "Query",
3308
+ schema: zod_1.z.enum([
3309
+ "IRON",
3310
+ "BRONZE",
3311
+ "SILVER",
3312
+ "GOLD",
3313
+ "PLATINUM",
3314
+ "EMERALD",
3315
+ "DIAMOND",
3316
+ "MASTER",
3317
+ "GRANDMASTER",
3318
+ "CHALLENGER",
3319
+ ]),
3320
+ },
3321
+ {
3322
+ name: "queue",
3323
+ type: "Query",
3324
+ schema: zod_1.z.union([
3325
+ zod_1.z.literal(0),
3326
+ zod_1.z.literal(2),
3327
+ zod_1.z.literal(4),
3328
+ zod_1.z.literal(6),
3329
+ zod_1.z.literal(7),
3330
+ zod_1.z.literal(8),
3331
+ zod_1.z.literal(9),
3332
+ zod_1.z.literal(14),
3333
+ zod_1.z.literal(16),
3334
+ zod_1.z.literal(17),
3335
+ zod_1.z.literal(25),
3336
+ zod_1.z.literal(31),
3337
+ zod_1.z.literal(32),
3338
+ zod_1.z.literal(33),
3339
+ zod_1.z.literal(41),
3340
+ zod_1.z.literal(42),
3341
+ zod_1.z.literal(52),
3342
+ zod_1.z.literal(61),
3343
+ zod_1.z.literal(65),
3344
+ zod_1.z.literal(67),
3345
+ zod_1.z.literal(70),
3346
+ zod_1.z.literal(72),
3347
+ zod_1.z.literal(73),
3348
+ zod_1.z.literal(75),
3349
+ zod_1.z.literal(76),
3350
+ zod_1.z.literal(78),
3351
+ zod_1.z.literal(83),
3352
+ zod_1.z.literal(91),
3353
+ zod_1.z.literal(92),
3354
+ zod_1.z.literal(93),
3355
+ zod_1.z.literal(96),
3356
+ zod_1.z.literal(98),
3357
+ zod_1.z.literal(100),
3358
+ zod_1.z.literal(300),
3359
+ zod_1.z.literal(310),
3360
+ zod_1.z.literal(313),
3361
+ zod_1.z.literal(315),
3362
+ zod_1.z.literal(317),
3363
+ zod_1.z.literal(318),
3364
+ zod_1.z.literal(325),
3365
+ zod_1.z.literal(400),
3366
+ zod_1.z.literal(410),
3367
+ zod_1.z.literal(420),
3368
+ zod_1.z.literal(430),
3369
+ zod_1.z.literal(440),
3370
+ zod_1.z.literal(450),
3371
+ zod_1.z.literal(460),
3372
+ zod_1.z.literal(470),
3373
+ zod_1.z.literal(480),
3374
+ zod_1.z.literal(490),
3375
+ zod_1.z.literal(600),
3376
+ zod_1.z.literal(610),
3377
+ zod_1.z.literal(700),
3378
+ zod_1.z.literal(720),
3379
+ zod_1.z.literal(800),
3380
+ zod_1.z.literal(810),
3381
+ zod_1.z.literal(820),
3382
+ zod_1.z.literal(830),
3383
+ zod_1.z.literal(840),
3384
+ zod_1.z.literal(850),
3385
+ zod_1.z.literal(870),
3386
+ zod_1.z.literal(880),
3387
+ zod_1.z.literal(890),
3388
+ zod_1.z.literal(900),
3389
+ zod_1.z.literal(910),
3390
+ zod_1.z.literal(920),
3391
+ zod_1.z.literal(940),
3392
+ zod_1.z.literal(950),
3393
+ zod_1.z.literal(960),
3394
+ zod_1.z.literal(980),
3395
+ zod_1.z.literal(990),
3396
+ zod_1.z.literal(1000),
3397
+ zod_1.z.literal(1010),
3398
+ zod_1.z.literal(1020),
3399
+ zod_1.z.literal(1030),
3400
+ zod_1.z.literal(1040),
3401
+ zod_1.z.literal(1050),
3402
+ zod_1.z.literal(1060),
3403
+ zod_1.z.literal(1070),
3404
+ zod_1.z.literal(1090),
3405
+ zod_1.z.literal(1100),
3406
+ zod_1.z.literal(1110),
3407
+ zod_1.z.literal(1111),
3408
+ zod_1.z.literal(1200),
3409
+ zod_1.z.literal(1210),
3410
+ zod_1.z.literal(1300),
3411
+ zod_1.z.literal(1400),
3412
+ zod_1.z.literal(1700),
3413
+ zod_1.z.literal(1710),
3414
+ zod_1.z.literal(1810),
3415
+ zod_1.z.literal(1820),
3416
+ zod_1.z.literal(1830),
3417
+ zod_1.z.literal(1840),
3418
+ zod_1.z.literal(1900),
3419
+ zod_1.z.literal(2000),
3420
+ zod_1.z.literal(2010),
3421
+ zod_1.z.literal(2020),
3422
+ zod_1.z.literal(2300),
3423
+ zod_1.z.literal(2400),
3424
+ ]),
3425
+ },
3426
+ ],
3427
+ response: ChampionObjectiveStatsListResponse,
3428
+ errors: [
3429
+ {
3430
+ status: 400,
3431
+ description: `Validation error.`,
3432
+ schema: zod_1.z.object({ message: zod_1.z.string() }).passthrough(),
3433
+ },
3434
+ {
3435
+ status: 500,
3436
+ description: `Internal server error.`,
3437
+ schema: zod_1.z.object({ message: zod_1.z.string() }).passthrough(),
3438
+ },
3439
+ ],
3440
+ },
3441
+ {
3442
+ method: "get",
3443
+ path: "/stats/champions/performance",
3444
+ alias: "getChampionPerformanceTableByRegion",
3445
+ description: `Retrieve normalized per-minute performance metrics by champion.
3446
+ All metrics are computed within the requested region only.
3447
+ All rates are returned as decimal values in range [0, 1] where applicable.`,
3448
+ requestFormat: "json",
3449
+ parameters: [
3450
+ {
3451
+ name: "region",
3452
+ type: "Query",
3453
+ schema: zod_1.z.enum([
3454
+ "br1",
3455
+ "euw1",
3456
+ "na1",
3457
+ "eun1",
3458
+ "kr",
3459
+ "jp1",
3460
+ "la1",
3461
+ "la2",
3462
+ "oc1",
3463
+ "tr1",
3464
+ "ru",
3465
+ "ph2",
3466
+ "sg2",
3467
+ "th2",
3468
+ "tw2",
3469
+ "vn2",
3470
+ ]),
3471
+ },
3472
+ {
3473
+ name: "patch",
3474
+ type: "Query",
3475
+ schema: zod_1.z.string(),
3476
+ },
3477
+ {
3478
+ name: "tier",
3479
+ type: "Query",
3480
+ schema: zod_1.z.enum([
3481
+ "IRON",
3482
+ "BRONZE",
3483
+ "SILVER",
3484
+ "GOLD",
3485
+ "PLATINUM",
3486
+ "EMERALD",
3487
+ "DIAMOND",
3488
+ "MASTER",
3489
+ "GRANDMASTER",
3490
+ "CHALLENGER",
3491
+ ]),
3492
+ },
3493
+ {
3494
+ name: "queue",
3495
+ type: "Query",
3496
+ schema: zod_1.z.union([
3497
+ zod_1.z.literal(0),
3498
+ zod_1.z.literal(2),
3499
+ zod_1.z.literal(4),
3500
+ zod_1.z.literal(6),
3501
+ zod_1.z.literal(7),
3502
+ zod_1.z.literal(8),
3503
+ zod_1.z.literal(9),
3504
+ zod_1.z.literal(14),
3505
+ zod_1.z.literal(16),
3506
+ zod_1.z.literal(17),
3507
+ zod_1.z.literal(25),
3508
+ zod_1.z.literal(31),
3509
+ zod_1.z.literal(32),
3510
+ zod_1.z.literal(33),
3511
+ zod_1.z.literal(41),
3512
+ zod_1.z.literal(42),
3513
+ zod_1.z.literal(52),
3514
+ zod_1.z.literal(61),
3515
+ zod_1.z.literal(65),
3516
+ zod_1.z.literal(67),
3517
+ zod_1.z.literal(70),
3518
+ zod_1.z.literal(72),
3519
+ zod_1.z.literal(73),
3520
+ zod_1.z.literal(75),
3521
+ zod_1.z.literal(76),
3522
+ zod_1.z.literal(78),
3523
+ zod_1.z.literal(83),
3524
+ zod_1.z.literal(91),
3525
+ zod_1.z.literal(92),
3526
+ zod_1.z.literal(93),
3527
+ zod_1.z.literal(96),
3528
+ zod_1.z.literal(98),
3529
+ zod_1.z.literal(100),
3530
+ zod_1.z.literal(300),
3531
+ zod_1.z.literal(310),
3532
+ zod_1.z.literal(313),
3533
+ zod_1.z.literal(315),
3534
+ zod_1.z.literal(317),
3535
+ zod_1.z.literal(318),
3536
+ zod_1.z.literal(325),
3537
+ zod_1.z.literal(400),
3538
+ zod_1.z.literal(410),
3539
+ zod_1.z.literal(420),
3540
+ zod_1.z.literal(430),
3541
+ zod_1.z.literal(440),
3542
+ zod_1.z.literal(450),
3543
+ zod_1.z.literal(460),
3544
+ zod_1.z.literal(470),
3545
+ zod_1.z.literal(480),
3546
+ zod_1.z.literal(490),
3547
+ zod_1.z.literal(600),
3548
+ zod_1.z.literal(610),
3549
+ zod_1.z.literal(700),
3550
+ zod_1.z.literal(720),
3551
+ zod_1.z.literal(800),
3552
+ zod_1.z.literal(810),
3553
+ zod_1.z.literal(820),
3554
+ zod_1.z.literal(830),
3555
+ zod_1.z.literal(840),
3556
+ zod_1.z.literal(850),
3557
+ zod_1.z.literal(870),
3558
+ zod_1.z.literal(880),
3559
+ zod_1.z.literal(890),
3560
+ zod_1.z.literal(900),
3561
+ zod_1.z.literal(910),
3562
+ zod_1.z.literal(920),
3563
+ zod_1.z.literal(940),
3564
+ zod_1.z.literal(950),
3565
+ zod_1.z.literal(960),
3566
+ zod_1.z.literal(980),
3567
+ zod_1.z.literal(990),
3568
+ zod_1.z.literal(1000),
3569
+ zod_1.z.literal(1010),
3570
+ zod_1.z.literal(1020),
3571
+ zod_1.z.literal(1030),
3572
+ zod_1.z.literal(1040),
3573
+ zod_1.z.literal(1050),
3574
+ zod_1.z.literal(1060),
3575
+ zod_1.z.literal(1070),
3576
+ zod_1.z.literal(1090),
3577
+ zod_1.z.literal(1100),
3578
+ zod_1.z.literal(1110),
3579
+ zod_1.z.literal(1111),
3580
+ zod_1.z.literal(1200),
3581
+ zod_1.z.literal(1210),
3582
+ zod_1.z.literal(1300),
3583
+ zod_1.z.literal(1400),
3584
+ zod_1.z.literal(1700),
3585
+ zod_1.z.literal(1710),
3586
+ zod_1.z.literal(1810),
3587
+ zod_1.z.literal(1820),
3588
+ zod_1.z.literal(1830),
3589
+ zod_1.z.literal(1840),
3590
+ zod_1.z.literal(1900),
3591
+ zod_1.z.literal(2000),
3592
+ zod_1.z.literal(2010),
3593
+ zod_1.z.literal(2020),
3594
+ zod_1.z.literal(2300),
3595
+ zod_1.z.literal(2400),
3596
+ ]),
3597
+ },
3598
+ ],
3599
+ response: ChampionPerformanceStatsListResponse,
3600
+ errors: [
3601
+ {
3602
+ status: 400,
3603
+ description: `Validation error.`,
3604
+ schema: zod_1.z.object({ message: zod_1.z.string() }).passthrough(),
3605
+ },
3606
+ {
3607
+ status: 500,
3608
+ description: `Internal server error.`,
3609
+ schema: zod_1.z.object({ message: zod_1.z.string() }).passthrough(),
3610
+ },
3611
+ ],
3612
+ },
1447
3613
  ]);
1448
3614
  exports.api = new core_1.Zodios(endpoints);
1449
3615
  function createApiClient(baseUrl, options) {