touch-api — API documentation

NestJS + TypeORM service · spec derived from one file (src/app.module.ts)
verified read from the source file  inferred reconstructed from module names  raw machine-readable artifact

Swagger UI →

Interactive explorer: 34 operations, 22 schemas, request/response examples.

ReDoc →

Three-panel reference documentation.

openapi.json →

Raw OpenAPI 3.1 contract, JSON.

openapi.yaml →

Same contract, YAML.

/healthz →

Liveness of this documentation container only.

Provenance & honesty note.
The input was one 61-line file containing only src/app.module.ts. No controllers, DTOs, entities or tests were available.
Rendered & verified. Both UIs are opened in headless Chrome against the public IP; operations, tags, schema tree and the ReDoc sidebar are asserted programmatically.

Module graph (verified)

ImportPath in repoRole (inferred)
AuthModule./realizations/auth/moduleAuthentication, tokens, sessions
AccountModule./realizations/account/moduleAccount/tenant + balance
CommonModule./realizations/common/moduleReference data, shared helpers
MessageModule./realizations/message/moduleMessage send / tracking
SettingsModule./realizations/settings/moduleKey/value configuration
UserModule./realizations/user/moduleUser CRUD
LegacyApiModule./realizations/legacy-api-bridge/moduleBridge to a legacy backend
RedisStorageModule./realizations/redis-storage/moduleRedis-backed storage/cache/sessions
LoggingModule@touch-api/loggingLogging + middleware
IpAllowlistModule@touch-api/ip-allowlistIP allowlist enforcement

Request pipeline (verified)

request → IpAllowlistMiddleware (all routes) → logging middlewares → controller

Allowlist settingValue from source
filePathprocess.env.IP_ALLOWLIST_FILE ?? "/etc/touch-api/ip-allowlist.conf"
modeprocess.env.IP_ALLOWLIST_MODE ?? AllowlistMode.Off
trustedHeader"x-real-ip"
trustSocketFallbackfalse
bypassPaths["/", "/health", "/health/v2"]
onBlockedip-allowlist block|would-block ip=… path=…