Code Monkey home page Code Monkey logo

samuelthomas2774 / nxapi Goto Github PK

View Code? Open in Web Editor NEW
398.0 11.0 33.0 6.62 MB

Nintendo Switch Online/Parental Controls app APIs. Show your Nintendo Switch presence in Discord, get friend notifications on desktop, and download and access SplatNet 2, NookLink, SplatNet 3 and Parental Controls data. Mirror of https://gitlab.fancy.org.uk/samuel/nxapi.git.

License: GNU Affero General Public License v3.0

Dockerfile 0.21% Shell 0.11% JavaScript 1.04% TypeScript 98.60% HTML 0.04%
nintendo nintendo-switch discord splatoon animal-crossing discord-rich-presence

nxapi's Introduction

nxapi

JavaScript library and command line and Electron app for accessing the Nintendo Switch Online and Nintendo Switch Parental Controls app APIs. Show your Nintendo Switch presence in Discord, get friend notifications on desktop, and download and access SplatNet 2, NookLink, SplatNet 3 and Parental Controls data.

Discord

Features

  • Command line and Electron app interfaces

  • Interactive Nintendo Account login for the Nintendo Switch Online and Nintendo Switch Parental Controls apps

  • Automated login to the Nintendo Switch Online app API

  • Get Nintendo Switch account information, friends list and game-specific services

  • Show Discord Rich Presence using your Nintendo Switch presence

    • Fetch presence using a secondary account or from a custom URL.
    • Show your account's friend code (or a custom friend code).
    • All titles are supported using a default Nintendo Switch app. A limited number of titles have their own Discord apps (meaning they appear under your name with the title's name instead of "Nintendo Switch") or other custom Discord features. See here for Discord title overrides or create an issue if you'd like another title added.

    Screenshot showing Splatoon 2 as a Discord activity

    • Additional presence information for Splatoon 3

      Screenshot showing Splatoon 3 as a Discord activity with SplatNet 3 presence information
  • Show notifications for friend Nintendo Switch presences

    Screenshot showing a presence notification

  • [Electron app] Open game-specific services

    • Including NookLink, which doesn't work in web browsers as it requires custom JavaScript APIs.
  • Nintendo Switch Online app API proxy server and presence server

    • This allows a single account to fetch presence for multiple users.
    • Data will be cached for a short time to reduce the number of requests to Nintendo's server.
    • This automatically handles authentication when given a Nintendo Account session token. This makes it much easier to access the API from a browser, in scripts or in other software.
  • Download all personalised SplatNet 2 and SplatNet 3 data, including battle and Salmon Run results

  • Download island newspapers from and send messages and reactions using NookLink

  • Download all Nintendo Switch Parental Controls usage records

The API library and types are exported for use in JavaScript/TypeScript software. The app/commands properly cache access tokens and try to handle requests to appear as Nintendo's apps - if using nxapi as a library you will need to handle this yourself. More information.

Electron app

nxapi includes an Electron app, which can be downloaded here. The app can be used to:

  • Login to a Nintendo Account, both for the Nintendo Switch Online app and Parental Controls app
    • This will open the Nintendo Account login page in the app, just like signing into Nintendo's own apps.
    • The Nintendo Account authorisation page can be opened in a browser by holding Shift while pressing add account.
    • Accounts are shared with the nxapi command line interface.
  • Share Nintendo Switch presence to Discord
    • Using a custom presence URL or a friend's presence is supported.
    • Using the authenticated user's presence is not supported, as this is no longer available from the API (#1).
  • Showing notifications for friend presences
    • Multiple users can be selected.
  • Access game-specific services
    • These will be opened in the app.

Screenshot of the app

Screenshot of the menu bar app with SplatNet 2 and NookLink open in the background

The app includes the nxapi command line at dist/bundle/cli-bundle.js.

# macOS
Nintendo\ Switch\ Online.app/Contents/bin/nxapi

# Linux, installed via dpkg
# This is linked as /usr/bin/nxapi
/opt/Nintendo\ Switch\ Online/bin/nxapi

On Windows, Node.js must be installed separately.

# PowerShell
node $env:LOCALAPPDATA\Programs\nxapi-app\resources\app\dist\bundle\cli-bundle.js ...

# Command Prompt
node %localappdata%\Programs\nxapi-app\resources\app\dist\bundle\cli-bundle.js ...

Do I need a Nintendo Switch Online membership?

No.

The only requirement to use this is that your Nintendo Account is linked to a Network Service Account, i.e. you've linked your Nintendo Account to a Nintendo Switch console at some point. It doesn't matter if your account is no longer linked to any console.

You will need to have an online membership (free trial is ok) to use any game-specific services if you want to access those. SplatNet 2 can be used without an active membership, but NookLink and Smash World both require an active membership just to open them.

For Parental Controls data, you don't need to have linked your account to a console. You will need to use Nintendo's app to add a console to your account though, as this isn't supported in nxapi and the Parental Controls API is a bit useless without doing this.

The Electron app does not connect to Discord on Linux

The Electron app, Discord, or both, may be sandboxed depending on how they're installed.

The dpkg and AppImage nxapi packages are not sandboxed. The official dpkg Discord package and tar release are not sandboxed.

The snap packages of nxapi and Discord are sandboxed and cannot support Discord Rich Presence.

The Flatpak Discord package is sandboxed, but can be used by linking the IPC socket outside of the app directory: https://github.com/flathub/com.discordapp.Discord/wiki/Rich-Precense-(discord-rpc).

Will my Nintendo Switch console be banned for using this?

No.

Will my Nintendo Account/Network Service Account be banned for using this?

It's extremely unlikely:

  • Other projects (e.g. splatnet2statink, splatoon2.ink) have used the same reverse engineered APIs for a long time (pretty much since they've existed) and no one has ever been banned for using them. splatnet2statink in monitoring mode updates every 5 minutes by default - monitoring commands (Discord presence, friend notifications and SplatNet 2/SplatNet 3 monitoring) in nxapi only update slightly more frequently (every 1 minute), so there's not much higher risk than using splatnet2statink.
  • Unlike console bans, account bans would prevent you from accessing digital content or online services you've paid for. (If your console was banned you'd still be able to use it and you could just buy another one to access your account.)
  • Nintendo can't stop you watching their app's network activity, which is all the reverse engineering required to develop this.

A secondary account is required for Discord Rich Presence; you don't need to sign in to your main account.

Update 08/09/2023

Nintendo has banned a small number of users from accessing SplatNet 3. Nintendo has not sent any notification to affected users. This is only known to have affected users of one application unrelated to nxapi.

SplatNet 3 returns 401 Unauthorized (ERROR_INVALID_GAME_WEB_TOKEN... which causes the official app to retry repeatedly); there is no specific error message for banned users. No other Nintendo services are affected.

If you only use nxapi for Discord Rich Presence, your main account is safe, because nxapi does not use it to fetch presence data. nxapi requires a secondary account to fetch your main account's presence data, so even if that account was banned you could just create another one without losing anything.

More information:

Why is a token sent to one/two different non-Nintendo servers?

It's required to generate some data to make Nintendo think you're using the real Nintendo Switch Online app, as currently it's too hard to do this locally. (This isn't required for Parental Controls data.) See the Coral client authentication section below for more information.

