{"openapi":"3.0.0","paths":{"/api/v1/tooling/db/reset":{"post":{"operationId":"ToolingDbController_reset","summary":"Reset test data for service DB(s)","parameters":[{"name":"service","required":false,"in":"query","description":"Target service for reset. Dynamically discovered from docker-compose (*-service).","schema":{"enum":["interactions","accounts","partner","bookings","billing","catalog","admin","statistics","audit","all"],"type":"string"}},{"name":"x-tooling-key","required":false,"in":"header","description":"Access key for tooling DB endpoints (if configured).","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"tags":["Tooling"]}},"/api/v1/tooling/db/bootstrap":{"post":{"operationId":"ToolingDbController_bootstrap","summary":"Bootstrap service DB(s) and schemas","parameters":[{"name":"service","required":false,"in":"query","description":"Target service for bootstrap. Dynamically discovered from docker-compose (*-service).","schema":{"enum":["interactions","accounts","partner","bookings","billing","catalog","admin","statistics","audit","all"],"type":"string"}},{"name":"x-tooling-key","required":false,"in":"header","description":"Access key for tooling DB endpoints (if configured).","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"tags":["Tooling"]}},"/api/v1/tooling/migrate/bookings":{"post":{"operationId":"ToolingMigrateController_migrateBookings","summary":"Run bookings migrations (migration:run:bookings)","parameters":[{"name":"x-tooling-key","required":false,"in":"header","description":"Access key for tooling endpoints (if configured).","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"tags":["Tooling"]}},"/api/v1/tooling/migrate/audit":{"post":{"operationId":"ToolingMigrateController_migrateAudit","summary":"Run audit migrations (migration:run:audit)","parameters":[{"name":"x-tooling-key","required":false,"in":"header","description":"Access key for tooling endpoints (if configured).","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"tags":["Tooling"]}},"/api/v1/tooling/register/confirm-email/token":{"post":{"operationId":"ToolingRegisterController_issueConfirmEmailToken","summary":"Generate local debug confirmUrl/debugToken for an accounts-service userId (tooling only)","parameters":[{"name":"x-tooling-key","required":false,"in":"header","description":"Access key for tooling endpoints (if configured).","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ToolingRegisterConfirmEmailTokenDto"}}}},"responses":{"200":{"description":""}},"tags":["Tooling"]}},"/api/v1/tooling/register/confirm-email":{"post":{"operationId":"ToolingRegisterController_confirmEmailWithTooling","summary":"Confirm accounts-service email using a tooling-generated debug token","parameters":[{"name":"x-tooling-key","required":false,"in":"header","description":"Access key for tooling endpoints (if configured).","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ToolingRegisterConfirmEmailDto"}}}},"responses":{"200":{"description":""}},"tags":["Tooling"]}},"/api/v1/tooling/register/activate-user":{"post":{"operationId":"ToolingRegisterController_activateUserByEmail","summary":"Activate a user by email (confirm email + set is_active=true)","description":"Development/testing endpoint to quickly activate a user without email confirmation flow","parameters":[{"name":"x-tooling-key","required":false,"in":"header","description":"Access key for tooling endpoints (if configured).","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ToolingActivateUserDto"}}}},"responses":{"200":{"description":""}},"tags":["Tooling"]}},"/api/v1/tooling/sync/health":{"get":{"operationId":"ToolingSyncController_checkHealth","summary":"Check user synchronization system health","description":"Verifies Redis connectivity and outbox event channel availability. Used to ensure automatic user replication across services is operational.","parameters":[],"responses":{"200":{"description":"Sync system health status","content":{"application/json":{"schema":{"example":{"status":"healthy","message":"User synchronization system is operational","details":{"redis":{"connected":true,"host":"redis","port":6379},"channel":{"name":"washpass.outbox.events","monitored":true},"timestamp":"2026-04-10T08:05:00.000Z"}}}}}}},"tags":["Tooling"]}},"/api/v1/tooling/sync/status":{"get":{"operationId":"ToolingSyncController_getStatus","summary":"Get user synchronization system status","description":"Returns information about the synchronization pattern, channel, publisher, and consumers.","parameters":[],"responses":{"200":{"description":"Sync system configuration and status","content":{"application/json":{"schema":{"example":{"system":"User Synchronization","pattern":"Outbox Pattern with Redis Pub/Sub","channel":"washpass.outbox.events","publisher":"accounts-service","consumers":["billing-service","partner-service","bookings-service","admin-service","catalog-service","audit-service","statistics-service","interactions-service"],"description":"Automatic replication of users across microservices..."}}}}}},"tags":["Tooling"]}},"/api/v1/tooling/sync/trigger":{"post":{"operationId":"ToolingSyncController_triggerSync","summary":"Manually trigger user synchronization across services","description":"Publishes a sync trigger event to the Redis pub/sub channel. All microservices subscribe to this channel and will process pending user updates.","parameters":[],"responses":{"200":{"description":"Sync trigger published successfully","content":{"application/json":{"schema":{"example":{"status":"triggered","message":"Synchronization trigger published to all services","channel":"washpass.outbox.events","timestamp":"2026-04-10T08:10:00.000Z"}}}}}},"tags":["Tooling"]}}},"info":{"title":"WashPass Tooling","description":"Tooling service API","version":"0.1.0+038d699","contact":{}},"tags":[{"name":"Tooling","description":"api/v1/tooling"}],"servers":[{"url":"http://localhost:3000","description":"Gateway (localhost)"},{"url":"http://127.0.0.1:3000","description":"Gateway (127.0.0.1)"}],"components":{"securitySchemes":{"bearer":{"scheme":"bearer","bearerFormat":"JWT","type":"http"}},"schemas":{"ToolingRegisterConfirmEmailTokenDto":{"type":"object","properties":{"userId":{"type":"string","format":"uuid","example":"3fa85f64-5717-4562-b3fc-2c963f66afa6","description":"User id for which to generate a local debug email confirmation token."}},"required":["userId"]},"ToolingRegisterConfirmEmailDto":{"type":"object","properties":{"token":{"type":"string","example":"3fa85f64-5717-4562-b3fc-2c963f66afa6.4b5f4c72b4d0a4c8b7a9e2f417f3b8f2d64bb7c9f8a4ec28","description":"Debug token generated by tooling token endpoint."}}},"ToolingActivateUserDto":{"type":"object","properties":{}}}}}