Skip to main content

SDK and API coverage

Use this page when you are choosing how to integrate Switera into an application or backend service. The matrix reflects the packages that exist in the current repository and the launch API families exposed by the Switera API.

Implementation is not end-to-end validation

The 6 September 2026 live founder test verified hosted password login and PKCE, profile/session reads, metadata updates, scoped search access, and signed webhook receive/retry/replay using Go and browser TypeScript clients. It did not establish complete Auth or platform launch readiness.

A separate Python SDK pass verified twelve read operations and cross-app credential rejection; it did not validate complete Python workflow parity.

The 7 September follow-up verified browser SDK authenticator enrollment, fresh hosted TOTP login, backup-code recovery, regeneration, concurrent one-use consumption, replay rejection and login after disabling TOTP. This used a dedicated managed app with optional MFA, not builder-account MFA or mandatory enrollment. See the MFA guide.

The 19 September passkey follow-up adds the inventory read route and tests auth.listPasskeys() against real HTTP middleware, database lookup and response decoding, using fixture tokens/provider data. That contract test is not a real passkey login. Registration, login and per-key removal still require acceptance. See passkey inventory.

Realtime token issuance succeeds, but customer-browser websocket connections remain blocked by the current origin policy. Search totals and webhook delivery status reporting were corrected and live-retested on 14 September. Those fixes do not establish validation of every integration path.

Mailbox receipt/code redemption, mandatory MFA enrollment, SMS/security-key ceremonies, and social provider consent remain unverified. Additional login-attempt binding checks remain open. Package build/smoke checks are separate from successful customer journeys.

Integration paths

Integration needRecommended pathNotes
Browser or framework authentication@switera/auth plus a framework adapterHosted login, OAuth callback handling, and sessions. Other Auth helpers exist, but see the live validation limits above.
Trusted backend automationNode.js, Go, Python, PHP, Ruby, or direct RESTUse an app-scoped secret key from your backend only. Do not ship secret keys to browsers or mobile apps.
Embedded sign-in UI@switera/widgetsUse for a small hosted-auth surface inside a builder-owned app.
Mobile app authenticationReact Native, Flutter, Android, or Swift packagesMobile packages are launch scaffolds unless noted otherwise below.
AI-assisted platform operationsMCP packagesUse only in controlled developer environments with least-privilege tokens.
Unsupported language or full route coverageDirect RESTThe generated reference in docs/api-docs tracks the current backend route surface.

SDK package matrix

PackageRuntimeLaunch statusCovered surface
@switera/authBrowser TypeScriptPartial live validation; known gaps aboveOAuth2/PKCE, hosted auth redirects, session state, profile, MFA, SSO/LDAP, passkeys, OTP, magic links, invitations, metadata, privileged sessions, browser Search, current-user Feature Flags, and Realtime token helpers.
@switera/auth-reactReactAvailable; adapter E2E not repeated in this runProvider, hooks, guards, sign-in/sign-up components, user and organization components, current-user Feature Flags.
@switera/auth-nextjsNext.jsAvailable; adapter E2E not repeated in this runServer auth helpers, middleware, route protection, shared browser auth client exports.
@switera/auth-nodeNode.js serversAvailable; adapter E2E not repeated in this runExpress, Fastify, Hono, and token introspection helpers.
@switera/nodeNode.js backendVault plus workspace starter resourcesTrusted-server Vault helpers, paginated user search, organization creation/membership, and managed collection/record CRUD.
@switera/auth-svelteSvelteAvailable; adapter E2E not repeated in this runProvider, guards, signed-in/signed-out helpers, user auth state, current-user Feature Flags.
@switera/auth-vueVueAvailable; adapter E2E not repeated in this runVue auth adapter around the core browser client.
@switera/auth-angularAngularAvailable; adapter E2E not repeated in this runAngular auth service and route guards.
@switera/widgetsBrowser widgetsPartial launch supportLogin, signup, user button, and organization switcher widgets.
github.com/switera/switera-goGo backendBroad launch backend coverageUsers, organizations, auth settings, SSO, FGA, Vault, audit logs, auth hooks, managed Email, customer Webhooks, directory sync, sessions.
switeraPython backendBroad launch backend coverageUsers, organizations, auth settings, SSO, FGA, Vault, audit logs, auth hooks, managed Email, customer Webhooks, directory sync, sessions.
switera/sdkPHP backendBroad launch backend coverageUsers, organizations, auth settings, SSO, FGA, Vault, audit logs, auth hooks, managed Email, customer Webhooks, directory sync, sessions.
switeraRuby backendBroad launch backend coverageUsers, organizations, auth settings, SSO, FGA, Vault, audit logs, auth hooks, managed Email, customer Webhooks, directory sync, sessions.
com.switera:switera-javaJava backendScaffoldPackage metadata and baseline HTTP dependencies exist; route resources are not launch-complete.
Switera.NET backendScaffoldPackage metadata exists; route resources are not launch-complete.
@switera/react-nativeReact NativePartial launch supportMobile auth package scaffold with typed entrypoint.
switeraFlutter/DartScaffoldPackage metadata and mobile auth dependencies exist.
com.switera.sdkAndroid/KotlinScaffoldLibrary package metadata and mobile auth dependencies exist.
SwiteraSwiftScaffoldSwift package manifest exists.
@switera/mcp-serverMCPPartial launch supportPlatform administration helper for controlled developer environments.
@switera/mcp-contextMCPPartial launch supportEnd-user context provider for AI assistant integrations.

Product API coverage

