$ yarn add r6api.js
# OR
$ npm install r6api.jsTo setup this package, you need to provide Ubisoft account credentials (email and password). Credentials should be handled as you would handle any other secure value, it is recommended to use dotenv package to load environment variables from a .env.
Do not use your real Ubisoft account. It is highly recommended to create a new account for using this package. Visit account.ubisoft.com/login to create new account.
require('dotenv').config();
const R6API = require('r6api.js').default;
// // Or ES6 way
// import * as dotenv from 'dotenv';
// dotenv.config();
// import R6API from 'r6api.js';
const { UBI_EMAIL: email = '', UBI_PASSWORD: password = '' } = process.env;
const r6api = new R6API({ email, password });
// export default async () => { // ES6
exports.default = async () => {
const username = 'Daniel.Nt';
const platform = 'uplay';
const { 0: player } = await r6api.findByUsername(platform, username);
if (!player) return 'Player not found';
const { 0: stats } = await r6api.getStats(platform, player.id);
if (!stats) return 'Stats not found';
const { pvp: { general } } = stats;
return `${player.username} has played ${general.matches} matches.`;
};Daniel.Nt has played 5648 matches.
- Definitions
- constructor
- findByUsername
- findById
- getProgression
- getPlaytime
- getRanks
- getStats
- getStatus
- getUserStatus
- getProfileApplications
- getApplications
- validateUsername
- getNews
- getNewsById
- custom
| Param | Type | Description |
|---|---|---|
| platform | string |
Either uplay (pc), xbl (Xbox Live) or psn (PlayStation Network) |
| platformAll | string |
platform, steam, epic or amazon |
| username/s | string | string[] |
|
| id/s | string | string[] |
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
string |
false | Ubisoft account email | ||
| password | string |
false | Ubisoft account password | |
| ubiAppId | string |
false | Ubi-AppId header value |
|
| authFileDirPath | string |
false | Path for directory where authentication file is stored | |
| authFileName | string |
false | Name for authentication file | |
| authFilePath | string |
false | If set authFileDirPath and authFileName options are being ignored |
const { UBI_EMAIL: email = '', UBI_PASSWORD: password = '' } = process.env;
const r6api = new R6API({ email, password });Find player by their username.
Usernames limit: 50
(platformAll, username/s) => Promise<Array>
await r6api.findByUsername('uplay', 'Daniel.Nt');Output
[
{
id: '0b95544b-0228-49a7-b338-6d15cfbc3d6a',
userId: '0b95544b-0228-49a7-b338-6d15cfbc3d6a',
idOnPlatform: '0B95544B-0228-49A7-B338-6D15CFBC3D6A',
platform: 'uplay',
username: 'Daniel.Nt',
avatar: {
'146': 'https://ubisoft-avatars.akamaized.net/0b95544b-0228-49a7-b338-6d15cfbc3d6a/default_146_146.png',
'256': 'https://ubisoft-avatars.akamaized.net/0b95544b-0228-49a7-b338-6d15cfbc3d6a/default_256_256.png',
'500': 'https://ubisoft-avatars.akamaized.net/0b95544b-0228-49a7-b338-6d15cfbc3d6a/default_tall.png'
}
}
]Find player by their id.
Ids limit: 50
(platformAll | 'all', id/s, options?) => Promise<Array>
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
| isUserId | boolean |
false | false |
Whether id is userId or not |
// search by profileId (id)
await r6api.findById('all', '91477729-b5ac-463c-9618-03ca154764f5');
// search by userId
await r6api.findById('all', '1baf5bf8-90cd-4ead-8b90-9a11cb2b8adf', { isUserId: true });
// search by idOnPlatform
await r6api.findById('xbl', '2535406338711362');await r6api.findById('uplay', '0b95544b-0228-49a7-b338-6d15cfbc3d6a');Output
[
{
id: '0b95544b-0228-49a7-b338-6d15cfbc3d6a',
userId: '0b95544b-0228-49a7-b338-6d15cfbc3d6a',
idOnPlatform: '0B95544B-0228-49A7-B338-6D15CFBC3D6A',
platform: 'uplay',
username: 'Daniel.Nt',
avatar: {
'146': 'https://ubisoft-avatars.akamaized.net/0b95544b-0228-49a7-b338-6d15cfbc3d6a/default_146_146.png',
'256': 'https://ubisoft-avatars.akamaized.net/0b95544b-0228-49a7-b338-6d15cfbc3d6a/default_256_256.png',
'500': 'https://ubisoft-avatars.akamaized.net/0b95544b-0228-49a7-b338-6d15cfbc3d6a/default_tall.png'
}
}
]Get playtime of a player.
Ids limit: 200
(platform, id/s) => Promise<Array>
await r6api.getPlaytime('uplay', '0b95544b-0228-49a7-b338-6d15cfbc3d6a');Output
[
{
id: '0b95544b-0228-49a7-b338-6d15cfbc3d6a',
pvp: {
general: 5984372,
ranked: 5312097,
casual: 614423,
custom: 974,
other: 56878
},
pve: {
general: 292574
}
}
]Get level, xp and alpha pack drop chance of a player.
Ids limit: 200
(platform, id/s) => Promise<Array>
await r6api.getProgression('uplay', '0b95544b-0228-49a7-b338-6d15cfbc3d6a');Output
[
{
id: '0b95544b-0228-49a7-b338-6d15cfbc3d6a',
level: 297,
xp: 73534,
lootboxProbability: {
raw: 820,
percent: '8.20%'
}
}
]Get seasonal stats of a player.
Ids limit: 200
(platform, id/s, options?) => Promise<Array>
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
| seasonIds | number | number[] | string |
false | -1 |
Numbers from 6 to 23 or -1 or 'all' |
| regionIds | string | string[] |
false | ['emea', 'ncsa', 'apac'] |
'emea', 'ncsa', 'apac' or 'all' |
| boardIds | string | string[] |
false | ['pvp_ranked', 'pvp_casual', 'pvp_newcomer', 'pvp_event'] |
'pvp_ranked', 'pvp_casual', 'pvp_newcomer' or 'pvp_event' |
| ID | Name | ● | ID | Name | ● | ID | Name |
|---|---|---|---|---|---|---|---|
6 |
Health | 12 |
Wind Bastion | 18 |
Steel Wave | ||
7 |
Blood Orchid | 13 |
Burnt Horizon | 19 |
Shadow Legacy | ||
8 |
White Noise | 14 |
Phantom Sight | 20 |
Neon Dawn | ||
9 |
Chimera | 15 |
Ember Rise | 21 |
Crimson Heist | ||
10 |
Para Bellum | 16 |
Shifting Tides | 22 |
North Star | ||
11 |
Grim Sky | 17 |
Void Edge | 23 |
Crystal Guard |
Note:
-1will always return current season
| Shorthand | Meaning |
|---|---|
emea |
Europe, Middle East and Africa |
ncsa |
North, Central and South America |
apac |
Asia Pacific |
Note: Since Steal Wave (18) all regions will return same data
| Minimum Season ID | Board ID |
|---|---|
6 |
pvp_ranked |
12 |
pvp_newcomer |
15 |
pvp_casual |
16 |
pvp_event |
Note: Returns empty array if
boardIdispvp_newcomerandseasonIdis21or above
Note:
topRankPositionwill always return0if board is not'pvp_ranked'
Note: Ubisoft doesn't provide data for seasons before Operation Health (6) if board is
pvp_ranked, Ember Rise (15) if board ispvp_casual, Wind Bastion (12) if board ispvp_eventor Shifting Tides (16) if board ispvp_event
await r6api.getRanks('uplay', '0b95544b-0228-49a7-b338-6d15cfbc3d6a', { regionIds: 'emea', boardIds: 'pvp_ranked' })Output
[
{
id: '0b95544b-0228-49a7-b338-6d15cfbc3d6a',
seasons: {
'23': {
seasonId: 23,
seasonName: 'Crystal Guard',
seasonColor: '#cc8200',
seasonImage: 'https://staticctf.akamaized.net/J3yJr34U2pZ2Ieem48Dwy9uqj5PNUQTn/5Rm9sfgVTz9KdTI1Jh4N6w/c2d66a871b6311fe26198553695e0cd1/r6s-seasons-y6s3.jpg',
seasonReleaseDate: '2021-09-07T00:00:00.000Z',
regions: {
emea: {
regionId: 'emea',
regionName: 'Europe, Middle East and Africa',
boards: {
pvp_ranked: {
boardId: 'pvp_ranked',
boardName: 'Ranked',
skillMean: 31.3409980964,
skillStdev: 7.5086948144,
current: {
id: 0,
name: 'Unranked',
mmr: 3134,
icon: 'https://github.com/danielwerg/r6api.js/raw/master/assets/ranks/v3/Unranked.png'
},
max: {
id: 0,
name: 'Unranked',
mmr: 0,
icon: 'https://github.com/danielwerg/r6api.js/raw/master/assets/ranks/v3/Unranked.png'
},
lastMatch: {
result: 'unknown',
mmrChange: 0,
skillMeanChange: 0,
skillStdevChange: 0
},
pastSeasons: {
wins: 1937,
losses: 1795,
winRate: '51.90%',
matches: 3732,
abandons: 17
},
previousMmr: 0,
nextMmr: 0,
topRankPosition: 0,
kills: 0,
deaths: 0,
kd: 0,
wins: 0,
losses: 0,
winRate: '0.00%',
matches: 0,
abandons: 0,
updateTime: '1970-01-01T00:00:00+00:00'
}
}
}
}
}
}
}
]Note:
kills,deaths,kd,topRankPositionand everything underlastMatchonly available for seasons including and after Phantom Sight (14) for older seasons it will return0or'unknown'in case oflastMatch.result
Note: If player is unranked their max mmr (
max.mmr) will always be0(it's always0for casual)
Note: Values for
previousMmr,nextMmr,topRankPosition,max.idandmax.mmrwill always be0,max.namewill always beUnrankedifboardIdispvp_casual
Get summary stats of a player.
Ids limit: 200
(platform, id/s, options?) => Promise<Array>
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
| raw | boolean |
false | false |
Include raw API response |
| categories | string[] |
false | Requests all | Categories to request |
pvp pve
general generalpvp generalpve
operators operatorspvp operatorspve
weapons weaponspvp weaponspve
queues queuespvp queuespve modes modespvp modespve
ranked casual custom
local coop normal hard realistic normallocal hardlocal realisticlocal normalcoop hardcoop realisticcoop
bomb secureArea hostage elimination
disarmBomb protectHostage extractHostage
await r6api.getStats('uplay', '0b95544b-0228-49a7-b338-6d15cfbc3d6a');Output
[
{
id: '0b95544b-0228-49a7-b338-6d15cfbc3d6a',
pvp: {
general: [Object],
operators: [Object],
weapons: [Object],
queues: [Object],
modes: [Object]
},
pve: {
general: [Object],
operators: [Object],
weapons: [Object],
queues: [Object],
modes: [Object]
}
}
]Note: Ubisoft stopped recording
bulletsFiredforpvplong time ago, don't rely on it
Note:
distanceTravelledvalue might be overflowed due to Ubisoft storing it in 32-bit int
Get Rainbow Six: Siege servers status.
() => Promise<Array>
await r6api.getStatus();Output
[
{
appId: '8956241d-236d-4dbd-9e1e-bf6ed133773a',
name: 'Rainbow Six Siege - China - PC - LIVE',
spaceId: '',
mdm: '23702',
category: 'Instance',
platform: 'PC',
status: 'Online',
maintenance: null,
impactedFeatures: []
},
{
appId: 'e3d5ea9e-50bd-43b7-88bf-39794f4e3d40',
name: 'Rainbow Six Siege - PC - LIVE',
spaceId: '',
mdm: '4073',
category: 'Instance',
platform: 'PC',
status: 'Online',
maintenance: null,
impactedFeatures: []
},
{
appId: 'fb4cc4c9-2063-461d-a1e8-84a7d36525fc',
name: 'Rainbow Six Siege - PS4 - LIVE',
spaceId: '05bfb3f7-6c21-4c42-be1f-97a33fb5cf66',
mdm: '14922',
category: 'Instance',
platform: 'PS4',
status: 'Online',
maintenance: null,
impactedFeatures: []
},
{
appId: '6e3c99c9-6c3f-43f4-b4f6-f1a3143f2764',
name: 'Rainbow Six Siege - PS5 - LIVE',
spaceId: '96c1d424-057e-4ff7-860b-6b9c9222bdbf',
mdm: '25365',
category: 'Instance',
platform: 'PS5',
status: 'Online',
maintenance: null,
impactedFeatures: []
},
{
appId: '76f580d5-7f50-47cc-bbc1-152d000bfe59',
name: 'Rainbow Six Siege - XBOX SERIES X - LIVE',
spaceId: '631d8095-c443-4e21-b301-4af1a0929c27',
mdm: '25366',
category: 'Instance',
platform: 'XBOX SERIES X',
status: 'Online',
maintenance: null,
impactedFeatures: []
},
{
appId: '4008612d-3baf-49e4-957a-33066726a7bc',
name: 'Rainbow Six Siege - XBOXONE - LIVE',
spaceId: '98a601e5-ca91-4440-b1c5-753f601a2c90',
mdm: '4075',
category: 'Instance',
platform: 'XBOXONE',
status: 'Online',
maintenance: null,
impactedFeatures: []
}
]Get status of a player.
Ids limit: 50
(id/s, options?) => Promise<Array>
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
| fetchApplications | boolean |
false | false |
Make another API request to get additional information about applications |
Note: Takes
userIdinstead ofprofileId(id) like most methods
await r6api.getUserStatus('0b95544b-0228-49a7-b338-6d15cfbc3d6a');Output
[
{
userId: '0b95544b-0228-49a7-b338-6d15cfbc3d6a',
status: 'offline',
applications: [],
manuallySet: null
}
]Get information about applications of a player.
Ids limit: 100
(id/s, options?) => Promise<Array>
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
| fetchApplications | boolean |
false | false |
Make another API request to get additional information about applications |
await r6api.getProfileApplications('0b95544b-0228-49a7-b338-6d15cfbc3d6a');Output
[
{
id: '0b95544b-0228-49a7-b338-6d15cfbc3d6a',
applications: [
{
id: '46f0b36b-b947-4d9c-b9dc-9a34b52ab59a',
name: null,
platform: null,
sessionsPlayed: 10,
daysPlayed: 7,
lastPlayedAt: '2020-10-27T17:11:38.771Z',
firstPlayedAt: '2019-04-19T22:05:01.850Z'
},
{
id: '87843b9b-516d-4a58-824b-f658d1361ad1',
name: null,
platform: null,
sessionsPlayed: 2,
daysPlayed: 2,
lastPlayedAt: '2016-03-21T18:28:25.434Z',
firstPlayedAt: '2016-03-18T16:18:43.603Z'
},
{
id: 'a427a342-56bb-437b-b835-fa695c75893b',
name: 'Tom Clancy\'s Rainbow Six Siege - Test Server',
platform: 'PC',
sessionsPlayed: 137,
daysPlayed: 72,
lastPlayedAt: '2020-11-16T05:35:45.229Z',
firstPlayedAt: '2017-06-01T20:10:13.424Z'
},
{
id: 'e3d5ea9e-50bd-43b7-88bf-39794f4e3d40',
name: 'Tom Clancy\'s Rainbow Six Siege',
platform: 'PC',
sessionsPlayed: 2344,
daysPlayed: 1221,
lastPlayedAt: '2021-02-04T12:35:13.173Z',
firstPlayedAt: '2015-12-01T19:33:41.284Z'
},
{
id: 'f68a4bb5-608a-4ff2-8123-be8ef797e0a6',
name: null,
platform: null,
sessionsPlayed: 1919,
daysPlayed: 1551,
lastPlayedAt: '2021-08-01T08:45:05.344Z',
firstPlayedAt: '2015-12-01T19:31:18.107Z'
}
]
}
]Get information about applications.
Ids limit: 50
(id/s) => Promise<Array>
await r6api.getApplications('e3d5ea9e-50bd-43b7-88bf-39794f4e3d40');Output
[
{
id: 'e3d5ea9e-50bd-43b7-88bf-39794f4e3d40',
name: 'Tom Clancy\'s Rainbow Six Siege',
platform: 'PC',
spaceId: '5172a557-50b5-4665-b7db-e3f2e8c5041d'
}
]Validate username.
(username) => Promise<Object>
await r6api.validateUsername('gamerflick360');Output
{
valid: false,
validationReports: [
{
message: '\'flick\' matches \'flick\'',
categories: [
'global-username',
'vulgarity'
],
severity: 'high',
locale: 'en-US',
errorCode: 1013,
suggestions: null
}
]
}Get Rainbow Six: Siege News.
(options?) => Promise<Object>
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
| raw | boolean |
false | false |
Include raw API response |
| category | string |
false | 'all' |
'all', 'game-updates', 'patch-notes', 'community', 'store', 'esports' |
| media | string |
false | 'all' |
'all', 'news', 'videos' |
| placement | string |
false | '' |
Ex: 'featured-news-article' |
| limit | number |
false | 6 |
|
| skip | number |
false | 0 |
|
| startIndex | number |
false | 0 |
|
| locale | string |
false | 'en-gb' |
|
| fallbackLocale | string |
false | 'en-us' |
await r6api.getNews({ limit: 1 });Output
{
total: 1130,
limit: 1,
categories: 'all',
media: 'all',
skip: 0,
startIndex: 0,
placement: '',
tags: 'BR-rainbow-six GA-siege',
items: [
{
id: 'OEhzh2YY8C8',
title: 'Rainbow Six Siege: Containment Event | Trailer | Ubisoft',
abstract: undefined,
thumbnail: {
url: 'https://i.ytimg.com/vi/OEhzh2YY8C8/hqdefault.jpg',
description: 'Rainbow Six Siege: Containment Event | Trailer | Ubisoft'
},
content: '[video](https://www.youtube-nocookie.com/embed/OEhzh2YY8C8)',
description: 'It\'s a battle of survival against a new threat! Play the limited time in-game event, Containment, inspired by Rainbow Six Extraction. Experience a new game mode, Nest Destruction, to either destroy or preserve a Nest against the opposing team. Recruit your squad and don’t miss your chance to unlock free content! Play for a limited time between August 3 - August 24.\n\n#R6S\n\nPlease SUBSCRIBE: http://bit.ly/UbisoftYouTubeChannel\n \nVisit our official channels to stay up to date with Rainbow Six Siege:\nhttps://rainbow6.ubisoft.com/\nhttps://www.facebook.com/rainbow6usa/\nhttps://www.instagram.com/rainbow6gam...\nhttps://twitter.com/Rainbow6Game\nhttps://www.youtube.com/UbisoftNA\n \nDiscover all our Rainbow Six products and exclusive items on the Ubisoft Store: https://ubi.li/DZNaP\n \nABOUT RAINBOW SIX SIEGE:\nRainbow Six Siege is an exciting, new approach to the first-person shooter experience that puts tactical combat and masterful destruction at the center of the action. Lead your team of unique, counter-terrorist Rainbow operators through tense and thrilling combat scenarios, and achieve victory through smart preparation and strategic improvisation. Rainbow Six Siege is available now on Xbox One, PlayStation® 4 and PC.\n \n KEY FEATURES:\n \n -THE RULES OF SIEGE: Five versus Five. Attack versus Defend. Infiltrate versus Fortify. Team-based strategy meets intense, tactical combat.\n -WORLD\'S ELITE COUNTER-TERRORIST OPERATORS: Choose your Operator and wield their unique ability to breach or defend the objective as a part of an elite team.\n -DESTRUCTION AS A TOOL: Walls can be shattered; floors and ceilings can be breached. Mastering the tactical use of destruction is the key to victory.\n -CLOSE-QUARTERS COMBAT: With tight spaces shaping all combat arenas, tense encounters and up-close-and-personal firefights abound within every Siege.\n\nABOUT UBISOFT:\nUbisoft is a leading creator, publisher and distributor of interactive entertainment and services, with a rich portfolio of world-renowned brands, including Assassin’s Creed, Far Cry, For Honor, Just Dance, Watch Dogs, Tom Clancy’s video game series including Ghost Recon, Rainbow Six and The Division. The teams throughout Ubisoft’s worldwide network of studios and business offices are committed to delivering original and memorable gaming experiences across all popular platforms, including consoles, mobile phones, tablets and PCs. For the 2019-20 fiscal year, Ubisoft generated net bookings of €1,534 million. To learn more, please visit: www.ubisoftgroup.com. \n\n© 2021 Ubisoft Entertainment. All Rights Reserved. Ubisoft and the Ubisoft logo are registered trademarks in the US and/or other countries.\n\nRainbow Six Siege: Containment Event | Trailer | Ubisoft [NA]\nhttp://www.youtube.com/UbisoftNA',
categories: [
'videos'
],
tag: undefined,
placement: undefined,
type: 'videos',
readTime: undefined,
url: 'https://www.youtube.com/watch?v=OEhzh2YY8C8',
date: '2021-08-02T16:15:23.000Z'
}
]
}Get Rainbow Six: Siege News by ID.
(id: string, options?) => Promise<Object>
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
| raw | boolean |
false | false |
Include raw API response |
| locale | string |
false | 'en-gb' |
|
| fallbackLocale | string |
false | 'en-us' |
await r6api.getNewsById('4QAhnXnPk7Ffse8scw3k0Z');Output
{
total: 1094,
limit: 0,
categories: 'all',
media: 'all',
skip: 0,
startIndex: 0,
placement: '',
tags: 'BR-rainbow-six GA-siege',
item: {
id: '4QAhnXnPk7Ffse8scw3k0Z',
title: 'Y5S1.2 Patch Notes',
abstract: 'The Y5S1.2 Patch will deploy to PC and Console in the week of April 20th. ',
thumbnail: {
url: 'https://staticctf.akamaized.net/J3yJr34U2pZ2Ieem48Dwy9uqj5PNUQTn/Gqlz4Wt00TfhvaSH4d8LZ/0e7f0e99e9f2845dc323a60ce3825aa1/y5s1_2_pn-min.png',
description: null
},
content: 'The Y5S1.2 Patch will deploy to PC and Console in the week of April 20th. Please see our [Designer\'s Notes](https://rainbow6.com/dn_y5s12) for more insight on the balancing changes coming with the update.\n\n# UPDATE\nUpdate - the quick match map pool will remain the same throughout Y5S1 and will rotate again in Y5S2.\n\n# BALANCING\n### BUCK \n*With you til the end of the line.*\n\n- Frag Grenades replaced with Claymores.\n- Increased Skeleton Key Magazine Capacity: \n - Skeleton Key magazine capacity increased to 5 + 1\n - Skeleton Key max ammo count is now 25+1\n\n### GOYO\n*Less is more.*\n\n- Reduced number of Volcán shields to 2 (down from 3).\n\n### JÄGER\n*Less of a pain-in-the-schnitzel.*\n\n- Now a 2-speed/2-armor operator.\n\n### MOZZIE\n*Still a shortie.*\n\n- Removed Super Shorty secondary.\n\n### YING\n*Lights, Camera, Action!*\n\n- Increased number of Candelas to 4 (up from 3).\n- Replaced Claymores with Smoke Grenades.\n- Increased T-95 LSW damage to 46 (up from 43).\n\n### M12 (Caveira)\n- Added a Razor Holographic Sight option to her M12.\n\n### TCSG12 (Kaid, Goyo)\n- Added an additional magazine to the TCSG12.\n- Reduced TCSG12 damage to 57 (down from 84).\n\n# BUG FIXES\n- FIXED – Barricade replication issues where the barricade is not destroyed for all players in game except the shooter.\n- FIXED – The Dynamic Play button does not update properly when last match was on an Event/Discovery playlist.\n- FIXED – Players can clip inside the excavator in EXT Construction Site of Oregon.\n- FIXED – Game boots with DX11 when players manually select the Vulkan executable in the steam installation folder.\n- FIXED – Minor menu/shop visual and cosmetic fixes.\n- FIXED – Lighting issue on Consulate map for consoles (hotfixed on PC on [March 30](https://twitter.com/rainbow6game/status/1244581743254024192?lang=en)).',
description: undefined,
categories: [
'news',
'rainbow-six',
'rainbow-six-siege',
'patch-notes'
],
tag: 'BR-rainbow-six GA-siege',
placement: [
'featured-news-article'
],
type: 'news',
readTime: '2',
url: 'https://www.ubisoft.com/en-us/game/rainbow-six/siege/news-updates/4QAhnXnPk7Ffse8scw3k0Z/y5s12-patch-notes',
date: '2020-04-20T21:00:00.000Z'
}
}Useful if you're familiar with Rainbow Six Siege's API; this method will make a request to a custom URL you would provide with the token in the header.
(url: string, params: any) => Promise<T>
await r6api.custom(
utils.URLS.STATS(
'uplay', ['0b95544b-0228-49a7-b338-6d15cfbc3d6a'],
'operatorpvp_clash_sloweddown'
)
);Output
{
results: {
'0b95544b-0228-49a7-b338-6d15cfbc3d6a': {
'operatorpvp_clash_sloweddown:3:10:infinite': 2
}
}
}This package is developed in TypeScript, and the typings are shipped along with the built package: that means that your editor should automatically detect them and give you the static type info. For a full list of supporting IDEs, please see here.
If you're coding in TypeScript you can also import the typings and use the type-checking functions provided in the utils.
import R6API, { utils, typings, constants } from 'r6api.js'
const yourVar = 'r4-c'; // any
if (utils.isWeaponName(yourVar)) {
// Now your var has the WeaponName type
}
const platform = constants.PLATFORMS as typings.Platform[];Operator Icons from r6operators.marcopixel.eu