Geti OpenAPI Sync
Goal
- Keep backend OpenAPI output and UI generated API types in sync.
- Prefer regeneration over manual edits to generated JSON or
.d.tsfiles.
Preferred Workflow
- If the backend is not already running, generate the spec from
application/backend/withjust gen-api-spec --output-path ../ui/src/api/openapi-spec.jsonon Unix-like shells, orjust gen-api-spec --output-path ..\\ui\\src\\api\\openapi-spec.jsonon Windows. - If the backend is already running on
https://localhost:7860, work fromapplication/ui/and runnpm run update-spec(it fetches over TLS with--insecure, since the backend serves a self-signed certificate). - If only the JSON spec changed locally, run
npm run build:apifromapplication/ui/to regeneratesrc/api/openapi-spec.d.ts. - Run
npm run format:checkandnpm run type-checkinapplication/ui/, then the narrowest backend or UI tests affected by the contract change.
When to Use Each Path
- Use direct backend generation when working offline, in CI-like flows, or before the server is runnable.
- Use
npm run update-specwhen actively iterating with a local backend server. - Use
$geti-backend-devfor backend fixes if generation exposes schema problems. - Use
$geti-ui-devfor UI changes that consume the regenerated types.
Guardrails
- Commit the generated spec and
.d.tstogether when the contract change is intentional. - Do not manually edit
application/ui/src/api/openapi-spec.d.ts. - If generation fails, fix the backend route or schema definitions instead of patching the generated output.