TypeScript — getting started
Install
npm install @babelforce/manager-sdk
The package is ESM and ships with TypeScript types. Node 18+ (for global fetch).
Connect
import { ManagerClient } from "@babelforce/manager-sdk";
const mgr = await ManagerClient.connect({
auth: { kind: "clientCredentials", clientId, clientSecret },
// baseUrl defaults to https://services.babelforce.com
});
See Authentication for all auth modes — Authorization Code + PKCE,
client-credentials, bearer, and password-grant — and for pointing the SDK at a different baseUrl.
List users (auto-paginated)
list() returns an async iterator that pages for you:
for await (const user of mgr.users.list()) {
console.log(user.id, user.email, user.enabled);
}
// or collect everything:
const all = await mgr.users.listAll();
Create / enable / disable / delete
const created = await mgr.users.create({
email: "new.user@acme.com",
roles: [],
});
await mgr.users.enable(["new.user@acme.com"]);
await mgr.users.disable(["new.user@acme.com"]);
await mgr.users.delete(["new.user@acme.com"]);
Error handling
Any non-2xx response throws a ManagerApiError carrying the status, API error code, and body:
import { ManagerApiError } from "@babelforce/manager-sdk";
try {
await mgr.users.create({ email: "dup@acme.com", roles: [] });
} catch (err) {
if (err instanceof ManagerApiError) {
console.error(err.status, err.code, err.message);
}
}
Custom base URL & fetch
const mgr = await ManagerClient.connect({
baseUrl: "https://acme.babelforce.com", // per-customer host override
auth: { kind: "bearer", token },
fetch: myInstrumentedFetch, // proxies, retries, tracing
});