This is exported as
default
.
Moon API client. An instance of this class should not be created directly; instead one of the createWith*
static methods should be used.
Most of this API is intentionally undocumented. Read the source code at src/api/moon.ts, src/common/auth/moon.ts and src/cli/pctl for examples of using this API. If you need any help using this API ask in #moon on Discord.
You should review HTTP captures of the Nintendo Switch Parental Controls app and attempt to match the behaviour of Nintendo's official app.
Authenticate to the Moon API using a Nintendo Account session token.
This function should not be called often. If your project will create a new MoonApi object again for the same user before the Moon authentication token expires (usually after 15 minutes), you must store the
data
object this returns and useMoonApi.createWithSavedToken
.
import MoonApi, { MoonAuthData } from 'nxapi/moon';
const na_session_token: string;
const {moon, data} = await MoonApi.createWithSessionToken(na_session_token);
// moon instanceof MoonApi
// data is a plain object of type MoonAuthData
// data should be saved and reused
Create a MoonApi instance using cached data from MoonApi.createWithSessionToken
or MoonApi.loginWithSessionToken
.
import MoonApi, { MoonAuthData } from 'nxapi/moon';
const auth_data: MoonAuthData;
const moon = MoonApi.createWithSavedToken(auth_data);
// moon instanceof MoonApi
Renew the Moon authentication token. This should be called if any API requests throw a token expired error. This updates the token of the MoonApi
object and returns a new MoonAuthData
object.
import MoonApi, { MoonAuthData } from 'nxapi/moon';
const moon: MoonApi;
const na_session_token: string;
const data = await moon.renewToken(na_session_token);
// data is a plain object of type MoonAuthData
// data should be saved and reused
Function called when a 401 Unauthorized
response is received from the API.
This function should either call MoonApi.loginWithSessionToken
to renew the token, then return the MoonAuthData
object, or call MoonApi.renewToken
.
import MoonApi, { MoonAuthData } from 'nxapi/moon';
import { Response } from 'node-fetch';
const moon = MoonApi.createWithSavedToken(...);
let auth_data: MoonAuthData;
const na_session_token: string;
moon.onTokenExpired = async (error: MoonError, response: Response) => {
const data = await MoonApi.loginWithSessionToken(na_session_token);
// data is a plain object of type MoonAuthData
// data should be saved and reused
auth_data = data;
return data;
};
nxapi/moon
exports all API types from src/api/moon-types.ts.