@sp-api-sdk/auth

Amazon Selling Partner API authentication package

npm version XO code style

npm install @sp-api-sdk/auth

These constructor options can be passed using environment variables:

Property Name Environement variable
clientId LWA_CLIENT_ID
clientSecret LWA_CLIENT_SECRET
refreshToken LWA_REFRESH_TOKEN

Some APIs require grantless authentication, which is done by passing scopes, instead of a refresh token. The available scopes are exposed in the AuthorizationScope enum from this library.

import { SellingPartnerApiAuth, AuthorizationScope } from "@sp-api-sdk/auth";
import { AuthorizationApiClient } from "@sp-api-sdk/authorization-api-v1";

const auth = new SellingPartnerApiAuth({
clientId: "",
clientSecret: "",
scopes: [AuthorizationScope.NOTIFICATIONS, AuthorizationScope.CLIENT_CREDENTIAL_ROTATION], // Or choose the only ones you need
});

const accessToken = await auth.getAccessToken();

getAccessToken() caches the access token in memory for its whole duration, it will only request a new token if the current one has expired.

You can subclass SellingPartnerApiAuth to add custom logic, for example, caching the access token in a store.

import { SellingPartnerApiAuth } from "@sp-api-sdk/auth";

import { storeToken, getToken } from "./token-store";

class StoredSellingPartnerApiAuth extends SellingPartnerApiAuth {
async getAccessToken() {
let token = await getToken();
if (token) {
return token;
}

token = await super.getAccessToken();
await storeToken(token, { ttl: this.accessTokenExpiration });

return token;
}
}

MIT

    ╚⊙ ⊙╝
╚═(███)═╝
╚═(███)═╝
╚═(███)═╝
╚═(███)═╝
╚═(███)═╝
╚═(███)═╝

Enumerations

AuthorizationScope

Classes

SellingPartnerApiAuth
SellingPartnerApiAuthError

Interfaces

SellingPartnerAuthParameters