@yaelouuu/fortnite-api 4.1.0 → 4.3.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 +491 -16
- package/dist/client.d.ts +10 -0
- package/dist/client.js +10 -0
- package/dist/errors.d.ts +0 -0
- package/dist/errors.js +0 -0
- package/dist/index.d.ts +0 -0
- package/dist/index.js +0 -0
- package/dist/resources/account.d.ts +54 -0
- package/dist/resources/account.js +103 -0
- package/dist/resources/battlepass.d.ts +0 -0
- package/dist/resources/battlepass.js +0 -0
- package/dist/resources/bundles.d.ts +0 -0
- package/dist/resources/bundles.js +0 -0
- package/dist/resources/calendar.d.ts +0 -0
- package/dist/resources/calendar.js +0 -0
- package/dist/resources/events.d.ts +83 -0
- package/dist/resources/events.js +138 -0
- package/dist/resources/fn.d.ts +56 -0
- package/dist/resources/fn.js +104 -0
- package/dist/resources/friends.d.ts +68 -0
- package/dist/resources/friends.js +119 -0
- package/dist/resources/oauth.d.ts +0 -0
- package/dist/resources/oauth.js +0 -0
- package/dist/resources/parsing.d.ts +0 -0
- package/dist/resources/parsing.js +0 -0
- package/dist/resources/profiles.d.ts +0 -0
- package/dist/resources/profiles.js +0 -0
- package/dist/resources/quests.d.ts +43 -4
- package/dist/resources/quests.js +43 -4
- package/dist/resources/shop.d.ts +0 -0
- package/dist/resources/shop.js +0 -0
- package/dist/resources/stats.d.ts +40 -0
- package/dist/resources/stats.js +85 -0
- package/dist/resources/tournaments.d.ts +67 -5
- package/dist/resources/tournaments.js +67 -5
- package/dist/resources/weapons.d.ts +0 -0
- package/dist/resources/weapons.js +0 -0
- package/dist/types/index.d.ts +205 -0
- package/dist/types/index.js +0 -0
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# Fortnite API SDK
|
|
2
2
|
|
|
3
|
-
JavaScript/TypeScript SDK for the Fortnite API by Royal Arena.
|
|
3
|
+
Official JavaScript/TypeScript SDK for the Fortnite API by Royal Arena.
|
|
4
4
|
|
|
5
5
|
## Installation
|
|
6
6
|
|
|
@@ -10,7 +10,7 @@ npm install @yaelouuu/fortnite-api
|
|
|
10
10
|
|
|
11
11
|
## API Key
|
|
12
12
|
|
|
13
|
-
Acquire your API Key by creating a Free Account here
|
|
13
|
+
Acquire your API Key by creating a Free Account here: https://api-fortnite.com
|
|
14
14
|
|
|
15
15
|
## Quick Start
|
|
16
16
|
|
|
@@ -26,27 +26,502 @@ const shop = await client.shop.getCurrent();
|
|
|
26
26
|
|
|
27
27
|
// Get tournament leaderboard
|
|
28
28
|
const leaderboard = await client.tournaments.getLeaderboard({
|
|
29
|
-
eventId: "
|
|
30
|
-
eventWindowId: "
|
|
29
|
+
eventId: "epicgames_S37_BlitzCupsAllPlatforms_BR",
|
|
30
|
+
eventWindowId: "S37_BlitzCupsAllPlatforms_Event1_BR",
|
|
31
31
|
page: 0,
|
|
32
32
|
});
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
## Features
|
|
36
|
+
|
|
37
|
+
- ✅ Full TypeScript support with comprehensive type definitions
|
|
38
|
+
- ✅ Promise-based async/await API
|
|
39
|
+
- ✅ Automatic error handling with detailed error messages
|
|
40
|
+
- ✅ Support for all Fortnite API endpoints
|
|
41
|
+
- ✅ Built-in OAuth flow helpers
|
|
42
|
+
- ✅ Tree-shakeable for optimal bundle size
|
|
43
|
+
|
|
44
|
+
---
|
|
45
|
+
|
|
46
|
+
## 📚 API Resources
|
|
47
|
+
|
|
48
|
+
### Shop
|
|
49
|
+
|
|
50
|
+
Access the Fortnite Item Shop and Battle Pass data.
|
|
51
|
+
|
|
52
|
+
```typescript
|
|
53
|
+
// Get current item shop
|
|
54
|
+
const shop = await client.shop.getCurrent();
|
|
55
|
+
|
|
56
|
+
// Get current Battle Pass
|
|
57
|
+
const battlePass = await client.battlepass.getBattlePass();
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
---
|
|
61
|
+
|
|
62
|
+
### Tournaments
|
|
63
|
+
|
|
64
|
+
Comprehensive tournament data including leaderboards, events, and eligibility tracking.
|
|
65
|
+
|
|
66
|
+
#### Get Current Events
|
|
67
|
+
```typescript
|
|
68
|
+
const events = await client.tournaments.getCurrent();
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
#### Get Tournament Leaderboard (V1)
|
|
72
|
+
```typescript
|
|
73
|
+
const leaderboard = await client.tournaments.getLeaderboard({
|
|
74
|
+
eventId: "epicgames_S37_BlitzCupsAllPlatforms_BR",
|
|
75
|
+
eventWindowId: "S37_BlitzCupsAllPlatforms_Event1_BR",
|
|
76
|
+
page: 0,
|
|
77
|
+
});
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
#### Get Tournament Leaderboard (V2) - **NEW**
|
|
81
|
+
Enhanced leaderboard endpoint with POST body for bulk team queries:
|
|
82
|
+
|
|
83
|
+
```typescript
|
|
84
|
+
// Solo tournament - query multiple players
|
|
85
|
+
const leaderboard = await client.tournaments.getLeaderboardV2(
|
|
86
|
+
{
|
|
87
|
+
eventId: "epicgames_S37_BlitzCupsAllPlatforms_BR",
|
|
88
|
+
eventWindowId: "S37_BlitzCupsAllPlatforms_Event1_BR",
|
|
89
|
+
},
|
|
90
|
+
[
|
|
91
|
+
["accountId1"],
|
|
92
|
+
["accountId2"],
|
|
93
|
+
["accountId3"],
|
|
94
|
+
]
|
|
95
|
+
);
|
|
96
|
+
|
|
97
|
+
// Duo tournament
|
|
98
|
+
const duoLeaderboard = await client.tournaments.getLeaderboardV2(
|
|
99
|
+
{
|
|
100
|
+
eventId: "epicgames_S37_DuoCup_BR",
|
|
101
|
+
eventWindowId: "S37_DuoCup_Event1_BR",
|
|
102
|
+
},
|
|
103
|
+
[
|
|
104
|
+
["player1Id", "player2Id"],
|
|
105
|
+
["player3Id", "player4Id"],
|
|
106
|
+
]
|
|
107
|
+
);
|
|
108
|
+
```
|
|
109
|
+
|
|
110
|
+
#### Tournament Tracker
|
|
111
|
+
Track player participation history:
|
|
112
|
+
|
|
113
|
+
```typescript
|
|
114
|
+
const tracker = await client.tournaments.getTracker(
|
|
115
|
+
"accountId",
|
|
116
|
+
"fortniteToken"
|
|
117
|
+
);
|
|
118
|
+
// Returns: All tournaments the player has participated in
|
|
119
|
+
```
|
|
120
|
+
|
|
121
|
+
#### Check Tournament Eligibility
|
|
122
|
+
Verify if a player meets requirements for major tournaments (e.g., 14 tournaments in 180 days):
|
|
123
|
+
|
|
124
|
+
```typescript
|
|
125
|
+
const eligibility = await client.tournaments.checkEligibility(
|
|
126
|
+
"accountId",
|
|
127
|
+
"fortniteToken",
|
|
128
|
+
{
|
|
129
|
+
days: 180,
|
|
130
|
+
requiredTournaments: 14,
|
|
131
|
+
}
|
|
132
|
+
);
|
|
133
|
+
|
|
134
|
+
console.log(eligibility.eligible); // true/false
|
|
135
|
+
console.log(eligibility.tournaments_remaining); // How many more needed
|
|
136
|
+
```
|
|
137
|
+
|
|
138
|
+
#### Download Events
|
|
139
|
+
Get personalized event data:
|
|
140
|
+
|
|
141
|
+
```typescript
|
|
142
|
+
const events = await client.tournaments.download(
|
|
143
|
+
{
|
|
144
|
+
accountId: "your-account-id",
|
|
145
|
+
region: "EU",
|
|
146
|
+
platform: "Windows",
|
|
147
|
+
},
|
|
148
|
+
"fortniteToken"
|
|
149
|
+
);
|
|
150
|
+
```
|
|
151
|
+
|
|
152
|
+
---
|
|
153
|
+
|
|
154
|
+
### Quests - **NEW**
|
|
33
155
|
|
|
34
|
-
|
|
35
|
-
const stats = await client.profiles.getStats("PlayerName");
|
|
156
|
+
Access player quest progress, XP, and account level information.
|
|
36
157
|
|
|
37
|
-
|
|
158
|
+
```typescript
|
|
159
|
+
// Get quest data for an account
|
|
160
|
+
const quests = await client.quests.getQuests(
|
|
161
|
+
"accountId",
|
|
162
|
+
"fortniteToken"
|
|
163
|
+
);
|
|
164
|
+
|
|
165
|
+
// Returns comprehensive data:
|
|
166
|
+
// - Active quest progress
|
|
167
|
+
// - Account XP and level
|
|
168
|
+
// - Playtime statistics
|
|
169
|
+
// - Quest rewards
|
|
170
|
+
```
|
|
171
|
+
|
|
172
|
+
**Authentication Required**: User's personal Fortnite OAuth token
|
|
173
|
+
|
|
174
|
+
---
|
|
175
|
+
|
|
176
|
+
### Profiles
|
|
177
|
+
|
|
178
|
+
Player profile information and statistics.
|
|
179
|
+
|
|
180
|
+
```typescript
|
|
181
|
+
// Get profile by display name
|
|
182
|
+
const profile = await client.profiles.getByName("PlayerName");
|
|
183
|
+
|
|
184
|
+
// Get profile statistics
|
|
185
|
+
const stats = await client.profiles.getStats("accountId");
|
|
186
|
+
```
|
|
187
|
+
|
|
188
|
+
---
|
|
189
|
+
|
|
190
|
+
### Calendar
|
|
191
|
+
|
|
192
|
+
Fortnite in-game calendar and season information.
|
|
193
|
+
|
|
194
|
+
```typescript
|
|
195
|
+
// Get current season info
|
|
38
196
|
const season = await client.calendar.getCurrentSeason();
|
|
197
|
+
|
|
198
|
+
// Returns: Season number, start/end dates, and more
|
|
39
199
|
```
|
|
40
200
|
|
|
41
|
-
|
|
201
|
+
---
|
|
42
202
|
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
203
|
+
### Bundles
|
|
204
|
+
|
|
205
|
+
Fortnite game asset bundles and cosmetics.
|
|
206
|
+
|
|
207
|
+
```typescript
|
|
208
|
+
// Get all available bundles
|
|
209
|
+
const bundles = await client.bundles.getAll();
|
|
210
|
+
```
|
|
211
|
+
|
|
212
|
+
---
|
|
213
|
+
|
|
214
|
+
### Weapons
|
|
215
|
+
|
|
216
|
+
Comprehensive weapon data including stats and metadata.
|
|
217
|
+
|
|
218
|
+
```typescript
|
|
219
|
+
// Get all weapons
|
|
220
|
+
const weapons = await client.weapons.getAll();
|
|
221
|
+
|
|
222
|
+
// Includes: Damage, fire rate, reload time, rarity, and more
|
|
223
|
+
```
|
|
224
|
+
|
|
225
|
+
---
|
|
226
|
+
|
|
227
|
+
### OAuth
|
|
228
|
+
|
|
229
|
+
OAuth authentication flow helpers for obtaining user tokens.
|
|
230
|
+
|
|
231
|
+
```typescript
|
|
232
|
+
// Start OAuth flow
|
|
233
|
+
const flow = await client.oauth.startFlow();
|
|
234
|
+
console.log(flow.verificationUri); // Show this URL to the user
|
|
235
|
+
|
|
236
|
+
// Complete OAuth flow
|
|
237
|
+
const authData = await client.oauth.completeFlow(flow.flowId);
|
|
238
|
+
console.log(authData.accessToken); // User's Fortnite token
|
|
239
|
+
console.log(authData.deviceAuth); // Device auth credentials
|
|
240
|
+
|
|
241
|
+
// Refresh token
|
|
242
|
+
const refreshed = await client.oauth.refreshToken(authData.refreshToken);
|
|
243
|
+
```
|
|
244
|
+
|
|
245
|
+
---
|
|
246
|
+
|
|
247
|
+
### Parsing
|
|
248
|
+
|
|
249
|
+
Parse Fortnite replay files to extract match data.
|
|
250
|
+
|
|
251
|
+
```typescript
|
|
252
|
+
// Parse a single replay file
|
|
253
|
+
const replayData = await client.parsing.parseReplay(fileBuffer);
|
|
254
|
+
|
|
255
|
+
// Parse multiple replays
|
|
256
|
+
const batchResults = await client.parsing.parseBatch([file1, file2, file3]);
|
|
257
|
+
```
|
|
258
|
+
|
|
259
|
+
---
|
|
260
|
+
|
|
261
|
+
### Account - **NEW**
|
|
262
|
+
|
|
263
|
+
Comprehensive account lookup and management with cross-platform support.
|
|
264
|
+
|
|
265
|
+
#### Lookup by Account ID
|
|
266
|
+
```typescript
|
|
267
|
+
const account = await client.account.getById('accountId123');
|
|
268
|
+
// Returns: { id, displayName, externalAuths }
|
|
269
|
+
```
|
|
270
|
+
|
|
271
|
+
#### Lookup by Display Name
|
|
272
|
+
```typescript
|
|
273
|
+
const account = await client.account.getByDisplayName('Ninja');
|
|
274
|
+
// Returns: Epic account information
|
|
275
|
+
```
|
|
276
|
+
|
|
277
|
+
#### Cross-Platform Lookup
|
|
278
|
+
Search for accounts by platform usernames (PSN, Xbox, Steam, Nintendo, Twitch, GitHub):
|
|
279
|
+
|
|
280
|
+
```typescript
|
|
281
|
+
// Find by PSN username
|
|
282
|
+
const account = await client.account.getByExternalDisplayName(
|
|
283
|
+
'psn',
|
|
284
|
+
'PSN_Username',
|
|
285
|
+
true // case insensitive
|
|
286
|
+
);
|
|
287
|
+
|
|
288
|
+
// Find by Xbox gamertag
|
|
289
|
+
const xboxAccount = await client.account.getByExternalDisplayName(
|
|
290
|
+
'xbl',
|
|
291
|
+
'Xbox_Gamertag',
|
|
292
|
+
false // case sensitive
|
|
293
|
+
);
|
|
294
|
+
```
|
|
295
|
+
|
|
296
|
+
**Supported Platforms:**
|
|
297
|
+
- `psn` - PlayStation Network
|
|
298
|
+
- `xbl` - Xbox Live
|
|
299
|
+
- `steam` - Steam
|
|
300
|
+
- `nintendo` - Nintendo Switch
|
|
301
|
+
- `twitch` - Twitch
|
|
302
|
+
- `github` - GitHub
|
|
303
|
+
|
|
304
|
+
#### Bulk Operations
|
|
305
|
+
Process multiple accounts efficiently:
|
|
306
|
+
|
|
307
|
+
```typescript
|
|
308
|
+
// Bulk account lookup (max 100)
|
|
309
|
+
const accounts = await client.account.getBulk([
|
|
310
|
+
'accountId1',
|
|
311
|
+
'accountId2',
|
|
312
|
+
'accountId3'
|
|
313
|
+
]);
|
|
314
|
+
|
|
315
|
+
// Bulk external display name lookup
|
|
316
|
+
const accounts = await client.account.getBulkExternalDisplayNames({
|
|
317
|
+
lookups: [
|
|
318
|
+
{ externalAuthType: 'psn', displayName: 'PSNUser1' },
|
|
319
|
+
{ externalAuthType: 'xbl', displayName: 'XboxUser1' },
|
|
320
|
+
{ externalAuthType: 'steam', displayName: 'SteamUser1' }
|
|
321
|
+
]
|
|
322
|
+
});
|
|
323
|
+
|
|
324
|
+
// Bulk external ID lookup
|
|
325
|
+
const accounts = await client.account.getBulkExternalIds({
|
|
326
|
+
lookups: [
|
|
327
|
+
{ externalAuthType: 'psn', externalId: 'psn-id-123' },
|
|
328
|
+
{ externalAuthType: 'xbl', externalId: 'xbl-id-456' }
|
|
329
|
+
]
|
|
330
|
+
});
|
|
331
|
+
```
|
|
332
|
+
|
|
333
|
+
#### External Authentications
|
|
334
|
+
Get platform connection information:
|
|
335
|
+
|
|
336
|
+
```typescript
|
|
337
|
+
// List all linked platforms
|
|
338
|
+
const auths = await client.account.getExternalAuths('accountId123');
|
|
339
|
+
// Returns: Array of all connected platforms
|
|
340
|
+
|
|
341
|
+
// Get specific platform connection
|
|
342
|
+
const psnAuth = await client.account.getExternalAuth('accountId123', 'psn');
|
|
343
|
+
// Returns: PSN-specific connection details
|
|
344
|
+
```
|
|
345
|
+
|
|
346
|
+
---
|
|
347
|
+
|
|
348
|
+
### FN (Fortnite Game) - **NEW**
|
|
349
|
+
|
|
350
|
+
Fortnite-specific game data including inventory, features, and settings.
|
|
351
|
+
|
|
352
|
+
#### Battle Royale Inventory
|
|
353
|
+
Get player V-Bucks and in-game currency:
|
|
354
|
+
|
|
355
|
+
```typescript
|
|
356
|
+
const inventory = await client.fn.getBRInventory('accountId123');
|
|
357
|
+
// Returns: { stash: { globalcash: 1250 } }
|
|
358
|
+
console.log(`Player has ${inventory.stash.globalcash} V-Bucks`);
|
|
359
|
+
```
|
|
360
|
+
|
|
361
|
+
#### Storefront Keychain
|
|
362
|
+
Get encryption keys for storefront data:
|
|
363
|
+
|
|
364
|
+
```typescript
|
|
365
|
+
const keychain = await client.fn.getKeychain();
|
|
366
|
+
// Returns: Storefront encryption keychain
|
|
367
|
+
```
|
|
368
|
+
|
|
369
|
+
#### Purchase Receipts
|
|
370
|
+
Get player purchase history:
|
|
371
|
+
|
|
372
|
+
```typescript
|
|
373
|
+
const receipts = await client.fn.getReceipts('accountId123');
|
|
374
|
+
// Returns: Array of purchase receipts
|
|
375
|
+
```
|
|
376
|
+
|
|
377
|
+
#### Enabled Features
|
|
378
|
+
Get currently active game features:
|
|
379
|
+
|
|
380
|
+
```typescript
|
|
381
|
+
const features = await client.fn.getEnabledFeatures();
|
|
382
|
+
// Returns: Currently enabled game features
|
|
383
|
+
```
|
|
384
|
+
|
|
385
|
+
#### Version Check
|
|
386
|
+
Validate game client version:
|
|
387
|
+
|
|
388
|
+
```typescript
|
|
389
|
+
const versionCheck = await client.fn.checkVersion(
|
|
390
|
+
'Windows',
|
|
391
|
+
'++Fortnite+Release-30.40-CL-35235494-Windows'
|
|
392
|
+
);
|
|
393
|
+
// Returns: { type: 'NO_UPDATE' } or update information
|
|
394
|
+
```
|
|
395
|
+
|
|
396
|
+
#### Privacy Settings (Requires User Token)
|
|
397
|
+
Manage player privacy settings:
|
|
398
|
+
|
|
399
|
+
```typescript
|
|
400
|
+
// Get privacy settings
|
|
401
|
+
const privacy = await client.fn.getPrivacySettings(
|
|
402
|
+
'accountId123',
|
|
403
|
+
'fortniteToken'
|
|
404
|
+
);
|
|
405
|
+
|
|
406
|
+
// Update privacy settings
|
|
407
|
+
await client.fn.updatePrivacySettings(
|
|
408
|
+
'accountId123',
|
|
409
|
+
{
|
|
410
|
+
optOutOfPublicLeaderboards: true
|
|
411
|
+
},
|
|
412
|
+
'fortniteToken'
|
|
413
|
+
);
|
|
414
|
+
```
|
|
415
|
+
|
|
416
|
+
#### Entitlement (Requires User Token)
|
|
417
|
+
Check and request Fortnite access:
|
|
418
|
+
|
|
419
|
+
```typescript
|
|
420
|
+
// Check if user has Fortnite access
|
|
421
|
+
const check = await client.fn.checkEntitlement('fortniteToken');
|
|
422
|
+
|
|
423
|
+
// Request Fortnite access
|
|
424
|
+
await client.fn.requestEntitlement('accountId123', 'fortniteToken');
|
|
425
|
+
```
|
|
426
|
+
|
|
427
|
+
---
|
|
428
|
+
|
|
429
|
+
## 🔐 Authentication
|
|
430
|
+
|
|
431
|
+
Some endpoints require user-specific authentication:
|
|
432
|
+
|
|
433
|
+
### Endpoints Requiring User Token:
|
|
434
|
+
- `client.quests.getQuests()`
|
|
435
|
+
- `client.tournaments.getTracker()`
|
|
436
|
+
- `client.tournaments.checkEligibility()`
|
|
437
|
+
- `client.tournaments.download()`
|
|
438
|
+
- `client.fn.getPrivacySettings()`
|
|
439
|
+
- `client.fn.updatePrivacySettings()`
|
|
440
|
+
- `client.fn.checkEntitlement()`
|
|
441
|
+
- `client.fn.requestEntitlement()`
|
|
442
|
+
|
|
443
|
+
**How to obtain user tokens:**
|
|
444
|
+
|
|
445
|
+
1. Use the OAuth flow:
|
|
446
|
+
```typescript
|
|
447
|
+
const flow = await client.oauth.startFlow();
|
|
448
|
+
// Direct user to flow.verificationUri
|
|
449
|
+
const auth = await client.oauth.completeFlow(flow.flowId);
|
|
450
|
+
// Use auth.accessToken as the fortniteToken parameter
|
|
451
|
+
```
|
|
452
|
+
|
|
453
|
+
---
|
|
454
|
+
|
|
455
|
+
## 🚀 Advanced Usage
|
|
456
|
+
|
|
457
|
+
### Custom Base URL
|
|
458
|
+
|
|
459
|
+
```typescript
|
|
460
|
+
const client = new FortniteAPI({
|
|
461
|
+
apiKey: "your-api-key",
|
|
462
|
+
baseUrl: "https://custom-api-url.com/api",
|
|
463
|
+
});
|
|
464
|
+
```
|
|
465
|
+
|
|
466
|
+
### Error Handling
|
|
467
|
+
|
|
468
|
+
```typescript
|
|
469
|
+
import { FortniteAPIError } from "@yaelouuu/fortnite-api";
|
|
470
|
+
|
|
471
|
+
try {
|
|
472
|
+
const shop = await client.shop.getCurrent();
|
|
473
|
+
} catch (error) {
|
|
474
|
+
if (error instanceof FortniteAPIError) {
|
|
475
|
+
console.error(`API Error: ${error.message}`);
|
|
476
|
+
console.error(`Status Code: ${error.statusCode}`);
|
|
477
|
+
console.error(`Details:`, error.data);
|
|
478
|
+
}
|
|
479
|
+
}
|
|
480
|
+
```
|
|
481
|
+
|
|
482
|
+
---
|
|
483
|
+
|
|
484
|
+
## 📖 Documentation
|
|
485
|
+
|
|
486
|
+
- **Full API Documentation (Swagger)**: https://documentation.api-fortnite.com/documentation
|
|
487
|
+
- **SDK Documentation**: https://sdk.api-fortnite.com/
|
|
488
|
+
- **Support**: https://api-fortnite.com
|
|
489
|
+
|
|
490
|
+
---
|
|
491
|
+
|
|
492
|
+
## 📝 License
|
|
493
|
+
|
|
494
|
+
MIT
|
|
495
|
+
|
|
496
|
+
---
|
|
497
|
+
|
|
498
|
+
## 🆕 Changelog
|
|
499
|
+
|
|
500
|
+
### v4.2.0 (2026-01-06)
|
|
501
|
+
- ✨ **NEW** `AccountResource` with 8 methods:
|
|
502
|
+
- Account lookups by ID, display name, and external platforms
|
|
503
|
+
- Cross-platform search (PSN, Xbox, Steam, Nintendo, Twitch, GitHub)
|
|
504
|
+
- Bulk operations (up to 100 accounts)
|
|
505
|
+
- External authentication management
|
|
506
|
+
- ✨ **NEW** `FNResource` with 9 methods:
|
|
507
|
+
- BR inventory (V-Bucks)
|
|
508
|
+
- Storefront keychain
|
|
509
|
+
- Purchase receipts
|
|
510
|
+
- Enabled features
|
|
511
|
+
- Version checking
|
|
512
|
+
- Privacy settings management
|
|
513
|
+
- Entitlement checking
|
|
514
|
+
- 📝 Comprehensive TypeScript types for all new endpoints
|
|
515
|
+
- 🎯 Full JSDoc documentation
|
|
516
|
+
- ✅ 100% backward compatible
|
|
48
517
|
|
|
49
|
-
|
|
518
|
+
### v4.1.0
|
|
519
|
+
- ✨ Added `WeaponsResource` with weapon stats and metadata
|
|
520
|
+
- 🐛 Various bug fixes and improvements
|
|
50
521
|
|
|
51
|
-
|
|
52
|
-
|
|
522
|
+
### v4.0.0
|
|
523
|
+
- ✨ Added `QuestsResource` with `getQuests()` method
|
|
524
|
+
- ✨ Added `getLeaderboardV2()` method to `TournamentsResource`
|
|
525
|
+
- 🐛 Fixed typo in `battlepass` property name
|
|
526
|
+
- 📝 Comprehensive JSDoc documentation for all resources
|
|
527
|
+
- 🎯 Full TypeScript type coverage
|
package/dist/client.d.ts
CHANGED
|
@@ -8,6 +8,11 @@ import { ParsingResource } from "./resources/parsing";
|
|
|
8
8
|
import { WeaponsResource } from "./resources/weapons";
|
|
9
9
|
import { BattlePassResource } from "./resources/battlepass";
|
|
10
10
|
import { QuestsResource } from "./resources/quests";
|
|
11
|
+
import { AccountResource } from "./resources/account";
|
|
12
|
+
import { FNResource } from "./resources/fn";
|
|
13
|
+
import { FriendsResource } from "./resources/friends";
|
|
14
|
+
import { StatsResource } from "./resources/stats";
|
|
15
|
+
import { EventsResource } from "./resources/events";
|
|
11
16
|
export interface ClientOptions {
|
|
12
17
|
apiKey: string;
|
|
13
18
|
baseUrl?: string;
|
|
@@ -25,6 +30,11 @@ export declare class FortniteAPI {
|
|
|
25
30
|
weapons: WeaponsResource;
|
|
26
31
|
battlepass: BattlePassResource;
|
|
27
32
|
quests: QuestsResource;
|
|
33
|
+
account: AccountResource;
|
|
34
|
+
fn: FNResource;
|
|
35
|
+
friends: FriendsResource;
|
|
36
|
+
stats: StatsResource;
|
|
37
|
+
events: EventsResource;
|
|
28
38
|
constructor(options: ClientOptions);
|
|
29
39
|
/**
|
|
30
40
|
* Internal method to make HTTP requests
|
package/dist/client.js
CHANGED
|
@@ -12,6 +12,11 @@ const parsing_1 = require("./resources/parsing");
|
|
|
12
12
|
const weapons_1 = require("./resources/weapons");
|
|
13
13
|
const battlepass_1 = require("./resources/battlepass");
|
|
14
14
|
const quests_1 = require("./resources/quests");
|
|
15
|
+
const account_1 = require("./resources/account");
|
|
16
|
+
const fn_1 = require("./resources/fn");
|
|
17
|
+
const friends_1 = require("./resources/friends");
|
|
18
|
+
const stats_1 = require("./resources/stats");
|
|
19
|
+
const events_1 = require("./resources/events");
|
|
15
20
|
class FortniteAPI {
|
|
16
21
|
constructor(options) {
|
|
17
22
|
this.apiKey = options.apiKey;
|
|
@@ -28,6 +33,11 @@ class FortniteAPI {
|
|
|
28
33
|
this.weapons = new weapons_1.WeaponsResource(this);
|
|
29
34
|
this.battlepass = new battlepass_1.BattlePassResource(this);
|
|
30
35
|
this.quests = new quests_1.QuestsResource(this);
|
|
36
|
+
this.account = new account_1.AccountResource(this);
|
|
37
|
+
this.fn = new fn_1.FNResource(this);
|
|
38
|
+
this.friends = new friends_1.FriendsResource(this);
|
|
39
|
+
this.stats = new stats_1.StatsResource(this);
|
|
40
|
+
this.events = new events_1.EventsResource(this);
|
|
31
41
|
}
|
|
32
42
|
/**
|
|
33
43
|
* Internal method to make HTTP requests
|
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
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import { FortniteAPI } from "../client";
|
|
2
|
+
import { Account, ExternalAuth, BulkExternalDisplayNameRequest, BulkExternalIdRequest } from "../types";
|
|
3
|
+
export declare class AccountResource {
|
|
4
|
+
private client;
|
|
5
|
+
constructor(client: FortniteAPI);
|
|
6
|
+
/**
|
|
7
|
+
* Lookup account by Account ID
|
|
8
|
+
* @param accountId - Epic Games account ID
|
|
9
|
+
* @param fortniteToken - Optional user Fortnite token
|
|
10
|
+
*/
|
|
11
|
+
getById(accountId: string, fortniteToken?: string): Promise<Account>;
|
|
12
|
+
/**
|
|
13
|
+
* Bulk account lookup by Account IDs
|
|
14
|
+
* @param accountIds - Array of Epic Games account IDs (max 100)
|
|
15
|
+
*/
|
|
16
|
+
getBulk(accountIds: string[]): Promise<Account[]>;
|
|
17
|
+
/**
|
|
18
|
+
* Lookup account by Epic display name
|
|
19
|
+
* @param displayName - Epic Games display name
|
|
20
|
+
* @param fortniteToken - Optional user Fortnite token
|
|
21
|
+
*/
|
|
22
|
+
getByDisplayName(displayName: string, fortniteToken?: string): Promise<Account>;
|
|
23
|
+
/**
|
|
24
|
+
* Cross-platform account lookup by external display name
|
|
25
|
+
* @param platform - Platform type (psn, xbl, steam, nintendo, twitch, github)
|
|
26
|
+
* @param displayName - Platform display name
|
|
27
|
+
* @param caseInsensitive - Case-insensitive search (default: false)
|
|
28
|
+
* @param fortniteToken - Optional user Fortnite token
|
|
29
|
+
*/
|
|
30
|
+
getByExternalDisplayName(platform: string, displayName: string, caseInsensitive?: boolean, fortniteToken?: string): Promise<Account>;
|
|
31
|
+
/**
|
|
32
|
+
* Bulk external display name lookup
|
|
33
|
+
* @param payload - Array of platform/displayName pairs (max 100)
|
|
34
|
+
*/
|
|
35
|
+
getBulkExternalDisplayNames(payload: BulkExternalDisplayNameRequest): Promise<Account[]>;
|
|
36
|
+
/**
|
|
37
|
+
* Bulk external ID lookup
|
|
38
|
+
* @param payload - Array of platform/externalId pairs (max 100)
|
|
39
|
+
*/
|
|
40
|
+
getBulkExternalIds(payload: BulkExternalIdRequest): Promise<Account[]>;
|
|
41
|
+
/**
|
|
42
|
+
* Get all external authentications for an account
|
|
43
|
+
* @param accountId - Epic Games account ID
|
|
44
|
+
* @param fortniteToken - Optional user Fortnite token
|
|
45
|
+
*/
|
|
46
|
+
getExternalAuths(accountId: string, fortniteToken?: string): Promise<ExternalAuth[]>;
|
|
47
|
+
/**
|
|
48
|
+
* Get specific external authentication for an account
|
|
49
|
+
* @param accountId - Epic Games account ID
|
|
50
|
+
* @param platform - Platform type (psn, xbl, steam, nintendo, twitch, github)
|
|
51
|
+
* @param fortniteToken - Optional user Fortnite token
|
|
52
|
+
*/
|
|
53
|
+
getExternalAuth(accountId: string, platform: string, fortniteToken?: string): Promise<ExternalAuth>;
|
|
54
|
+
}
|