I need help using nxapi or Nintendo's APIs/I want to share something I've made using nxapi or Nintendo's APIs

I've created a Discord server for this project. Anyone interested in Nintendo's smart device app APIs is welcome to join, even if you're not interested in this project.

If you are creating something using Nintendo's smart device APIs: updates to Nintendo's apps are published in #nintendo-app-versions.

Invitation: https://discord.com/invite/4D82rFkXRv

Install

Install with npm

Node.js and npm must already be installed.

# From registry.npmjs.com
npm install --global nxapi

# From gitlab.fancy.org.uk
npm install --global --registry https://gitlab.fancy.org.uk/api/v4/packages/npm/ @samuel/nxapi

# From npm.pkg.github.com
npm install --global --registry https://npm.pkg.github.com @samuelthomas2774/nxapi

# From gitlab.com
npm install --global --registry https://gitlab.com/api/v4/packages/npm/ @samuelthomas2774/nxapi

Install from source

Node.js and npm must already be installed.

# Don't download an archive, as nxapi detects the current git revision
git clone https://gitlab.fancy.org.uk/samuel/nxapi.git
cd nxapi

# Install CLI/Electron app locally
npm install
npx tsc

# CLI
# This command installs the nxapi command globally
# You can also use the CLI with node bin/nxapi.js ...
npm link

# Electron app
npx rollup --config
# nxapi app or node bin/nxapi.js app to run the app

# Build Docker image
docker build . --tag registry.fancy.org.uk/samuel/nxapi
# # Run in Docker
# docker run -it --rm -v ./data:/data registry.fancy.org.uk/samuel/nxapi ...

Usage

Information on the nxapi command line interface can be found at docs/cli.md.

The information below is relevant to both the Electron app and command line. Some environment variables are also used when using nxapi as a JavaScript library.

Data location

Data will be stored in an OS-specific local data location by default in the nxapi-nodejs directory.

# Store data in ./data
nxapi --data-path ./data ...
NXAPI_DATA_PATH=`pwd`/data nxapi ...
Platform Default path
macOS Library/Application Support/nxapi-nodejs
Windows %localappdata%\nxapi-nodejs\Data
Linux $XDG_DATA_HOME/nxapi-nodejs or .local/share/nxapi-nodejs

nxapi will also store cached update and configuration data. This location cannot be changed.

Platform Cache path
macOS Library/Caches/nxapi-nodejs
Windows %localappdata%\nxapi-nodejs\Cache
Linux $XDG_CACHE_HOME/nxapi-nodejs or .cache/nxapi-nodejs

The Electron app will also store other data in various locations.

Debug logs

Logging uses the debug package and can be controlled using the DEBUG environment variable. All nxapi logging uses the nxapi, cli and app namespaces.

# Show all debug logs from nxapi
DEBUG=nxapi:*,cli,cli:* nxapi ...

# Start the Electron app and show all debug logs from nxapi
DEBUG=nxapi:*,app,app:* nxapi app
DEBUG=nxapi:*,app,app:* .../Nintendo\ Switch\ Online.app/Contents/MacOS/Nintendo\ Switch\ Online

# Show all API requests
DEBUG=nxapi:api:* nxapi ...

# Show all debug logs
DEBUG=* nxapi ...

By default all nxapi logs will be written to a platform-specific location:

Platform Log path
macOS Library/Logs/nxapi-nodejs
Windows %localappdata%\nxapi-nodejs\Log
Linux $XDG_STATE_HOME/nxapi-nodejs or .local/state/nxapi-nodejs

This only applies to the command line and Electron app and can be disabled by setting NXAPI_DEBUG_FILE to 0. Each process writes to a new file. nxapi will automatically delete log files older than 14 days.

nxapi logs may contain sensitive information such as Nintendo Account access tokens.

Environment variables

Some options can be set using environment variables. These can be stored in a .env file in the data location. Environment variables will be read from the .env file in the default location, then the .env file in NXAPI_DATA_PATH location. .env files will not be read from the location set in the --data-path option.

This can be used with the Electron app (including when using the packaged version).

nxapi doesn't store any data itself when used as a TypeScript/JavaScript library, and doesn't attempt to read any .env files, however environment variables will still be used. If you want to read environment variables from a file you can use the dotenv and dotenv-expand packages, or run source .env before running your process.

Environment variable Description
NXAPI_DATA_PATH Sets the location to store user data. See data location.
ZNC_PROXY_URL Sets the URL of the nxapi znc API proxy server. See API proxy server.
NXAPI_ZNCA_API Sets the API to use for Coral client authentication. Either flapg or imink. See Coral client authentication.
ZNCA_API_URL Sets the URL of the nxapi znca API server to use for Coral client authentication, if NXAPI_ZNCA_API is not set. See https://gitlab.fancy.org.uk/samuel/nxapi-znca-api or https://github.com/samuelthomas2774/nxapi-znca-api.
NXAPI_USER_AGENT Sets the application/script user agent string used by the nxapi command. See user agent strings.
NXAPI_ENABLE_REMOTE_CONFIG Disables fetching and using remote configuration data if set to 0. Do not disable remote configuration if nxapi has run with it enabled.
NXAPI_REMOTE_CONFIG_FALLBACK Allows using local configuration data if the remote configuration data cannot be fetched if set to 1. This should not be used, as it can cause nxapi to revert to local configuration data after previously using newer remote configuration data.
NXAPI_CONFIG_URL Sets the URL to fetch remote configuration data from.
NXAPI_SKIP_UPDATE_CHECK Disables the update check in the nxapi command and the Electron app if set to 1.
NXAPI_SPLATNET3_UPGRADE_QUERIES Sets when the SplatNet 3 client is allowed to upgrade persisted query IDs to newer versions. If 0 queries are never upgraded (not recommended). If 1 queries are upgraded if they do not contain potentially breaking changes (not recommended, as like 0 this allows older queries to be sent to the API). If 2 queries are upgraded, requests that would include breaking changes are rejected. If 3 all queries are upgraded, even if they contain potentially breaking changes (default).
NXAPI_SPLATNET3_STRICT Disables strict handling of errors from the SplatNet 3 GraphQL API if set to 0. If set to 1 (default) requests will be rejected if the response includes any errors, even if the response includes a result.
DEBUG Used by the debug package. Sets which modules should have debug logging enabled. See debug logs.
NXAPI_DEBUG_FILE Disables writing debug logs to a file if set to 0.

Other environment variables may also be used by Node.js, Electron or other packages nxapi depends on.

User agent strings

As nxapi can be used in scripts or as a library, it exposes a few different methods for setting a user agent string for requests to the imink, flapg and other non-Nintendo APIs. You must include the name and version number of your script/program in the user agent. If your program is not open source or not easily discoverable (e.g. by searching GitHub) it must also include contact information.

When using the nxapi command in a script or other program, the NXAPI_USER_AGENT environment variable should be used. The NXAPI_USER_AGENT environment variable is only used by the nxapi command, and will be ignored by the Electron app or when using nxapi as a library.

