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. CheckinWithQRCodeMutation
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. CoopPagerLatestCoopQuery, 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. SupportButton_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. CoopPagerLatestCoopQuery, 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. DownloadSearchReplayQuery
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. CatalogQuery, CatalogRefetchQuery
GesotownQuery, GesotownRefetchQuery
SaleGearDetailOrderGesotownGearMutation
SaleGearDetailQuery
StageScheduleQuery
|
Beta Was this translation helpful? Give feedback.
-
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
,dpl
dd1
:api
,api-origin
,dpl
yd1
:api-origin
,api
,dpl
zd1
:api
,api-origin
,dpl
lp1
(production):dpl
,api-origin
,api
dd2
:api-origin
,dpl
,api
sd1
:api
,dpl
,api-origin
sp1
:api
,api-origin
,dpl
web
is the actual web app, so SplatNet 3's URL should be https://web.lp1.av5ja.srv.nintendo.net.api
could 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. (dpl
is 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
dpl
hosts 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
api
andapi-origin
inlp1
(production) exist, they +dpl
now exist and are reachable, althoughapi-origin
refuses any connections.api
anddpl
return 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:
source
option, rather than two separate functions for camera/photo library.Relevant returning features/changes:
players
/participants
array (single item ormy_result
when fetching multiple battles), then each player has ateam
property. 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-id
attribute in the HTML template, sent in theX-Unique-Id
request 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-z
user 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 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`
Beta Was this translation helpful? Give feedback.
All reactions