halo-infinite-api 6.1.1 → 7.0.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.
package/README.md CHANGED
@@ -9,10 +9,12 @@ The package is currently limited to the endpoints I've needed to use in other pr
9
9
  - GET https://profile.svc.halowaypoint.com/users/{gamerTag}
10
10
  - GET https://profile.svc.halowaypoint.com/users?xuids={xuids}
11
11
  - GET https://skill.svc.halowaypoint.com/hi/playlist/{playlistId}/csrs?players={playerIds}
12
+ - GET https://skill.svc.halowaypoint.com/hi/matches/{matchId}/skill
12
13
  - GET https://gamecms-hacs.svc.halowaypoint.com/hi/multiplayer/file/playlists/assets/{playlistId}.json
14
+ - GET https://gamecms-hacs.svc.halowaypoint.com/hi/Progression/file/{filename}.json
13
15
  - GET https://halostats.svc.halowaypoint.com/hi/playlist/{playlistId}/csrs?players={playerIds}
14
16
  - GET https://halostats.svc.halowaypoint.com/hi/players/xuid({playerId})/matches
15
- - GET https://skill.svc.halowaypoint.com/hi/matches/{matchId}/skill
17
+ - GET https://halostats.svc.halowaypoint.com/hi/players/{gamerTagOrWrappedXuid}/Matchmade/servicerecord
16
18
  - GET https://halostats.svc.halowaypoint.com/hi/matches/{matchId}/stats
17
19
  - GET https://discovery-infiniteugc.svc.halowaypoint.com/hi/{assetType}/{assetId}
18
20
  - GET https://discovery-infiniteugc.svc.halowaypoint.com/hi/{assetType}/{assetId}/versions/{versionId}
@@ -38,7 +40,7 @@ import { HaloInfiniteClient, AutoXstsSpartanTokenProvider } from "halo-infinite-
38
40
 