export NXAPI_USER_AGENT="your-script/1.0.0 (+https://github.com/...)"
nxapi nso ...

When using nxapi as a TypeScript/JavaScript library, the addUserAgent function should be used.

import { addUserAgent } from 'nxapi';

addUserAgent('your-script/1.0.0 (+https://github.com/...)');

The addUserAgentFromPackageJson function can be used to add data from a package.json file.

import { addUserAgentFromPackageJson } from 'nxapi';

await addUserAgentFromPackageJson(new URL('../package.json', import.meta.url));
await addUserAgentFromPackageJson(path.resolve(fileURLToString(import.meta.url), '..', 'package.json'));
// adds "test-package/0.1.0 (+https://github.com/ghost/example.git)"

await addUserAgentFromPackageJson(new URL('../package.json', import.meta.url), 'additional information');
// adds "test-package/0.1.0 (+https://github.com/ghost/example.git; additional information)"

Usage as a TypeScript/JavaScript library

nxapi exports it's API library and types.

See docs/lib and src/exports.

Coral client authentication

api.imink.app or nxapi-znca-api.fancy.org.uk is used by default to automate authenticating to the Nintendo Switch Online app's API and authenticating to web services. An access token (id_token) created by Nintendo must be sent to this API to generate some data that is required to authenticate the app. This API runs the Nintendo Switch Online app on an Android device to generate this data. The access token sent includes some information about the authenticated Nintendo Account and can be used to authenticate to the Nintendo Switch Online app and web services.

Specifically, the tokens sent are JSON Web Tokens. The token sent to login to the app includes this information and is valid for 15 minutes, and the token sent to login to web services includes this information and is valid for two hours.

Alternatively the flapg API can be used by setting the NXAPI_ZNCA_API environment variable to flapg. (NXAPI_ZNCA_API=flapg nxapi nso ...)

Since v1.3.0 the default API to use will be fetched from my server and can be changed without an update to nxapi. To force the use of the imink API, set the NXAPI_ZNCA_API environment variable to imink.

nxapi also includes a custom server using Frida on an Android device/emulator that can be used instead of these.

This is only required for Nintendo Switch Online app data. Nintendo Switch Parental Controls data can be fetched without sending an access token to a third-party API.

This is really annoying. Initially the Nintendo Switch Online app didn't perform any sort of client attestation at all, then Nintendo added a HMAC of the id_token, timestamp and request ID to app/web service login requests, using a secret key embedded in the app, which was soon discovered. Nintendo later updated the app to use a native library (libvoip, which is also used for the app's VoIP features) to do this, and still no one knows how it works. (To make things even more confusing, the function, gen_audio_h/gen_audio_h2, always returns a different result, even when given the same inputs.)

