nhl-api-ts 0.1.0 → 0.2.0

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.
Files changed (80) hide show
  1. package/README.md +22 -2
  2. package/dist/api/edge.d.mts +25 -24
  3. package/dist/api/game-center.d.mts +9 -8
  4. package/dist/api/helpers.d.mts +4 -3
  5. package/dist/api/misc.d.mts +6 -6
  6. package/dist/api/players.d.mts +4 -3
  7. package/dist/api/query/builder.d.mts +2 -0
  8. package/dist/api/query/builder.mjs +3 -1
  9. package/dist/api/query/index.d.mts +2 -2
  10. package/dist/api/query/index.mjs +1 -1
  11. package/dist/api/query/sorting/goalie-sorts.d.mts +55 -0
  12. package/dist/api/query/sorting/goalie-sorts.mjs +43 -48
  13. package/dist/api/query/sorting/sorting-options.d.mts +125 -0
  14. package/dist/api/query/sorting/sorting-options.mjs +3 -2
  15. package/dist/api/schedule.d.mts +12 -11
  16. package/dist/api/standings.d.mts +4 -3
  17. package/dist/api/stats.d.mts +19 -14
  18. package/dist/api/stats.mjs +23 -5
  19. package/dist/api/teams.d.mts +6 -5
  20. package/dist/index.d.mts +2 -1
  21. package/dist/nhl-client.d.mts +13 -9
  22. package/dist/nhl-client.mjs +1 -1
  23. package/dist/types/common.d.mts +81 -0
  24. package/dist/types/common.mjs +2 -0
  25. package/dist/types/edge.d.mts +1024 -0
  26. package/dist/types/edge.mjs +1 -0
  27. package/dist/types/game-center.d.mts +1194 -0
  28. package/dist/types/game-center.mjs +1 -0
  29. package/dist/types/helpers.d.mts +17 -0
  30. package/dist/types/helpers.mjs +1 -0
  31. package/dist/types/index.d.mts +10 -0
  32. package/dist/types/index.mjs +1 -0
  33. package/dist/types/misc.d.mts +68 -0
  34. package/dist/types/misc.mjs +2 -0
  35. package/dist/types/players.d.mts +42 -0
  36. package/dist/types/players.mjs +1 -0
  37. package/dist/types/schedule.d.mts +456 -0
  38. package/dist/types/schedule.mjs +1 -0
  39. package/dist/types/standings.d.mts +104 -0
  40. package/dist/types/standings.mjs +1 -0
  41. package/dist/types/stats.d.mts +1086 -0
  42. package/dist/types/stats.mjs +1 -0
  43. package/dist/types/teams.d.mts +29 -0
  44. package/dist/types/teams.mjs +1 -0
  45. package/dist/utils.d.mts +0 -1
  46. package/package.json +11 -3
  47. package/dist/api/query/errors.d.mts +0 -3
  48. package/dist/api/query/errors.mjs +0 -6
  49. package/dist/api/query/filters/base.d.mts +0 -4
  50. package/dist/api/query/filters/base.mjs +0 -2
  51. package/dist/api/query/filters/decision.d.mts +0 -13
  52. package/dist/api/query/filters/decision.mjs +0 -26
  53. package/dist/api/query/filters/draft.d.mts +0 -15
  54. package/dist/api/query/filters/draft.mjs +0 -27
  55. package/dist/api/query/filters/experience.d.mts +0 -9
  56. package/dist/api/query/filters/experience.mjs +0 -17
  57. package/dist/api/query/filters/franchise.d.mts +0 -9
  58. package/dist/api/query/filters/franchise.mjs +0 -15
  59. package/dist/api/query/filters/game-type.d.mts +0 -10
  60. package/dist/api/query/filters/game-type.mjs +0 -16
  61. package/dist/api/query/filters/goalie-sorts.d.mts +0 -3
  62. package/dist/api/query/filters/goalie-sorts.mjs +0 -55
  63. package/dist/api/query/filters/home-road.d.mts +0 -9
  64. package/dist/api/query/filters/home-road.mjs +0 -16
  65. package/dist/api/query/filters/index.d.mts +0 -14
  66. package/dist/api/query/filters/index.mjs +0 -14
  67. package/dist/api/query/filters/nationality.d.mts +0 -12
  68. package/dist/api/query/filters/nationality.mjs +0 -19
  69. package/dist/api/query/filters/opponent.d.mts +0 -10
  70. package/dist/api/query/filters/opponent.mjs +0 -16
  71. package/dist/api/query/filters/position.d.mts +0 -16
  72. package/dist/api/query/filters/position.mjs +0 -28
  73. package/dist/api/query/filters/season.d.mts +0 -14
  74. package/dist/api/query/filters/season.mjs +0 -24
  75. package/dist/api/query/filters/shoot-catch.d.mts +0 -9
  76. package/dist/api/query/filters/shoot-catch.mjs +0 -16
  77. package/dist/api/query/filters/status.d.mts +0 -20
  78. package/dist/api/query/filters/status.mjs +0 -28
  79. package/dist/logging.d.mts +0 -14
  80. package/dist/logging.mjs +0 -13
