Skip to content

Instantly share code, notes, and snippets.

@mikaeldui
Created February 21, 2022 21:07
Show Gist options
  • Save mikaeldui/f8d4294f7689654bcd7474981d8533c8 to your computer and use it in GitHub Desktop.
Save mikaeldui/f8d4294f7689654bcd7474981d8533c8 to your computer and use it in GitHub Desktop.
League Client WAMP Implementation (minified)
function(e, t, n) {
'use strict';
function r(e, t) {
if (t && (h('Message QUEUED (' + t.length + ' bytes)'), e._sendQueue.push(JSON.stringify(t))), e._connected)
for (; 0 < e._sendQueue.length;) {
const t = e._sendQueue.shift();
h('Message SEND'), e._websocket.send(t)
}
}
function i() {
return 'xxxxxxxxxxxxxxxx'.replace(/x/g, () => (0 | 36 * Math.random()).toString(36))
}
function a(e, t, n) {
return function(r) {
return delete e._resolvers[t], n(r)
}
}
function o(e) {
const t = e._websocket = new _.WebSocket(e._endpoint, ['wamp'], e._options);
t.onopen = s.bind(null, e), t.onclose = d.bind(null, e), t.onerror = l.bind(null, e), t.onmessage = u.bind(null, e)
}
function l() {
const e = 'WebSocket event: ERROR';
h(e), console.error(e)
}
function s() {
const e = 'WebSocket event: OPEN';
h(e), console.log(e)
}
function d(e, t) {
const n = 'WebSocket event: CLOSED (' + t.code + ': ' + t.reason + ')';
h(n), e.closed();
const r = t.code === 1006;
r ? (o(e), console.log(n)) : console.error(n)
}
function u(e, t) {
h('WebSocket event: MESSAGE (' + t.data.length + ' bytes)');
const n = JSON.parse(t.data),
i = n[0],
a = n[1],
o = n[2];
if (i === f.EVENT) h('received EVENT', a, o), e.publish(o.uri, o);
else if (i === f.WELCOME) h('received WELCOME', n.slice(1)), console.log('WAMP Handshake complete'), [e._wampSessionId, e._wampProtocolVersion, e._wampServerIdentity] = n.slice(1), e.ready(), r(e), r(e, [f.SUBSCRIBE, 'OnJsonApiEvent']);
else if (i === f.CALLRESULT) {
const [, t, r] = n;
h('received CALLRESULT', n), e._resolvers[t][0](r)
} else if (i === f.CALLERROR) {
const [, t, r] = n;
h('received CALLERROR', t, r), e._resolvers[t][1](r)
}
}
const p = n(53),
c = n(162),
f = n(163).WAMP_MESSAGE_IDS,
g = n(54);
g.enable('wamp:core:error');
const h = g('wamp:core:log');
class _ extends p {
constructor(e, t) {
h('creating CoreSocket', e), super(), this._websocket = null, this._endpoint = e, this._connected = !1, this._sendQueue = [], this._options = t, this._resolvers = {}, o(this)
}
call(e, t, n) {
const o = i(this);
return new Promise((i, l) => {
this._resolvers[o] = [a(this, o, i), a(this, o, l)], h('sending CALL message', o, e, t, n), r(this, [f.CALL, o, e, t, n])
})
}
close() {
super.close(), this._websocket.close()
}
ready() {
this._connected = !0, this._trigger('ready')
}
closed() {
this._connected = !1, this._trigger('closed')
}
on(e, t) {
this._evts = this._evts || new Map;
const n = this._evts.get(e) || [];
n.push(t), this._evts.set(e, n)
}
addEventListener() {
return this.on.call(this, ...arguments)
}
removeEventListener(e, t) {
this._evts = this._evts || new Map;
const n = this._evts.get(e),
r = n.indexOf(t);
0 <= r && n.splice(r, 1)
}
_trigger(e, t) {
if (this._evts) {
const n = this._evts.get(e);
n && n.forEach((e) => e.call(null, t))
}
}
}
_.WebSocket = c, e.exports = _
}
function(e, t, n) {
(function(e) {
e.exports = 'undefined' == typeof window ? e.require('../../../node_modules/ws') : window.WebSocket
}).call(t, n(74)(e))
}
function(e) {
'use strict';
const t = {};
e.exports = function(e, n) {
let r = t[e];
return r || (r = t[e] = new RegExp('^' + e.replace('*', '.*') + '$')), r.test(n)
}, e.exports.matchUrl = e.exports, e.exports.WAMP_MESSAGE_IDS = {
WELCOME: 0,
PREFIX: 1,
CALL: 2,
CALLRESULT: 3,
CALLERROR: 4,
SUBSCRIBE: 5,
UNSUBSCRIBE: 6,
PUBLISH: 7,
EVENT: 8
}
}
@mikaeldui
Copy link
Author

Using CALL:

[2, "123", "GetLolMapsV1Maps"] gets the response:

