Skip to main content

API Reference

The OpenAPI spec is generated from the live code (see Architecture Overview), so the canonical, always-current reference is served by the API itself rather than duplicated here:

EnvironmentSwagger UIRaw spec
Localhttp://localhost:8080/v1/docshttp://localhost:8080/v1/docs/openapi.json
Staginghttps://<staging-host>/v1/docshttps://<staging-host>/v1/docs/openapi.json
Productionhttps://<production-host>/v1/docs (Basic Auth required)https://<production-host>/v1/docs/openapi.json (Basic Auth required)

Production credentials are the DOCS_BASIC_AUTH_USER / DOCS_BASIC_AUTH_PASSWORD environment variables — ask in the team's usual secrets channel if you don't have them.

Coverage​

Generation is incremental, not a full sweep. As of this writing, these modules have OpenAPI coverage:

ModuleValidation laneNotes
UserZod (native)DTOs in src/modules/user/dto/user.dto.ts annotated in place
Paymentsvalidatorjs (doc-only)src/modules/payments/payments.openapi.ts
Eventshand-rolled validator (doc-only)src/modules/events/event.openapi.ts
Guestsnone at route layer (doc-only)src/modules/guests/guests.openapi.ts

Everything else (~55 remaining modules) doesn't have generated coverage yet. If you're working in an undocumented module and want to add it, follow the pattern in one of the files above — Zod-native modules get .openapi() calls added directly to the existing DTO; everything else gets a sibling *.openapi.ts file with doc-only schemas, registered in src/shared/openapi/build-spec.ts.

Why generated instead of hand-maintained​

A hand-written spec (a YAML file nobody updates when a route changes) drifts from reality immediately. Generating it from the same Zod schemas — or Zod schemas deliberately written to mirror the real validation — means the spec can only be as stale as the last time someone touched the route without touching its schema, which a code reviewer can actually catch in a diff.