@@ -0,0 +1,1194 @@
1
+ import type { GameOutcome, GameScheduleState, GameState, GameType, LocalizedString, OddsPartner, OpenUnion, PeriodDescriptor, PositionCode, SeriesStatus, ShotType, TeamLogo, TeamOdd, TvBroadcast, ZoneCode } from '#src/types/common.mjs';
2
+ export interface BoxscoreGoalie {
3
+ playerId: number;
4
+ sweaterNumber: number;
5
+ name: LocalizedString;
6
+ position: string;
7
+ /** Absent when game=preseason; game=shootout */
8
+ starter?: boolean;
9
+ evenStrengthShotsAgainst?: string;
10
+ powerPlayShotsAgainst?: string;
11
+ shorthandedShotsAgainst?: string;
12
+ saveShotsAgainst?: string;
13
+ savePctg?: number;
14
+ evenStrengthGoalsAgainst?: number;
15
+ powerPlayGoalsAgainst?: number;
16
+ shorthandedGoalsAgainst?: number;
17
+ /** Absent when game=preseason; game=shootout */
18
+ pim?: number;
19
+ goalsAgainst?: number;
20
+ toi?: string;
21
+ decision?: string;
22
+ shotsAgainst?: number;
23
+ saves?: number;
24
+ }
25
+ export interface PastGameResult {
26
+ opponentAbbrev: string;
27
+ gameResult: string;
28
+ }
29
+ export interface Scratch {
30
+ id: number;
31
+ firstName: LocalizedString;
32
+ lastName: LocalizedString;
33
+ }
34
+ export interface BlockedShotDetails {
35
+ xCoord: number;
36
+ yCoord: number;
37
+ zoneCode: ZoneCode;
38
+ blockingPlayerId: number;
39
+ shootingPlayerId: number;
40
+ eventOwnerTeamId: number;
41
+ reason: OpenUnion<'blocked' | 'teammate-blocked'>;
42
+ }
43
+ export interface BlockedShotPlay {
44
+ eventId: number;
45
+ periodDescriptor: PeriodDescriptor;
46
+ timeInPeriod: string;
47
+ timeRemaining: string;
48
+ situationCode: OpenUnion<'1551' | '1441' | '1451' | '1541' | '0651'>;
49
+ homeTeamDefendingSide: OpenUnion<'left' | 'right'>;
50
+ typeCode: number;
51
+ typeDescKey: 'blocked-shot';
52
+ sortOrder: number;
53
+ details: BlockedShotDetails;
54
+ }
55
+ export interface Boxscore {
56
+ id: number;
57
+ season: number;
58
+ gameType: GameType;
59
+ limitedScoring: boolean;
60
+ gameDate: string;
61
+ venue: LocalizedString;
62
+ venueLocation: LocalizedString;
63
+ startTimeUTC: string;
64
+ easternUTCOffset: string;
65
+ venueUTCOffset: string;
66
+ tvBroadcasts: TvBroadcast[];
67
+ gameState: GameState;
68
+ gameScheduleState: GameScheduleState;
69
+ regPeriods: number;
70
+ awayTeam: BoxscoreTeam;
71
+ homeTeam: BoxscoreTeam;
72
+ periodDescriptor?: PeriodDescriptor;
73
+ clock?: GameClock;
74
+ playerByGameStats?: BoxscorePlayerByGameStats;
75
+ gameOutcome?: GameOutcome;
76
+ }
77
+ export interface BoxscorePlayerByGameStats {
78
+ awayTeam: BoxscoreTeamPlayers;
79
+ homeTeam: BoxscoreTeamPlayers;
80
+ }
81
+ export interface BoxscoreSkater {
82
+ playerId: number;
83
+ sweaterNumber: number;
84
+ name: LocalizedString;
85
+ position: string;
86
+ goals: number;
87
+ assists: number;
88
+ points: number;
89
+ plusMinus: number;
90
+ pim: number;
91
+ hits: number;
92
+ powerPlayGoals: number;
93
+ sog: number;
94
+ faceoffWinningPctg?: number;
95
+ toi: string;
96
+ blockedShots: number;
97
+ shifts: number;
98
+ giveaways: number;
99
+ takeaways: number;
100
+ }
101
+ export interface BoxscoreTeam {
102
+ id: number;
103
+ commonName: LocalizedString;
104
+ abbrev: string;
105
+ logo: string;
106
+ darkLogo: string;
107
+ placeName: LocalizedString;
108
+ placeNameWithPreposition: LocalizedString;
109
+ score?: number;
110
+ sog?: number;
111
+ }
112
+ export interface DailyScores {
113
+ prevDate: string;
114
+ currentDate: string;
115
+ nextDate: string;
116
+ gameWeek: DailyScoresGameWeek[];
117
+ oddsPartners: OddsPartner[];
118
+ games: DailyScoresGame[];
119
+ }
120
+ export interface DailyScoresGame {
121
+ id: number;
122
+ season: number;
123
+ gameType: GameType;
124
+ gameDate: string;
125
+ venue: LocalizedString;
126
+ startTimeUTC: string;
127
+ easternUTCOffset: string;
128
+ venueUTCOffset: string;
129
+ tvBroadcasts: DailyScoresTvBroadcast[];
130
+ gameState: GameState;
131
+ gameScheduleState: GameScheduleState;
132
+ awayTeam: DailyScoresTeam;
133
+ homeTeam: DailyScoresTeam;
134
+ gameCenterLink: string;
135
+ /** Absent when date=now */
136
+ threeMinRecap?: string;
137
+ /** Absent when date=now; date=playoff. Low sample count */
138
+ threeMinRecapFr?: string;
139
+ /** Absent when date=now; date=playoff; date=regular. Low sample count */
140
+ condensedGame?: string;
141
+ /** Absent when date=now */
142
+ clock?: GameClock;
143
+ neutralSite: boolean;
144
+ venueTimezone: string;
145
+ /** Absent when date=now */
146
+ period?: number;
147
+ /** Absent when date=now */
148
+ periodDescriptor?: PeriodDescriptor;
149
+ /** Absent when date=now */
150
+ gameOutcome?: GameOutcome;
151
+ /** Absent when date=now */
152
+ goals?: GameGoal[];
153
+ /** Absent when date=playoff; date=regular. Low sample count */
154
+ ticketsLink?: string;
155
+ /** Absent when date=playoff; date=regular. Low sample count */
156
+ ticketsLinkFr?: string;
157
+ /** Absent when date=playoff; date=regular. Low sample count */
158
+ teamLeaders?: GameTeamLeader[];
159
+ /** Absent when date=regular. Low sample count */
160
+ seriesStatus?: SeriesStatus;
161
+ /** Absent when date=regular. Low sample count */
162
+ seriesUrl?: string;
163
+ }
164
+ export interface DailyScoresGameWeek {
165
+ date: string;
166
+ dayAbbrev: string;
167
+ numberOfGames: number;
168
+ }
169
+ export interface DailyScoresGoalAssist {
170
+ playerId: number;
171
+ name: LocalizedString;
172
+ assistsToDate: number;
173
+ }
174
+ export interface DailyScoresTvBroadcast {
175
+ id: number;
176
+ market: string;
177
+ countryCode: string;
178
+ network: string;
179
+ sequenceNumber: number;
180
+ logoUrls?: TeamLogo;
181
+ /** Absent when date=regular */
182
+ parentId?: number;
183
+ /** Absent when date=regular. Low sample count */
184
+ languageCode?: string;
185
+ }
186
+ export interface DelayedPenaltyDetails {
187
+ eventOwnerTeamId: number;
188
+ }
189
+ export interface DelayedPenaltyPlay {
190
+ eventId: number;
191
+ periodDescriptor: PeriodDescriptor;
192
+ timeInPeriod: string;
193
+ timeRemaining: string;
194
+ situationCode: OpenUnion<'1551' | '1451' | '1541'>;
195
+ homeTeamDefendingSide: OpenUnion<'left' | 'right'>;
196
+ typeCode: number;
197
+ typeDescKey: 'delayed-penalty';
198
+ sortOrder: number;
199
+ details: DelayedPenaltyDetails;
200
+ }
201
+ export interface FaceoffDetails {
202
+ eventOwnerTeamId: number;
203
+ losingPlayerId: number;
204
+ winningPlayerId: number;
205
+ xCoord: number;
206
+ yCoord: number;
207
+ zoneCode: ZoneCode;
208
+ }
209
+ export interface FaceoffPlay {
210
+ eventId: number;
211
+ periodDescriptor: PeriodDescriptor;
212
+ timeInPeriod: string;
213
+ timeRemaining: string;
214
+ situationCode: OpenUnion<'1551' | '1451' | '1441' | '1541' | '0651' | '1331'>;
215
+ homeTeamDefendingSide: OpenUnion<'left' | 'right'>;
216
+ typeCode: number;
217
+ typeDescKey: 'faceoff';
218
+ sortOrder: number;
219
+ details: FaceoffDetails;
220
+ }
221
+ export interface DailyScoresTeam {
222
+ id: number;
223
+ name: LocalizedString;
224
+ abbrev: string;
225
+ /** Absent when date=now */
226
+ score?: number;
227
+ /** Absent when date=now */
228
+ sog?: number;
229
+ logo: string;
230
+ /** Absent when date=playoff; date=regular. Low sample count */
231
+ record?: string;
232
+ /** Absent when date=playoff; date=regular. Low sample count */
233
+ odds?: TeamOdd[];
234
+ }
235
+ export interface GameClock {
236
+ timeRemaining: string;
237
+ secondsRemaining: number;
238
+ running: boolean;
239
+ inIntermission: boolean;
240
+ }
241
+ export interface GameEndPlay {
242
+ eventId: number;
243
+ periodDescriptor: PeriodDescriptor;
244
+ timeInPeriod: string;
245
+ timeRemaining: string;
246
+ /** Absent when game=preseason; game=shootout */
247
+ situationCode?: OpenUnion<'0440' | '1551'>;
248
+ homeTeamDefendingSide: OpenUnion<'right' | 'left'>;
249
+ typeCode: number;
250
+ typeDescKey: 'game-end';
251
+ sortOrder: number;
252
+ }
253
+ export interface GameGoal {
254
+ period: number;
255
+ periodDescriptor: PeriodDescriptor;
256
+ timeInPeriod: string;
257
+ playerId: number;
258
+ name: LocalizedString;
259
+ firstName: LocalizedString;
260
+ lastName: LocalizedString;
261
+ goalModifier: string;
262
+ assists: DailyScoresGoalAssist[];
263
+ mugshot: string;
264
+ teamAbbrev: string;
265
+ goalsToDate?: number;
266
+ awayScore: number;
267
+ homeScore: number;
268
+ strength: string;
269
+ highlightClipSharingUrl?: string;
270
+ highlightClipSharingUrlFr?: string;
271
+ highlightClip?: number;
272
+ highlightClipFr?: number;
273
+ /** Absent when date=regular. Low sample count */
274
+ discreteClip?: number;
275
+ /** Absent when date=regular. Low sample count */
276
+ discreteClipFr?: number;
277
+ goalInGame?: number;
278
+ }
279
+ export interface GameInfoTeam {
280
+ headCoach: LocalizedString;
281
+ scratches: Scratch[];
282
+ }
283
+ export interface GameOfficial {
284
+ fullName: LocalizedString;
285
+ sweaterNumber?: number;
286
+ }
287
+ export interface GameLanding {
288
+ id: number;
289
+ season: number;
290
+ gameType: GameType;
291
+ limitedScoring: boolean;
292
+ gameDate: string;
293
+ venue: LocalizedString;
294
+ venueLocation: LocalizedString;
295
+ startTimeUTC: string;
296
+ easternUTCOffset: string;
297
+ venueUTCOffset: string;
298
+ venueTimezone: string;
299
+ tvBroadcasts: TvBroadcast[];
300
+ gameState: GameState;
301
+ gameScheduleState: GameScheduleState;
302
+ awayTeam: GameLandingAwayTeam;
303
+ homeTeam: GameLandingAwayTeam;
304
+ shootoutInUse: boolean;
305
+ /** Absent when game=playoff */
306
+ maxPeriods?: number;
307
+ regPeriods: number;
308
+ otInUse: boolean;
309
+ tiesInUse: boolean;
310
+ /** Absent when game=legacy; game=overtime; game=playoff; game=preseason; game=regular; game=shootout. Low sample count */
311
+ ticketsLink?: string;
312
+ /** Absent when game=legacy; game=overtime; game=playoff; game=preseason; game=regular; game=shootout. Low sample count */
313
+ ticketsLinkFr?: string;
314
+ /** Absent when game=legacy; game=overtime; game=playoff; game=preseason; game=regular; game=shootout. Low sample count */
315
+ matchup?: GameLandingMatchup;
316
+ periodDescriptor?: PeriodDescriptor;
317
+ summary?: GameLandingSummary;
318
+ clock?: GameClock;
319
+ }
320
+ export interface GameLandingAwayTeam {
321
+ id: number;
322
+ commonName: LocalizedString;
323
+ abbrev: string;
324
+ placeName: LocalizedString;
325
+ placeNameWithPreposition: LocalizedString;
326
+ logo: string;
327
+ darkLogo: string;
328
+ /** Absent when game=legacy; game=overtime; game=playoff; game=preseason; game=regular; game=shootout. Low sample count */
329
+ record?: string;
330
+ score?: number;
331
+ sog?: number;
332
+ }
333
+ export interface GameLandingMatchup {
334
+ season: number;
335
+ gameType: GameType;
336
+ skaterComparison: MatchupSkaterComparison;
337
+ goalieComparison: MatchupGoalieComparison;
338
+ skaterSeasonStats: MatchupSkaterSeasonStats;
339
+ goalieSeasonStats: MatchupGoalieSeasonStats;
340
+ }
341
+ export interface GameLandingScoringGoal {
342
+ eventId: number;
343
+ strength: string;
344
+ playerId: number;
345
+ firstName: LocalizedString;
346
+ lastName: LocalizedString;
347
+ name: LocalizedString;
348
+ teamAbbrev: LocalizedString;
349
+ headshot: string;
350
+ goalsToDate?: number;
351
+ awayScore: number;
352
+ homeScore: number;
353
+ leadingTeamAbbrev?: LocalizedString;
354
+ timeInPeriod: string;
355
+ shotType: ShotType;
356
+ goalModifier: string;
357
+ assists: GoalAssist[];
358
+ isHome: boolean;
359
+ situationCode?: OpenUnion<'1551' | '0651' | '1331' | '0101' | '1451'>;
360
+ /** Absent when game=preseason; game=shootout */
361
+ highlightClipSharingUrl?: string;
362
+ /** Absent when game=preseason; game=shootout */
363
+ highlightClip?: number;
364
+ /** Absent when game=preseason; game=shootout */
365
+ pptReplayUrl?: string;
366
+ homeTeamDefendingSide?: OpenUnion<'left' | 'right'>;
367
+ /** Absent when game=playoff; game=preseason; game=shootout. Low sample count */
368
+ goalInGame?: number;
369
+ /** Absent when game=preseason; game=regular; game=shootout. Low sample count */
370
+ discreteClip?: number;
371
+ /** Absent when game=preseason; game=regular; game=shootout. Low sample count */
372
+ discreteClipFr?: number;
373
+ /** Absent when game=preseason; game=regular; game=shootout. Low sample count */
374
+ highlightClipSharingUrlFr?: string;
375
+ /** Absent when game=preseason; game=regular; game=shootout. Low sample count */
376
+ highlightClipFr?: number;
377
+ }
378
+ export interface GameLandingSummary {
379
+ scoring: GameLandingSummaryScoring[];
380
+ threeStars: GameLandingSummaryThreeStar[];
381
+ penalties: SummaryPenalty[];
382
+ /** Absent when game=regular. Low sample count */
383
+ shootout?: SummaryShootout;
384
+ }
385
+ export interface GameLandingSummaryScoring {
386
+ periodDescriptor: PeriodDescriptor;
387
+ goals: GameLandingScoringGoal[];
388
+ }
389
+ export interface GameLandingSummaryThreeStar {
390
+ star: number;
391
+ playerId: number;
392
+ teamAbbrev: string;
393
+ headshot: string;
394
+ name: LocalizedString;
395
+ sweaterNo: number;
396
+ position: string;
397
+ goals?: number;
398
+ assists?: number;
399
+ points?: number;
400
+ /** Absent when game=preseason; game=regular; game=shootout. Low sample count */
401
+ goalsAgainstAverage?: number;
402
+ /** Absent when game=preseason; game=regular; game=shootout. Low sample count */
403
+ savePctg?: number;
404
+ }
405
+ export interface GameStory {
406
+ id: number;
407
+ season: number;
408
+ gameType: GameType;
409
+ limitedScoring: boolean;
410
+ gameDate: string;
411
+ venue: LocalizedString;
412
+ venueLocation: LocalizedString;
413
+ startTimeUTC: string;
414
+ easternUTCOffset: string;
415
+ venueUTCOffset: string;
416
+ venueTimezone: string;
417
+ tvBroadcasts: GameStoryTvBroadcast[];
418
+ gameState: GameState;
419
+ gameScheduleState: GameScheduleState;
420
+ awayTeam: GameStoryAwayTeam;
421
+ homeTeam: GameStoryAwayTeam;
422
+ shootoutInUse: boolean;
423
+ /** Absent when game=playoff */
424
+ maxPeriods?: number;
425
+ regPeriods: number;
426
+ otInUse: boolean;
427
+ tiesInUse: boolean;
428
+ /** Absent when game=legacy; game=overtime; game=playoff; game=preseason; game=regular; game=shootout. Low sample count */
429
+ preGameMatchup?: PreGameMatchup;
430
+ summary?: GameStorySummary;
431
+ periodDescriptor?: PeriodDescriptor;
432
+ clock?: GameClock;
433
+ }
434
+ export interface GameStoryAwayTeam {
435
+ id: number;
436
+ name: LocalizedString;
437
+ abbrev: string;
438
+ placeName: LocalizedString;
439
+ logo: string;
440
+ /** Absent when game=legacy; game=overtime; game=playoff; game=preseason; game=regular; game=shootout. Low sample count */
441
+ record?: string;
442
+ score?: number;
443
+ sog?: number;
444
+ }
445
+ export interface PreGameMatchup {
446
+ skatingLeaders: PreGameMatchupSkatingLeaders;
447
+ goalieComparison: PreGameMatchupGoalieComparison;
448
+ teamSeasonStats: PreGameMatchupTeamSeasonStats;
449
+ }
450
+ export interface GameStorySummary {
451
+ scoring: SummaryScoring[];
452
+ shootout: ShootoutEvent[];
453
+ threeStars: SummaryThreeStar[];
454
+ teamGameStats: SummaryTeamGameStat[];
455
+ }
456
+ export interface GameStoryTvBroadcast {
457
+ id: number;
458
+ market: string;
459
+ countryCode: string;
460
+ network: string;
461
+ sequenceNumber: number;
462
+ /** Absent when game=regular */
463
+ logoUrls?: TeamLogo;
464
+ }
465
+ export interface GameTeamLeader {
466
+ id: number;
467
+ firstName: LocalizedString;
468
+ lastName: LocalizedString;
469
+ headshot: string;
470
+ teamAbbrev: string;
471
+ sweaterNumber: number;
472
+ position: string;
473
+ category: string;
474
+ value: number;
475
+ }
476
+ export interface GiveawayDetails {
477
+ xCoord: number;
478
+ yCoord: number;
479
+ zoneCode: ZoneCode;
480
+ eventOwnerTeamId: number;
481
+ playerId: number;
482
+ }
483
+ export interface GiveawayPlay {
484
+ eventId: number;
485
+ periodDescriptor: PeriodDescriptor;
486
+ timeInPeriod: string;
487
+ timeRemaining: string;
488
+ situationCode: OpenUnion<'1551' | '1541' | '1451' | '1331'>;
489
+ homeTeamDefendingSide: OpenUnion<'left' | 'right'>;
490
+ typeCode: number;
491
+ typeDescKey: 'giveaway';
492
+ sortOrder: number;
493
+ details: GiveawayDetails;
494
+ }
495
+ export interface GoalAssist {
496
+ playerId: number;
497
+ firstName: LocalizedString;
498
+ lastName: LocalizedString;
499
+ name: LocalizedString;
500
+ assistsToDate: number;
501
+ sweaterNumber: number;
502
+ }
503
+ export interface GoalDetails {
504
+ shotType: ShotType;
505
+ scoringPlayerId: number;
506
+ /** Absent when game=preseason; game=shootout */
507
+ scoringPlayerTotal?: number;
508
+ /** Absent when game=preseason; game=regular; game=shootout */
509
+ assist1PlayerId?: number;
510
+ /** Absent when game=preseason; game=regular; game=shootout */
511
+ assist1PlayerTotal?: number;
512
+ /** Absent when game=overtime; game=playoff; game=preseason; game=regular; game=shootout */
513
+ assist2PlayerId?: number;
514
+ /** Absent when game=overtime; game=playoff; game=preseason; game=regular; game=shootout */
515
+ assist2PlayerTotal?: number;
516
+ eventOwnerTeamId: number;
517
+ /** Absent when game=playoff */
518
+ goalieInNetId?: number;
519
+ awayScore: number;
520
+ homeScore: number;
521
+ xCoord?: number;
522
+ yCoord?: number;
523
+ zoneCode?: ZoneCode;
524
+ /** Absent when game=preseason; game=shootout */
525
+ highlightClipSharingUrl?: string;
526
+ /** Absent when game=preseason; game=shootout */
527
+ highlightClip?: number;
528
+ /** Absent when game=overtime; game=playoff; game=preseason; game=regular; game=shootout. Low sample count */
529
+ goalInGame?: number;
530
+ /** Absent when game=preseason; game=regular; game=shootout. Low sample count */
531
+ discreteClip?: number;
532
+ /** Absent when game=preseason; game=regular; game=shootout. Low sample count */
533
+ discreteClipFr?: number;
534
+ /** Absent when game=preseason; game=regular; game=shootout. Low sample count */
535
+ highlightClipSharingUrlFr?: string;
536
+ /** Absent when game=preseason; game=regular; game=shootout. Low sample count */
537
+ highlightClipFr?: number;
538
+ }
539
+ export interface GoalieComparisonTeam {
540
+ teamTotals: GoalieTeamTotals;
541
+ leaders: GoalieLeader[];
542
+ }
543
+ export interface SeasonStatsGoalie {
544
+ playerId: number;
545
+ teamId: number;
546
+ sweaterNumber: number;
547
+ name: LocalizedString;
548
+ /** Low sample count */
549
+ gamesPlayed?: number;
550
+ /** Low sample count */
551
+ wins?: number;
552
+ /** Low sample count */
553
+ losses?: number;
554
+ /** Low sample count */
555
+ otLosses?: number;
556
+ /** Low sample count */
557
+ shotsAgainst?: number;
558
+ /** Low sample count */
559
+ goalsAgainst?: number;
560
+ /** Low sample count */
561
+ goalsAgainstAvg?: number;
562
+ /** Low sample count */
563
+ savePctg?: number;
564
+ /** Low sample count */
565
+ shutouts?: number;
566
+ /** Low sample count */
567
+ saves?: number;
568
+ /** Low sample count */
569
+ toi?: string;
570
+ }
571
+ export interface GoalPlay {
572
+ eventId: number;
573
+ periodDescriptor: PeriodDescriptor;
574
+ timeInPeriod: string;
575
+ timeRemaining: string;
576
+ typeCode: number;
577
+ typeDescKey: 'goal';
578
+ sortOrder: number;
579
+ details: GoalDetails;
580
+ situationCode?: OpenUnion<'1551' | '0651' | '1331' | '1010' | '0101' | '1451'>;
581
+ homeTeamDefendingSide?: OpenUnion<'left' | 'right'>;
582
+ /** Absent when game=preseason; game=shootout */
583
+ pptReplayUrl?: string;
584
+ }
585
+ export interface HitDetails {
586
+ xCoord: number;
587
+ yCoord: number;
588
+ zoneCode: ZoneCode;
589
+ eventOwnerTeamId: number;
590
+ hittingPlayerId: number;
591
+ hitteePlayerId: number;
592
+ }
593
+ export interface HitPlay {
594
+ eventId: number;
595
+ periodDescriptor: PeriodDescriptor;
596
+ timeInPeriod: string;
597
+ timeRemaining: string;
598
+ situationCode: OpenUnion<'1551' | '1451' | '1541' | '1331' | '1441'>;
599
+ homeTeamDefendingSide: OpenUnion<'left' | 'right'>;
600
+ typeCode: number;
601
+ typeDescKey: 'hit';
602
+ sortOrder: number;
603
+ details: HitDetails;
604
+ }
605
+ export interface GoalieLeader {
606
+ playerId: number;
607
+ name: LocalizedString;
608
+ firstName: LocalizedString;
609
+ lastName: LocalizedString;
610
+ sweaterNumber: number;
611
+ headshot: string;
612
+ positionCode: PositionCode;
613
+ /** Low sample count */
614
+ gamesPlayed?: number;
615
+ /** Low sample count */
616
+ seasonPoints?: number;
617
+ /** Low sample count */
618
+ record?: string;
619
+ /** Low sample count */
620
+ gaa?: number;
621
+ /** Low sample count */
622
+ savePctg?: number;
623
+ /** Low sample count */
624
+ shutouts?: number;
625
+ }
626
+ export interface GoalieTeamTotals {
627
+ record: string;
628
+ gaa: number;
629
+ savePctg: number;
630
+ shutouts: number;
631
+ gamesPlayed: number;
632
+ }
633
+ export interface Last10TeamRecord {
634
+ record: string;
635
+ streakType: string;
636
+ streak: number;
637
+ pastGameResults: PastGameResult[];
638
+ }
639
+ export interface SkatingLeader {
640
+ playerId: number;
641
+ name: LocalizedString;
642
+ firstName: LocalizedString;
643
+ lastName: LocalizedString;
644
+ sweaterNumber: number;
645
+ positionCode: PositionCode;
646
+ headshot: string;
647
+ value: number;
648
+ }
649
+ export interface LinescoreByPeriod {
650
+ periodDescriptor: PeriodDescriptor;
651
+ away: number;
652
+ home: number;
653
+ }
654
+ export interface LinescoreShootout {
655
+ awayDecidingGoal: number;
656
+ awayConversions: number;
657
+ awayAttempts: number;
658
+ homeDecidingGoal: number;
659
+ homeConversions: number;
660
+ homeAttempts: number;
661
+ }
662
+ export interface LinescoreTotals {
663
+ away: number;
664
+ home: number;
665
+ }
666
+ export interface MatchupGoalieComparison {
667
+ contextLabel: string;
668
+ contextSeason: number;
669
+ homeTeam: GoalieComparisonTeam;
670
+ awayTeam: GoalieComparisonTeam;
671
+ }
672
+ export interface MatchupGoalieSeasonStats {
673
+ contextLabel: string;
674
+ contextSeason: number;
675
+ goalies: SeasonStatsGoalie[];
676
+ }
677
+ export interface MatchupSkaterComparison {
678
+ contextLabel: string;
679
+ contextSeason: number;
680
+ leaders: SkatingLeadersLeader[];
681
+ }
682
+ export interface MatchupSkaterSeasonStats {
683
+ contextLabel: string;
684
+ contextSeason: number;
685
+ skaters: SeasonStatsSkater[];
686
+ }
687
+ export interface MissedShotDetails {
688
+ xCoord: number;
689
+ yCoord: number;
690
+ zoneCode: ZoneCode;
691
+ reason: OpenUnion<'hit-right-post' | 'wide-right' | 'high-and-wide-right' | 'wide-left' | 'above-crossbar' | 'short' | 'high-and-wide-left' | 'hit-crossbar' | 'hit-left-post'>;
692
+ shotType: ShotType;
693
+ shootingPlayerId: number;
694
+ goalieInNetId: number;
695
+ eventOwnerTeamId: number;
696
+ }
697
+ export interface MissedShotPlay {
698
+ eventId: number;
699
+ periodDescriptor: PeriodDescriptor;
700
+ timeInPeriod: string;
701
+ timeRemaining: string;
702
+ situationCode: OpenUnion<'1551' | '1451' | '1441' | '1541' | '0651' | '1331' | '1010'>;
703
+ homeTeamDefendingSide: OpenUnion<'left' | 'right'>;
704
+ typeCode: number;
705
+ typeDescKey: 'missed-shot';
706
+ sortOrder: number;
707
+ details: MissedShotDetails;
708
+ }
709
+ export interface PenaltyPlayer {
710
+ firstName: LocalizedString;
711
+ lastName: LocalizedString;
712
+ sweaterNumber: number;
713
+ }
714
+ export interface PenaltyDetails {
715
+ typeCode: string;
716
+ descKey: OpenUnion<'elbowing' | 'holding-obstruction' | 'high-sticking' | 'interference' | 'holding-the-stick' | 'slashing' | 'cross-checking' | 'roughing' | 'holding' | 'hooking' | 'fighting' | 'tripping'>;
717
+ duration: number;
718
+ committedByPlayerId: number;
719
+ drawnByPlayerId: number;
720
+ eventOwnerTeamId: number;
721
+ xCoord?: number;
722
+ yCoord?: number;
723
+ zoneCode?: ZoneCode;
724
+ }
725
+ export interface PenaltyEntry {
726
+ timeInPeriod: string;
727
+ type: string;
728
+ duration: number;
729
+ committedByPlayer: PenaltyPlayer;
730
+ teamAbbrev: LocalizedString;
731
+ drawnBy: PenaltyPlayer;
732
+ descKey: OpenUnion<'elbowing' | 'holding-obstruction' | 'high-sticking' | 'interference' | 'holding-the-stick' | 'slashing' | 'cross-checking' | 'roughing' | 'holding' | 'hooking' | 'fighting' | 'tripping'>;
733
+ }
734
+ export interface PenaltyPlay {
735
+ eventId: number;
736
+ periodDescriptor: PeriodDescriptor;
737
+ timeInPeriod: string;
738
+ timeRemaining: string;
739
+ typeCode: number;
740
+ typeDescKey: 'penalty';
741
+ sortOrder: number;
742
+ details: PenaltyDetails;
743
+ situationCode?: OpenUnion<'1551' | '1451' | '0641' | '1541' | '0651'>;
744
+ homeTeamDefendingSide?: OpenUnion<'left' | 'right'>;
745
+ }
746
+ export interface PeriodEndPlay {
747
+ eventId: number;
748
+ periodDescriptor: PeriodDescriptor;
749
+ timeInPeriod: string;
750
+ timeRemaining: string;
751
+ situationCode: OpenUnion<'1541' | '1551' | '1331' | '1451' | '0101'>;
752
+ homeTeamDefendingSide: OpenUnion<'left' | 'right'>;
753
+ typeCode: number;
754
+ typeDescKey: 'period-end';
755
+ sortOrder: number;
756
+ }
757
+ export interface PeriodStartPlay {
758
+ eventId: number;
759
+ periodDescriptor: PeriodDescriptor;
760
+ timeInPeriod: string;
761
+ timeRemaining: string;
762
+ situationCode: OpenUnion<'1551' | '1541' | '1331' | '1010'>;
763
+ homeTeamDefendingSide: OpenUnion<'left' | 'right'>;
764
+ typeCode: number;
765
+ typeDescKey: 'period-start';
766
+ sortOrder: number;
767
+ }
768
+ /**
769
+ * Play-by-play events keyed by `typeDescKey`. Augment this interface to add
770
+ * an event type the SDK doesn't know about yet; `Play` picks it up.
771
+ */
772
+ export interface PlayTypes {
773
+ 'blocked-shot': BlockedShotPlay;
774
+ 'delayed-penalty': DelayedPenaltyPlay;
775
+ faceoff: FaceoffPlay;
776
+ 'game-end': GameEndPlay;
777
+ giveaway: GiveawayPlay;
778
+ goal: GoalPlay;
779
+ hit: HitPlay;
780
+ 'missed-shot': MissedShotPlay;
781
+ penalty: PenaltyPlay;
782
+ 'period-end': PeriodEndPlay;
783
+ 'period-start': PeriodStartPlay;
784
+ 'shootout-complete': ShootoutCompletePlay;
785
+ 'shot-on-goal': ShotOnGoalPlay;
786
+ stoppage: StoppagePlay;
787
+ takeaway: TakeawayPlay;
788
+ }
789
+ export type Play = PlayTypes[keyof PlayTypes];
790
+ export interface PlayByPlay {
791
+ id: number;
792
+ season: number;
793
+ gameType: GameType;
794
+ limitedScoring: boolean;
795
+ gameDate: string;
796
+ venue: LocalizedString;
797
+ venueLocation: LocalizedString;
798
+ startTimeUTC: string;
799
+ easternUTCOffset: string;
800
+ venueUTCOffset: string;
801
+ tvBroadcasts: TvBroadcast[];
802
+ gameState: GameState;
803
+ gameScheduleState: GameScheduleState;
804
+ awayTeam: PlayByPlayTeam;
805
+ homeTeam: PlayByPlayTeam;
806
+ shootoutInUse: boolean;
807
+ otInUse: boolean;
808
+ clock: GameClock;
809
+ displayPeriod: number;
810
+ /** Absent when game=playoff */
811
+ maxPeriods?: number;
812
+ plays: Play[];
813
+ rosterSpots: PlayByPlayRosterSpot[];
814
+ regPeriods: number;
815
+ periodDescriptor?: PeriodDescriptor;
816
+ gameOutcome?: GameOutcome;
817
+ /** Empty object in every sample seen. */
818
+ summary?: Record<string, never>;
819
+ }
820
+ export interface PlayByPlayTeam {
821
+ id: number;
822
+ commonName: LocalizedString;
823
+ abbrev: string;
824
+ score: number;
825
+ logo: string;
826
+ darkLogo: string;
827
+ placeName: LocalizedString;
828
+ placeNameWithPreposition: LocalizedString;
829
+ sog?: number;
830
+ }
831
+ export interface PlayByPlayRosterSpot {
832
+ teamId: number;
833
+ playerId: number;
834
+ firstName: LocalizedString;
835
+ lastName: LocalizedString;
836
+ sweaterNumber: number;
837
+ positionCode: PositionCode;
838
+ headshot: string;
839
+ }
840
+ export interface BoxscoreTeamPlayers {
841
+ forwards: BoxscoreSkater[];
842
+ defense: BoxscoreSkater[];
843
+ goalies: BoxscoreGoalie[];
844
+ }
845
+ export interface PreGameMatchupGoalieComparison {
846
+ season: number;
847
+ gameTypes: GameType[];
848
+ awayTeam: GoalieLeader[];
849
+ homeTeam: GoalieLeader[];
850
+ }
851
+ export interface PreGameMatchupSkatingLeaders {
852
+ season: number;
853
+ gameTypes: GameType[];
854
+ gameLimit: number;
855
+ leaders: SkatingLeadersLeader[];
856
+ }
857
+ export interface PreGameMatchupTeamSeasonStats {
858
+ awayTeam: TeamSeasonStats;
859
+ homeTeam: TeamSeasonStats;
860
+ }
861
+ export interface RightRail {
862
+ seasonSeries: RightRailSeasonSeries[];
863
+ seasonSeriesWins: RightRailSeasonSeriesWins;
864
+ gameInfo: RightRailGameInfo;
865
+ /** Absent when game=legacy; game=overtime; game=playoff; game=preseason; game=regular; game=shootout. Low sample count */
866
+ teamSeasonStats?: RightRailTeamSeasonStats;
867
+ /** Absent when game=legacy; game=overtime; game=playoff; game=preseason; game=regular; game=shootout. Low sample count */
868
+ last10Record?: RightRailLast10Record;
869
+ linescore?: RightRailLinescore;
870
+ shotsByPeriod?: LinescoreByPeriod[];
871
+ teamGameStats?: SummaryTeamGameStat[];
872
+ gameReports?: RightRailGameReports;
873
+ /** Absent when game=preseason; game=regular; game=shootout. Low sample count */
874
+ seasonSeriesFullCoverageUrl?: GameFullCoverageUrls;
875
+ /** Absent when game=preseason; game=shootout. Low sample count */
876
+ gameVideo?: RightRailGameVideo;
877
+ }
878
+ export interface RightRailGameInfo {
879
+ referees: GameOfficial[];
880
+ linesmen: GameOfficial[];
881
+ awayTeam: GameInfoTeam;
882
+ homeTeam: GameInfoTeam;
883
+ }
884
+ export interface RightRailGameReports {
885
+ gameSummary: string;
886
+ eventSummary: string;
887
+ playByPlay: string;
888
+ faceoffSummary: string;
889
+ faceoffComparison: string;
890
+ rosters: string;
891
+ shotSummary: string;
892
+ /** Absent when game=preseason; game=shootout */
893
+ shiftChart?: string;
894
+ toiAway: string;
895
+ toiHome: string;
896
+ /** Absent when game=regular. Low sample count */
897
+ shootoutSummary?: string;
898
+ }
899
+ export interface RightRailGameVideo {
900
+ threeMinRecap: number;
901
+ /** Low sample count */
902
+ condensedGame?: number;
903
+ }
904
+ export interface RightRailLast10Record {
905
+ contextLabel: string;
906
+ contextSeason: number;
907
+ awayTeam: Last10TeamRecord;
908
+ homeTeam: Last10TeamRecord;
909
+ }
910
+ export interface RightRailLinescore {
911
+ byPeriod: LinescoreByPeriod[];
912
+ totals: LinescoreTotals;
913
+ /** Absent when game=regular. Low sample count */
914
+ shootout?: LinescoreShootout;
915
+ }
916
+ export interface RightRailSeasonSeries {
917
+ id: number;
918
+ season: number;
919
+ gameType: GameType;
920
+ gameDate: string;
921
+ startTimeUTC: string;
922
+ easternUTCOffset: string;
923
+ venueUTCOffset: string;
924
+ gameState: GameState;
925
+ gameScheduleState: GameScheduleState;
926
+ awayTeam: SeasonSeriesTeam;
927
+ homeTeam: SeasonSeriesTeam;
928
+ periodDescriptor?: PeriodDescriptor;
929
+ gameCenterLink: string;
930
+ gameOutcome: GameOutcome;
931
+ }
932
+ export interface GameFullCoverageUrls {
933
+ cs: string;
934
+ de: string;
935
+ fi: string;
936
+ sv: string;
937
+ sk: string;
938
+ en: string;
939
+ fr: string;
940
+ es: string;
941
+ }
942
+ export interface RightRailSeasonSeriesWins {
943
+ awayTeamWins: number;
944
+ homeTeamWins: number;
945
+ /** Absent when game=preseason; game=regular; game=shootout. Low sample count */
946
+ neededToWin?: number;
947
+ }
948
+ export interface RightRailTeamSeasonStats {
949
+ contextLabel: string;
950
+ contextSeason: number;
951
+ awayTeam: TeamSeasonStats;
952
+ homeTeam: TeamSeasonStats;
953
+ }
954
+ export interface ScoringGoal {
955
+ eventId: number;
956
+ strength: string;
957
+ playerId: number;
958
+ firstName: LocalizedString;
959
+ lastName: LocalizedString;
960
+ name: LocalizedString;
961
+ teamAbbrev: LocalizedString;
962
+ headshot: string;
963
+ goalsToDate?: number;
964
+ awayScore: number;
965
+ homeScore: number;
966
+ leadingTeamAbbrev?: LocalizedString;
967
+ timeInPeriod: string;
968
+ shotType: ShotType;
969
+ goalModifier: string;
970
+ assists: GoalAssist[];
971
+ isHome: boolean;
972
+ situationCode?: OpenUnion<'1551' | '0651' | '1331' | '0101' | '1451'>;
973
+ /** Absent when game=preseason; game=shootout */
974
+ highlightClipSharingUrl?: string;
975
+ /** Absent when game=preseason; game=shootout */
976
+ highlightClip?: number;
977
+ homeTeamDefendingSide?: OpenUnion<'left' | 'right'>;
978
+ /** Absent when game=playoff; game=preseason; game=shootout. Low sample count */
979
+ goalInGame?: number;
980
+ /** Absent when game=preseason; game=regular; game=shootout. Low sample count */
981
+ discreteClip?: number;
982
+ /** Absent when game=preseason; game=regular; game=shootout. Low sample count */
983
+ discreteClipFr?: number;
984
+ /** Absent when game=preseason; game=regular; game=shootout. Low sample count */
985
+ highlightClipSharingUrlFr?: string;
986
+ /** Absent when game=preseason; game=regular; game=shootout. Low sample count */
987
+ highlightClipFr?: number;
988
+ }
989
+ export interface SeasonSeriesTeam {
990
+ id: number;
991
+ abbrev: string;
992
+ logo: string;
993
+ score?: number;
994
+ }
995
+ export interface ShiftChart {
996
+ data: ShiftEntry[];
997
+ total: number;
998
+ }
999
+ export interface ShiftEntry {
1000
+ id: number;
1001
+ detailCode: number;
1002
+ duration: string | null;
1003
+ endTime: string;
1004
+ eventDescription: string | null;
1005
+ eventNumber: number;
1006
+ firstName: string;
1007
+ gameId: number;
1008
+ hexValue: string;
1009
+ lastName: string;
1010
+ period: number;
1011
+ playerId: number;
1012
+ shiftNumber: number;
1013
+ startTime: string;
1014
+ teamAbbrev: string;
1015
+ teamId: number;
1016
+ teamName: string;
1017
+ typeCode: number;
1018
+ /** Low sample count */
1019
+ eventDetails?: string | null;
1020
+ }
1021
+ export interface ShootoutCompletePlay {
1022
+ eventId: number;
1023
+ periodDescriptor: PeriodDescriptor;
1024
+ timeInPeriod: string;
1025
+ timeRemaining: string;
1026
+ situationCode: OpenUnion<'0101'>;
1027
+ homeTeamDefendingSide: OpenUnion<'right'>;
1028
+ typeCode: number;
1029
+ typeDescKey: 'shootout-complete';
1030
+ sortOrder: number;
1031
+ }
1032
+ export interface ShootoutEvent {
1033
+ sequence: number;
1034
+ playerId: number;
1035
+ teamAbbrev: LocalizedString;
1036
+ firstName: LocalizedString;
1037
+ lastName: LocalizedString;
1038
+ shotType: ShotType;
1039
+ result: string;
1040
+ headshot: string;
1041
+ gameWinner: boolean;
1042
+ homeScore: number;
1043
+ awayScore: number;
1044
+ }
1045
+ export interface ShootoutLiveScore {
1046
+ home: number;
1047
+ away: number;
1048
+ }
1049
+ export interface ShotOnGoalDetails {
1050
+ shotType: ShotType;
1051
+ shootingPlayerId: number;
1052
+ goalieInNetId: number;
1053
+ eventOwnerTeamId: number;
1054
+ awaySOG: number;
1055
+ homeSOG: number;
1056
+ xCoord?: number;
1057
+ yCoord?: number;
1058
+ zoneCode?: ZoneCode;
1059
+ }
1060
+ export interface ShotOnGoalPlay {
1061
+ eventId: number;
1062
+ periodDescriptor: PeriodDescriptor;
1063
+ timeInPeriod: string;
1064
+ timeRemaining: string;
1065
+ typeCode: number;
1066
+ typeDescKey: 'shot-on-goal';
1067
+ sortOrder: number;
1068
+ details: ShotOnGoalDetails;
1069
+ situationCode?: OpenUnion<'1551' | '1441' | '1541' | '1451' | '0651' | '1331' | '1010' | '0101'>;
1070
+ homeTeamDefendingSide?: OpenUnion<'left' | 'right'>;
1071
+ }
1072
+ export interface SeasonStatsSkater {
1073
+ playerId: number;
1074
+ teamId: number;
1075
+ sweaterNumber: number;
1076
+ name: LocalizedString;
1077
+ position: string;
1078
+ /** Low sample count */
1079
+ gamesPlayed?: number;
1080
+ /** Low sample count */
1081
+ goals?: number;
1082
+ /** Low sample count */
1083
+ assists?: number;
1084
+ /** Low sample count */
1085
+ points?: number;
1086
+ /** Low sample count */
1087
+ plusMinus?: number;
1088
+ /** Low sample count */
1089
+ pim?: number;
1090
+ /** Low sample count */
1091
+ avgPoints?: number;
1092
+ /** Low sample count */
1093
+ avgTimeOnIce?: string;
1094
+ /** Low sample count */
1095
+ gameWinningGoals?: number;
1096
+ /** Low sample count */
1097
+ shots?: number;
1098
+ /** Low sample count */
1099
+ shootingPctg?: number;
1100
+ /** Low sample count */
1101
+ faceoffWinningPctg?: number;
1102
+ /** Low sample count */
1103
+ powerPlayGoals?: number;
1104
+ /** Low sample count */
1105
+ blockedShots?: number;
1106
+ /** Low sample count */
1107
+ hits?: number;
1108
+ }
1109
+ export interface SkatingLeadersLeader {
1110
+ category: string;
1111
+ awayLeader: SkatingLeader;
1112
+ homeLeader: SkatingLeader;
1113
+ }
1114
+ export interface StoppageDetails {
1115
+ reason: OpenUnion<'offside' | 'puck-frozen' | 'puck-in-netting' | 'goalie-stopped-after-sog' | 'puck-in-benches' | 'icing' | 'referee-or-linesman' | 'puck-in-crowd' | 'net-dislodged-offensive-skater' | 'tv-timeout' | 'hand-pass' | 'high-stick' | 'visitor-timeout' | 'objects-on-ice'>;
1116
+ /** Absent when game=overtime; game=playoff; game=preseason; game=regular; game=shootout */
1117
+ secondaryReason?: OpenUnion<'tv-timeout' | 'visitor-timeout'>;
1118
+ }
1119
+ export interface StoppagePlay {
1120
+ eventId: number;
1121
+ periodDescriptor: PeriodDescriptor;
1122
+ timeInPeriod: string;
1123
+ timeRemaining: string;
1124
+ situationCode: OpenUnion<'1551' | '1451' | '1541' | '0651' | '1441'>;
1125
+ homeTeamDefendingSide: OpenUnion<'left' | 'right'>;
1126
+ typeCode: number;
1127
+ typeDescKey: 'stoppage';
1128
+ sortOrder: number;
1129
+ details: StoppageDetails;
1130
+ }
1131
+ export interface SummaryPenalty {
1132
+ periodDescriptor: PeriodDescriptor;
1133
+ penalties: PenaltyEntry[];
1134
+ }
1135
+ export interface SummaryScoring {
1136
+ periodDescriptor: PeriodDescriptor;
1137
+ goals: ScoringGoal[];
1138
+ }
1139
+ export interface SummaryShootout {
1140
+ liveScore: ShootoutLiveScore;
1141
+ events: ShootoutEvent[];
1142
+ }
1143
+ export interface SummaryTeamGameStat {
1144
+ category: string;
1145
+ awayValue: number | string;
1146
+ homeValue: number | string;
1147
+ }
1148
+ export interface SummaryThreeStar {
1149
+ star: number;
1150
+ playerId: number;
1151
+ teamAbbrev: string;
1152
+ headshot: string;
1153
+ name: string;
1154
+ sweaterNo: number;
1155
+ position: string;
1156
+ goals?: number;
1157
+ assists?: number;
1158
+ points?: number;
1159
+ /** Absent when game=preseason; game=regular; game=shootout. Low sample count */
1160
+ goalsAgainstAverage?: number;
1161
+ /** Absent when game=preseason; game=regular; game=shootout. Low sample count */
1162
+ savePctg?: number;
1163
+ }
1164
+ export interface TakeawayDetails {
1165
+ xCoord: number;
1166
+ yCoord: number;
1167
+ zoneCode: ZoneCode;
1168
+ playerId: number;
1169
+ eventOwnerTeamId: number;
1170
+ }
1171
+ export interface TakeawayPlay {
1172
+ eventId: number;
1173
+ periodDescriptor: PeriodDescriptor;
1174
+ timeInPeriod: string;
1175
+ timeRemaining: string;
1176
+ situationCode: OpenUnion<'1551' | '1451' | '1541' | '0651' | '1331'>;
1177
+ homeTeamDefendingSide: OpenUnion<'left' | 'right'>;
1178
+ typeCode: number;
1179
+ typeDescKey: 'takeaway';
1180
+ sortOrder: number;
1181
+ details: TakeawayDetails;
1182
+ }
1183
+ export interface TeamSeasonStats {
1184
+ ppPctg: number;
1185
+ pkPctg: number;
1186
+ faceoffWinningPctg: number;
1187
+ goalsForPerGamePlayed: number;
1188
+ goalsAgainstPerGamePlayed: number;
1189
+ ppPctgRank: number;
1190
+ pkPctgRank: number;
1191
+ faceoffWinningPctgRank: number;
1192
+ goalsForPerGamePlayedRank: number;
1193
+ goalsAgainstPerGamePlayedRank: number;
1194
+ }