[
    3,
    "123",
    [
        {
            "assets": {
                "champ-select-skip-bg": "lol-game-data/assets/ASSETS/UX/TFT/OutOfGame/Set6_Act2/Backgrounds/gameflow.jpg",
                "game-select-icon-active": "lol-game-data/assets/content/src/LeagueClient/GameModeAssets/TFT/img/game-select-icon-active.png",
                "game-select-icon-active-video": "lol-game-data/assets/content/src/LeagueClient/GameModeAssets/TFT/video/game-select-icon-active.webm",
                "game-select-icon-default": "lol-game-data/assets/content/src/LeagueClient/GameModeAssets/TFT/img/game-select-icon-default.png",
                "game-select-icon-disabled": "lol-game-data/assets/content/src/LeagueClient/GameModeAssets/TFT/img/game-select-icon-disabled.png",
                "game-select-icon-hover": "lol-game-data/assets/content/src/LeagueClient/GameModeAssets/TFT/img/game-select-icon-hover.png",
                "game-select-icon-intro-video": "lol-game-data/assets/content/src/LeagueClient/GameModeAssets/TFT/video/game-select-icon-intro.webm",
                "gameflow-background": "lol-game-data/assets/ASSETS/UX/TFT/OutOfGame/Set6_Act2/Backgrounds/gameflow.jpg",
                "gameselect-button-hover-sound": "lol-game-data/assets/content/src/LeagueClient/GameModeAssets/Shared/sound/sfx-gameselect-button-hover.ogg",
                "icon-defeat": "lol-game-data/assets/content/src/LeagueClient/GameModeAssets/TFT/img/icon-defeat.png",
                "icon-empty": "lol-game-data/assets/content/src/LeagueClient/GameModeAssets/TFT/img/icon-empty.png",
                "icon-victory": "lol-game-data/assets/content/src/LeagueClient/GameModeAssets/TFT/img/icon-victory.png",
                "music-inqueue-loop-sound": "lol-game-data/assets/content/src/LeagueClient/GameModeAssets/TFT/sound/music-inqueue-loop-teamfighttactics.ogg",
                "parties-background": "lol-game-data/assets/ASSETS/UX/TFT/OutOfGame/Set6_Act2/Backgrounds/lobby.jpg",
                "ready-check-background": "lol-game-data/assets/ASSETS/UX/TFT/OutOfGame/Set6_Act2/Backgrounds/ready-check.jpg",
                "sfx-ambience-pregame-loop-sound": "lol-game-data/assets/content/src/LeagueClient/GameModeAssets/TFT/sound/sfx-ambience-loop-teamfighttactics.ogg"
            },
            "categorizedContentBundles": {},
            "description": "Assemble a squad of champions that battle on your behalf. Outlast all seven of your opponents and become the last person standing.",
            "gameMode": "TFT",
            "gameModeDescription": "Assemble a squad of champions that battle on your behalf. Outlast all seven of your opponents and become the last person standing.",
            "gameModeName": "Teamfight Tactics",
            "gameModeShortName": "",
            "gameMutator": "",
            "id": 22,
            "isDefault": true,
            "isRGM": false,
            "locStrings": {
                "tutorial_subheader": "Teamfight Tactics is a free-for-all drafting tactics game in which you recruit powerful champions, deploy them, and battle to become the last player standing. Here's a quick guide.",
                "tutorial_title": "Welcome to Teamfight Tactics!"
            },
            "mapStringId": "TFT",
            "name": "Teamfight Tactics",
            "perPositionDisallowedSummonerSpells": {},
            "perPositionRequiredSummonerSpells": {},
            "platformId": "",
            "platformName": "",
            "properties": {
                "suppressRunesMasteriesPerks": true
            },
            "tutorialCards": [
                {
                    "description": "Choose a champion from the store and recruit them with gold. Then, drag them from the bench to the battlefield to deploy them.<br><br>Combine three of the same champion to create a stronger, two-star version of that champion.",
                    "footer": "",
                    "header": "Recruit.",
                    "imagePath": "lol-game-data/assets/ASSETS/LeagueClient/GameModeAssets/TFT/TFT_Tutorial_Lobby_1.png"
                },
                {
                    "description": "Champions have traits and earn bonuses when deployed with other champs that share those traits.<br><br>Positioning matters! Experiment with different layouts to find the best results.",
                    "footer": "",
                    "header": "Deploy.",
                    "imagePath": "lol-game-data/assets/ASSETS/LeagueClient/GameModeAssets/TFT/TFT_Tutorial_Lobby_2.png"
                },
                {
                    "description": "Each round, your team teleports to an enemy's arena (or vice-versa). Champions fight automatically, and if your team is defeated, your Tactician takes damage.<br><br>When your Tactician's health reaches 0, you're out of the game.",
                    "footer": "",
                    "header": "Battle.",
                    "imagePath": "lol-game-data/assets/ASSETS/LeagueClient/GameModeAssets/TFT/TFT_Tutorial_Lobby_3.png"
                }
            ]
        },
        {
            "assets": {
                "champ-select-background-sound": "lol-game-data/assets/content/src/LeagueClient/GameModeAssets/Shared/sound/music-cs-blindpick-default.ogg",
                "champ-select-flyout-background": "lol-game-data/assets/content/src/LeagueClient/GameModeAssets/Classic_SRU/img/champ-select-flyout-background.jpg",
                "champ-select-planning-intro": "lol-game-data/assets/content/src/LeagueClient/GameModeAssets/Classic_SRU/img/champ-select-planning-intro.jpg",
                "game-select-icon-active": "lol-game-data/assets/content/src/LeagueClient/GameModeAssets/Classic_SRU/img/game-select-icon-active.png",
                "game-select-icon-active-video": "lol-game-data/assets/content/src/LeagueClient/GameModeAssets/Classic_SRU/video/game-select-icon-active.webm",
                "game-select-icon-default": "lol-game-data/assets/content/src/LeagueClient/GameModeAssets/Classic_SRU/img/game-select-icon-default.png",
                "game-select-icon-disabled": "lol-game-data/assets/content/src/LeagueClient/GameModeAssets/Classic_SRU/img/game-select-icon-disabled.png",
                "game-select-icon-hover": "lol-game-data/assets/content/src/LeagueClient/GameModeAssets/Classic_SRU/img/game-select-icon-hover.png",
                "game-select-icon-intro-video": "lol-game-data/assets/content/src/LeagueClient/GameModeAssets/Classic_SRU/video/game-select-icon-intro.webm",
                "gameflow-background": "lol-game-data/assets/content/src/LeagueClient/GameModeAssets/Classic_SRU/img/gameflow-background.jpg",
                "gameselect-button-hover-sound": "lol-game-data/assets/content/src/LeagueClient/GameModeAssets/Shared/sound/sfx-gameselect-button-hover.ogg",
                "icon-defeat": "lol-game-data/assets/content/src/LeagueClient/GameModeAssets/Classic_SRU/img/icon-defeat.png",
                "icon-defeat-video": "lol-game-data/assets/content/src/LeagueClient/GameModeAssets/Classic_SRU/video/icon-defeat.webm",
                "icon-empty": "lol-game-data/assets/content/src/LeagueClient/GameModeAssets/Classic_SRU/img/icon-empty.png",
                "icon-hover": "lol-game-data/assets/content/src/LeagueClient/GameModeAssets/Classic_SRU/img/icon-hover.png",
                "icon-leaver": "lol-game-data/assets/content/src/LeagueClient/GameModeAssets/Classic_SRU/img/icon-leaver.png",
                "icon-victory": "lol-game-data/assets/content/src/LeagueClient/GameModeAssets/Classic_SRU/img/icon-victory.png",
                "icon-victory-video": "lol-game-data/assets/content/src/LeagueClient/GameModeAssets/Classic_SRU/video/icon-victory.webm",
                "map-north": "lol-game-data/assets/content/src/LeagueClient/GameModeAssets/Classic_SRU/img/map-north.png",
                "map-south": "lol-game-data/assets/content/src/LeagueClient/GameModeAssets/Classic_SRU/img/map-south.png",
                "music-inqueue-loop-sound": "lol-game-data/assets/content/src/LeagueClient/GameModeAssets/Classic_SRU/sound/music-inqueue-loop-summonersrift.ogg",
                "parties-background": "lol-game-data/assets/content/src/LeagueClient/GameModeAssets/Classic_SRU/img/parties-background.jpg",
                "postgame-ambience-loop-sound": "lol-game-data/assets/content/src/LeagueClient/GameModeAssets/Classic_SRU/sound/sfx-ambience-loop-summonersrift.ogg",
                "ready-check-background": "lol-game-data/assets/content/src/LeagueClient/GameModeAssets/Classic_SRU/img/ready-check-background.png",
                "ready-check-background-sound": "lol-game-data/assets/content/src/LeagueClient/GameModeAssets/Classic_SRU/sound/sfx-readycheck-sr-portal.ogg",
                "sfx-ambience-pregame-loop-sound": "lol-game-data/assets/content/src/LeagueClient/GameModeAssets/Classic_SRU/sound/sfx-ambience-loop-summonersrift.ogg",
                "social-icon-leaver": "lol-game-data/assets/content/src/LeagueClient/GameModeAssets/Classic_SRU/img/social-icon-leaver.png",
                "social-icon-victory": "lol-game-data/assets/content/src/LeagueClient/GameModeAssets/Classic_SRU/img/social-icon-victory.png"
            },
            "categorizedContentBundles": {},
            "description": "The newest and most venerated battleground is known as Summoner's Rift. Traverse down one of three different paths in order to attack your enemy at their weakest point. Work with your allies to siege the enemy base and destroy their Nexus!",
            "gameMode": "CLASSIC",
            "gameModeDescription": "Crush your lane, dive into epic five-on-five team fights, and destroy the enemy nexus in League's premier competitive mode.",
            "gameModeName": "Summoner's Rift",
            "gameModeShortName": "Summoner's Rift",
            "gameMutator": "",
            "id": 11,
            "isDefault": true,
            "isRGM": false,
            "locStrings": {},
            "mapStringId": "SR",
            "name": "Summoner's Rift",
            "perPositionDisallowedSummonerSpells": {},
            "perPositionRequiredSummonerSpells": {},
            "platformId": "",
            "platformName": "",
            "properties": {
                "suppressRunesMasteriesPerks": false
            },
            "tutorialCards": []
        },
        {
            "assets": {
                "champ-select-background-sound": "lol-game-data/assets/content/src/LeagueClient/GameModeAssets/ARAM/sound/music-cs-allrandom-howlingabyss.ogg",
                "champ-select-banphase-background-sound": "lol-game-data/assets/content/src/LeagueClient/GameModeAssets/ARAM/sound/music-cs-allrandom-banphase-howlingabyss.ogg",
                "champ-select-flyout-background": "lol-game-data/assets/content/src/LeagueClient/GameModeAssets/ARAM/img/champ-select-flyout-background.png",
                "game-select-icon-active": "lol-game-data/assets/content/src/LeagueClient/GameModeAssets/ARAM/img/game-select-icon-active.png",
                "game-select-icon-active-video": "lol-game-data/assets/content/src/LeagueClient/GameModeAssets/ARAM/video/game-select-icon-active.webm",
                "game-select-icon-default": "lol-game-data/assets/content/src/LeagueClient/GameModeAssets/ARAM/img/game-select-icon-default.png",
                "game-select-icon-disabled": "lol-game-data/assets/content/src/LeagueClient/GameModeAssets/ARAM/img/game-select-icon-disabled.png",
                "game-select-icon-hover": "lol-game-data/assets/content/src/LeagueClient/GameModeAssets/ARAM/img/game-select-icon-hover.png",
                "game-select-icon-intro-video": "lol-game-data/assets/content/src/LeagueClient/GameModeAssets/ARAM/video/game-select-icon-intro.webm",
                "gameflow-background": "lol-game-data/assets/content/src/LeagueClient/GameModeAssets/ARAM/img/gameflow-background.jpg",
                "gameselect-button-hover-sound": "lol-game-data/assets/content/src/LeagueClient/GameModeAssets/Shared/sound/sfx-gameselect-button-hover.ogg",
                "icon-defeat": "lol-game-data/assets/content/src/LeagueClient/GameModeAssets/ARAM/img/icon-defeat.png",
                "icon-defeat-video": "lol-game-data/assets/content/src/LeagueClient/GameModeAssets/ARAM/video/icon-defeat.webm",
                "icon-empty": "lol-game-data/assets/content/src/LeagueClient/GameModeAssets/ARAM/img/icon-empty.png",
                "icon-hover": "lol-game-data/assets/content/src/LeagueClient/GameModeAssets/ARAM/img/icon-hover.png",
                "icon-leaver": "lol-game-data/assets/content/src/LeagueClient/GameModeAssets/ARAM/img/icon-leaver.png",
                "icon-victory": "lol-game-data/assets/content/src/LeagueClient/GameModeAssets/ARAM/img/icon-victory.png",
                "icon-victory-video": "lol-game-data/assets/content/src/LeagueClient/GameModeAssets/ARAM/video/icon-victory.webm",
                "music-inqueue-loop-sound": "lol-game-data/assets/content/src/LeagueClient/GameModeAssets/ARAM/sound/music-inqueue-loop-howlingabyss.ogg",
                "parties-background": "lol-game-data/assets/content/src/LeagueClient/GameModeAssets/ARAM/img/parties-background.jpg",
                "postgame-ambience-loop-sound": "lol-game-data/assets/content/src/LeagueClient/GameModeAssets/ARAM/sound/sfx-ambience-loop-howlingabyss.ogg",
                "ready-check-background": "lol-game-data/assets/content/src/LeagueClient/GameModeAssets/ARAM/img/ready-check-background.png",
                "ready-check-background-sound": "lol-game-data/assets/content/src/LeagueClient/GameModeAssets/ARAM/sound/sfx-readycheck-ha-portal.ogg",
                "sfx-ambience-pregame-loop-sound": "lol-game-data/assets/content/src/LeagueClient/GameModeAssets/ARAM/sound/sfx-ambience-loop-howlingabyss.ogg",
                "social-icon-leaver": "lol-game-data/assets/content/src/LeagueClient/GameModeAssets/ARAM/img/social-icon-leaver.png",
                "social-icon-victory": "lol-game-data/assets/content/src/LeagueClient/GameModeAssets/ARAM/img/social-icon-victory.png"
            },
            "categorizedContentBundles": {},
            "description": "The Howling Abyss is a bottomless crevasse located in the coldest, cruelest, part of the Freljord. Legends say that, long ago, a great battle took place here on the narrow bridge spanning this chasm. No one remembers who fought here, or why, but it is said that if you listen carefully to the wind you can still hear the cries of the vanquished tossed howling into the Abyss.",
            "gameMode": "ARAM",
            "gameModeDescription": "Ten randomly-selected champions assemble on a narrow bridge in a frozen land. Cross to the other side and destroy everything in your path.",
            "gameModeName": "ARAM",
            "gameModeShortName": "ARAM",
            "gameMutator": "",
            "id": 12,
            "isDefault": true,
            "isRGM": false,
            "locStrings": {},
            "mapStringId": "HA",
            "name": "Howling Abyss",
            "perPositionDisallowedSummonerSpells": {},
            "perPositionRequiredSummonerSpells": {},
            "platformId": "",
            "platformName": "",
            "properties": {
                "suppressRunesMasteriesPerks": false
            },
            "tutorialCards": []
        },
        {
            "assets": {
                "champ-select-background-sound": "lol-game-data/assets/content/src/LeagueClient/GameModeAssets/Shared/sound/music-cs-blindpick-default.ogg",
                "champ-select-flyout-background": "lol-game-data/assets/content/src/LeagueClient/GameModeAssets/GameModeX/img/champ-select-flyout-background.jpg",
                "game-select-icon-active": "lol-game-data/assets/content/src/LeagueClient/GameModeAssets/Shared/img/icon-rgm-active.png",
                "game-select-icon-active-video": "lol-game-data/assets/content/src/LeagueClient/GameModeAssets/Shared/video/game-select-icon-rgm-active.webm",
                "game-select-icon-default": "lol-game-data/assets/content/src/LeagueClient/GameModeAssets/Shared/img/icon-rgm-empty.png",
                "game-select-icon-disabled": "lol-game-data/assets/content/src/LeagueClient/GameModeAssets/Shared/img/icon-rgm-disabled.png",
                "game-select-icon-hover": "lol-game-data/assets/content/src/LeagueClient/GameModeAssets/Shared/img/icon-rgm-hover.png",
                "game-select-icon-intro-video": "lol-game-data/assets/content/src/LeagueClient/GameModeAssets/Shared/video/game-select-icon-rgm-intro.webm",
                "gameflow-background": "lol-game-data/assets/content/src/LeagueClient/GameModeAssets/GameModeX/img/gameflow-background.jpg",
                "gameselect-button-hover-sound": "lol-game-data/assets/content/src/LeagueClient/GameModeAssets/Shared/sound/sfx-gameselect-button-hover.ogg",
                "generic-event-icon": "lol-game-data/assets/content/src/LeagueClient/GameModeAssets/GameModeX/img/EventIcons/event.png",
                "icon-defeat": "lol-game-data/assets/content/src/LeagueClient/GameModeAssets/Shared/img/icon-rgm-defeat.png",
                "icon-defeat-video": "lol-game-data/assets/content/src/LeagueClient/GameModeAssets/Shared/video/icon-rgm-defeat.webm",
                "icon-empty": "lol-game-data/assets/content/src/LeagueClient/GameModeAssets/Shared/img/icon-rgm-empty.png",
                "icon-hover": "lol-game-data/assets/content/src/LeagueClient/GameModeAssets/Shared/img/icon-rgm-hover.png",
                "icon-leaver": "lol-game-data/assets/content/src/LeagueClient/GameModeAssets/Shared/img/icon-rgm-leaver.png",
                "icon-victory": "lol-game-data/assets/content/src/LeagueClient/GameModeAssets/Shared/img/icon-rgm-victory.png",
                "icon-victory-video": "lol-game-data/assets/content/src/LeagueClient/GameModeAssets/Shared/video/icon-rgm-victory.webm",
                "music-inqueue-loop-sound": "lol-game-data/assets/content/src/LeagueClient/GameModeAssets/Classic_SRU/sound/music-inqueue-loop-summonersrift.ogg",
                "notification-background": "lol-game-data/assets/content/src/LeagueClient/GameModeAssets/GameModeX/img/notification-background.jpg",
                "notification-icon": "lol-game-data/assets/content/src/LeagueClient/GameModeAssets/Shared/img/icon-rgm-active.png",
                "parties-background": "lol-game-data/assets/content/src/LeagueClient/GameModeAssets/GameModeX/img/parties-background.jpg",
                "postgame-ambience-loop-sound": "lol-game-data/assets/content/src/LeagueClient/GameModeAssets/Classic_SRU/sound/sfx-ambience-loop-summonersrift.ogg",
                "ready-check-background": "lol-game-data/assets/content/src/LeagueClient/GameModeAssets/GameModeX/img/ready-check-background.png",
                "ready-check-background-sound": "lol-game-data/assets/content/src/LeagueClient/GameModeAssets/Classic_SRU/sound/sfx-readycheck-sr-portal.ogg",
                "sfx-ambience-pregame-loop-sound": "lol-game-data/assets/content/src/LeagueClient/GameModeAssets/Classic_SRU/sound/sfx-ambience-loop-summonersrift.ogg",
                "social-icon-leaver": "lol-game-data/assets/content/src/LeagueClient/GameModeAssets/GameModeX/img/social-icon-leaver.png",
                "social-icon-victory": "lol-game-data/assets/content/src/LeagueClient/GameModeAssets/GameModeX/img/social-icon-victory.png"
            },
            "categorizedContentBundles": {
                "GameEventInfoCards": {
                    "0": {
                        "body": "Race your Scuttlecrab to the finish line!",
                        "footer": "",
                        "header": "SCUTTLE RACING",
                        "imagePath": "lol-game-data/assets/content/src/LeagueClient/GameModeAssets/GameModeX/img/EventIcons/Scuttle-Race.png"
                    },
                    "1": {
                        "body": "Face off the enemy team in a series of duels!",
                        "footer": "",
                        "header": "PRIZE FIGHT",
                        "imagePath": "lol-game-data/assets/content/src/LeagueClient/GameModeAssets/GameModeX/img/EventIcons/Prize-Fight.png"
                    },
                    "2": {
                        "body": "Take the enemy team's lives before they take yours!",
                        "footer": "",
                        "header": "URF DEATHMATCH",
                        "imagePath": "lol-game-data/assets/content/src/LeagueClient/GameModeAssets/GameModeX/img/EventIcons/Urf-Deathmatch.png"
                    },
                    "3": {
                        "body": "Fight for survival in a random Bardle Royale event!",
                        "footer": "",
                        "header": "BARDLE ROULETTE",
                        "imagePath": "lol-game-data/assets/content/src/LeagueClient/GameModeAssets/GameModeX/img/EventIcons/Bardle-Royale.png"
                    },
                    "4": {
                        "body": "Defeat the enemy team's Soraka before they defeat yours!",
                        "footer": "",
                        "header": "PROTECT THE SORAKA",
                        "imagePath": "lol-game-data/assets/content/src/LeagueClient/GameModeAssets/GameModeX/img/EventIcons/Protect-Soraka.png"
                    },
                    "5": {
                        "body": "Do more damage to the Target Dummy than your opponents can!",
                        "footer": "",
                        "header": "DPS Check",
                        "imagePath": "lol-game-data/assets/content/src/LeagueClient/GameModeAssets/GameModeX/img/EventIcons/DPS-Rush.png"
                    },
                    "6": {
                        "body": "Kill Loot Teemo for his bounty!",
                        "footer": "",
                        "header": "LOOT TEEMO",
                        "imagePath": "lol-game-data/assets/content/src/LeagueClient/GameModeAssets/GameModeX/img/EventIcons/Loot-Event.png"
                    },
                    "IconSubtext": {
                        "body": "",
                        "footer": "",
                        "header": "First Event",
                        "imagePath": "lol-game-data/assets/"
                    }
                }
            },
            "description": "Nexus Blitz",
            "gameMode": "NEXUSBLITZ",
            "gameModeDescription": "Venture to a long forgotten Ionian temple and destroy the enemy Nexus while completing a set of outrageous challenges—win the fight quickly, or the Nexus will do it for you!",
            "gameModeName": "Nexus Blitz",
            "gameModeShortName": "Nexus Blitz",
            "gameMutator": "",
            "id": 21,
            "isDefault": true,
            "isRGM": true,
            "locStrings": {},
            "mapStringId": "NB",
            "name": "Nexus Blitz",
            "perPositionDisallowedSummonerSpells": {
                "bottom": {
                    "spells": [
                        11
                    ]
                },
                "lane": {
                    "spells": [
                        11
                    ]
                },
                "middle": {
                    "spells": [
                        11
                    ]
                },
                "top": {
                    "spells": [
                        11
                    ]
                },
                "utility": {
                    "spells": [
                        11
                    ]
                }
            },
            "perPositionRequiredSummonerSpells": {
                "jungle": {
                    "spells": [
                        11
                    ]
                }
            },
            "platformId": "",
            "platformName": "",
            "properties": {
                "suppressRunesMasteriesPerks": false
            },
            "tutorialCards": [
                {
                    "description": "Fights constantly break out on a compact map with special events and rewards adding a touch of chaos.",
                    "footer": "Estimated game time: 15 minutes",
                    "header": "This is Nexus Blitz",
                    "imagePath": "lol-game-data/assets/ASSETS/LeagueClient/GameModeAssets/GameModeX/tutorial-gamemodex-card-1.png"
                },
                {
                    "description": "Roam as two junglers to share gold, XP, and buffs when clearing camps together.",
                    "footer": "",
                    "header": "Join up in the jungle",
                    "imagePath": "lol-game-data/assets/ASSETS/LeagueClient/GameModeAssets/GameModeX/tutorial-gamemodex-card-2.png"
                },
                {
                    "description": "Kill and assist hotstreaks set you on fire, making you much stronger—but also easier to kill.",
                    "footer": "",
                    "header": "Get good, go on fire",
                    "imagePath": "lol-game-data/assets/ASSETS/LeagueClient/GameModeAssets/GameModeX/tutorial-gamemodex-card-3.png"
                }
            ]
        }
    ]
]