Product areaREST APINodeGoPythonPHPRubyBrowser/framework auth SDKsNotes
Auth, sessions, hosted loginYesAuth middlewarePartialPartialPartialPartialYesBrowser/framework SDKs are the main path for end-user auth. Backend SDKs cover admin/user/session surfaces.
Users and organizationsYesPartial typed resourcesYesYesYesYesLimitedNode covers user search and workspace membership/creation. Other admin operations still use REST.
SSO and directory syncYesDirect RESTYesYesYesYesSSO login helpers onlyBackend SDKs manage provider configuration; browser SDKs start login flows.
MFA, passkeys, OTP, magic linksPartial live validationAuth middlewareLimitedLimitedLimitedLimitedOptional TOTP/recovery verified; other methods have gapsHosted TOTP and one-use backup-code recovery pass. Passkey management, inbox-backed OTP/magic links and mandatory MFA still need validation.
FGAYesDirect RESTYesYesYesYesNoBackend-only launch surface.
VaultYesYesYesYesYesYesNoBackend-only; keep key and payload workflows off browsers.
EmailYesDirect RESTYesYesYesYesNoManaged Email config, route test, workflow test-run, runtime, suppressions, and previews are backend/admin workflows.
Customer WebhooksYesDirect RESTYesYesYesYesNoBackend SDKs cover endpoints, event catalog, delivery history, replay, test sends, and emits where implemented.
BillingYesDirect RESTDirect RESTDirect RESTDirect RESTDirect RESTNoPublic docs cover the launch routes; typed SDK resources are still later work.
Storage objectsYesDirect RESTDirect RESTDirect RESTDirect RESTDirect RESTNoUse the REST API and examples until typed SDK resources land.
Managed DataYesTyped collection/record CRUDDirect RESTDirect RESTDirect RESTDirect RESTNoNode server resources accept tenant scope. Your backend must authorize the end user before using a secret key.
SearchYesDirect RESTYesYesDirect RESTDirect RESTTenant token/query helpersGo and Python cover trusted server-side indexes, documents, and queries. Browser auth SDKs cover short-lived tenant token issuance and browser-safe query.
Feature FlagsYesDirect RESTYesYesDirect RESTDirect RESTCurrent-user evaluationGo and Python cover trusted server-side flag CRUD and evaluation. Browser/framework auth SDKs evaluate flags for the signed-in user without exposing a secret app key.
RealtimeYesDirect RESTDirect RESTDirect RESTDirect RESTDirect RESTConnection/subscription token helpersBrowser auth SDKs issue signed tokens for the current user. Server-side publish SDK wrappers are still later work.
API keys and usageYesDirect RESTDirect RESTDirect RESTDirect RESTDirect RESTNoTrusted backend calls can use REST for key controls and usage rollups.

Vault key identifiers and rotation

Keep Vault operations on your trusted backend. Key creation returns both an id (UUID) and a name. Get, rotate, and delete take the UUID; encryption, signing, and tokenization take the name. Do not pass the name into a key management URL.

const key = await client.vault.createKey({ name: 'customer-documents', purpose: 'encryption' });
await client.vault.getKey(key.id);
const encrypted = await client.vault.encrypt(key.name, 'private text');
await client.vault.rotateKey(key.id);
const decrypted = await client.vault.decrypt(key.name, encrypted.ciphertext);
const text = Buffer.from(decrypted.plaintext, 'base64').toString('utf8');

The SDK encodes encryption/signing input as base64 for the REST API. Tokenization sends value and optional ttl_sec, not plaintext or ttl_seconds. Keep the complete version-prefixed ciphertext and any authenticated context; stripping the prefix or changing context prevents correct decryption.

Rotation retains earlier encrypted key material so existing ciphertext, tokens, and signatures remain usable. Disabling a key prevents use; deleting it is destructive. A rotation cannot restore key material already lost before history was retained. Java and .NET remain scaffolds, not verified production integrations.

Generated API reference

The docs repository includes a generated Markdown reference under docs/api-docs, refreshed from the backend repository's src/api/docs/swagger.json. It describes annotated API contracts; a generated entry does not establish live acceptance of that operation.

The public docs intentionally keep the machine-generated reference separate from the main navigation until operation IDs, model names, and examples are fully curated for external readers. Use the task pages first, then use the generated reference for exact route names and request/response shapes.

SDK smoke checks

The repository includes a package smoke runner for launch readiness:

scripts/smoke-sdks.sh

The runner installs and builds available JavaScript packages, imports their public entrypoints where safe, runs Go SDK tests, runs Python SDK tests in an isolated virtual environment, and checks other language packages when their toolchains are installed. Jenkins runs it with Node, Go, Python, Ruby, and PHP before image builds. Its separate quality gate also runs API/starter race tests against a disposable database, the Node Vault SDK against real API handlers, frontend checks, and a reachable-vulnerability scan.

Refresh command

From the docs repository root, point the refresh script at the backend's generated OpenAPI file:

scripts/refresh-api-docs.sh ../switera-backend/src/api/docs/swagger.json

The script only reads the supplied file and rebuilds docs/api-docs. It does not modify another repository. Regenerate and commit backend Swagger annotations in the backend repository before refreshing this reference.

Current launch gaps

  • Complete real passkey registration/login/removal and the authenticated inventory retest; resolve the browser Realtime origin failure. Complete MFA login-attempt binding checks and mailbox-backed Auth/tenant-isolation journeys before treating package availability as launch readiness.
  • Billing, Storage, Managed Data, Realtime publish, and API-key management need first-class typed resources in the backend SDKs. Node now covers Vault, while Search, Feature Flags, and Realtime need broader backend language parity.
  • Java, C#, Flutter, Android, Swift, and React Native packages have smoke coverage only when the matching local or CI toolchain is available.
  • Generated operation IDs still need curation before the machine-generated API reference should become the main public reference.