Official client SDKs for GateForge IAM, generated from the canonical OpenAPI contract at api/openapi.yaml.
| Path | Purpose |
|---|---|
config/ |
OpenAPI Generator configs (go.yaml, typescript.yaml) |
go/ |
Handwritten Go SDK (package gateforge) + generated openapi/ client |
typescript/ |
Handwritten TypeScript SDK (@gateforge/sdk) + generated src/generated/ |
Requires Docker. From the monorepo root:
make sdk-generateThis runs OpenAPI Generator v7.19.0:
- Go →
sdk/go/openapi - TypeScript (fetch) →
sdk/typescript/src/generated(then NodeNext import patch)
Drift check:
make sdk-checkmake sdk-go-test # unit tests (httptest)
make sdk-ts-build # npm ci && build
cd sdk/typescript && npm testLive integration (optional):
GATEFORGE_BASE_URL=http://localhost:3000 go test -tags=integration ./sdk/go| Concern | Go SDK | TypeScript SDK |
|---|---|---|
| Bearer JWT | WithTokenProvider |
getAccessToken / refreshAccessToken |
| OIDC code + PKCE | PKCEGenerate, BuildAuthorizeURL, ExchangeAuthorizationCode |
createPKCE, buildAuthorizeUrl, parseCallbackParams |
| Browser cookies / CSRF | App-owned | credentials: 'include', prefetchCsrfToken |
| WebAuthn ceremonies | Raw start/finish types only | registerPasskey / loginWithPasskey via @simplewebauthn/browser |
| Token storage | App-owned | Default memory store; persistence must be explicit |
Never put admin API keys or client secrets in browser bundles. Prefer in-memory access tokens; do not log refresh tokens.
Publish only from explicit tags — never from every main build.
| SDK | Tag pattern | Consumer install |
|---|---|---|
| Go | sdk/go/v0.1.0 |
go get github.com/gateforge-iam/gateforge-iam/sdk/go@sdk/go/v0.1.0 |
| TypeScript | sdk/typescript/v0.1.0 |
npm install @gateforge/sdk@0.1.0 (CI uses npm trusted publishing / OIDC) |
Workflow: .github/workflows/sdk-release.yml.