using "" instead of "123":

[{"assets":{"champ-select-skip-bg":"lol-game-data/assets/ASSETS/UX/TFT/OutOfGame/Set6_Act2/Backgrounds/gameflow.jpg","game-select-icon-active":"lol-game-data/assets/content/src/LeagueClient/GameModeAssets/TFT/img/game-select-icon-active.png","game-select-icon-active-video":"lol-game-data/assets/content/src/LeagueClient/GameModeAssets/TFT/video/game-select-icon-active.webm","game-select-icon-default":"lol-game-data/assets/content/src/LeagueClient/GameModeAssets/TFT/img/game-select-icon-default.png","game-select-icon-disabled":"lol-game-data/assets/content/src/LeagueClient/GameModeAssets/TFT/img/game-select-icon-disabled.png","game-select-icon-hover":"lol-game-data/assets/content/src/LeagueClient/GameModeAssets/TFT/img/game-select-icon-hover.png","game-select-icon-intro-video":"lol-game-data/assets/content/src/LeagueClient/GameModeAssets/TFT/video/game-select-icon-intro.webm","gameflow-background":"lol-game-data/assets/ASSETS/UX/TFT/OutOfGame/Set6_Act2/Backgrounds/gameflow.jpg","gameselect-button-hover-sound":"lol-game-data/assets/content/src/LeagueClient/GameModeAssets/Shared/sound/sfx-gameselect-button-hover.ogg","icon-defeat":"lol-game-data/assets/content/src/LeagueClient/GameModeAssets/TFT/img/icon-defeat.png","icon-empty":"lol-game-data/assets/content/src/LeagueClient/GameModeAssets/TFT/img/icon-empty.png","icon-victory":"lol-game-data/assets/content/src/LeagueClient/GameModeAssets/TFT/img/icon-victory.png","music-inqueue-loop-sound":"lol-game-data/assets/content/src/LeagueClient/GameModeAssets/TFT/sound/music-inqueue-loop-teamfighttactics.ogg","parties-background":"lol-game-data/assets/ASSETS/UX/TFT/OutOfGame/Set6_Act2/Backgrounds/lobby.jpg","ready-check-background":"lol-game-data/assets/ASSETS/UX/TFT/OutOfGame/Set6_Act2/Backgrounds/ready-check.jpg","sfx-ambience-pregame-loop-sound":"lol-game-data/assets/content/src/LeagueClient/GameModeAssets/TFT/sound/sfx-ambience-loop-teamfighttactics.ogg"},"categorizedContentBundles":{},"description":"Assemble a squad of champions that battle on your behalf. Outlast all seven of your opponents and become the last person standing.","gameMode":"TFT","gameModeDescription":"Assemble a squad of champions that battle on your behalf. Outlast all seven of your opponents and become the last person standing.","gameModeName":"Teamfight Tactics","gameModeShortName":"","gameMutator":"","id":22,"isDefault":true,"isRGM":false,"locStrings":{"tutorial_subheader":"Teamfight Tactics is a free-for-all drafting tactics game in which you recruit powerful champions, deploy them, and battle to become the last player standing. Here's a quick guide.","tutorial_title":"Welcome to Teamfight Tactics!"},"mapStringId":"TFT","name":"Teamfight Tactics","perPositionDisallowedSummonerSpells":{},"perPositionRequiredSummonerSpells":{},"platformId":"","platformName":"","properties":{"suppressRunesMasteriesPerks":true},"tutorialCards":[{"description":"Choose a champion from the store and recruit them with gold. Then, drag them from the bench to the battlefield to deploy them.<br><br>Combine three of the same champion to create a stronger, two-star version of that champion.","footer":"","header":"Recruit.","imagePath":"lol-game-data/assets/ASSETS/LeagueClient/GameModeAssets/TFT/TFT_Tutorial_Lobby_1.png"},{"description":"Champions have traits and earn bonuses when deployed with other champs that share those traits.<br><br>Positioning matters! Experiment with different layouts to find the best results.","footer":"","header":"Deploy.","imagePath":"lol-game-data/assets/ASSETS/LeagueClient/GameModeAssets/TFT/TFT_Tutorial_Lobby_2.png"},{"description":"Each round, your team teleports to an enemy's arena (or vice-versa). Champions fight automatically, and if your team is defeated, your Tactician takes damage.<br><br>When your Tactician's health reaches 0, you're out of the game.","footer":"","header":"Battle.","imagePath":"lol-game-data/assets/ASSETS/LeagueClient/GameModeAssets/TFT/TFT_Tutorial_Lobby_3.png"}]},{"assets":{"champ-select-background-sound":"lol-game-data/assets/content/src/LeagueClient/GameModeAssets/Shared/sound/music-cs-blindpick-default.ogg","champ-select-flyout-background":"lol-game-data/assets/content/src/LeagueClient/GameModeAssets/Classic_SRU/img/champ-select-flyout-background.jpg","champ-select-planning-intro":"lol-game-data/assets/content/src/LeagueClient/GameModeAssets/Classic_SRU/img/champ-select-planning-intro.jpg","game-select-icon-active":"lol-game-data/assets/content/src/LeagueClient/GameModeAssets/Classic_SRU/img/game-select-icon-active.png","game-select-icon-active-video":"lol-game-data/assets/content/src/LeagueClient/GameModeAssets/Classic_SRU/video/game-select-icon-active.webm","game-select-icon-default":"lol-game-data/assets/content/src/LeagueClient/GameModeAssets/Classic_SRU/img/game-select-icon-default.png","game-select-icon-disabled":"lol-game-data/assets/content/src/LeagueClient/GameModeAssets/Classic_SRU/img/game-select-icon-disabled.png","game-select-icon-hover":"lol-game-data/assets/content/src/LeagueClient/GameModeAssets/Classic_SRU/img/game-select-icon-hover.png","game-select-icon-intro-video":"lol-game-data/assets/content/src/LeagueClient/GameModeAssets/Classic_SRU/video/game-select-icon-intro.webm","gameflow-background":"lol-game-data/assets/content/src/LeagueClient/GameModeAssets/Classic_SRU/img/gameflow-background.jpg","gameselect-button-hover-sound":"lol-game-data/assets/content/src/LeagueClient/GameModeAssets/Shared/sound/sfx-gameselect-button-hover.ogg","icon-defeat":"lol-game-data/assets/content/src/LeagueClient/GameModeAssets/Classic_SRU/img/icon-defeat.png","icon-defeat-video":"lol-game-data/assets/content/src/LeagueClient/GameModeAssets/Classic_SRU/video/icon-defeat.webm","icon-empty":"lol-game-data/assets/content/src/LeagueClient/GameModeAssets/Classic_SRU/img/icon-empty.png","icon-hover":"lol-game-data/assets/content/src/LeagueClient/GameModeAssets/Classic_SRU/img/icon-hover.png","icon-leaver":"lol-game-data/assets/content/src/LeagueClient/GameModeAssets/Classic_SRU/img/icon-leaver.png","icon-victory":"lol-game-data/assets/content/src/LeagueClient/GameModeAssets/Classic_SRU/img/icon-victory.png","icon-victory-video":"lol-game-data/assets/content/src/LeagueClient/GameModeAssets/Classic_SRU/video/icon-victory.webm","map-north":"lol-game-data/assets/content/src/LeagueClient/GameModeAssets/Classic_SRU/img/map-north.png","map-south":"lol-game-data/assets/content/src/LeagueClient/GameModeAssets/Classic_SRU/img/map-south.png","music-inqueue-loop-sound":"lol-game-data/assets/content/src/LeagueClient/GameModeAssets/Classic_SRU/sound/music-inqueue-loop-summonersrift.ogg","parties-background":"lol-game-data/assets/content/src/LeagueClient/GameModeAssets/Classic_SRU/img/parties-background.jpg","postgame-ambience-loop-sound":"lol-game-data/assets/content/src/LeagueClient/GameModeAssets/Classic_SRU/sound/sfx-ambience-loop-summonersrift.ogg","ready-check-background":"lol-game-data/assets/content/src/LeagueClient/GameModeAssets/Classic_SRU/img/ready-check-background.png","ready-check-background-sound":"lol-game-data/assets/content/src/LeagueClient/GameModeAssets/Classic_SRU/sound/sfx-readycheck-sr-portal.ogg","sfx-ambience-pregame-loop-sound":"lol-game-data/assets/content/src/LeagueClient/GameModeAssets/Classic_SRU/sound/sfx-ambience-loop-summonersrift.ogg","social-icon-leaver":"lol-game-data/assets/content/src/LeagueClient/GameModeAssets/Classic_SRU/img/social-icon-leaver.png","social-icon-victory":"lol-game-data/assets/content/src/LeagueClient/GameModeAssets/Classic_SRU/img/social-icon-victory.png"},"categorizedContentBundles":{},"description":"The newest and most venerated battleground is known as Summoner's Rift. Traverse down one of three different paths in order to attack your enemy at their weakest point. Work with your allies to siege the enemy base and destroy their Nexus!","gameMode":"CLASSIC","gameModeDescription":"Crush your lane, dive into epic five-on-five team fights, and destroy the enemy nexus in League's premier competitive mode.","gameModeName":"Summoner's Rift","gameModeShortName":"Summoner's Rift","gameMutator":"","id":11,"isDefault":true,"isRGM":false,"locStrings":{},"mapStringId":"SR","name":"Summoner's Rift","perPositionDisallowedSummonerSpells":{},"perPositionRequiredSummonerSpells":{},"platformId":"","platformName":"","properties":{"suppressRunesMasteriesPerks":false},"tutorialCards":[]},{"assets":{"champ-select-background-sound":"lol-game-data/assets/content/src/LeagueClient/GameModeAssets/ARAM/sound/music-cs-allrandom-howlingabyss.ogg","champ-select-banphase-background-sound":"lol-game-data/assets/content/src/LeagueClient/GameModeAssets/ARAM/sound/music-cs-allrandom-banphase-howlingabyss.ogg","champ-select-flyout-background":"lol-game-data/assets/content/src/LeagueClient/GameModeAssets/ARAM/img/champ-select-flyout-background.png","game-select-icon-active":"lol-game-data/assets/content/src/LeagueClient/GameModeAssets/ARAM/img/game-select-icon-active.png","game-select-icon-active-video":"lol-game-data/assets/content/src/LeagueClient/GameModeAssets/ARAM/video/game-select-icon-active.webm","game-select-icon-default":"lol-game-data/assets/content/src/LeagueClient/GameModeAssets/ARAM/img/game-select-icon-default.png","game-select-icon-disabled":"lol-game-data/assets/content/src/LeagueClient/GameModeAssets/ARAM/img/game-select-icon-disabled.png","game-select-icon-hover":"lol-game-data/assets/content/src/LeagueClient/GameModeAssets/ARAM/img/game-select-icon-hover.png","game-select-icon-intro-video":"lol-game-data/assets/content/src/LeagueClient/GameModeAssets/ARAM/video/game-select-icon-intro.webm","gameflow-background":"lol-game-data/assets/content/src/LeagueClient/GameModeAssets/ARAM/img/gameflow-background.jpg","gameselect-button-hover-sound":"lol-game-data/assets/content/src/LeagueClient/GameModeAssets/Shared/sound/sfx-gameselect-button-hover.ogg","icon-defeat":"lol-game-data/assets/content/src/LeagueClient/GameModeAssets/ARAM/img/icon-defeat.png","icon-defeat-video":"lol-game-data/assets/content/src/LeagueClient/GameModeAssets/ARAM/video/icon-defeat.webm","icon-empty":"lol-game-data/assets/content/src/LeagueClient/GameModeAssets/ARAM/img/icon-empty.png","icon-hover":"lol-game-data/assets/content/src/LeagueClient/GameModeAssets/ARAM/img/icon-hover.png","icon-leaver":"lol-game-data/assets/content/src/LeagueClient/GameModeAssets/ARAM/img/icon-leaver.png","icon-victory":"lol-game-data/assets/content/src/LeagueClient/GameModeAssets/ARAM/img/icon-victory.png","icon-victory-video":"lol-game-data/assets/content/src/LeagueClient/GameModeAssets/ARAM/video/icon-victory.webm","music-inqueue-loop-sound":"lol-game-data/assets/content/src/LeagueClient/GameModeAssets/ARAM/sound/music-inqueue-loop-howlingabyss.ogg","parties-background":"lol-game-data/assets/content/src/LeagueClient/GameModeAssets/ARAM/img/parties-background.jpg","postgame-ambience-loop-sound":"lol-game-data/assets/content/src/LeagueClient/GameModeAssets/ARAM/sound/sfx-ambience-loop-howlingabyss.ogg","ready-check-background":"lol-game-data/assets/content/src/LeagueClient/GameModeAssets/ARAM/img/ready-check-background.png","ready-check-background-sound":"lol-game-data/assets/content/src/LeagueClient/GameModeAssets/ARAM/sound/sfx-readycheck-ha-portal.ogg","sfx-ambience-pregame-loop-sound":"lol-game-data/assets/content/src/LeagueClient/GameModeAssets/ARAM/sound/sfx-ambience-loop-howlingabyss.ogg","social-icon-leaver":"lol-game-data/assets/content/src/LeagueClient/GameModeAssets/ARAM/img/social-icon-leaver.png","social-icon-victory":"lol-game-data/assets/content/src/LeagueClient/GameModeAssets/ARAM/img/social-icon-victory.png"},"categorizedContentBundles":{},"description":"The Howling Abyss is a bottomless crevasse located in the coldest, cruelest, part of the Freljord. Legends say that, long ago, a great battle took place here on the narrow bridge spanning this chasm. No one remembers who fought here, or why, but it is said that if you listen carefully to the wind you can still hear the cries of the vanquished tossed howling into the Abyss.","gameMode":"ARAM","gameModeDescription":"Ten randomly-selected champions assemble on a narrow bridge in a frozen land. Cross to the other side and destroy everything in your path.","gameModeName":"ARAM","gameModeShortName":"ARAM","gameMutator":"","id":12,"isDefault":true,"isRGM":false,"locStrings":{},"mapStringId":"HA","name":"Howling Abyss","perPositionDisallowedSummonerSpells":{},"perPositionRequiredSummonerSpells":{},"platformId":"","platformName":"","properties":{"suppressRunesMasteriesPerks":false},"tutorialCards":[]},{"assets":{"champ-select-background-sound":"lol-game-data/assets/content/src/LeagueClient/GameModeAssets/Shared/sound/music-cs-blindpick-default.ogg","champ-select-flyout-background":"lol-game-data/assets/content/src/LeagueClient/GameModeAssets/GameModeX/img/champ-select-flyout-background.jpg","game-select-icon-active":"lol-game-data/assets/content/src/LeagueClient/GameModeAssets/Shared/img/icon-rgm-active.png","game-select-icon-active-video":"lol-game-data/assets/content/src/LeagueClient/GameModeAssets/Shared/video/game-select-icon-rgm-active.webm","game-select-icon-default":"lol-game-data/assets/content/src/LeagueClient/GameModeAssets/Shared/img/icon-rgm-empty.png","game-select-icon-disabled":"lol-game-data/assets/content/src/LeagueClient/GameModeAssets/Shared/img/icon-rgm-disabled.png","game-select-icon-hover":"lol-game-data/assets/content/src/LeagueClient/GameModeAssets/Shared/img/icon-rgm-hover.png","game-select-icon-intro-video":"lol-game-data/assets/content/src/LeagueClient/GameModeAssets/Shared/video/game-select-icon-rgm-intro.webm","gameflow-background":"lol-game-data/assets/content/src/LeagueClient/GameModeAssets/GameModeX/img/gameflow-background.jpg","gameselect-button-hover-sound":"lol-game-data/assets/content/src/LeagueClient/GameModeAssets/Shared/sound/sfx-gameselect-button-hover.ogg","generic-event-icon":"lol-game-data/assets/content/src/LeagueClient/GameModeAssets/GameModeX/img/EventIcons/event.png","icon-defeat":"lol-game-data/assets/content/src/LeagueClient/GameModeAssets/Shared/img/icon-rgm-defeat.png","icon-defeat-video":"lol-game-data/assets/content/src/LeagueClient/GameModeAssets/Shared/video/icon-rgm-defeat.webm","icon-empty":"lol-game-data/assets/content/src/LeagueClient/GameModeAssets/Shared/img/icon-rgm-empty.png","icon-hover":"lol-game-data/assets/content/src/LeagueClient/GameModeAssets/Shared/img/icon-rgm-hover.png","icon-leaver":"lol-game-data/assets/content/src/LeagueClient/GameModeAssets/Shared/img/icon-rgm-leaver.png","icon-victory":"lol-game-data/assets/content/src/LeagueClient/GameModeAssets/Shared/img/icon-rgm-victory.png","icon-victory-video":"lol-game-data/assets/content/src/LeagueClient/GameModeAssets/Shared/video/icon-rgm-victory.webm","music-inqueue-loop-sound":"lol-game-data/assets/content/src/LeagueClient/GameModeAssets/Classic_SRU/sound/music-inqueue-loop-summonersrift.ogg","notification-background":"lol-game-data/assets/content/src/LeagueClient/GameModeAssets/GameModeX/img/notification-background.jpg","notification-icon":"lol-game-data/assets/content/src/LeagueClient/GameModeAssets/Shared/img/icon-rgm-active.png","parties-background":"lol-game-data/assets/content/src/LeagueClient/GameModeAssets/GameModeX/img/parties-background.jpg","postgame-ambience-loop-sound":"lol-game-data/assets/content/src/LeagueClient/GameModeAssets/Classic_SRU/sound/sfx-ambience-loop-summonersrift.ogg","ready-check-background":"lol-game-data/assets/content/src/LeagueClient/GameModeAssets/GameModeX/img/ready-check-background.png","ready-check-background-sound":"lol-game-data/assets/content/src/LeagueClient/GameModeAssets/Classic_SRU/sound/sfx-readycheck-sr-portal.ogg","sfx-ambience-pregame-loop-sound":"lol-game-data/assets/content/src/LeagueClient/GameModeAssets/Classic_SRU/sound/sfx-ambience-loop-summonersrift.ogg","social-icon-leaver":"lol-game-data/assets/content/src/LeagueClient/GameModeAssets/GameModeX/img/social-icon-leaver.png","social-icon-victory":"lol-game-data/assets/content/src/LeagueClient/GameModeAssets/GameModeX/img/social-icon-victory.png"},"categorizedContentBundles":{"GameEventInfoCards":{"0":{"body":"Race your Scuttlecrab to the finish line!","footer":"","header":"SCUTTLE RACING","imagePath":"lol-game-data/assets/content/src/LeagueClient/GameModeAssets/GameModeX/img/EventIcons/Scuttle-Race.png"},"1":{"body":"Face off the enemy team in a series of duels!","footer":"","header":"PRIZE FIGHT","imagePath":"lol-game-data/assets/content/src/LeagueClient/GameModeAssets/GameModeX/img/EventIcons/Prize-Fight.png"},"2":{"body":"Take the enemy team's lives before they take yours!","footer":"","header":"URF DEATHMATCH","imagePath":"lol-game-data/assets/content/src/LeagueClient/GameModeAssets/GameModeX/img/EventIcons/Urf-Deathmatch.png"},"3":{"body":"Fight for survival in a random Bardle Royale event!","footer":"","header":"BARDLE ROULETTE","imagePath":"lol-game-data/assets/content/src/LeagueClient/GameModeAssets/GameModeX/img/EventIcons/Bardle-Royale.png"},"4":{"body":"Defeat the enemy team's Soraka before they defeat yours!","footer":"","header":"PROTECT THE SORAKA","imagePath":"lol-game-data/assets/content/src/LeagueClient/GameModeAssets/GameModeX/img/EventIcons/Protect-Soraka.png"},"5":{"body":"Do more damage to the Target Dummy than your opponents can!","footer":"","header":"DPS Check","imagePath":"lol-game-data/assets/content/src/LeagueClient/GameModeAssets/GameModeX/img/EventIcons/DPS-Rush.png"},"6":{"body":"Kill Loot Teemo for his bounty!","footer":"","header":"LOOT TEEMO","imagePath":"lol-game-data/assets/content/src/LeagueClient/GameModeAssets/GameModeX/img/EventIcons/Loot-Event.png"},"IconSubtext":{"body":"","footer":"","header":"First Event","imagePath":"lol-game-data/assets/"}}},"description":"Nexus Blitz","gameMode":"NEXUSBLITZ","gameModeDescription":"Venture to a long forgotten Ionian temple and destroy the enemy Nexus while completing a set of outrageous challenges—win the fight quickly, or the Nexus will do it for you!","gameModeName":"Nexus Blitz","gameModeShortName":"Nexus Blitz","gameMutator":"","id":21,"isDefault":true,"isRGM":true,"locStrings":{},"mapStringId":"NB","name":"Nexus Blitz","perPositionDisallowedSummonerSpells":{"bottom":{"spells":[11]},"lane":{"spells":[11]},"middle":{"spells":[11]},"top":{"spells":[11]},"utility":{"spells":[11]}},"perPositionRequiredSummonerSpells":{"jungle":{"spells":[11]}},"platformId":"","platformName":"","properties":{"suppressRunesMasteriesPerks":false},"tutorialCards":[{"description":"Fights constantly break out on a compact map with special events and rewards adding a touch of chaos.","footer":"Estimated game time: 15 minutes","header":"This is Nexus Blitz","imagePath":"lol-game-data/assets/ASSETS/LeagueClient/GameModeAssets/GameModeX/tutorial-gamemodex-card-1.png"},{"description":"Roam as two junglers to share gold, XP, and buffs when clearing camps together.","footer":"","header":"Join up in the jungle","imagePath":"lol-game-data/assets/ASSETS/LeagueClient/GameModeAssets/GameModeX/tutorial-gamemodex-card-2.png"},{"description":"Kill and assist hotstreaks set you on fire, making you much stronger—but also easier to kill.","footer":"","header":"Get good, go on fire","imagePath":"lol-game-data/assets/ASSETS/LeagueClient/GameModeAssets/GameModeX/tutorial-gamemodex-card-3.png"}]}]

@mikaeldui
Copy link
Author

Sending a simple JSON object as the only parameter:

[
    2,
    "123",
    "PutLolChatV1Me",
    {
        "lol": {
            "masteryScore": "2000",
            "rankedLeagueDivision": "I",
            "rankedLeagueQueue": "RANKED_SOLO_5x5",
            "rankedLeagueTier": "CHALLENGER"
        }
    }    
]

@mikaeldui
Copy link
Author

mikaeldui commented Mar 27, 2022

Using URL: [2, "", "/lol-maps/v1/map/12"].
Using HTTP method and URL: [2, "", "GET /lol-perks/v1/pages"].

With a simple object as parameter:

[
        2,
        "",
        "PUT /lol-chat/v1/me",
        {
                "lol": {
                        "masteryScore": "3000",
                        "rankedLeagueDivision": "I",
                        "rankedLeagueQueue": "RANKED_SOLO_5x5",
                        "rankedLeagueTier": "IRON"
                }
        }
]

With both a path parameter and request body:

[
        2,
        "",
        "PUT /lol-chat/v1/friends/abcd1234-ab12-ab12-ab12-abcdef123456@eu1.pvp.net",
        {
            "note": "adc carry"
        }
]

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment