Splatoon 3/SplatNet 3 #11
Replies: 20 comments 2 replies
-
|
Wow, incredible compilation of info, thank you for this!! edit:
lol |
Beta Was this translation helpful? Give feedback.
-
Looks like this is correct: From Splatoon 3 Splatfest World Premiere: I can't see how to use photo mode in the demo so I don't know why this menu is accessible... |
Beta Was this translation helpful? Give feedback.
-
The Japanese site's page on SplatNet 3 at https://www.nintendo.co.jp/switch/av5ja/online/index.html states "Scan specific real-world QR codes to get special in-game rewards. *Detailed information about QR code locations, etc. will be announced in the future." 👀 |
Beta Was this translation helpful? Give feedback.
-
|
New SplatNet 3 screenshots: https://twitter.com/SplatoonJP/status/1566713247457497088 edit: english version – https://twitter.com/SplatoonNA/status/1566773186963951625 |
Beta Was this translation helpful? Give feedback.
-
|
The web app is now available at https://api.lp1.av5ja.srv.nintendo.net/?lang=en-GB&na_country=GB&na_lang=en-GB. The API only has two endpoints: The app does support deep links, the launch page is also now available at https://dpl.lp1.av5ja.srv.nintendo.net. The app generates share links like The web service ID is Web service object (EU/en-GB){
"id": 4834290508791808,
"uri": "https://api.lp1.av5ja.srv.nintendo.net",
"customAttributes": [
{
"attrValue": "true",
"attrKey": "verifyMembership"
},
{
"attrValue": "true",
"attrKey": "deepLinkingEnabled"
},
{
"attrValue": "true",
"attrKey": "fullScreen"
},
{
"attrKey": "appNavigationBarBgColor",
"attrValue": "000000"
},
{
"attrKey": "appStatusBarBgColor",
"attrValue": "000000"
}
],
"whiteList": [
"*.av5ja.srv.nintendo.net"
],
"name": "Splatoon 3",
"imageUri": "https://cdn.znc.srv.nintendo.net/gameWebServices/n84dab60/n84dab60/images/euEn/banner.png"
}App dependencies and licences: https://gist.github.com/samuelthomas2774/5e916b2962becfc1379356dfda06403a See #splatnet3 on Discord (#12). The app supports the following languages:
The app selects language from the Authentication works by sending an empty
The app expects a successful response to use status code interface BulletTokenResponse {
bulletToken: string;
lang: string;
is_noe_country: 'true' | 'false';
}The app interprets the following non-200 status codes specifically. All other error codes result in a JavaScript (Updated in
All other requests are GraphQL requests to The app sends the following headers:
The following data is sent in the request body as JSON. import { RequestParameters, Variables } from 'relay-runtime';
interface GraphQLRequest {
/** Variables for the query/mutation being requested, similar to HTTP query strings/request bodies in SplatNet 2 */
variables: Variables;
extensions: {
persistedQuery: {
version: 1;
/** The identifier of the query/mutation being requested, similar to HTTP paths/methods in SplatNet 2 */
sha256Hash: RequestParameters['id'];
};
};
}More information about GraphQL request/response data in this comment. If the server returns a The app uses the following response headers:
The request body is always parsed as JSON if any response code other than |
Beta Was this translation helpful? Give feedback.
-
|
Welcome page This is shown to users that haven't played Splatoon 3. The request to |
Beta Was this translation helpful? Give feedback.
-
|
Hey @samuelthomas2774, just wanted to say thank you for collecting all this information! Really interesting to see the new auth method and graphql-based API. I'm going to dig into this more myself as soon as I get some time 😄 |
Beta Was this translation helpful? Give feedback.
-
|
SplatNet 3 only uses GraphQL persisted queries (dynamic queries are not accepted by the server). The following queries are used by the app (also listed at https://github.com/nintendoapis/splatnet3-types/blob/main/src/graphql.ts#L26-L96): (Updated for
Types for most of these queries is available at https://github.com/nintendoapis/splatnet3-types. When the app is first loaded requests for useCurrentFestQuery ( The app has a pull-to-refresh feature to reload data for the current page. Most queries have a matching "refetch" query that is used instead when reloading data; these are mostly exactly the same as the original query, although some differ, usually where part of the data will never change, or for pages that trigger multiple requests. (For example, VsHistoryDetailQuery ( |
Beta Was this translation helpful? Give feedback.
-
|
List of in-app URLs (thanks @phoebethewitch :)): https://gist.github.com/phoebethewitch/4b628026cd98b08f895f630f11bcd3c0 |
Beta Was this translation helpful? Give feedback.
-
|
SplatNet 3 was updated to nintendoapis/nintendo-app-versions@17cf363 Changes:
|
Beta Was this translation helpful? Give feedback.
-
|
SplatNet 3 was updated to nintendoapis/nintendo-app-versions@8067ff5 Updated GraphQL persisted query IDs:
|
Beta Was this translation helpful? Give feedback.
-
|
SplatNet 3 was updated to nintendoapis/nintendo-app-versions@f282418 Updated GraphQL persisted query IDs:
Updated
(I'm only posting updates here when GraphQL queries are updated or major API changes, for other changes see #splatnet3 on Discord or https://github.com/nintendoapis/splatnet3-app-resources, or watch #nintendo-app-versions / https://github.com/nintendoapis/nintendo-app-versions for updates.) TypeScript types for SplatNet 3 and splatoon3.ink are now published at https://github.com/nintendoapis/splatnet3-types and on npm. |
Beta Was this translation helpful? Give feedback.
-
|
SplatNet 3 was updated to nintendoapis/nintendo-app-versions@08946c2 Updated GraphQL persisted query IDs:
|
Beta Was this translation helpful? Give feedback.
-
|
SplatNet 3 was updated to nintendoapis/nintendo-app-versions@a2a0a64 Changes:
Updated GraphQL persisted query IDs:
GraphQL persisted query changes: Breaking changes are highlighted in bold. DetailsCheckinWithQRCodeMutation
CoopPagerLatestCoopQuery
CheckinQuery
DownloadSearchReplayQuery
PagerUpdateBattleHistoriesByVsModeQuery
BankaraBattleHistoriesQuery, BankaraBattleHistoriesRefetchQuery
LatestBattleHistoriesQuery, LatestBattleHistoriesRefetchQuery
PrivateBattleHistoriesQuery, PrivateBattleHistoriesRefetchQuery
RegularBattleHistoriesQuery, RegularBattleHistoriesRefetchQuery
CoopHistoryDetailQuery
CoopHistoryQuery, refetchableCoopHistory_coopResultQuery
DetailFestRecordDetailQuery, DetailFestRefethQuery
DetailRankingQuery
FriendListQuery, FriendListRefetchQuery
HistoryRecordQuery, HistoryRecordRefetchQuery
ReplayQuery, ReplayUploadedReplayListRefetchQuery
StageRecordQuery, StageRecordsRefetchQueryNo changes??? StageScheduleQuery
WeaponRecordQuery, WeaponRecordsRefetchQuery
CatalogQuery, CatalogRefetchQuery
VsHistoryDetailQuery
(Also some fields have new values, e.g. anarchy series state can now also be Edit: added fields removed from |
Beta Was this translation helpful? Give feedback.
-
|
SplatNet 3 was updated to nintendoapis/nintendo-app-versions@4a5d1e0 Changes:
New GraphQL persisted query IDs:
|
Beta Was this translation helpful? Give feedback.
-
|
SplatNet 3 was updated to nintendoapis/nintendo-app-versions@cc61c33 GraphQL persisted queries from before Updated GraphQL persisted query IDs:
GraphQL persisted query changes: Breaking changes are highlighted in bold. DetailsCoopPagerLatestCoopQuery, CoopHistoryQuery, refetchableCoopHistory_coopResultQuery
DownloadSearchReplayQuery
PagerUpdateBattleHistoriesByVsModeQuery
BankaraBattleHistoriesQuery, BankaraBattleHistoriesRefetchQuery
LatestBattleHistoriesQuery, LatestBattleHistoriesRefetchQuery
PrivateBattleHistoriesQuery, PrivateBattleHistoriesRefetchQuery
RegularBattleHistoriesQuery, RegularBattleHistoriesRefetchQuery
XBattleHistoriesQuery, XBattleHistoriesRefetchQuery
CoopHistoryDetailQueryNo changes. ReplayQuery, ReplayUploadedReplayListRefetchQuery
|
Beta Was this translation helpful? Give feedback.
-
|
SplatNet 3 was updated to nintendoapis/nintendo-app-versions@39bc81d Updated GraphQL persisted query IDs:
GraphQL persisted query changes: Breaking changes are highlighted in bold. DetailsSupportButton_SupportChallengeMutationNo changes. CheckinWithQRCodeMutationNo changes. CoopPagerLatestCoopQuery, CoopHistoryQuery, refetchableCoopHistory_coopResultQuery
DownloadSearchReplayQuery, ReplayQuery, ReplayUploadedReplayListRefetchQueryNo changes. JourneyChallengeDetailQuery, JourneyChallengeDetailRefetchQueryNo changes. StageScheduleQuery
|
Beta Was this translation helpful? Give feedback.
-
|
SplatNet 3 was updated to nintendoapis/nintendo-app-versions@aefb3c5 Updated GraphQL persisted query IDs:
GraphQL persisted query changes: Breaking changes are highlighted in bold. SettingQuery and HomeQuery require changes to request variables. DetailsCoopPagerLatestCoopQuery, CoopHistoryQuery, refetchableCoopHistory_coopResultQuery
CoopHistoryDetailQueryNo changes. CoopRecordQuery, CoopRecordRefetchQuery
HistoryRecordQuery, HistoryRecordRefetchQuery
SettingQuery
StageScheduleQuery
CatalogQuery, CatalogRefetchQuery
HomeQuery
|
Beta Was this translation helpful? Give feedback.
-
|
SplatNet 3 was updated to https://mastodon.fancy.org.uk/@nintendoappversions/110460695035610206
Changes:
Updated GraphQL persisted query IDs:
GraphQL persisted query changes: Breaking changes are highlighted in bold. PagerUpdateBattleHistoriesByVsModeQuery requires changes to request variables. DetailsDownloadSearchReplayQuery
PagerUpdateBattleHistoriesByVsModeQuery
LatestBattleHistoriesQuery, LatestBattleHistoriesRefetchQuery
HistoryRecordQuery, HistoryRecordRefetchQuery
ReplayQuery, ReplayUploadedReplayListRefetchQuery
StageScheduleQuery
HomeQuery
VsHistoryDetailQuery
|
Beta Was this translation helpful? Give feedback.
-
|
SplatNet 3 was updated to https://mastodon.fancy.org.uk/@nintendoappversions/110976100340666144 All persisted query IDs were updated (likely due to updating the library that generates the hashes). Only CatalogQuery, CatalogRefetchQuery, GesotownQuery, GesotownRefetchQuery, SaleGearDetailOrderGesotownGearMutation, SaleGearDetailQuery and StageScheduleQuery actually change. StageScheduleQuery contains breaking changes. Updated GraphQL persisted query IDs:
GraphQL persisted query changes: Breaking changes are highlighted in bold. DetailsCatalogQuery, CatalogRefetchQuery
GesotownQuery, GesotownRefetchQuery
SaleGearDetailOrderGesotownGearMutation
SaleGearDetailQuery
StageScheduleQuery
|
Beta Was this translation helpful? Give feedback.



Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
-
Tracking issue for anything related to SplatNet 3...
Related:
Pre-release notes
@frozenpandaman, @misenhower, Ay! (Hi! I'm adding any information I think could be relevant to SplatNet 3 here. This might be helpful for you to know what data to expect to be available for use in s3s/splatoon3.ink - I've highlighted anything I think is more important in bold. I'll start documenting the API here as well once it's available. Hope this helps! :))
Splatoon 3's product ID is
AV5JA. Evidence of SplatNet 3 can be found in certificate transparency logs: https://crt.sh/?q=av5ja.srv.nintendo.net (since 12/05/2021). Web service hostnames use this format (since Animal Crossing: New Horizons/NookLink):So, we can currently see that these services exist (strikethrough means all existing certificates have expired):
xd1:web-origin,web,api,api-origin,dpldd1:api,api-origin,dplyd1:api-origin,api,dplzd1:api,api-origin,dpllp1(production):dpl,api-origin,apidd2:api-origin,dpl,apisd1:api,dpl,api-originsp1:api,api-origin,dplwebis the actual web app, so SplatNet 3's URL should be https://web.lp1.av5ja.srv.nintendo.net.apicould be the web app's API, or (more likely, from ACNH) an API used by the game itself, to communicate with SplatNet 3 or other purposes, or both. (dplis explained below.)This doesn't tell us much other than confirming a web service for Splatoon 3 exists (and has done since at least 25/05/2021), except, from https://github.com/samuelthomas2774/nxapi/releases/tag/v1.1.0:
As Nintendo is now using a standard hostname format it's also possible the
dplhosts only exist just because they have a system that sets them up automatically, and they never planned any features that use deep links in SplatNet 3 at all.Since 16/08/2022 certs for
apiandapi-origininlp1(production) exist, they +dplnow exist and are reachable, althoughapi-originrefuses any connections.apianddplreturn 403 Forbidden ("Request blocked." over HTTPS, or "Bad request." without HTTPS).Nintendo Switch Online v2.2.0 (#14) adds some new options for web services. Web services can now appear full screen (excluding the status bar on iOS/similar on Android), handle closing their web view, and can be hidden until a completion function is called. These will make web services appear more like native views, so I assume SplatNet 3 and any other future web services (and possibly existing web services) will definitely want to make use of this.
Screenshot of SplatNet 3's main menu from Splatoon 3 Direct 10/08/2022:
Screenshots from https://www.nintendo.co.jp/switch/av5ja/online/index.html
Menu
Battles
Schedules
SplatNet Gear Shop
QR code reader
This looks a lot like NookLink. The four partially obscured tabs at the bottom look like "HOME", "Schedule", "Battles" and "Salmon Run". (Notice there's no header added by the Nintendo Switch Online app...)
(I've highlighted anything I think is more important below in bold, with a ❕ symbol as bold text doesn't really stand out very well on GitHub.)
Notable new features:
sourceoption, rather than two separate functions for camera/photo library.Relevant returning features/changes:
players/participantsarray (single item ormy_resultwhen fetching multiple battles), then each player has ateamproperty. This would also allow for recording spectators/battles you spectate (with the team set to null), which would be great for things like custom Splatfests. (I don't know how this works in SplatNet 2, I assume battles you spectate aren't recorded even if you're the host.)data-unique-idattribute in the HTML template, sent in theX-Unique-Idrequest header for API requests, and included in some API responses) is the player ID assigned by NEX. Splatoon 3 uses NPLN instead of NEX (https://twitter.com/OatmealDome/status/1560107944989048832).0-9a-zuser IDs (https://github.com/kinnay/NintendoClients/wiki/NPLN-Servers). (Save data backup would have to be disabled, as is always the case in Splatoon 2.)Possibly relevant to SplatNet 3:
Not relevant to SplatNet 3, but Splatfest World Premiere Nintendo eShop links to add to Discord title configuration:
https://fancy.org.uk/api/nxapi/title/0100ba0018500000/redirect
(Doesn't exist on Nintendo Europe's websites, so Europe links redirect to a blank page, with a 200 OK status code, whhhyyy Nintendo.... You can still download it with this link: https://ec.nintendo.com/title_purchase_confirm?title=70010000057240 - I've updated this page to go directly to the purchase page for Europe regions for titles that don't exist on Nintendo Europe's websites so it still links somewhere.)
Splatoon 3 Splatfest World Premiere UK purchase info
{ "title_detail": { "accessories": [], "applications": [ { "id": "0100ba0018500000", "image_url": "https://img-eshop.cdn.nintendo.net/i/1d649cdd27ca8690ced051fa530cf9aba8275eb352e841e6714df2458b616128.jpg", "name": "Splatoon 3: Splatfest World Premiere", "owned_titles": [] } ], "catch_copy": "Try Splatoon 3 for free on Aug. 27!", "classic_game": false, "cloud_backup_type": "SUPPORTED", "consumables": [], "content_type": "title", "controllers": [ { "id": 63, "name": "Nintendo Switch Pro Controller" } ], "copyright_text": "©Nintendo", "courses": [], "demos": [], "description": "Get a taste of 4 vs. 4 Turf War battles and all-new 3-way Tricolor Turf Wars during the free Splatfest World Premiere event! \n\nWhich one's the best? Rock, Paper, or Scissors?! Fight for your favourite in the Splatoon 3: Splatfest World Premiere, taking place on August 27th, 9am - 9pm (UK time).\n\nHere’s how you can get involved:\n\n1. Now – Sign up!:\nPre-order the free download now on Nintendo eShop.\n\n2. From Aug. 25 – Prepare!:\nComplete the tutorial, then take a stroll around Splatsville and choose your side in the Splatfest.\n\nIf you download the Splatfest World Premiere software, you’ll be sent a code for a free 7-day trial for Nintendo Switch Online from August 25th. Be sure to check your email inbox!\n\n3. Aug. 27 – Play!:\nJoin in the Splatfest festivities and fight for your chosen cause!", "disclaimer": "Trial codes will be distributed via email from August 25th and can be redeemed until August 29th, 2022. For customers using a Child Account to download the software, the email with the code will be sent to the email address registered for the Nintendo Account of their parent/guardian.", "dominant_colors": [ "050506", "fefefd", "f0f83c" ], "estimated_rom_size": 2621440000, "ex_membership_free": false, "features": [ { "id": 2001, "name": "Nintendo Switch Online" } ], "formal_name": "Splatoon 3 Splatfest World Premiere", "genre": "Shooter", "has_aoc": false, "hero_banner_url": "https://img-eshop.cdn.nintendo.net/i/f734ae51fe7d537583fc05eec1cb65fe0627cb4640a9830f34c6ed7bdff72a36.jpg", "id": 70010000057240, "in_app_purchase": false, "included_bundles": [], "included_pretickets": [], "included_pt_right_ids": [], "is_new": true, "is_special_trial": true, "languages": [ { "iso_code": "ja", "name": "Japanese" }, { "iso_code": "en", "name": "English" }, { "iso_code": "es", "name": "Spanish" }, { "iso_code": "fr", "name": "French" }, { "iso_code": "de", "name": "German" }, { "iso_code": "it", "name": "Italian" }, { "iso_code": "nl", "name": "Dutch" }, { "iso_code": "ru", "name": "Russian" }, { "iso_code": "ko", "name": "Korean" }, { "code": "zh_CN", "iso_code": "zh", "name": "Chinese (Simplified)" }, { "code": "zh_TW", "iso_code": "zh", "name": "Chinese (Traditional)" } ], "membership_required": false, "movies": [], "network_feature_description": "This software supports the following:\n- Surround sound (linear PCM)", "notices": [ { "text": "- Internet connection", "type": "required" } ], "platform": { "id": 2001, "name": "Nintendo Switch" }, "play_styles": [ { "id": 60, "name": "TV_MODE" }, { "id": 61, "name": "TABLETOP_MODE" }, { "id": 62, "name": "HANDHELD_MODE" } ], "player_number": { "offline_max": 1, "offline_min": 1, "online_max": 8, "online_min": 1 }, "public_status": "public", "publisher": { "id": 190, "name": "Nintendo" }, "rating_info": { "content_descriptors": [ { "id": 22, "name": "Violence", "type": "descriptor" } ], "rating": { "age": 7, "id": 2, "image_url": "https://img-eshop.cdn.nintendo.net/i/2f79a2a29115a348ea550db26737a60a5a4b566d447790c9b69973efd8547521.jpg", "name": "7", "provisional": false, "svg_image_url": "https://img-eshop.cdn.nintendo.net/i/4b8bb33d74a8420ee099ca6a560cc38e8d7bff1eb54f86de13d9bc12b8010275.svg" }, "rating_system": { "id": 304, "name": "PEGI" } }, "release_date_on_eshop": "2022-08-25", "screenshots": [ { "images": [ { "url": "https://img-eshop.cdn.nintendo.net/i/25dfe85ef1eafab34c288f1885f7db485a88efb5bee51e4feca18106a86c99e2.jpg" } ] }, { "images": [ { "url": "https://img-eshop.cdn.nintendo.net/i/7fb8be3cc1da4eee8d8174539c3074c226df1701cd515afe9eb8296535b7baa7.jpg" } ] }, { "images": [ { "url": "https://img-eshop.cdn.nintendo.net/i/b5bf9f3eed2f45708de98097d54878ea5466129382e2d2b7f7d4a94d32324546.jpg" } ] }, { "images": [ { "url": "https://img-eshop.cdn.nintendo.net/i/3db4f65eaf5fb336baa317cf1db3235ac4c775ed89a2e457f823be1ebb65150c.jpg" } ] } ], "tags": [], "target_titles": [], "total_rom_size": 2414870528 }, "online_price": { "contents": [ { "content_type": "title", "id": 70010000057240, "is_owned": true, "is_scheduled_ordered": false, "is_self_owned": true } ], "id": 70010000057240, "is_owned": true, "is_self_owned": true, "is_sold_ondevice": true, "price": { "gold_point": { "basic_gift_gp": "0", "basic_gift_rate": "0.05", "consume_gp": "0", "extra_gold_points": [], "gift_gp": "0", "gift_rate": "0.05" }, "no_gift_gold_point": false, "offer_prices": [], "regular_price": { "currency": "GBP", "formatted_value": "£0.00", "id": 2301258300, "raw_value": "0" } }, "sales_status": "onsale", "trade_rates": [] } }Title ID is
0100ba0018500000, UK icon: https://img-eshop.cdn.nintendo.net/i/1d649cdd27ca8690ced051fa530cf9aba8275eb352e841e6714df2458b616128.jpgSplatoon 3 Splatfest World Premiere doesn't attempt to connect to any SplatNet 3 hosts but does mention SplatNet 3 in the album page.
Online Lounge/voice chat event - Coral game ID is `6749099822448640`
{ "id": [redacted], "name": "Splatoon 3: Splatfest World Premiere", "description": "", "shareUri": "", "ownerUserId": [redacted], "members": [ { "id": [redacted], "name": "[redacted]", "imageUri": "[redacted]", "isPlaying": true, "isInvited": true, "isJoinedVoip": false } ], "passCode": "", "eventType": 3, "allowJoinGameWithoutCoral": false, "game": { "id": 6749099822448640 }, "imageUri": "https://atum-img-lp1.cdn.nintendo.net/i/c/4e1b276b54bb400498b92f93f7307e7f_512", "activateId": "[redacted]" }Beta Was this translation helpful? Give feedback.
All reactions