@yaelouuu/fortnite-api 4.6.0 → 5.1.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/dist/client.d.ts CHANGED
File without changes
package/dist/client.js CHANGED
File without changes
package/dist/errors.d.ts CHANGED
File without changes
package/dist/errors.js CHANGED
File without changes
package/dist/index.d.ts CHANGED
File without changes
package/dist/index.js CHANGED
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
@@ -22,6 +22,10 @@ class CosmeticsResource {
22
22
  queryParams.set("set", params.set);
23
23
  if (params?.search)
24
24
  queryParams.set("search", params.search);
25
+ if (params?.season)
26
+ queryParams.set("season", params.season.toString());
27
+ if (params?.chapter)
28
+ queryParams.set("chapter", params.chapter.toString());
25
29
  const query = queryParams.toString();
26
30
  const endpoint = query ? `/cosmetics/all?${query}` : "/cosmetics/all";
27
31
  return this.client.request(endpoint);
@@ -5,14 +5,21 @@ export declare class MapResource {
5
5
  constructor(client: FortniteAPI);
6
6
  /**
7
7
  * Get current Fortnite map with POIs
8
+ * @param version - Optional specific map version to retrieve
8
9
  */
9
- getCurrent(): Promise<MapResponse>;
10
+ getCurrent(version?: string): Promise<MapResponse>;
10
11
  /**
11
12
  * Get current map image URL
13
+ * @param version - Optional specific map version to retrieve
12
14
  */
13
- getImage(): Promise<MapImageResponse>;
15
+ getImage(version?: string): Promise<MapImageResponse>;
14
16
  /**
15
17
  * Get historical map data
18
+ * @param options.chapter - Filter by chapter number
19
+ * @param options.season - Filter by season number
16
20
  */
17
- getHistory(): Promise<MapHistoryResponse>;
21
+ getHistory(options?: {
22
+ chapter?: number;
23
+ season?: number;
24
+ }): Promise<MapHistoryResponse>;
18
25
  }
@@ -7,21 +7,33 @@ class MapResource {
7
7
  }
8
8
  /**
9
9
  * Get current Fortnite map with POIs
10
+ * @param version - Optional specific map version to retrieve
10
11
  */
11
- async getCurrent() {
12
- return this.client.request("/map");
12
+ async getCurrent(version) {
13
+ const query = version ? `?version=${encodeURIComponent(version)}` : "";
14
+ return this.client.request(`/map${query}`);
13
15
  }
14
16
  /**
15
17
  * Get current map image URL
18
+ * @param version - Optional specific map version to retrieve
16
19
  */
17
- async getImage() {
18
- return this.client.request("/map/image");
20
+ async getImage(version) {
21
+ const query = version ? `?version=${encodeURIComponent(version)}` : "";
22
+ return this.client.request(`/map/image${query}`);
19
23
  }
20
24
  /**
21
25
  * Get historical map data
26
+ * @param options.chapter - Filter by chapter number
27
+ * @param options.season - Filter by season number
22
28
  */
23
- async getHistory() {
24
- return this.client.request("/map/history");
29
+ async getHistory(options) {
30
+ const params = new URLSearchParams();
31
+ if (options?.chapter)
32
+ params.set("chapter", options.chapter.toString());
33
+ if (options?.season)
34
+ params.set("season", options.season.toString());
35
+ const query = params.toString() ? `?${params.toString()}` : "";
36
+ return this.client.request(`/map/history${query}`);
25
37
  }
26
38
  }
27
39
  exports.MapResource = MapResource;
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
@@ -4,7 +4,17 @@ export declare class ShopResource {
4
4
  private client;
5
5
  constructor(client: FortniteAPI);
6
6
  /**
7
- * Get current shop items
7
+ * Get current shop items with optional filtering
8
+ * @param options - Query options
9
+ * @param options.type - Filter by cosmetic type: outfit, emote, pickaxe, glider, backpack, wrap, music, loadingscreen, contrail, spray, toy, emoji, pet, bundle
10
+ * @param options.section - Filter by shop section name (e.g. "Featured", "Daily", "Kicks")
11
+ * @param options.rarity - Filter by rarity: common, uncommon, rare, epic, legendary, mythic
12
+ * @param options.search - Search items by name (e.g. "galaxy", "travis")
8
13
  */
9
- getCurrent(): Promise<Shop>;
14
+ getCurrent(options?: {
15
+ type?: string;
16
+ section?: string;
17
+ rarity?: string;
18
+ search?: string;
19
+ }): Promise<Shop>;
10
20
  }
@@ -6,10 +6,25 @@ class ShopResource {
6
6
  this.client = client;
7
7
  }
8
8
  /**
9
- * Get current shop items
9
+ * Get current shop items with optional filtering
10
+ * @param options - Query options
11
+ * @param options.type - Filter by cosmetic type: outfit, emote, pickaxe, glider, backpack, wrap, music, loadingscreen, contrail, spray, toy, emoji, pet, bundle
12
+ * @param options.section - Filter by shop section name (e.g. "Featured", "Daily", "Kicks")
13
+ * @param options.rarity - Filter by rarity: common, uncommon, rare, epic, legendary, mythic
14
+ * @param options.search - Search items by name (e.g. "galaxy", "travis")
10
15
  */
11
- async getCurrent() {
12
- return this.client.request("/shop");
16
+ async getCurrent(options) {
17
+ const params = new URLSearchParams();
18
+ if (options?.type)
19
+ params.set("type", options.type);
20
+ if (options?.section)
21
+ params.set("section", options.section);
22
+ if (options?.rarity)
23
+ params.set("rarity", options.rarity);
24
+ if (options?.search)
25
+ params.set("search", options.search);
26
+ const query = params.toString() ? `?${params.toString()}` : "";
27
+ return this.client.request(`/shop${query}`);
13
28
  }
14
29
  }
15
30
  exports.ShopResource = ShopResource;
@@ -4,17 +4,15 @@ export declare class TournamentsResource {
4
4
  private client;
5
5
  constructor(client: FortniteAPI);
6
6
  /**
7
- * Get current events
8
- * No parameters needed - uses API's default account
7
+ * Get currently active and upcoming tournaments, enriched with CMS metadata
9
8
  */
10
9
  getCurrent(): Promise<any>;
11
10
  /**
12
- * Get past events
13
- * No parameters needed - uses API's default account
11
+ * Get all tournaments including past ones, enriched with CMS metadata
14
12
  */
15
13
  getPast(): Promise<any>;
16
14
  /**
17
- * Get global events with metadata
15
+ * Get global events with metadata (alias for getCurrent)
18
16
  */
19
17
  getGlobal(): Promise<any>;
20
18
  getSessions(params: {
@@ -6,21 +6,19 @@ class TournamentsResource {
6
6
  this.client = client;
7
7
  }
8
8
  /**
9
- * Get current events
10
- * No parameters needed - uses API's default account
9
+ * Get currently active and upcoming tournaments, enriched with CMS metadata
11
10
  */
12
11
  async getCurrent() {
13
- return this.client.request("/events/data/current");
12
+ return this.client.request("/events/global");
14
13
  }
15
14
  /**
16
- * Get past events
17
- * No parameters needed - uses API's default account
15
+ * Get all tournaments including past ones, enriched with CMS metadata
18
16
  */
19
17
  async getPast() {
20
- return this.client.request("/events/data/past");
18
+ return this.client.request("/events/global/history");
21
19
  }
22
20
  /**
23
- * Get global events with metadata
21
+ * Get global events with metadata (alias for getCurrent)
24
22
  */
25
23
  async getGlobal() {
26
24
  return this.client.request("/events/global");
@@ -43,7 +41,7 @@ class TournamentsResource {
43
41
  region: params.region,
44
42
  platform: params.platform,
45
43
  }).toString();
46
- return this.client.request(`/events/download?${query}`, {
44
+ return this.client.request(`/events/player?${query}`, {
47
45
  headers: {
48
46
  "x-fortnite-token": fortniteToken,
49
47
  },
@@ -78,7 +76,7 @@ class TournamentsResource {
78
76
  },
79
77
  }
80
78
  : undefined;
81
- return this.client.request(`/events/leaderboard?${query.toString()}`, options);
79
+ return this.client.request(`/events/global/leaderboard?${query.toString()}`, options);
82
80
  }
83
81
  /**
84
82
  * Get tournament participation history for a player
@@ -1,19 +1,33 @@
1
1
  import { FortniteAPI } from "../client";
2
- import { WeaponsResponse } from "../types";
2
+ import { WeaponsResponse, RarityDefinitionsResponse } from "../types";
3
3
  export declare class WeaponsResource {
4
4
  private client;
5
5
  constructor(client: FortniteAPI);
6
6
  /**
7
7
  * Get weapons data with optional filtering
8
8
  * @param options - Query options
9
- * @param options.version - Version filter: "current" (current season), "all" (every weapon), "unversioned", or a specific version like "39.50"
10
- * @param options.category - Filter by category: assault-rifles, shotguns, smgs, snipers, pistols, explosives, marksman-rifles, bows, crossbows, melee, light-machine-guns
9
+ * @param options.version - Version filter: "current" (loot pool), "all" (every weapon), or a specific patch like "39.50"
10
+ * @param options.category - Filter by category: assault-rifle, shotgun, smg, sniper, pistol, explosive, bow, crossbow, melee, light-machine-gun
11
11
  * @param options.search - Search weapons by name (e.g. "pump", "assault", "bolt")
12
- * @returns Weapons response with metadata and data
12
+ * @param options.gamemode - Filter by gamemode: "br" (Battle Royale) or "og" (OG mode)
13
+ * @param options.rarity - Filter by rarity: common, uncommon, rare, epic, legendary, mythic, transcendent
14
+ * @param options.type - Filter by weapon type: ranged, melee, consumable, trap, gadget
15
+ * @param options.ammoType - Filter by ammo type: light, medium, heavy, shells, rockets, energy, arrows
16
+ * @param options.season - Filter by season availability: "CH6S7" or "6.7" format
17
+ * @returns Weapons response with metadata, availableSeasons, and weapon data
13
18
  */
14
19
  getWeapons(options?: {
15
20
  version?: string;
16
21
  category?: string;
17
22
  search?: string;
23
+ gamemode?: "br" | "og";
24
+ rarity?: string;
25
+ type?: string;
26
+ ammoType?: string;
27
+ season?: string;
18
28
  }): Promise<WeaponsResponse>;
29
+ /**
30
+ * Get rarity definitions (colors, display names, backend values)
31
+ */
32
+ getRarityDefinitions(): Promise<RarityDefinitionsResponse>;
19
33
  }
@@ -8,10 +8,15 @@ class WeaponsResource {
8
8
  /**
9
9
  * Get weapons data with optional filtering
10
10
  * @param options - Query options
11
- * @param options.version - Version filter: "current" (current season), "all" (every weapon), "unversioned", or a specific version like "39.50"
12
- * @param options.category - Filter by category: assault-rifles, shotguns, smgs, snipers, pistols, explosives, marksman-rifles, bows, crossbows, melee, light-machine-guns
11
+ * @param options.version - Version filter: "current" (loot pool), "all" (every weapon), or a specific patch like "39.50"
12
+ * @param options.category - Filter by category: assault-rifle, shotgun, smg, sniper, pistol, explosive, bow, crossbow, melee, light-machine-gun
13
13
  * @param options.search - Search weapons by name (e.g. "pump", "assault", "bolt")
14
- * @returns Weapons response with metadata and data
14
+ * @param options.gamemode - Filter by gamemode: "br" (Battle Royale) or "og" (OG mode)
15
+ * @param options.rarity - Filter by rarity: common, uncommon, rare, epic, legendary, mythic, transcendent
16
+ * @param options.type - Filter by weapon type: ranged, melee, consumable, trap, gadget
17
+ * @param options.ammoType - Filter by ammo type: light, medium, heavy, shells, rockets, energy, arrows
18
+ * @param options.season - Filter by season availability: "CH6S7" or "6.7" format
19
+ * @returns Weapons response with metadata, availableSeasons, and weapon data
15
20
  */
16
21
  async getWeapons(options) {
17
22
  const params = new URLSearchParams();
@@ -21,8 +26,24 @@ class WeaponsResource {
21
26
  params.set("category", options.category);
22
27
  if (options?.search)
23
28
  params.set("search", options.search);
29
+ if (options?.gamemode)
30
+ params.set("gamemode", options.gamemode);
31
+ if (options?.rarity)
32
+ params.set("rarity", options.rarity);
33
+ if (options?.type)
34
+ params.set("type", options.type);
35
+ if (options?.ammoType)
36
+ params.set("ammoType", options.ammoType);
37
+ if (options?.season)
38
+ params.set("season", options.season);
24
39
  const query = params.toString() ? `?${params.toString()}` : "";
25
40
  return this.client.request(`/weapons${query}`, {}, "v2");
26
41
  }
42
+ /**
43
+ * Get rarity definitions (colors, display names, backend values)
44
+ */
45
+ async getRarityDefinitions() {
46
+ return this.client.request("/rarity", {}, "v2");
47
+ }
27
48
  }
28
49
  exports.WeaponsResource = WeaponsResource;
@@ -12,7 +12,7 @@ export interface CatalogEntry {
12
12
  offerId: string;
13
13
  devName: string;
14
14
  offerType: string;
15
- prices: Price[];
15
+ prices: ShopPrice[];
16
16
  categories: string[];
17
17
  dailyLimit: number;
18
18
  weeklyLimit: number;
@@ -28,18 +28,57 @@ export interface CatalogEntry {
28
28
  shortDescription: string;
29
29
  description: string;
30
30
  displayAssetPath: string;
31
- itemGrants: ItemGrant[];
31
+ itemGrants: EnrichedItemGrant[];
32
32
  giftInfo?: GiftInfo;
33
+ bundle: ShopBundle | null;
34
+ sectionId: string | null;
35
+ sectionDisplayName: string;
36
+ sectionPriority: number;
37
+ sectionBackground: string | null;
38
+ offerVisual: string | null;
39
+ tileSize: string | null;
33
40
  }
34
- export interface Price {
41
+ export interface ShopPrice {
35
42
  currencyType: string;
36
- currencySubType: string;
37
43
  regularPrice: number;
38
- dynamicRegularPrice: number;
39
44
  finalPrice: number;
40
- saleExpiration: string;
41
- basePrice: number;
42
- saleType?: string;
45
+ saleType: string | null;
46
+ }
47
+ export interface ShopBundle {
48
+ name: string | null;
49
+ info: string;
50
+ items: number;
51
+ regularPrice: number;
52
+ finalPrice: number;
53
+ discount: number | null;
54
+ }
55
+ export interface EnrichedItemGrant {
56
+ templateId: string;
57
+ quantity: number;
58
+ attributes: Record<string, any>;
59
+ cosmetic: CosmeticEnrichment | null;
60
+ }
61
+ export interface CosmeticEnrichment {
62
+ type: string;
63
+ name: string;
64
+ displayName: string;
65
+ description: string;
66
+ shortDescription: string;
67
+ rarity: string;
68
+ images: {
69
+ icon: string | null;
70
+ largeIcon: string | null;
71
+ };
72
+ gender: string | null;
73
+ tags: string[];
74
+ set: {
75
+ value: string;
76
+ backendValue: string;
77
+ } | null;
78
+ introduction: {
79
+ chapter: number | null;
80
+ season: number | null;
81
+ };
43
82
  }
44
83
  export interface Requirement {
45
84
  requirementType: string;
@@ -50,11 +89,6 @@ export interface MetaInfo {
50
89
  key: string;
51
90
  value: string;
52
91
  }
53
- export interface ItemGrant {
54
- templateId: string;
55
- quantity: number;
56
- attributes: Record<string, any>;
57
- }
58
92
  export interface GiftInfo {
59
93
  bIsEnabled: boolean;
60
94
  forcedGiftBoxTemplateId: string;
@@ -180,17 +214,21 @@ export interface TournamentEligibilityResponse {
180
214
  newest_tournament_date: string | null;
181
215
  recent_tournaments: TournamentTrackerEntry[];
182
216
  }
217
+ export interface SeasonEntry {
218
+ chapter: number;
219
+ season: number;
220
+ patch: string;
221
+ }
183
222
  export interface WeaponsResponse {
184
223
  version: string;
185
224
  count: number;
186
- source: "iesdev" | "lootpool" | "codenames" | "none";
187
- codenames?: string[];
225
+ source: "cue4parse" | "lootpool" | "map-archives";
226
+ availableSeasons: SeasonEntry[];
188
227
  lootPool?: {
189
228
  patchVersion: string;
190
229
  lastUpdated: string;
191
230
  replaysProcessed: number;
192
231
  };
193
- message?: string;
194
232
  data: Record<string, WeaponsInfos>;
195
233
  }
196
234
  /** @deprecated Use WeaponsResponse instead */
@@ -200,13 +238,22 @@ export interface WeaponsInfos {
200
238
  displayName: string;
201
239
  description: string;
202
240
  rarity: string;
203
- gameplayTags: GameplayTags;
204
- icon: string;
205
241
  type: string;
206
242
  category: string | null;
207
- season: number | null;
208
- unversioned: boolean;
209
- series: string;
243
+ season: {
244
+ chapter: number;
245
+ season: number;
246
+ } | null;
247
+ introductionSeason: {
248
+ chapter: number;
249
+ season: number;
250
+ } | null;
251
+ seasons: SeasonEntry[];
252
+ gamemode: "br" | "og";
253
+ ammoType: string | null;
254
+ triggerType: string | null;
255
+ tags: string[];
256
+ searchTags: string;
210
257
  stats: WeaponsStats;
211
258
  images: {
212
259
  icon: string | null;
@@ -214,9 +261,6 @@ export interface WeaponsInfos {
214
261
  largeIcon: string | null;
215
262
  };
216
263
  }
217
- export interface GameplayTags {
218
- gameplayTags: Array<String>;
219
- }
220
264
  export interface WeaponsStats {
221
265
  firingRate: number;
222
266
  dynamicFiringRate: number;
@@ -676,6 +720,18 @@ export interface CosmeticsSearchParams {
676
720
  rarity?: string;
677
721
  set?: string;
678
722
  search?: string;
723
+ season?: number;
724
+ chapter?: number;
725
+ }
726
+ export interface RarityDefinition {
727
+ value: string;
728
+ displayValue: string;
729
+ backendValue: string;
730
+ color: string;
731
+ }
732
+ export interface RarityDefinitionsResponse {
733
+ status: number;
734
+ data: RarityDefinition[];
679
735
  }
680
736
  export interface CrewPackResponse {
681
737
  status: number;
File without changes
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@yaelouuu/fortnite-api",
3
- "version": "4.6.0",
3
+ "version": "5.1.0",
4
4
  "description": "SDK for Fortnite Tournaments API by Royal Arena - Author : Yael Brinkert",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",