The reason Nintendo added this is probably to try and stop people automating access to their app's API. I really hope that's wrong though, as then Nintendo would be prioritising that over account security, as most people seem ok with sharing account credentials to access the API. (And it's not stopping anyone accessing the API outside of the app anyway.)

See #10 if you can help with this.

Resources

nxapi's People

Contributors

adrthegamedev avatar rexogamer avatar samuelthomas2774 avatar telgniw avatar ydkk avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

nxapi's Issues

Samsung Android device support/application

Samsung and Discord has a partnership so that Galaxy devices will show the game being currently played via Samsung's Game Launcher app. See this link for more information: https://support.discord.com/hc/en-us/articles/360031924632-Samsung-Integration-FAQ

Do you think it's possible to take advantage of this feature to implement nxapi for Android? This will be for Samsung devices only, but they're the most popular Android device manufacturer so this will still be very useful to many.

image

image

image

image

Nintendo Switch Online app v2.3.0 (27/09/2022)

Release notes (https://www.nintendo.co.uk/-1520024.html):

  • Added support for Splatoon 3 widgets. "Battle Logs", "Stage Schedule" and "Album" can be checked from your device's home screen.
    • Note: Depending on your device, some widgets may not be available.
  • Various other small changes have also been made.
In-app announcement (iOS):

Thank you for using the Nintendo Switch Online app.

You can now update the app to Ver. 2.3.0.

Please see below for a list of version changes.

  • Added support for Splatoon 3 widgets. "Battle Logs", "Stage Schedule", "Current Gear" and "Album" can be checked from your device's home screen.
  • Various other small changes have also been made.

We hope you continue to enjoy the Nintendo Switch Online app.

{
    "announcementId": 121,
    "priority": 0,
    "forceDisplayEndDate": 253402300799,
    "distributionDate": 1664330400,
    "title": "Ver. 2.3.0 update announcement",
    "description": "Thank you for using the Nintendo Switch Online app.\r\n \r\nYou can now update the app to Ver. 2.3.0.\r\n\r\nPlease see below for a list of version changes.\r\n \r\n- Added support for Splatoon 3 widgets. \"Battle Logs\", \"Stage Schedule\", \"Current Gear\" and \"Album\" can be checked from your device's home screen.\r\n- Various other small changes have also been made.\r\n \r\n---\r\n \r\nWe hope you continue to enjoy the Nintendo Switch Online app."
}
In-app announcement (Android):

Thank you for using the Nintendo Switch Online app.

You can now update the app to Ver. 2.3.0.

Please see below for a list of version changes.

  • Added support for Splatoon 3 widgets. "Battle Logs", "Stage Schedule" and "Album" can be checked from your device's home screen. Note: Depending on your device, some widgets may not be available.
  • Various other small changes have also been made.

We hope you continue to enjoy the Nintendo Switch Online app.

{
    "announcementId": 122,
    "priority": 0,
    "forceDisplayEndDate": 253402300799,
    "distributionDate": 1664330400,
    "title": "Ver. 2.3.0 update announcement",
    "description": "Thank you for using the Nintendo Switch Online app.\r\n \r\nYou can now update the app to Ver. 2.3.0.\r\n\r\nPlease see below for a list of version changes.\r\n \r\n- Added support for Splatoon 3 widgets. \"Battle Logs\", \"Stage Schedule\" and \"Album\" can be checked from your device's home screen. Note: Depending on your device, some widgets may not be available.\r\n- Various other small changes have also been made.\r\n \r\n---\r\n \r\nWe hope you continue to enjoy the Nintendo Switch Online app."
}

No breaking/behaviour API changes have been made. The widgets extension uses /v3/Extension/Account/GetToken and /v2/Extension/Game/GetWebServiceToken in place of /v3/Account/GetToken and /v2/Game/GetWebServiceToken but sends exactly the same data.

f tokens generated with older versions of the app are still accepted.


TODO: add details on the widgets extension's use of the SplatNet 3 API and list of GraphQL queries here.

The SSL/TLS problem during the adding user processes

It's throw error when adding user if the user name of PC was percent decoded.
The error message is like this:

Error adding account
FetchError$1: request to https://accounts.nintendo.com/connect/1.0.0/api/session_token
failed, reason: unable to get local issuer certificate
at ClientRequest. (file:///C:/Users/username/AppData/Local/Programs/nx...:11)
at ClientRequest.emit (node:events:539:35)
at TLSSocket.socketErrorListener (node:_http_client:454:9)
at TLSSocket.emit (node:events:527:28)
at emitErrorNT (node:events:527:28)
at emitErrorCloseNT (node:internal/streams/destroy:122:3)
at process.processTicksAndRejections (node:internal/process/task_queues:83:21)

I founded, when I try adding user with the English PC user name (e.g.hilot) I successfully added user, but when I try with the Japanese name (e.g.ひろっとor山田) I couldn't add user.
I'm not good at English, so if you didn't catch the meanings or situations I'm very sorry.
Thank you

User data not including presence

/v3/Account/Login, /v3/Account/GetToken and /v3/User/ShowSelf currently seem to be returning incorrect presence data. This object is always returned (which looks the same as the presence object for users who have never been online, or are not sharing their presence with you):

"presence": {
    "state": "OFFLINE",
    "updatedAt": 0,
    "logoutAt": 0,
    "game": {}
}

/v3/Friend/List still returns correct presence data.

Nintendo Switch Online app v2.2.0 (26/07/2022)

Release notes (https://www.nintendo.co.uk/-1520024.html):

  • You can now send friend requests via friend code.
    • Users must use a Nintendo Switch console to respond to friend requests.
  • You can now copy your friend code as a URL and/or save it as a QR Code. You can receive friend requests from anyone with whom you share the URL or QR Code.
  • Various issues are now resolved.
  • Changed minimum OS version.
    • iOS version 14.0 or later is required to use this application.
In-app announcement (iOS):

Thank you for using the Nintendo Switch Online app.

You can now update the app to Ver. 2.2.0.

Please see below for a list of version changes.

  • You can now send friend requests via friend code.
    Note: Users must use a Nintendo Switch console to respond to friend requests.
  • You can now copy your friend code as a URL and/or save it as a QR Code. You can receive friend requests from anyone with whom you share the URL or QR Code.
  • Various other small changes have also been made.

We hope you continue to enjoy the Nintendo Switch Online app.

{
    "announcementId": 111,
    "priority": 0,
    "forceDisplayEndDate": 253402300799,
    "distributionDate": 1658887200,
    "title": "Ver. 2.2.0 update announcement",
    "description": "Thank you for using the Nintendo Switch Online app.\r\n \r\nYou can now update the app to Ver. 2.2.0.\r\n\r\nPlease see below for a list of version changes.\r\n \r\n- You can now send friend requests via friend code.\r\n  Note: Users must use a Nintendo Switch console to respond to friend requests.\r\n- You can now copy your friend code as a URL and/or save it as a QR Code. You can receive friend requests from anyone with whom you share the URL or QR Code.\r\n- Various other small changes have also been made.\r\n \r\n---\r\n \r\nWe hope you continue to enjoy the Nintendo Switch Online app."
}
In-app announcement (Android):

Thank you for using the Nintendo Switch Online app.

You can now update the app to Ver. 2.2.0.

Please see below for a list of version changes.

  • You can now send friend requests via friend code.
    Note: Users must use a Nintendo Switch console to respond to friend requests.
  • You can now copy your friend code as a URL and/or save it as a QR Code. You can receive friend requests from anyone with whom you share the URL or QR Code.
  • Various other small changes have also been made.

We hope you continue to enjoy the Nintendo Switch Online app.

{
    "announcementId": 112,
    "priority": 0,
    "forceDisplayEndDate": 253402300799,
    "distributionDate": 1658887200,
    "title": "Ver. 2.2.0 update announcement",
    "description": "Thank you for using the Nintendo Switch Online app.\r\n \r\nYou can now update the app to Ver. 2.2.0.\r\n\r\nPlease see below for a list of version changes.\r\n \r\n- You can now send friend requests via friend code.\r\n  Note: Users must use a Nintendo Switch console to respond to friend requests.\r\n- You can now copy your friend code as a URL and/or save it as a QR Code. You can receive friend requests from anyone with whom you share the URL or QR Code.\r\n- Various other small changes have also been made.\r\n \r\n---\r\n \r\nWe hope you continue to enjoy the Nintendo Switch Online app."
}

Both announcements are exactly the same..

Users must use a Nintendo Switch console to respond to friend requests.

This is not strictly true - sending a friend request to a user who has sent you a friend request will add them as a friend immediately, it's just not possible to actually view received friend requests using the app.

Other changes:

  • user.show_fast, event.list and event.invite API classes have been re-added, but are never used (the API endpoint isn't defined)
  • Added a fullScreen custom attribute for web services
    • When set to "true" the web view will not have a header and close button.
    • This also enables native scroll bounce on iOS! 😄
    • The app will show a loading screen and wait for the webpage to call the custom completeLoading function when it is ready to show. After a few seconds a button will appear to cancel loading the web service if it still hasn't loaded.
    • Will probably be used by SplatNet 3 (#11)...
  • See 2nd comment on new JavaScript APIs available to web services
    • No existing functions appear to have been changed or have new options.

No breaking/behaviour API changes have been made (see 1st comment on new endpoints for friend requests). f tokens generated with v2.0.0 are still accepted.


https://github.com/samuelthomas2774/nintendo-app-versions works :). Changes to the Nintendo Switch Online and Nintendo Switch Parental Controls apps on iTunes, Google Play and Nintendo EU/JP will be pushed to this repository automatically. Join Discord to enable notifications for the #nintendo-app-versions channel.

Automatically retry on `9403 Invalid token`

image

I don't know if it's because of the server or the network/ISP I'm using, but the nxapi-app often fails to get the token and creates a dialog each time.
This can happen several times an hour, and pressing retry does nothing wrong, but it's annoying.
Retrying automatically for retryable errors and popping up the error only if it still can't be recovered would improve the experience.
Thanks.

splatnet3monitor error

Error in external monitor SplatNet3Monitor: Too many attempts to authenticate at checkUseLimit

Is this a common error that still has to be patched or am i doing something wrong?

Localisation

  • Electron app support
    • Relative times
  • Discord activity support
    • Splatoon 3
  • Add translation authors to app about panel
  • Fix language detection
  • Fix setting language in all windows

  • English
  • German: #54
  • Japanese: #63
  • Spanish: #66

Metroid Prime™ Remastered

Title name

Metroid Prime™ Remastered

Publisher

Nintendo

Title IDs

010012101468C000

Other information

no change

Review checklist

  • No other open issues related to this title exist (if any issues do exist, add a comment/reaction to those instead of opening a new issue)
  • I am requesting a custom Discord application for this title - this title is a very popular game and/or has high ratings, is currently available for purchase (or will be soon) in most Nintendo eShop regions, and it would be useful for a number of users to have it's own Discord application (I don't have any strict guidelines for which titles should have custom Discord applications - tick if you think the title should have it's own Discord application - I just want to keep the list short so I don't have to create 100s of Discord applications)

Opening on startup

Hello, I have a small suggestion to share
Adding a window with general settings could be nice, it could list various options such as launching the application at system startup (in background or not) for example

FetchError ECONNRESET often when running in background

I often get ECONNRESET fetch errors when running the presence monitor in the background, pictured below:

image

I also see this when using S3S, my guess is that this is due to rate limiting or server instability on Nintendo's part. I would say this happens every hour or two.

These errors are definitely pretty annoying, since they make an error noise popup and make my task bar pop up and flash orange every time they happen. Since they represent transient network issues, I would expect that they are handled and retried silently without interrupting the user.

Dark mode menu/tray icon

The current tray icon is completely black, meaning that against trays that are also black (eg, Gnome on Linux) the icon is completely invisible (at least until interacted with):

Screenshot from 2023-01-15 22-06-11 Screenshot from 2023-01-15 22-06-07

Can there be a toggle in the settings for selecting between a light and dark mode tray icon? For a dark mode tray icon, I think a simple inversion of the existing icon (so that it is grey/white) would be fine.

Thanks for the great program!

Fire Emblem Engage add?

Title name

Fire Emblem Engage

Publisher

Nintendo

Title IDs

0100A6301214E000

Other information

  • Nothing of note

Review checklist

  • No other open issues related to this title exist (if any issues do exist, add a comment/reaction to those instead of opening a new issue)
  • I am requesting a custom Discord application for this title - this title is a very popular game and/or has high ratings, is currently available for purchase (or will be soon) in most Nintendo eShop regions, and it would be useful for a number of users to have it's own Discord application (I don't have any strict guidelines for which titles should have custom Discord applications - tick if you think the title should have it's own Discord application - I just want to keep the list short so I don't have to create 100s of Discord applications)

Presence monitoring error handling

Show errors updating presence monitors in the main window instead of an error dialog. (Maybe show a banner like for updates, with a button to retry or show the full error message?) Also show a warning icon on any users with erroring monitors.

The app currently logs and ignores some temporary errors, and clears Discord presence after 10 errors, but continues retrying automatically infinitely. Errors not identified as temporary (not meaning permanent) result in an error dialog.

The app should notify the user that a non-temporary error occurred, but this should never focus the app and should be easy for the user to just ignore (pausing the monitor until retried):

  • Desktop notifications? That might still be too annoying.
  • macOS/Windows: bounce the dock icon/flash the window icon?
  • Menu app/tray?

Also add more helpful messages for certain errors (e.g. error responses from api.imink.app should suggest checking https://status.imink.app and trying again later, errors from the Coral API can have more detailed error messages instead of just showing the status code).

OS considerations:

  • macOS unhides the app and bounces the dock icon but doesn’t focus the app, so errors aren’t too invasive
    • From Big Sur error messages are centred which is annoying
    • macOS blocks the main thread while showing the error dialog
  • Windows focuses the app which means errors are really annoying
  • Some Linux desktop environments don’t scroll error messages

Also: maybe show a panel for the proxy presence monitor when clicked like for users, instead of just opening the setup window immediately?

Nintendo Switch Online app v2.1.0 (09/05/2022)

Release notes (https://www.nintendo.co.uk/-1520024.html):

  • You can now switch between light mode and dark mode.
    • Note: Supported for iOS 13/Android 10 and later.
  • Improvements have been made for performance and ease of use.
In-app announcement (iOS):

Thank you for using the Nintendo Switch Online app.

You can now update the app to Ver. 2.1.0.

Please see below for a list of version changes.

  • You can now switch between light mode and dark mode in this app's settings. Note: Supported for iOS 13 and later.
  • Improvements have been made for performance and ease of use.

We hope you continue to enjoy the Nintendo Switch Online app.

{
    "announcementId": 81,
    "priority": 0,
    "forceDisplayEndDate": 253402300799,
    "distributionDate": 1652234400,
    "title": "Ver. 2.1.0 update announcement",
    "description": "Thank you for using the Nintendo Switch Online app.\r\n \r\nYou can now update the app to Ver. 2.1.0.\r\n\r\nPlease see below for a list of version changes.\r\n \r\n- You can now switch between light mode and dark mode in this app's settings. Note: Supported for iOS 13 and later.\r\n- Improvements have been made for performance and ease of use.\r\n \r\n---\r\n \r\nWe hope you continue to enjoy the Nintendo Switch Online app."
}
In-app announcement (Android):

Thank you for using the Nintendo Switch Online app.

You can now update the app to Ver. 2.1.0.

Please see below for a list of version changes.

  • You can now switch between light mode and dark mode in this app's settings. Note: Supported for Android 10 and later.
  • Improvements have been made for performance and ease of use.

We hope you continue to enjoy the Nintendo Switch Online app.

{
    "announcementId": 82,
    "priority": 0,
    "forceDisplayEndDate": 253402300799,
    "distributionDate": 1652234400,
    "title": "Ver. 2.1.0 update announcement",
    "description": "Thank you for using the Nintendo Switch Online app.\r\n \r\nYou can now update the app to Ver. 2.1.0.\r\n\r\nPlease see below for a list of version changes.\r\n \r\n- You can now switch between light mode and dark mode in this app's settings. Note: Supported for Android 10 and later.\r\n- Improvements have been made for performance and ease of use.\r\n \r\n---\r\n \r\nWe hope you continue to enjoy the Nintendo Switch Online app."
}

Other changes:

  • Added an animation when opening/closing web services
  • Allows canceling the slide down on friend card to close animation
  • The app now seems to cache data for ~10 seconds, e.g. opening the friends list then immediately going back to the main screen only results in one request to /v3/Friend/List, I'm not sure if it did this before
    • Pull to refresh does not actually force the app to reload the data and does nothing if the data was loaded in the last ~10 seconds
  • An X-AppColorScheme header is now sent with the first request when opening web services
    • The value is always DARK or LIGHT
    • The app does not indicate if the colour scheme was set in the app or device settings
    • (Nintendo please don't do this, web services should use prefers-color-scheme to detect the colour scheme, this will work if the colour scheme changes while a web service is open and you should be able to override this if set in the app.)

No API changes have been made, and f tokens generated with v2.0.0 are still accepted.

Monster hunter Rise

Title name

Monster Hunter Rise

Publisher

CAPCOM

Title IDs

0100B04011742000 Monster Hunter Rise
010093a01305c000 Monster Hunter Rise Demo Version2
0100db001724e000 Monster Hunter Rise: Sunbreak Demo

(This is the titleID for the Asia/JP version, I wasn't sure if you wanted the JP/ENG title so I included the JP titles just incase, but its in the same order as the US/EU version (Main game, Demo, and sunbreak demo).
0100559011740000 モンスターハンターライズ
0100bef013050000 モンスターハンターライズ DEMO
01000ee01724c000 モンスターハンターライズ:サンブレイク DEMO

Other information

I think they just replaced demo version 1 with 2 so the titleID stayed the same. Also this is my first time submitting a game so I was not familiar with the process of gathering titleID's and the regions of games but I think the game only has a NA/EU version and an Asia version, excluding China but I doubt this app has any Chinese users. Let me know if I made any mistakes.

Review checklist

  • No other open issues related to this title exist (if any issues do exist, add a comment/reaction to those instead of opening a new issue)
  • I am requesting a custom Discord application for this title - this title is a very popular game and/or has high ratings, is currently available for purchase (or will be soon) in most Nintendo eShop regions, and it would be useful for a number of users to have it's own Discord application (I don't have any strict guidelines for which titles should have custom Discord applications - tick if you think the title should have it's own Discord application - I just want to keep the list short so I don't have to create 100s of Discord applications)

Fails to connect to Nintendo Switch API

Working one day, then I get this log (in the console) the next:

Last login: Tue Aug 23 11:42:05 on ttys001
/Users/chancelp/Downloads/Nintendo\ Switch\ Online.app/Contents/MacOS/Nintendo\ Switch\ Online ; exit;
chancelp@Chances-M1-MacBook-Air ~ % /Users/chancelp/Downloads/Nintendo\ Switch\ Online.app/Contents/MacOS/Nintendo\ Switch\ Online ; exit;
objc[10408]: Class WebSwapCGLLayer is implemented in both /System/Library/Frameworks/WebKit.framework/Versions/A/Frameworks/WebCore.framework/Versions/A/Frameworks/libANGLE-shared.dylib (0x7ffa46e8d980) and /Users/chancelp/Downloads/Nintendo Switch Online.app/Contents/Frameworks/Electron Framework.framework/Versions/A/Libraries/libGLESv2.dylib (0x110386ce0). One of the two will be used. Which one is undefined.
Authenticating to Nintendo Switch Online app
Authenticating to Nintendo Switch Online app
(node:10406) UnhandledPromiseRejectionWarning: ReferenceError: __filename is not defined
(Use `Nintendo Switch Online --trace-warnings ...` to show where the warning was created)
(node:10406) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). To terminate the node process on unhandled promise rejection, use the CLI flag `--unhandled-rejections=strict` (see https://nodejs.org/api/cli.html#cli_unhandled_rejections_mode). (rejection id: 2)
(node:10406) UnhandledPromiseRejectionWarning: ReferenceError: __filename is not defined
(node:10406) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). To terminate the node process on unhandled promise rejection, use the CLI flag `--unhandled-rejections=strict` (see https://nodejs.org/api/cli.html#cli_unhandled_rejections_mode). (rejection id: 4)
(node:10406) UnhandledPromiseRejectionWarning: ReferenceError: __filename is not defined
(node:10406) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). To terminate the node process on unhandled promise rejection, use the CLI flag `--unhandled-rejections=strict` (see https://nodejs.org/api/cli.html#cli_unhandled_rejections_mode). (rejection id: 5)
(node:10406) UnhandledPromiseRejectionWarning: ReferenceError: __filename is not defined
(node:10406) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). To terminate the node process on unhandled promise rejection, use the CLI flag `--unhandled-rejections=strict` (see https://nodejs.org/api/cli.html#cli_unhandled_rejections_mode). (rejection id: 6)
(node:10406) UnhandledPromiseRejectionWarning: ReferenceError: __filename is not defined
(node:10406) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). To terminate the node process on unhandled promise rejection, use the CLI flag `--unhandled-rejections=strict` (see https://nodejs.org/api/cli.html#cli_unhandled_rejections_mode). (rejection id: 7)
^C
Saving session...
...copying shared history...
...saving history...truncating history files...
...completed.

[Process completed]

This is running on macOS Ventura (M1 MBA, build 22A5321d) and splatnet2statink runs just fine under the same curcumstances.
This was running just fine before the update

Presence server event streams

This can be used by providing the event stream URL. Automatically upgrading to server-sent events is supported and can be enabled by setting NXAPI_PRESENCE_SSE=1; this is not enabled by default due to issues with handling errors emitted by eventsource as it does not provide the original Error object emitted by Node.js APIs that nxapi expects.

Nintendo Switch Online app v2.5.0 (01/03/2023)

Release notes (https://www.nintendo.co.uk/-1520024.html):

  • Updated the contents of some Splatoon 3 widgets for Android.
  • Splatoon 3 widgets can now also be used on the lock screen in iOS 16.
  • Various other small changes have also been made.
In-app announcement (iOS):

Thank you for using the Nintendo Switch Online app.

You can now update the app to Ver. 2.5.0.

Please see below for a list of version changes.

  • Splatoon 3 widgets can now also be used on the lock screen in iOS 16.
  • Various other small changes have also been made.

We hope you continue to enjoy the Nintendo Switch Online app.

{
    "announcementId": 151,
    "priority": 0,
    "forceDisplayEndDate": 253402300799,
    "distributionDate": 1677722400,
    "title": "Ver. 2.5.0 update announcement",
    "description": "Thank you for using the Nintendo Switch Online app.\r\n \r\nYou can now update the app to Ver. 2.5.0.\r\n\r\nPlease see below for a list of version changes.\r\n \r\n- Splatoon 3 widgets can now also be used on the lock screen in iOS 16.\r\n- Various other small changes have also been made.\r\n \r\n---\r\n \r\nWe hope you continue to enjoy the Nintendo Switch Online app."
}
In-app announcement (Android):

Thank you for using the Nintendo Switch Online app.

You can now update the app to Ver. 2.5.0.

Please see below for a list of version changes.

  • Updated the contents of some Splatoon 3 widgets.
  • Various other small changes have also been made.

We hope you continue to enjoy the Nintendo Switch Online app.

{
    "announcementId": 152,
    "priority": 0,
    "forceDisplayEndDate": 253402300799,
    "distributionDate": 1677722400,
    "title": "Ver. 2.5.0 update announcement",
    "description":"Thank you for using the Nintendo Switch Online app.\r\n \r\nYou can now update the app to Ver. 2.5.0.\r\n\r\nPlease see below for a list of version changes.\r\n \r\n- Updated the contents of some Splatoon 3 widgets.\r\n- Various other small changes have also been made.\r\n \r\n---\r\n \r\nWe hope you continue to enjoy the Nintendo Switch Online app."
}

403 forbidden error SplatNet3Monitor

Immediately when chill season started the splatoon 3 rich presence monitor broke entirely and keeps recieving 403 errors. Not sure if it's an app being outdated issue or if nintendo broke it.

add Sky: Children of the Light

Title name

Sky: Children of the Light

Publisher

thatgamecompany Inc

Title IDs

0100C52011460000

Other information

no changes

Review checklist

  • No other open issues related to this title exist (if any issues do exist, add a comment/reaction to those instead of opening a new issue)
  • I am requesting a custom Discord application for this title - this title is a very popular game and/or has high ratings, is currently available for purchase (or will be soon) in most Nintendo eShop regions, and it would be useful for a number of users to have it's own Discord application (I don't have any strict guidelines for which titles should have custom Discord applications - tick if you think the title should have it's own Discord application - I just want to keep the list short so I don't have to create 100s of Discord applications)

Taiko no Tatsujin: Rhythm Festival

Title name

Taiko no Tatsujin: Rhythm Festival

Publisher

BANDAI NAMCO Entertainment

Title IDs

01006b0016ad6000 Taiko no Tatsujin: Rhythm Festival

Other information

no change

Review checklist

  • No other open issues related to this title exist (if any issues do exist, add a comment/reaction to those instead of opening a new issue)
  • I am requesting a custom Discord application for this title - this title is a very popular game and/or has high ratings, is currently available for purchase (or will be soon) in most Nintendo eShop regions, and it would be useful for a number of users to have it's own Discord application (I don't have any strict guidelines for which titles should have custom Discord applications - tick if you think the title should have it's own Discord application - I just want to keep the list short so I don't have to create 100s of Discord applications)

Nintendo Switch Online app v2.1.1 (18/05/2022)

Release notes (https://www.nintendo.co.uk/-1520024.html):

  • Various issues are now resolved.
  • A bug which caused game-specific services to not be displayed on some devices has been fixed (for Android only).
In-app announcement (Android):

Thank you for using the Nintendo Switch Online app.

You can now update the app to Ver. 2.1.1.

Please see below for a list of version changes.

  • A bug which caused game-specific services to not be displayed on some devices has been fixed.

We hope you continue to enjoy the Nintendo Switch Online app.

{
    "announcementId": 92,
    "priority": 0,
    "forceDisplayEndDate": 253402300799,
    "distributionDate": 1653271200,
    "title": "Ver. 2.1.1 update announcement",
    "description": "Thank you for using the Nintendo Switch Online app.\r\n \r\nYou can now update the app to Ver. 2.1.1.\r\n\r\nPlease see below for a list of version changes.\r\n \r\n- A bug which caused game-specific services to not be displayed on some devices has been fixed.\r\n \r\n---\r\n \r\nWe hope you continue to enjoy the Nintendo Switch Online app."
}

No in-app announcement for iOS.

No API changes have been made, and f tokens generated with v2.0.0 are still accepted. As of 25/05/2022 v2.0.0 and v2.1.0 can still access the API.


From https://www.nintendo.co.jp/support/switch/nintendo_switch_online/app/index.html:

iOS版アプリをご利用のお客様へ

2022年夏ごろに、iOS版『Nintendo Switch Online』アプリのアップデートを実施予定です。このアップデートで動作環境を「iOSバージョン14.0以降」に変更します。

「iOSバージョン13以前」の端末ではアプリがご利用いただけなくなりますので、ご注意ください。

Translation:

For customers using the iOS version of the app

The "Nintendo Switch Online" app for iOS will be updated around the summer of 2022. Change the operating environment to "iOS version 14.0 or later" with this update.

Please note that the app will not be available on iOS version 13 or earlier devices.

So.... the app will definitely be updated soon (most likely before Splatoon 3 is released), it won't affect nxapi or anything else using the API (probably?), and will drop support for iOS 12-13 (which aren't that old...).

In-app announcement (iOS):

Thank you for using the Nintendo Switch Online app.

Some system requirement changes are planned to be implemented in the app as part of an update that will be released in summer 2022.

You will become unable to use the Nintendo Switch Online app if your device does not meet the new system requirements.

■ Updated system requirements

iPhone/iPad/iPod touch running iOS version 14.0 or later

Please note that it may sometimes take a little while before the newest OS version is supported.

■ How to check your OS version

Open your device's settings, then select "General", followed by "About". The OS version will be displayed under "Software Version".

Note: The exact option names and locations may change depending on the device you're using.


We hope you continue to enjoy the Nintendo Switch Online app.

{
    "announcementId": 101,
    "priority": 0,
    "forceDisplayEndDate": 253402300799,
    "distributionDate": 1655776800,
    "title": "[Important] System requirement changes",
    "description": "Thank you for using the Nintendo Switch Online app.\r\n\r\nSome system requirement changes are planned to be implemented in the app as part of an update that will be released in summer 2022.\r\n\r\nYou will become unable to use the Nintendo Switch Online app if your device does not meet the new system requirements.\r\n\r\n■ Updated system requirements\r\n\r\niPhone/iPad/iPod touch running iOS version 14.0 or later \r\n\r\nPlease note that it may sometimes take a little while before the newest OS version is supported.\r\n\r\n■ How to check your OS version\r\n\r\nOpen your device's settings, then select \"General\", followed by \"About\". The OS version will be displayed under \"Software Version\".\r\n\r\nNote: The exact option names and locations may change depending on the device you're using.\r\n\r\n---\r\n\r\nWe hope you continue to enjoy the Nintendo Switch Online app."
}
Devices that will no longer be able to use the app
  • iPhone 5s
  • iPhone 6/6 Plus
  • iPad Air
  • iPad mini 2
  • iPad mini 3
  • iPod touch (6th generation)

API client library and storage providers

Add complete wrappers for the API clients, similar to the CoralUser class used internally:

  • Automatically handle caching data
  • Automatically handle expiring the API client if not used for the normal duration of the access token
  • Automatically handle recreating the API client if remote configuration data changes when the token is renewed
  • Automatically handle sending additional requests to appear like the official app
  • Use a storage provider to automatically handle getting/updating cached tokens

Storage providers

Add a storage provider interface implemented by JS library dependents for token management with API client wrappers.

Make a default storage provider that uses a separate directory for each user and use that with the app/cli. (Users can then be removed just by deleting that directory.)

Example

import { addUserAgent, LocalStorageProvider, Storage } from 'nxapi';
import { CoralUser } from 'nxapi/coral';

addUserAgent('my-project/1.0.0 (+https://github.com/...)');

const storage = await Storage.create(LocalStorageProvider, new URL('../data', import.meta.url));
const coral = await CoralUser.create(storage, 'naid');

// Get friends list
// If updated in the last 30s the cached data is returned
const friends = await coral.getFriends();

https://github.com/samuelthomas2774/splatoon3-replay-lookup is using the client added in 788083b. The API will change.

Warning via CLI (Windows, Git Bash)

Figured I'd mention in case others run into this and load your history w/ unidentified-script requests...if not just me (I started the issue before realizing it's only Git Bash). Will have to look into a possible solution later... For now, I'll just use PowerShell or Command Prompt.


nxapi/src/cli.ts

Lines 57 to 58 in fe725f9

} else if (!process.stdout.isTTY) {
console.warn('[warn] The nxapi command is not running in a terminal. If using the nxapi command in a script or other program, the NXAPI_USER_AGENT environment variable should be set. See ' + USER_AGENT_INFO_URL + '.');


Git Bash:

$ nxapi --version
[warn] The nxapi command is not running in a terminal. If using the nxapi command in a script or other program, the NXAPI_USER_AGENT environment variable should be set. See https://gitlab.fancy.org.uk/samuel/nxapi#user-agent-strings.
1.2.0

✔️ PowerShell:

PS D:\> nxapi --version
1.2.0

✔️ Command Prompt:

D:\>nxapi --version
1.2.0

Discord server

I've set up a Discord server for support for nxapi and anything to do with Nintendo's apps/app APIs here:

https://discord.gg/4D82rFkXRv

Anyone interested in Nintendo's smart device app APIs is welcome to join, you don't have to be using nxapi.

Updates to the Nintendo Switch Online and Nintendo Switch Parental Controls will be posted here automatically (via iTunes, Google Play and Nintendo's JP/EU websites): https://discord.com/channels/998657768594608138/998659415462916166. (This is also published to https://github.com/samuelthomas2774/nintendo-app-versions.)

windows scroll bar hell

i put this on the discord but i thought it'd be a good idea to put it here to make tracking of this issue easier.

on windows, game-specific services have alot of scrollbars that look super ugly in use, for example:
image

as mentioned by two people, using css would probably make it look alot better.


also a slight suggestion, would hiding the "file, edit, etc" bar be a possibility? it seems quite unnecessary to be there if im honest, and removing it shouldnt be too much of a hassle.

Pokemon Unite

Title name

Pokémon UNITE

Publisher

The Pokémon Company

Title IDs

0100939011ed4000 Pokémon UNITE

Other information

From what I could find, apparently there's only one global version, therefore just one ID.

Review checklist

  • No other open issues related to this title exist (if any issues do exist, add a comment/reaction to those instead of opening a new issue)
  • I am requesting a custom Discord application for this title - this title is a very popular game and/or has high ratings, is currently available for purchase (or will be soon) in most Nintendo eShop regions, and it would be useful for a number of users to have it's own Discord application (I don't have any strict guidelines for which titles should have custom Discord applications - tick if you think the title should have it's own Discord application - I just want to keep the list short so I don't have to create 100s of Discord applications)

Nintendo Switch Online app v2.4.0 (01/12/2022)

Release notes (https://www.nintendo.co.uk/-1520024.html):

  • Added X Battle support to Splatoon 3 widgets.
  • The Android 13 app-specific language settings can now be used.
  • Various other small changes have also been made.
In-app announcement (iOS):

Thank you for using the Nintendo Switch Online app.

You can now update the app to Ver. 2.4.0.

Please see below for a list of version changes.

  • Added X Battle support to Splatoon 3 widgets.
  • Various other small changes have also been made.

We hope you continue to enjoy the Nintendo Switch Online app.

{
    "announcementId": 141,
    "priority": 0,
    "forceDisplayEndDate": 253402300799,
    "distributionDate": 1669946400,
    "title": "Ver. 2.4.0 update announcement",
    "description": "Thank you for using the Nintendo Switch Online app.\r\n \r\nYou can now update the app to Ver. 2.4.0.\r\n\r\nPlease see below for a list of version changes.\r\n \r\n- Added X Battle support to Splatoon 3 widgets.\r\n- Various other small changes have also been made.\r\n \r\n---\r\n \r\nWe hope you continue to enjoy the Nintendo Switch Online app."
}
In-app announcement (Android):

Thank you for using the Nintendo Switch Online app.

You can now update the app to Ver. 2.4.0.

Please see below for a list of version changes.

  • Added X Battle support to Splatoon 3 widgets.
  • The Android 13 app-specific language settings can now be used.
  • Various other small changes have also been made.

We hope you continue to enjoy the Nintendo Switch Online app.

{
    "announcementId": 142,
    "priority": 0,
    "forceDisplayEndDate": 253402300799,
    "distributionDate": 1669946400,
    "title": "Ver. 2.4.0 update announcement",
    "description": "Thank you for using the Nintendo Switch Online app.\r\n \r\nYou can now update the app to Ver. 2.4.0.\r\n\r\nPlease see below for a list of version changes.\r\n \r\n- Added X Battle support to Splatoon 3 widgets.\r\n- The Android 13 app-specific language settings can now be used.\r\n- Various other small changes have also been made.\r\n \r\n---\r\n \r\nWe hope you continue to enjoy the Nintendo Switch Online app."
}

Other changes:

Option to hide dock icon on macOS

Self-explanitory, you can do this manually by changing a file in info.plist in the compiled application, but I'd like an option to do this.

error everytime i open

image_2022-07-29_171240555

it worked fine up until the update and now i get that error everytime i open the application

Sonic frontiers add

Title name

Sonic Frontiers

Publisher

SEGA

Title IDs

01004AD014BF0000

Other information

no change

Review checklist

  • No other open issues related to this title exist (if any issues do exist, add a comment/reaction to those instead of opening a new issue)
  • I am requesting a custom Discord application for this title - this title is a very popular game and/or has high ratings, is currently available for purchase (or will be soon) in most Nintendo eShop regions, and it would be useful for a number of users to have it's own Discord application (I don't have any strict guidelines for which titles should have custom Discord applications - tick if you think the title should have it's own Discord application - I just want to keep the list short so I don't have to create 100s of Discord applications)

User agent format when connecting to s2s API

Can you help me figure out why the "version" part of many of the user agents coming from your application here seem to be randomly generated numbers? This isn't what I'd expect to see or how stuff should be set up.

image

Thanks!

Pokemon Scarlet/Violet

Title name

Pokémon Scarlet / Pokémon Violet

Publisher

Nintendo

Title IDs

0100A3D008C5C000 Pokémon Scarlet
01008F6008C5E000 Pokémon Violet

Other information

Didn't want to make two issues so I just included both titles in the title name section but obviously they are separate.

Review checklist

  • No other open issues related to this title exist (if any issues do exist, add a comment/reaction to those instead of opening a new issue)
  • I am requesting a custom Discord application for this title - this title is a very popular game and/or has high ratings, is currently available for purchase (or will be soon) in most Nintendo eShop regions, and it would be useful for a number of users to have it's own Discord application (I don't have any strict guidelines for which titles should have custom Discord applications - tick if you think the title should have it's own Discord application - I just want to keep the list short so I don't have to create 100s of Discord applications)

Nintendo Switch online

Title name

Jessicaaja

Publisher

Jessicaajaelu#3602

Title IDs

Nintendo Switch Account name jessicaajaelu
The game like ok.

Other information

Hi like Nintendo Switch game like good news thanks love.

Review checklist

  • No other open issues related to this title exist (if any issues do exist, add a comment/reaction to those instead of opening a new issue)
  • I am requesting a custom Discord application for this title - this title is a very popular game and/or has high ratings, is currently available for purchase (or will be soon) in most Nintendo eShop regions, and it would be useful for a number of users to have it's own Discord application (I don't have any strict guidelines for which titles should have custom Discord applications - tick if you think the title should have it's own Discord application - I just want to keep the list short so I don't have to create 100s of Discord applications)

AbortError$1 errors

hello! this error has been happening for about 2-3 days now for me

i have one saying AbortError$1 updating presence monitor and the other AbortError$1 restoring monitor for user #####
Screenshot 2022-12-06 at 5 41 37 PM

i'm using the mac electron app

QR code scanning support?

First and foremost, thanks so much for the very convenient and versatile application for interacting NSO's services on desktops! To my unluckiness, I couldn't for the life of me get the NSO app to boot up on my phone, so my stumbling upon your tool has nearly made my day! Works like a charm in my Linux! I really, really appreciate such a kind soul like you to come front and take matters in your own hands. 💝

Now, exploring through my Splatnet 3 interface, I notice it has a option for QR code capture. As obvious, it's completely nonfunctional and unsupported. I was wondering, if that's possible, if you could please try implement support of it? I'm sure it's doable.

Splatoon's official Twitter has already upload a QR code to scan, though only one so far, so that might be pretty low priority right now for you.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.