The SDK can be installed with either npm, pnpm, bun or yarn package managers.
npm add @steamsets/client-ts
pnpm add @steamsets/client-ts
bun add @steamsets/client-ts
yarn add @steamsets/client-ts zod
# Note that Yarn does not install peer dependencies automatically. You will need
# to install zod as shown above.
import { SteamSets } from "@steamsets/client-ts";
const steamSets = new SteamSets({
token: "<YOUR_BEARER_TOKEN_HERE>",
});
async function run() {
const result = await steamSets.account.bookmarkBadge({
badgeId: "bdg_123",
bookmark: true,
});
console.log(result);
}
run();
Available methods
- bookmarkBadge - Bookmark or unbookmark a badge
- createConnection - Create OAuth or domain connection
- createDeveloperApp - Create developer application
- deleteConnection - Delete OAuth or domain connection
- deleteDeveloperApp - Delete developer application
- deleteImages - Delete uploaded images
- deleteSession - Delete user session
- getBadgeStats - Get account badge statistics
- getDataPoints - Get account data points for charts
- getInfo - Get account profile information
- getMeta - Get account metadata
- getSession - Get user session information
- getSettings - Get account settings
- listApps - List account owned apps
- listBadgeBookmarks - List bookmarked badges
- listBadges - List account badges
- listFriends - List account friends
- listImages - List uploaded images
- listLeaderboardHistory - Get leaderboard history
- listOwnedBadges - List owned badges
- login - Login with Steam
- logout - Logout from session
- queueUpdate - Queue account update
- reconnectConnection - Reconnect OAuth connection
- refreshSession - Refresh session token
- sendEmailVerification - Send email verification
- subscribeEmail - Subscribe to email notifications
- updateConnection - Update OAuth connection
- updateDeveloperApp - Update developer application
- updateImages - Update account images
- updateRole - Update account role
- updateSettings - Update account settings
- updateVanity - Update account vanity URL
- uploadImages - Upload images
- verifyConnection - Verify OAuth connection
- verifyEmail - Verify email address
- listBadges - List app badges
- search - Search badges
- suggestTags - Suggest badge tag
- listPrices - List badge prices
- listTags - List badge tags
- tag - Tag a badge
- getAccount - Get account leaderboard
- getAccountsMeta - Get accounts leaderboard metadata
- getGroup - Get group leaderboard
- getGroupsMeta - Get groups leaderboard metadata
- getLowestRanks - Get lowest ranked accounts
- previewAccountRank - Preview account rank
- list - List leaderboard badges
- get - List available locations
- list - List staff members
- get - Get platform statistics
Some of the endpoints in this SDK support retries. If you use the SDK without any configuration, it will fall back to the default retry strategy provided by the API. However, the default retry strategy can be overridden on a per-operation basis, or across the entire SDK.
To change the default retry strategy for a single API call, simply provide a retryConfig object to the call:
import { SteamSets } from "@steamsets/client-ts";
const steamSets = new SteamSets({
token: "<YOUR_BEARER_TOKEN_HERE>",
});
async function run() {
const result = await steamSets.account.bookmarkBadge({
badgeId: "bdg_123",
bookmark: true,
}, {
retries: {
strategy: "backoff",
backoff: {
initialInterval: 1,
maxInterval: 50,
exponent: 1.1,
maxElapsedTime: 100,
},
retryConnectionErrors: false,
},
});
console.log(result);
}
run();
If you'd like to override the default retry strategy for all operations that support retries, you can provide a retryConfig at SDK initialization:
import { SteamSets } from "@steamsets/client-ts";
const steamSets = new SteamSets({
retryConfig: {
strategy: "backoff",
backoff: {
initialInterval: 1,
maxInterval: 50,
exponent: 1.1,
maxElapsedTime: 100,
},
retryConnectionErrors: false,
},
token: "<YOUR_BEARER_TOKEN_HERE>",
});
async function run() {
const result = await steamSets.account.bookmarkBadge({
badgeId: "bdg_123",
bookmark: true,
});
console.log(result);
}
run();
SteamSetsError
is the base class for all HTTP error responses. It has the following properties:
Property | Type | Description |
---|---|---|
error.message |
string |
Error message |
error.httpMeta.response |
Response |
HTTP response. Access to headers and more. |
error.httpMeta.request |
Request |
HTTP request. Access to headers and more. |
error.data$ |
Optional. Some errors may contain structured data. See Error Classes. |
import { SteamSets } from "@steamsets/client-ts";
import * as errors from "@steamsets/client-ts/models/errors";
const steamSets = new SteamSets({
token: "<YOUR_BEARER_TOKEN_HERE>",
});
async function run() {
try {
const result = await steamSets.account.bookmarkBadge({
badgeId: "bdg_123",
bookmark: true,
});
console.log(result);
} catch (error) {
// The base class for HTTP error responses
if (error instanceof errors.SteamSetsError) {
console.log(error.message);
console.log(error.httpMeta.response.status);
console.log(error.httpMeta.response.headers);
console.log(error.httpMeta.request);
// Depending on the method different errors may be thrown
if (error instanceof errors.ErrorModel) {
console.log(error.data$.dollarSchema); // string
console.log(error.data$.detail); // string
console.log(error.data$.errors); // ErrorDetail[]
console.log(error.data$.instance); // string
console.log(error.data$.status); // number
}
}
}
}
run();
Primary errors:
SteamSetsError
: The base class for HTTP error responses.ErrorModel
: Bad Request. *
Less common errors (6)
Network errors:
ConnectionError
: HTTP client was unable to make a request to a server.RequestTimeoutError
: HTTP request timed out due to an AbortSignal signal.RequestAbortedError
: HTTP request was aborted by the client.InvalidRequestError
: Any input used to create a request is invalid.UnexpectedClientError
: Unrecognised or unexpected error.
Inherit from SteamSetsError
:
ResponseValidationError
: Type mismatch between the data returned from the server and the structure expected by the SDK. Seeerror.rawValue
for the raw value anderror.pretty()
for a nicely formatted multi-line string.
* Check the method documentation to see if the error is applicable.
You can override the default server globally by passing a server index to the serverIdx: number
optional parameter when initializing the SDK client instance. The selected server will then be used as the default on the operations that use it. This table lists the indexes associated with the available servers:
# | Server | Description |
---|---|---|
0 | https://api.steamsets.com |
|
1 | http://localhost:7388 |
import { SteamSets } from "@steamsets/client-ts";
const steamSets = new SteamSets({
serverIdx: 1,
token: "<YOUR_BEARER_TOKEN_HERE>",
});
async function run() {
const result = await steamSets.account.bookmarkBadge({
badgeId: "bdg_123",
bookmark: true,
});
console.log(result);
}
run();
The default server can also be overridden globally by passing a URL to the serverURL: string
optional parameter when initializing the SDK client instance. For example:
import { SteamSets } from "@steamsets/client-ts";
const steamSets = new SteamSets({
serverURL: "http://localhost:7388",
token: "<YOUR_BEARER_TOKEN_HERE>",
});
async function run() {
const result = await steamSets.account.bookmarkBadge({
badgeId: "bdg_123",
bookmark: true,
});
console.log(result);
}
run();
The TypeScript SDK makes API calls using an HTTPClient
that wraps the native
Fetch API. This
client is a thin wrapper around fetch
and provides the ability to attach hooks
around the request lifecycle that can be used to modify the request or handle
errors and response.
The HTTPClient
constructor takes an optional fetcher
argument that can be
used to integrate a third-party HTTP client or when writing tests to mock out
the HTTP client and feed in fixtures.
The following example shows how to use the "beforeRequest"
hook to to add a
custom header and a timeout to requests and how to use the "requestError"
hook
to log errors:
import { SteamSets } from "@steamsets/client-ts";
import { HTTPClient } from "@steamsets/client-ts/lib/http";
const httpClient = new HTTPClient({
// fetcher takes a function that has the same signature as native `fetch`.
fetcher: (request) => {
return fetch(request);
}
});
httpClient.addHook("beforeRequest", (request) => {
const nextRequest = new Request(request, {
signal: request.signal || AbortSignal.timeout(5000)
});
nextRequest.headers.set("x-custom-header", "custom value");
return nextRequest;
});
httpClient.addHook("requestError", (error, request) => {
console.group("Request Error");
console.log("Reason:", `${error}`);
console.log("Endpoint:", `${request.method} ${request.url}`);
console.groupEnd();
});
const sdk = new SteamSets({ httpClient: httpClient });
This SDK supports the following security scheme globally:
Name | Type | Scheme |
---|---|---|
token |
http | HTTP Bearer |
To authenticate with the API the token
parameter must be set when initializing the SDK client instance. For example:
import { SteamSets } from "@steamsets/client-ts";
const steamSets = new SteamSets({
token: "<YOUR_BEARER_TOKEN_HERE>",
});
async function run() {
const result = await steamSets.account.bookmarkBadge({
badgeId: "bdg_123",
bookmark: true,
});
console.log(result);
}
run();
The SDK can be installed with either npm, pnpm, bun or yarn package managers.
npm add @steamsets/client-ts
pnpm add @steamsets/client-ts
bun add @steamsets/client-ts
yarn add @steamsets/client-ts
For supported JavaScript runtimes, please consult RUNTIMES.md.
All the methods listed above are available as standalone functions. These functions are ideal for use in applications running in the browser, serverless runtimes or other environments where application bundle size is a primary concern. When using a bundler to build your application, all unused functionality will be either excluded from the final bundle or tree-shaken away.
To read more about standalone functions, check FUNCTIONS.md.
Available standalone functions
accountBookmarkBadge
- Bookmark or unbookmark a badgeaccountCreateConnection
- Create OAuth or domain connectionaccountCreateDeveloperApp
- Create developer applicationaccountDeleteConnection
- Delete OAuth or domain connectionaccountDeleteDeveloperApp
- Delete developer applicationaccountDeleteImages
- Delete uploaded imagesaccountDeleteSession
- Delete user sessionaccountGetBadgeStats
- Get account badge statisticsaccountGetDataPoints
- Get account data points for chartsaccountGetInfo
- Get account profile informationaccountGetMeta
- Get account metadataaccountGetSession
- Get user session informationaccountGetSettings
- Get account settingsaccountListApps
- List account owned appsaccountListBadgeBookmarks
- List bookmarked badgesaccountListBadges
- List account badgesaccountListFriends
- List account friendsaccountListImages
- List uploaded imagesaccountListLeaderboardHistory
- Get leaderboard historyaccountListOwnedBadges
- List owned badgesaccountLogin
- Login with SteamaccountLogout
- Logout from sessionaccountQueueUpdate
- Queue account updateaccountReconnectConnection
- Reconnect OAuth connectionaccountRefreshSession
- Refresh session tokenaccountSendEmailVerification
- Send email verificationaccountSubscribeEmail
- Subscribe to email notificationsaccountUpdateConnection
- Update OAuth connectionaccountUpdateDeveloperApp
- Update developer applicationaccountUpdateImages
- Update account imagesaccountUpdateRole
- Update account roleaccountUpdateSettings
- Update account settingsaccountUpdateVanity
- Update account vanity URLaccountUploadImages
- Upload imagesaccountVerifyConnection
- Verify OAuth connectionaccountVerifyEmail
- Verify email addressappsListBadges
- List app badgesbadgeSearch
- Search badgesbadgesListPrices
- List badge pricesbadgesListTags
- List badge tagsbadgesTag
- Tag a badgebadgeSuggestTags
- Suggest badge tagleaderboardGetAccount
- Get account leaderboardleaderboardGetAccountsMeta
- Get accounts leaderboard metadataleaderboardGetGroup
- Get group leaderboardleaderboardGetGroupsMeta
- Get groups leaderboard metadataleaderboardGetLowestRanks
- Get lowest ranked accountsleaderboardPreviewAccountRank
- Preview account rankleaderboardsList
- List leaderboard badgeslocationGet
- List available locationsstaffList
- List staff membersstatsGet
- Get platform statistics
You can setup your SDK to emit debug logs for SDK requests and responses.
You can pass a logger that matches console
's interface as an SDK option.
Warning
Beware that debug logging will reveal secrets, like API tokens in headers, in log messages printed to a console or files. It's recommended to use this feature only during local development and not in production.
import { SteamSets } from "@steamsets/client-ts";
const sdk = new SteamSets({ debugLogger: console });
This SDK is in beta, and there may be breaking changes between versions without a major version update. Therefore, we recommend pinning usage to a specific package version. This way, you can install the same version each time without breaking changes unless you are intentionally looking for the latest version.
While we value open-source contributions to this SDK, this library is generated programmatically. Any manual changes added to internal files will be overwritten on the next generation. We look forward to hearing your feedback. Feel free to open a PR or an issue with a proof of concept and we'll do our best to include it in a future release.