39
41
  const oauthApplication = new msal.PublicClientApplication({
40
42
  auth: {
41
- clientId: "42081d3d-4465-4c86-89ba-ea546f825335",
43
+ clientId: "00000000-0000-0000-0000-000000000000",
42
44
  authority: "https://login.live.com", // Override the default authority with the xbox one
43
45
  knownAuthorities: ["login.live.com"],
44
46
  protocolMode: "OIDC", // Shit, I actually have no idea what this does, but Microsoft says I need it
@@ -46,9 +48,9 @@ const oauthApplication = new msal.PublicClientApplication({
46
48
  });
47
49
 
48
50
  const client = new HaloInfiniteClient(
49
- // Other choice for token providers is the StaticXstsTicketTokenSpartanTokenProvider,
51
+ // Another choice for token providers is the StaticXstsTicketTokenSpartanTokenProvider,
50
52
  // which uses a preset spartan token
51
- new AutoXstsSpartanTokenProvider(async () => {
53
+ new AutoTokenProvider(async () => {
52
54
  const token = await oauthApplication.acquireTokenInteractive({
53
55
  // offline_access gives us a refresh token which we can use to continually
54
56
  // get new credentials from Microsoft as the old ones expire.
@@ -1,5 +1,5 @@
1
1
  import { FetchFunction } from "../util/fetch-function";
2
- import { MapAsset, PlaylistAsset, UgcGameVariantAsset } from "../models/halo-infinite/asset";
2
+ import { MapAsset, MapModePairAsset, PlaylistAsset, UgcGameVariantAsset } from "../models/halo-infinite/asset";
3
3
  import { AssetKind } from "../models/halo-infinite/asset-kind";
4
4
  import { MatchSkill } from "../models/halo-infinite/match-skill";
5
5
  import { MatchStats } from "../models/halo-infinite/match-stats";
@@ -11,6 +11,7 @@ import { ServiceRecord } from "../models/halo-infinite/service-record";
11
11
  import { UserInfo } from "../models/halo-infinite/user-info";
12
12
  import { SpartanTokenProvider } from "./token-providers/spartan-token-providers";
13
13
  import { MatchesPrivacy } from "src/models/halo-infinite/matches-privacy";
14
+ import { ProgressionFileType, ProgressionFileTypeMap } from "src/models/halo-infinite/progression-file";
14
15
  export interface ResultContainer<TValue> {
15
16
  Id: string;
16
17
  ResultCode: 0 | 1;
@@ -23,6 +24,7 @@ export type AssetKindTypeMap = {
23
24
  [AssetKind.Map]: MapAsset;
24
25
  [AssetKind.UgcGameVariant]: UgcGameVariantAsset;
25
26
  [AssetKind.Playlist]: PlaylistAsset;
27
+ [AssetKind.MapModePair]: MapModePairAsset;
26
28
  };
27
29
  export declare class HaloInfiniteClient {
28
30
  private readonly spartanTokenProvider;
@@ -47,13 +49,15 @@ export declare class HaloInfiniteClient {
47
49
  /** Get service record for a player.
48
50
  * @param gamerTag - Gamertag to lookup.
49
51
  */
50
- getUserServiceRecord: (gamerTag: string, init?: Omit<RequestInit, "body" | "method">) => Promise<ServiceRecord>;
52
+ getUserServiceRecord: (gamerTagOrWrappedXuid: string, queryParameters?: {
53
+ seasonId?: string;
54
+ playlistAssetId?: string;
55
+ }, init?: Omit<RequestInit, "body" | "method">) => Promise<ServiceRecord>;
51
56
  /** Get playlist information
52
57
  * @param playlistId - Unique ID for the playlist.
53
58
  */
54
59
  getPlaylist: (playlistId: string, init?: Omit<RequestInit, "body" | "method">) => Promise<Playlist>;
55
60
  getPlayerMatches: (playerXuid: string, type?: MatchType, count?: number, start?: number, init?: Omit<RequestInit, "body" | "method">) => Promise<PlayerMatchHistory[]>;
56
- getPlayerServiceRecord(playerXuid: string, init?: Omit<RequestInit, "body" | "method">): Promise<ServiceRecord>;
57
61
  getMatchStats: (matchId: string, init?: Omit<RequestInit, "body" | "method">) => Promise<MatchStats<import("..").GameVariantCategory>>;
58
62
  getMatchSkill: (matchId: string, playerIds: string[], init?: Omit<RequestInit, "body" | "method">) => Promise<ResultContainer<MatchSkill<0>>[]>;
59
63
  /** Gets authoring metadata about a specific asset. */
@@ -66,4 +70,5 @@ export declare class HaloInfiniteClient {
66
70
  }>;
67
71
  getMatchesPrivacy: (playerXuid: string, init?: Omit<RequestInit, "body" | "method">) => Promise<MatchesPrivacy>;
68
72
  updateMatchesPrivacy: (playerXuid: string, matchesPrivacy: MatchesPrivacy, init?: Omit<RequestInit, "body" | "method">) => Promise<MatchesPrivacy>;
73
+ getProgressionFile: <TFileType extends ProgressionFileType>(filename: `${TFileType}/${string}.json`, init?: Omit<RequestInit, "body" | "method">) => Promise<ProgressionFileTypeMap[TFileType]>;
69
74
  }
@@ -8,6 +8,7 @@ const assetKindUrlMap = {
8
8
  [AssetKind.Map]: "Maps",
9
9
  [AssetKind.UgcGameVariant]: "UgcGameVariants",
10
10
  [AssetKind.Playlist]: "Playlists",
11
+ [AssetKind.MapModePair]: "MapModePairs",
11
12
  };
12
13
  function wrapPlayerId(playerId) {
13
14
  if (/^\w+\(\d+\)/.test(playerId)) {
@@ -114,7 +115,7 @@ export class HaloInfiniteClient {
114
115
  /** Get service record for a player.
115
116
  * @param gamerTag - Gamertag to lookup.
116
117
  */
117
- getUserServiceRecord = (gamerTag, init) => this.executeRequest(`https://${HaloCoreEndpoints.StatsOrigin}.${HaloCoreEndpoints.ServiceDomain}/hi/players/${gamerTag}/Matchmade/servicerecord`, {
118
+ getUserServiceRecord = (gamerTagOrWrappedXuid, queryParameters, init) => this.executeRequest(`https://${HaloCoreEndpoints.StatsOrigin}.${HaloCoreEndpoints.ServiceDomain}/hi/players/${gamerTagOrWrappedXuid}/Matchmade/servicerecord?${new URLSearchParams(queryParameters).toString()}`, {
118
119
  ...init,
119
120
  method: "get",
120
121
  });
@@ -135,12 +136,6 @@ export class HaloInfiniteClient {
135
136
  method: "get",
136
137
  });
137
138
  };
138
- getPlayerServiceRecord(playerXuid, init) {
139
- return this.executeRequest(`https://${HaloCoreEndpoints.StatsOrigin}.${HaloCoreEndpoints.ServiceDomain}/hi/players/${wrapPlayerId(playerXuid)}/Matchmade/servicerecord`, {
140
- ...init,
141
- method: "get",
142
- });
143
- }
144
139
  getMatchStats = (matchId, init) => this.executeRequest(`https://${HaloCoreEndpoints.StatsOrigin}.${HaloCoreEndpoints.ServiceDomain}/hi/matches/${matchId}/stats`, {
145
140
  ...init,
146
141
  method: "get",
@@ -179,5 +174,9 @@ export class HaloInfiniteClient {
179
174
  body: JSON.stringify({ matchesPrivacy }),
180
175
  });
181
176
  };
177
+ getProgressionFile = (filename, init) => this.executeRequest(`https://${HaloCoreEndpoints.GameCmsOrigin}.${HaloCoreEndpoints.ServiceDomain}/hi/Progression/file/${filename}`, {
178
+ ...init,
179
+ method: "get",
180
+ });
182
181
  }
183
182
  //# sourceMappingURL=halo-infinite-client.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"halo-infinite-client.js","sourceRoot":"","sources":["../../src/core/halo-infinite-client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"halo-infinite-client.js","sourceRoot":"","sources":["../../src/core/halo-infinite-client.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -6,7 +6,7 @@ export { AutoTokenProvider, AutoTokenProvider as AutoXstsSpartanTokenProvider, }
6
6
  export { SpartanTokenProvider } from "./core/token-providers/spartan-token-providers";
7
7
  export { StaticXstsTicketTokenSpartanTokenProvider } from "./core/token-providers/spartan-token-providers/static-xsts-ticket-token-spartan-token-provider";
8
8
  export { XboxClient } from "./core/xbox-client";
9
- export { Asset, MapAsset, PlaylistAsset, UgcGameVariantAsset, } from "./models/halo-infinite/asset";
9
+ export { Asset, MapAsset, MapModePairAsset, PlaylistAsset, UgcGameVariantAsset, } from "./models/halo-infinite/asset";
10
10
  export { AssetKind } from "./models/halo-infinite/asset-kind";
11
11
  export { AssetVersionLink } from "./models/halo-infinite/asset-version-link";
12
12
  export { GameVariantCategory } from "./models/halo-infinite/game-variant-category";
@@ -21,9 +21,10 @@ export { Playlist } from "./models/halo-infinite/playlist";
21
21
  export { PlaylistCsr } from "./models/halo-infinite/playlist-csr";
22
22
  export { PlaylistCsrContainer } from "./models/halo-infinite/playlist-csr-container";
23
23
  export { PlaylistExperience } from "./models/halo-infinite/playlist-experience";
24
+ export { SeasonCalendarProgressionFile, CsrSeasonCalendarProgressionFile, ProgressionFileType, ProgressionFileTypeMap, SeasonProgressionFile, } from "./models/halo-infinite/progression-file";
24
25
  export { ServiceRecord } from "./models/halo-infinite/service-record";
25
26
  export { Stats } from "./models/halo-infinite/stats";
26
27
  export { UserInfo } from "./models/halo-infinite/user-info";
28
+ export { XboxTicket } from "./models/xbox-ticket";
27
29
  export { FetchFunction } from "./util/fetch-function";
28
30
  export { RequestError } from "./util/request-error";
29
- export { XboxTicket } from "./models/xbox-ticket";
package/dist/index.js CHANGED
@@ -10,5 +10,6 @@ export { MatchOutcome } from "./models/halo-infinite/match-outcome";
10
10
  export { MatchType } from "./models/halo-infinite/match-type";
11
11
  export { Privacy, } from "./models/halo-infinite/matches-privacy";
12
12
  export { PlaylistExperience } from "./models/halo-infinite/playlist-experience";
13
+ export { ProgressionFileType, } from "./models/halo-infinite/progression-file";
13
14
  export { RequestError } from "./util/request-error";
14
15
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,wBAAwB,EAAE,MAAM,6CAA6C,CAAC;AACvF,OAAO,EACL,YAAY,EACZ,wBAAwB,GAEzB,MAAM,6CAA6C,CAAC;AACrD,OAAO,EAEL,kBAAkB,GAEnB,MAAM,6BAA6B,CAAC;AAErC,OAAO,EACL,iBAAiB,EACjB,iBAAiB,IAAI,4BAA4B,GAClD,MAAM,4CAA4C,CAAC;AAEpD,OAAO,EAAE,yCAAyC,EAAE,MAAM,gGAAgG,CAAC;AAC3J,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAOhD,OAAO,EAAE,SAAS,EAAE,MAAM,mCAAmC,CAAC;AAE9D,OAAO,EAAE,mBAAmB,EAAE,MAAM,8CAA8C,CAAC;AAEnF,OAAO,EAAE,YAAY,EAAE,MAAM,sCAAsC,CAAC;AAGpE,OAAO,EAAE,SAAS,EAAE,MAAM,mCAAmC,CAAC;AAC9D,OAAO,EAEL,OAAO,GACR,MAAM,wCAAwC,CAAC;AAKhD,OAAO,EAAE,kBAAkB,EAAE,MAAM,4CAA4C,CAAC;AAKhF,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,wBAAwB,EAAE,MAAM,6CAA6C,CAAC;AACvF,OAAO,EACL,YAAY,EACZ,wBAAwB,GAEzB,MAAM,6CAA6C,CAAC;AACrD,OAAO,EAEL,kBAAkB,GAEnB,MAAM,6BAA6B,CAAC;AAErC,OAAO,EACL,iBAAiB,EACjB,iBAAiB,IAAI,4BAA4B,GAClD,MAAM,4CAA4C,CAAC;AAEpD,OAAO,EAAE,yCAAyC,EAAE,MAAM,gGAAgG,CAAC;AAC3J,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAQhD,OAAO,EAAE,SAAS,EAAE,MAAM,mCAAmC,CAAC;AAE9D,OAAO,EAAE,mBAAmB,EAAE,MAAM,8CAA8C,CAAC;AAEnF,OAAO,EAAE,YAAY,EAAE,MAAM,sCAAsC,CAAC;AAGpE,OAAO,EAAE,SAAS,EAAE,MAAM,mCAAmC,CAAC;AAC9D,OAAO,EAEL,OAAO,GACR,MAAM,wCAAwC,CAAC;AAKhD,OAAO,EAAE,kBAAkB,EAAE,MAAM,4CAA4C,CAAC;AAChF,OAAO,EAGL,mBAAmB,GAGpB,MAAM,yCAAyC,CAAC;AAMjD,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC"}
@@ -80,5 +80,14 @@ export interface PlaylistAsset extends Asset {
80
80
  MinFireteamSize: number;
81
81
  MaxFireteamSize: number;
82
82
  };
83
- RotationEntries: Asset[];
83
+ RotationEntries: (Asset & {
84
+ Metadata: {
85
+ Weight: number;
86
+ };
87
+ })[];
88
+ }
89
+ export interface MapModePairAsset extends Asset {
90
+ CustomData: {};
91
+ MapLink: Asset;
92
+ UgcGameVariantLink: Asset;
84
93
  }
@@ -0,0 +1,51 @@
1
+ import { ApiFormattedDate } from "./api-formatted-date";
2
+ export declare enum ProgressionFileType {
3
+ Seasons = "Seasons",
4
+ Calendars = "Calendars",
5
+ "Csr/Seasons" = "Csr/Seasons"
6
+ }
7
+ export type ProgressionFileTypeMap = {
8
+ Calendars: SeasonCalendarProgressionFile;
9
+ Seasons: SeasonProgressionFile;
10
+ ["Csr/Seasons"]: CsrSeasonCalendarProgressionFile;
11
+ };
12
+ export interface SeasonCalendarProgressionFile {
13
+ Seasons: {
14
+ CsrSeasonFilePath: `Csr/Seasons/${string}.json`;
15
+ OperationTrackPath: `RewardTracks/Operations/${string}.json`;
16
+ SeasonMetadata: `Seasons/${string}.json`;
17
+ StartDate: ApiFormattedDate;
18
+ EndDate: ApiFormattedDate;
19
+ }[];
20
+ Events: {
21
+ RewardTrackPath: `RewardTracks/Events/Rituals/${string}.json`;
22
+ StartDate: ApiFormattedDate;
23
+ EndDate: ApiFormattedDate;
24
+ }[];
25
+ CareerRank: {
26
+ RewardTrackPath: `RewardTracks/CareerRanks/${string}.json`;
27
+ };
28
+ }
29
+ export interface CsrSeasonCalendarProgressionFile {
30
+ Seasons: {
31
+ CsrSeasonFilePath: `Csr/Seasons/${string}.json`;
32
+ StartDate: ApiFormattedDate;
33
+ EndDate: ApiFormattedDate;
34
+ }[];
35
+ }
36
+ export interface SeasonProgressionFile {
37
+ DateRange: string;
38
+ Name: string;
39
+ Logo: string;
40
+ Number: number;
41
+ Description: string;
42
+ SummaryBackgroundPath: string;
43
+ BattlePassSeasonUpsellBackgroundImage: string;
44
+ ChallengesBackgroundPath: string;
45
+ BattlePassLogoImage: string;
46
+ SeasonLogoImage: string;
47
+ RitualLogoImage: string;
48
+ StorefrontBackgroundImage: string;
49
+ CardBackgroundImage: string;
50
+ ProgressionBackgroundImage: string;
51
+ }
@@ -0,0 +1,7 @@
1
+ export var ProgressionFileType;
2
+ (function (ProgressionFileType) {
3
+ ProgressionFileType["Seasons"] = "Seasons";
4
+ ProgressionFileType["Calendars"] = "Calendars";
5
+ ProgressionFileType["Csr/Seasons"] = "Csr/Seasons";
6
+ })(ProgressionFileType || (ProgressionFileType = {}));
7
+ //# sourceMappingURL=progression-file.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"progression-file.js","sourceRoot":"","sources":["../../../src/models/halo-infinite/progression-file.ts"],"names":[],"mappings":"AAEA,MAAM,CAAN,IAAY,mBAIX;AAJD,WAAY,mBAAmB;IAC7B,0CAAmB,CAAA;IACnB,8CAAuB,CAAA;IACvB,kDAA6B,CAAA;AAC/B,CAAC,EAJW,mBAAmB,KAAnB,mBAAmB,QAI9B"}
@@ -16,7 +16,7 @@ export interface ServiceRecord {
16
16
  StockpileStats: StockpileStats;
17
17
  }
18
18
  interface Subqueries {
19
- SeasonIds: string[];
19
+ SeasonIds: (`Csr/Seasons/${string}.json` | `Seasons/${string}.json`)[];
20
20
  GameVariantCategories: number[];
21
21
  IsRanked: boolean[];
22
22
  PlaylistAssetIds: string[];
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "halo-infinite-api",
3
3
  "type": "module",
4
- "version": "6.1.1",
4
+ "version": "7.0.0",
5
5
  "description": "An NPM package for accessing the official Halo Infinite API.",
6
6
  "main": "dist/index.js",
7
7
  "exports": {
@@ -2,6 +2,7 @@ import { FetchFunction, defaultFetch } from "../util/fetch-function";
2
2
  import { HaloCoreEndpoints } from "../endpoints/halo-core-endpoints";
3
3
  import {
4
4
  MapAsset,
5
+ MapModePairAsset,
5
6
  PlaylistAsset,
6
7
  UgcGameVariantAsset,
7
8
  } from "../models/halo-infinite/asset";
@@ -18,6 +19,10 @@ import { GlobalConstants } from "../util/global-contants";
18
19
  import { SpartanTokenProvider } from "./token-providers/spartan-token-providers";
19
20
  import { RequestError } from "../util/request-error";
20
21
  import { MatchesPrivacy } from "src/models/halo-infinite/matches-privacy";
22
+ import {
23
+ ProgressionFileType,
24
+ ProgressionFileTypeMap,
25
+ } from "src/models/halo-infinite/progression-file";
21
26
 
22
27
  export interface ResultContainer<TValue> {
23
28
  Id: string;
@@ -40,12 +45,14 @@ export type AssetKindTypeMap = {
40
45
  [AssetKind.Map]: MapAsset;
41
46
  [AssetKind.UgcGameVariant]: UgcGameVariantAsset;
42
47
  [AssetKind.Playlist]: PlaylistAsset;
48
+ [AssetKind.MapModePair]: MapModePairAsset;
43
49
  };
44
50
 
45
51
  const assetKindUrlMap = {
46
- [AssetKind.Map]: "Maps",
47
- [AssetKind.UgcGameVariant]: "UgcGameVariants",
48
- [AssetKind.Playlist]: "Playlists",
52
+ [AssetKind.Map]: "Maps" as const,
53
+ [AssetKind.UgcGameVariant]: "UgcGameVariants" as const,
54
+ [AssetKind.Playlist]: "Playlists" as const,
55
+ [AssetKind.MapModePair]: "MapModePairs" as const,
49
56
  } satisfies {
50
57
  [key in keyof AssetKindTypeMap]: string;
51
58
  };
@@ -200,11 +207,16 @@ export class HaloInfiniteClient {
200
207
  * @param gamerTag - Gamertag to lookup.
201
208
  */
202
209
  public getUserServiceRecord = (
203
- gamerTag: string,
210
+ gamerTagOrWrappedXuid: string,
211
+ queryParameters?: { seasonId?: string; playlistAssetId?: string },
204
212
  init?: Omit<RequestInit, "body" | "method">
205
213
  ) =>
206
214
  this.executeRequest<ServiceRecord>(
207
- `https://${HaloCoreEndpoints.StatsOrigin}.${HaloCoreEndpoints.ServiceDomain}/hi/players/${gamerTag}/Matchmade/servicerecord`,
215
+ `https://${HaloCoreEndpoints.StatsOrigin}.${
216
+ HaloCoreEndpoints.ServiceDomain
217
+ }/hi/players/${gamerTagOrWrappedXuid}/Matchmade/servicerecord?${new URLSearchParams(
218
+ queryParameters
219
+ ).toString()}`,
208
220
  {
209
221
  ...init,
210
222
  method: "get",
@@ -251,21 +263,6 @@ export class HaloInfiniteClient {
251
263
  );
252
264
  };
253
265
 
254
- public getPlayerServiceRecord(
255
- playerXuid: string,
256
- init?: Omit<RequestInit, "body" | "method">
257
- ) {
258
- return this.executeRequest<ServiceRecord>(
259
- `https://${HaloCoreEndpoints.StatsOrigin}.${
260
- HaloCoreEndpoints.ServiceDomain
261
- }/hi/players/${wrapPlayerId(playerXuid)}/Matchmade/servicerecord`,
262
- {
263
- ...init,
264
- method: "get",
265
- }
266
- );
267
- }
268
-
269
266
  public getMatchStats = (
270
267
  matchId: string,
271
268
  init?: Omit<RequestInit, "body" | "method">
@@ -368,4 +365,15 @@ export class HaloInfiniteClient {
368
365
  }
369
366
  );
370
367
  };
368
+ public getProgressionFile = <TFileType extends ProgressionFileType>(
369
+ filename: `${TFileType}/${string}.json`,
370
+ init?: Omit<RequestInit, "body" | "method">
371
+ ): Promise<ProgressionFileTypeMap[TFileType]> =>
372
+ this.executeRequest(
373
+ `https://${HaloCoreEndpoints.GameCmsOrigin}.${HaloCoreEndpoints.ServiceDomain}/hi/Progression/file/${filename}`,
374
+ {
375
+ ...init,
376
+ method: "get",
377
+ }
378
+ );
371
379
  }
package/src/index.ts CHANGED
@@ -20,6 +20,7 @@ export { XboxClient } from "./core/xbox-client";
20
20
  export {
21
21
  Asset,
22
22
  MapAsset,
23
+ MapModePairAsset,
23
24
  PlaylistAsset,
24
25
  UgcGameVariantAsset,
25
26
  } from "./models/halo-infinite/asset";
@@ -40,9 +41,16 @@ export { Playlist } from "./models/halo-infinite/playlist";
40
41
  export { PlaylistCsr } from "./models/halo-infinite/playlist-csr";
41
42
  export { PlaylistCsrContainer } from "./models/halo-infinite/playlist-csr-container";
42
43
  export { PlaylistExperience } from "./models/halo-infinite/playlist-experience";
44
+ export {
45
+ SeasonCalendarProgressionFile,
46
+ CsrSeasonCalendarProgressionFile,
47
+ ProgressionFileType,
48
+ ProgressionFileTypeMap,
49
+ SeasonProgressionFile,
50
+ } from "./models/halo-infinite/progression-file";
43
51
  export { ServiceRecord } from "./models/halo-infinite/service-record";
44
52
  export { Stats } from "./models/halo-infinite/stats";
45
53
  export { UserInfo } from "./models/halo-infinite/user-info";
54
+ export { XboxTicket } from "./models/xbox-ticket";
46
55
  export { FetchFunction } from "./util/fetch-function";
47
56
  export { RequestError } from "./util/request-error";
48
- export { XboxTicket } from "./models/xbox-ticket";
@@ -84,5 +84,11 @@ export interface PlaylistAsset extends Asset {
84
84
  MinFireteamSize: number;
85
85
  MaxFireteamSize: number;
86
86
  };
87
- RotationEntries: Asset[]; // TODO: Some sort of map-mode pair asset
87
+ RotationEntries: (Asset & { Metadata: { Weight: number } })[];
88
+ }
89
+
90
+ export interface MapModePairAsset extends Asset {
91
+ CustomData: {};
92
+ MapLink: Asset;
93
+ UgcGameVariantLink: Asset;
88
94
  }
@@ -0,0 +1,54 @@
1
+ import { ApiFormattedDate } from "./api-formatted-date";
2
+
3
+ export enum ProgressionFileType {
4
+ Seasons = "Seasons",
5
+ Calendars = "Calendars",
6
+ "Csr/Seasons" = "Csr/Seasons",
7
+ }
8
+
9
+ export type ProgressionFileTypeMap = {
10
+ Calendars: SeasonCalendarProgressionFile;
11
+ Seasons: SeasonProgressionFile;
12
+ ["Csr/Seasons"]: CsrSeasonCalendarProgressionFile;
13
+ };
14
+
15
+ export interface SeasonCalendarProgressionFile {
16
+ Seasons: {
17
+ CsrSeasonFilePath: `Csr/Seasons/${string}.json`;
18
+ OperationTrackPath: `RewardTracks/Operations/${string}.json`;
19
+ SeasonMetadata: `Seasons/${string}.json`;
20
+ StartDate: ApiFormattedDate;
21
+ EndDate: ApiFormattedDate;
22
+ }[];
23
+ Events: {
24
+ RewardTrackPath: `RewardTracks/Events/Rituals/${string}.json`;
25
+ StartDate: ApiFormattedDate;
26
+ EndDate: ApiFormattedDate;
27
+ }[];
28
+ CareerRank: { RewardTrackPath: `RewardTracks/CareerRanks/${string}.json` };
29
+ }
30
+
31
+ export interface CsrSeasonCalendarProgressionFile {
32
+ Seasons: {
33
+ CsrSeasonFilePath: `Csr/Seasons/${string}.json`;
34
+ StartDate: ApiFormattedDate;
35
+ EndDate: ApiFormattedDate;
36
+ }[];
37
+ }
38
+
39
+ export interface SeasonProgressionFile {
40
+ DateRange: string;
41
+ Name: string;
42
+ Logo: string;
43
+ Number: number;
44
+ Description: string;
45
+ SummaryBackgroundPath: string;
46
+ BattlePassSeasonUpsellBackgroundImage: string;
47
+ ChallengesBackgroundPath: string;
48
+ BattlePassLogoImage: string;
49
+ SeasonLogoImage: string;
50
+ RitualLogoImage: string;
51
+ StorefrontBackgroundImage: string;
52
+ CardBackgroundImage: string;
53
+ ProgressionBackgroundImage: string;
54
+ }
@@ -17,7 +17,7 @@ export interface ServiceRecord {
17
17
  }
18
18
 
19
19
  interface Subqueries {
20
- SeasonIds: string[];
20
+ SeasonIds: (`Csr/Seasons/${string}.json` | `Seasons/${string}.json`)[];
21
21
  GameVariantCategories: number[];
22
22
  IsRanked: boolean[];
23
23
  PlaylistAssetIds: string[];