Both clients wrap the same /v1 control plane. Standalone service classes over a shared core, typed end to end, with a uniform error type.
TypeScript
Zero-dependency client over fetch. Works on Node, Bun, and the edge.
import { GatekeeperCore, AuthService, TenantsService } from '@orkait/sdk';
const core = new GatekeeperCore({ baseUrl: 'https://gate.example.com' });
const auth = new AuthService(core);
const session = await auth.signup({ email, password });
core.setToken(session.accessToken);
const tenant = await new TenantsService(core).create('Acme');
Python
httpx-based, typed with TypedDict. Python 3.9+.
from gatekeeper import GatekeeperCore, AuthService, TenantsService
core = GatekeeperCore("https://gate.example.com")
core.set_token(session["accessToken"])
tenant = TenantsService(core).create("Acme")
Identity & tenancy
auth, MFA, OAuth, tenants, members, roles & permissions
Keys & metering
API keys, usage check-and-record, quotas
Billing
plans, subscriptions, entitlements, invoice preview, payment providers
Eventing & audit
webhooks, audit log + export, rate-limit checks
Platform
service accounts, background jobs, cross-tenant billing overrides
Typed errors
every failure is a GatekeeperError with status and code
Pick a language from the sidebar for the full per-service reference.