{"openapi":"3.0.0","paths":{"/v1/auth/login":{"post":{"operationId":"AuthController_login","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/LoginDto"}}}},"responses":{"201":{"description":""}},"tags":["auth"]}},"/v1/auth/set-password":{"post":{"operationId":"AuthController_setPassword","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SetPasswordDto"}}}},"responses":{"201":{"description":""}},"tags":["auth"],"security":[{"bearer":[]}]}},"/v1/auth/me":{"get":{"operationId":"AuthController_me","parameters":[],"responses":{"200":{"description":""}},"tags":["auth"],"security":[{"bearer":[]}]}},"/v1/auth/invite":{"post":{"operationId":"AuthController_invite","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/InviteUserDto"}}}},"responses":{"201":{"description":""}},"tags":["auth"]}},"/v1/auth/verify-invite":{"get":{"operationId":"AuthController_verifyInvite","parameters":[{"name":"token","required":true,"in":"query","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"tags":["auth"]}},"/v1/auth/accept-invite":{"post":{"operationId":"AuthController_acceptInvite","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AcceptInviteDto"}}}},"responses":{"201":{"description":""}},"tags":["auth"]}},"/v1/auth/forgot-password":{"post":{"operationId":"AuthController_forgotPassword","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ForgotPasswordDto"}}}},"responses":{"201":{"description":""}},"tags":["auth"]}},"/v1/auth/reset-password":{"post":{"operationId":"AuthController_resetPassword","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResetPasswordDto"}}}},"responses":{"201":{"description":""}},"tags":["auth"]}},"/v1/tenants":{"post":{"operationId":"TenantsController_create","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateTenantDto"}}}},"responses":{"201":{"description":""}},"tags":["tenants"],"security":[{"bearer":[]}]},"get":{"operationId":"TenantsController_findAll","parameters":[],"responses":{"200":{"description":""}},"tags":["tenants"],"security":[{"bearer":[]}]}},"/v1/tenants/{id}":{"get":{"operationId":"TenantsController_findOne","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"tags":["tenants"],"security":[{"bearer":[]}]},"patch":{"operationId":"TenantsController_update","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateTenantDto"}}}},"responses":{"200":{"description":""}},"tags":["tenants"],"security":[{"bearer":[]}]}},"/v1/users":{"post":{"operationId":"UsersController_create","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateUserDto"}}}},"responses":{"201":{"description":""}},"tags":["users"],"security":[{"bearer":[]}]},"get":{"operationId":"UsersController_findAll","parameters":[{"name":"status","required":true,"in":"query","schema":{"type":"string"}},{"name":"departmentId","required":true,"in":"query","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"tags":["users"],"security":[{"bearer":[]}]}},"/v1/users/import":{"post":{"operationId":"UsersController_bulkImport","parameters":[],"responses":{"201":{"description":""}},"tags":["users"],"security":[{"bearer":[]}]}},"/v1/users/{id}":{"get":{"operationId":"UsersController_findOne","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"tags":["users"],"security":[{"bearer":[]}]},"patch":{"operationId":"UsersController_update","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateUserDto"}}}},"responses":{"200":{"description":""}},"tags":["users"],"security":[{"bearer":[]}]},"delete":{"operationId":"UsersController_remove","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"tags":["users"],"security":[{"bearer":[]}]}},"/v1/users/{id}/set-password":{"patch":{"operationId":"UsersController_setPassword","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SetPasswordDto"}}}},"responses":{"200":{"description":""}},"tags":["users"],"security":[{"bearer":[]}]}},"/v1/users/{id}/role":{"patch":{"operationId":"UsersController_setRole","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SetRoleDto"}}}},"responses":{"200":{"description":""}},"tags":["users"],"security":[{"bearer":[]}]}},"/v1/departments":{"post":{"operationId":"DepartmentsController_create","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateDepartmentDto"}}}},"responses":{"201":{"description":""}},"tags":["departments"],"security":[{"bearer":[]}]},"get":{"operationId":"DepartmentsController_findAll","parameters":[],"responses":{"200":{"description":""}},"tags":["departments"],"security":[{"bearer":[]}]}},"/v1/departments/{id}":{"get":{"operationId":"DepartmentsController_findOne","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"tags":["departments"],"security":[{"bearer":[]}]},"patch":{"operationId":"DepartmentsController_update","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"tags":["departments"],"security":[{"bearer":[]}]},"delete":{"operationId":"DepartmentsController_remove","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"tags":["departments"],"security":[{"bearer":[]}]}},"/v1/roles":{"post":{"operationId":"RolesController_create","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateRoleDto"}}}},"responses":{"201":{"description":""}},"tags":["roles"],"security":[{"bearer":[]}]},"get":{"operationId":"RolesController_findAll","parameters":[],"responses":{"200":{"description":""}},"tags":["roles"],"security":[{"bearer":[]}]}},"/v1/roles/{id}":{"get":{"operationId":"RolesController_findOne","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"tags":["roles"],"security":[{"bearer":[]}]},"patch":{"operationId":"RolesController_update","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"tags":["roles"],"security":[{"bearer":[]}]},"delete":{"operationId":"RolesController_remove","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"tags":["roles"],"security":[{"bearer":[]}]}},"/v1/teams":{"post":{"operationId":"TeamsController_create","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateTeamDto"}}}},"responses":{"201":{"description":""}},"tags":["teams"],"security":[{"bearer":[]}]},"get":{"operationId":"TeamsController_findAll","parameters":[{"name":"departmentId","required":true,"in":"query","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"tags":["teams"],"security":[{"bearer":[]}]}},"/v1/teams/{id}":{"get":{"operationId":"TeamsController_findOne","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"tags":["teams"],"security":[{"bearer":[]}]},"patch":{"operationId":"TeamsController_update","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"tags":["teams"],"security":[{"bearer":[]}]},"delete":{"operationId":"TeamsController_remove","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"tags":["teams"],"security":[{"bearer":[]}]}},"/v1/packages/generate":{"post":{"operationId":"PackagesController_generate","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GenerateDto"}}}},"responses":{"201":{"description":""}},"tags":["packages"],"security":[{"bearer":[]}]}},"/v1/packages/generate-from-file":{"post":{"operationId":"PackagesController_generateFromFile","parameters":[],"responses":{"201":{"description":""}},"tags":["packages"],"security":[{"bearer":[]}]}},"/v1/packages/inspect-content":{"post":{"operationId":"PackagesController_inspectContent","parameters":[],"responses":{"201":{"description":""}},"tags":["packages"],"security":[{"bearer":[]}]}},"/v1/packages":{"post":{"operationId":"PackagesController_create","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreatePackageDto"}}}},"responses":{"201":{"description":""}},"tags":["packages"],"security":[{"bearer":[]}]},"get":{"operationId":"PackagesController_findAll","parameters":[{"name":"publishStatus","required":true,"in":"query","schema":{"type":"string"}},{"name":"packageType","required":true,"in":"query","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"tags":["packages"],"security":[{"bearer":[]}]}},"/v1/packages/{id}":{"get":{"operationId":"PackagesController_findOne","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"tags":["packages"],"security":[{"bearer":[]}]},"patch":{"operationId":"PackagesController_update","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"tags":["packages"],"security":[{"bearer":[]}]},"delete":{"operationId":"PackagesController_remove","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"tags":["packages"],"security":[{"bearer":[]}]}},"/v1/packages/{id}/publish":{"post":{"operationId":"PackagesController_publish","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"201":{"description":""}},"tags":["packages"],"security":[{"bearer":[]}]}},"/v1/packages/{id}/clone":{"post":{"operationId":"PackagesController_clone","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"201":{"description":""}},"tags":["packages"],"security":[{"bearer":[]}]}},"/v1/packages/{id}/submit-for-review":{"post":{"operationId":"PackagesController_submitForReview","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"201":{"description":""}},"tags":["packages"],"security":[{"bearer":[]}]}},"/v1/packages/{id}/reject":{"post":{"operationId":"PackagesController_rejectPackage","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"201":{"description":""}},"tags":["packages"],"security":[{"bearer":[]}]}},"/v1/packages/{id}/archive":{"post":{"operationId":"PackagesController_archive","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"201":{"description":""}},"tags":["packages"],"security":[{"bearer":[]}]}},"/v1/packages/{id}/restore":{"post":{"operationId":"PackagesController_restore","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"201":{"description":""}},"tags":["packages"],"security":[{"bearer":[]}]}},"/v1/packages/{id}/modules/{moduleId}/scenario":{"post":{"operationId":"PackagesController_generateScenario","parameters":[{"name":"moduleId","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"201":{"description":""}},"tags":["packages"],"security":[{"bearer":[]}]}},"/v1/packages/{id}/modules":{"post":{"operationId":"PackagesController_addModule","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"201":{"description":""}},"tags":["packages"],"security":[{"bearer":[]}]}},"/v1/packages/{id}/modules/{moduleId}":{"patch":{"operationId":"PackagesController_updateModule","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}},{"name":"moduleId","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"tags":["packages"],"security":[{"bearer":[]}]},"delete":{"operationId":"PackagesController_deleteModule","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}},{"name":"moduleId","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"tags":["packages"],"security":[{"bearer":[]}]}},"/v1/packages/{id}/modules/reorder":{"post":{"operationId":"PackagesController_reorderModules","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"201":{"description":""}},"tags":["packages"],"security":[{"bearer":[]}]}},"/v1/packages/{id}/modules/{moduleId}/generate-questions":{"post":{"operationId":"PackagesController_generateModuleQuestions","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}},{"name":"moduleId","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"201":{"description":""}},"tags":["packages"],"security":[{"bearer":[]}]}},"/v1/packages/{id}/modules/{moduleId}/generate-content":{"post":{"operationId":"PackagesController_generateModuleContent","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}},{"name":"moduleId","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"201":{"description":""}},"tags":["packages"],"security":[{"bearer":[]}]}},"/v1/packages/{id}/modules/{moduleId}/render-video":{"post":{"operationId":"PackagesController_renderVideo","parameters":[{"name":"moduleId","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"201":{"description":""}},"tags":["packages"],"security":[{"bearer":[]}]}},"/v1/packages/{id}/modules/{moduleId}/render-status":{"get":{"operationId":"PackagesController_getRenderStatus","parameters":[{"name":"moduleId","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"tags":["packages"],"security":[{"bearer":[]}]}},"/v1/packages/{id}/modules/{moduleId}/fix-render-status":{"post":{"operationId":"PackagesController_fixRenderStatus","parameters":[{"name":"moduleId","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"201":{"description":""}},"tags":["packages"],"security":[{"bearer":[]}]}},"/v1/packages/{id}/modules/{moduleId}/questions/{questionId}":{"patch":{"operationId":"PackagesController_moderateQuestion","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}},{"name":"moduleId","required":true,"in":"path","schema":{"type":"string"}},{"name":"questionId","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"tags":["packages"],"security":[{"bearer":[]}]},"delete":{"operationId":"PackagesController_deleteQuestion","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}},{"name":"moduleId","required":true,"in":"path","schema":{"type":"string"}},{"name":"questionId","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"204":{"description":""}},"tags":["packages"],"security":[{"bearer":[]}]}},"/v1/ai/generate-package":{"post":{"operationId":"AiController_generatePackage","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GeneratePackageDto"}}}},"responses":{"200":{"description":""}},"tags":["ai"],"security":[{"bearer":[]}]}},"/v1/ai/generate-questions":{"post":{"operationId":"AiController_generateQuestions","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GenerateQuestionsDto"}}}},"responses":{"200":{"description":""}},"tags":["ai"],"security":[{"bearer":[]}]}},"/v1/ai/generate-scenario":{"post":{"operationId":"AiController_generateScenario","parameters":[],"responses":{"200":{"description":""}},"tags":["ai"],"security":[{"bearer":[]}]}},"/v1/assignments":{"post":{"operationId":"AssignmentsController_create","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateAssignmentDto"}}}},"responses":{"201":{"description":""}},"tags":["assignments"],"security":[{"bearer":[]}]},"get":{"operationId":"AssignmentsController_findAll","parameters":[{"name":"userId","required":true,"in":"query","schema":{"type":"string"}},{"name":"status","required":true,"in":"query","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"tags":["assignments"],"security":[{"bearer":[]}]}},"/v1/assignments/bulk":{"post":{"operationId":"AssignmentsController_bulk","parameters":[],"responses":{"201":{"description":""}},"tags":["assignments"],"security":[{"bearer":[]}]}},"/v1/assignments/remind":{"post":{"operationId":"AssignmentsController_sendReminder","parameters":[],"responses":{"201":{"description":""}},"tags":["assignments"],"security":[{"bearer":[]}]}},"/v1/assignments/tracker":{"get":{"operationId":"AssignmentsController_getTracker","parameters":[{"name":"packageId","required":true,"in":"query","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"tags":["assignments"],"security":[{"bearer":[]}]}},"/v1/assignments/{id}":{"get":{"operationId":"AssignmentsController_findOne","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"tags":["assignments"],"security":[{"bearer":[]}]}},"/v1/assignments/{id}/waive":{"post":{"operationId":"AssignmentsController_waive","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WaiveDto"}}}},"responses":{"201":{"description":""}},"tags":["assignments"],"security":[{"bearer":[]}]}},"/v1/webhooks":{"post":{"operationId":"WebhooksController_create","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateWebhookDto"}}}},"responses":{"201":{"description":""}},"tags":["webhooks"],"security":[{"bearer":[]}]},"get":{"operationId":"WebhooksController_findAll","parameters":[],"responses":{"200":{"description":""}},"tags":["webhooks"],"security":[{"bearer":[]}]}},"/v1/webhooks/{id}/rotate-secret":{"post":{"operationId":"WebhooksController_rotateSecret","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"201":{"description":""}},"tags":["webhooks"],"security":[{"bearer":[]}]}},"/v1/attempts":{"post":{"operationId":"AttemptsController_start","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/StartAttemptDto"}}}},"responses":{"201":{"description":""}},"tags":["attempts"],"security":[{"bearer":[]}]}},"/v1/assignments/{assignmentId}/start":{"post":{"operationId":"AttemptsController_startLegacy","parameters":[{"name":"assignmentId","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"201":{"description":""}},"tags":["attempts"],"security":[{"bearer":[]}]}},"/v1/attempts/{attemptId}/answers":{"post":{"operationId":"AttemptsController_submitAnswer","parameters":[{"name":"attemptId","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SubmitAnswerDto"}}}},"responses":{"201":{"description":""}},"tags":["attempts"],"security":[{"bearer":[]}]}},"/v1/attempts/{attemptId}/submit":{"post":{"operationId":"AttemptsController_submit","parameters":[{"name":"attemptId","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"201":{"description":""}},"tags":["attempts"],"security":[{"bearer":[]}]}},"/v1/attempts/{attemptId}/result":{"get":{"operationId":"AttemptsController_result","parameters":[{"name":"attemptId","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"tags":["attempts"],"security":[{"bearer":[]}]}},"/v1/attempts/{attemptId}/scenario-choice":{"post":{"operationId":"AttemptsController_submitScenarioChoice","parameters":[{"name":"attemptId","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ScenarioChoiceDto"}}}},"responses":{"201":{"description":""}},"tags":["attempts"],"security":[{"bearer":[]}]}},"/v1/modules/{moduleId}/engagement":{"post":{"operationId":"AttemptsController_recordEngagement","parameters":[{"name":"moduleId","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ModuleEngagementDto"}}}},"responses":{"201":{"description":""}},"tags":["attempts"],"security":[{"bearer":[]}]}},"/v1/feedback":{"post":{"operationId":"AttemptsController_submitFeedback","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/FeedbackDto"}}}},"responses":{"201":{"description":""}},"tags":["attempts"],"security":[{"bearer":[]}]}},"/v1/modules/{moduleId}/audio-quality":{"post":{"operationId":"AttemptsController_flagAudio","parameters":[{"name":"moduleId","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"201":{"description":""}},"tags":["attempts"],"security":[{"bearer":[]}]}},"/v1/certificates":{"get":{"operationId":"CertificatesController_findAll","parameters":[],"responses":{"200":{"description":""}},"tags":["certificates"],"security":[{"bearer":[]}]}},"/v1/users/{userId}/certificates":{"get":{"operationId":"CertificatesController_findByUser","parameters":[{"name":"userId","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"tags":["certificates"],"security":[{"bearer":[]}]}},"/v1/certificates/verify/{token}":{"get":{"operationId":"CertificatesController_verify","parameters":[{"name":"token","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"tags":["certificates"]}},"/v1/certificates/{id}/revoke":{"post":{"operationId":"CertificatesController_revoke","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"201":{"description":""}},"tags":["certificates"],"security":[{"bearer":[]}]}},"/v1/badges":{"get":{"operationId":"BadgesController_findAll","parameters":[],"responses":{"200":{"description":""}},"tags":["badges"],"security":[{"bearer":[]}]}},"/v1/badges/my":{"get":{"operationId":"BadgesController_findMine","parameters":[],"responses":{"200":{"description":""}},"tags":["badges"],"security":[{"bearer":[]}]}},"/v1/audit-logs":{"get":{"operationId":"AuditLogsController_findAll","parameters":[{"name":"actorId","required":true,"in":"query","schema":{"type":"string"}},{"name":"action","required":true,"in":"query","schema":{"type":"string"}},{"name":"from","required":true,"in":"query","schema":{"type":"string"}},{"name":"to","required":true,"in":"query","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"tags":["audit-logs"],"security":[{"bearer":[]}]}},"/v1/analytics/overview":{"get":{"operationId":"AnalyticsController_getOverview","parameters":[],"responses":{"200":{"description":""}},"tags":["analytics"],"security":[{"bearer":[]}]}},"/v1/analytics/departments":{"get":{"operationId":"AnalyticsController_getDepartments","parameters":[],"responses":{"200":{"description":""}},"tags":["analytics"],"security":[{"bearer":[]}]}},"/v1/analytics/users/{userId}":{"get":{"operationId":"AnalyticsController_getUserAnalytics","parameters":[{"name":"userId","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"tags":["analytics"],"security":[{"bearer":[]}]}},"/v1/analytics/risk-areas":{"get":{"operationId":"AnalyticsController_getRiskAreas","parameters":[],"responses":{"200":{"description":""}},"tags":["analytics"],"security":[{"bearer":[]}]}},"/v1/analytics/leaderboard":{"get":{"operationId":"AnalyticsController_getLeaderboard","parameters":[],"responses":{"200":{"description":""}},"tags":["analytics"],"security":[{"bearer":[]}]}},"/v1/analytics/weak-areas":{"get":{"operationId":"AnalyticsController_getWeakAreas","parameters":[],"responses":{"200":{"description":""}},"tags":["analytics"],"security":[{"bearer":[]}]}},"/v1/analytics/readiness":{"get":{"operationId":"AnalyticsController_getCompanyReadiness","parameters":[],"responses":{"200":{"description":""}},"tags":["analytics"],"security":[{"bearer":[]}]}},"/v1/analytics/manager/team":{"get":{"operationId":"AnalyticsController_getManagerTeamStats","parameters":[],"responses":{"200":{"description":""}},"tags":["analytics"],"security":[{"bearer":[]}]}},"/v1/analytics/scenario-effectiveness":{"get":{"operationId":"AnalyticsController_getScenarioEffectiveness","parameters":[],"responses":{"200":{"description":""}},"tags":["analytics"],"security":[{"bearer":[]}]}},"/v1/analytics/drop-off":{"get":{"operationId":"AnalyticsController_getDropOffStats","parameters":[],"responses":{"200":{"description":""}},"tags":["analytics"],"security":[{"bearer":[]}]}},"/v1/analytics/manager/insights":{"get":{"operationId":"AnalyticsController_getManagerInsights","parameters":[],"responses":{"200":{"description":""}},"tags":["analytics"],"security":[{"bearer":[]}]}},"/v1/analytics/feedback":{"get":{"operationId":"AnalyticsController_getFeedback","parameters":[],"responses":{"200":{"description":""}},"tags":["analytics"],"security":[{"bearer":[]}]}},"/v1/analytics/reminder-effectiveness":{"get":{"operationId":"AnalyticsController_getReminderEffectiveness","parameters":[],"responses":{"200":{"description":""}},"tags":["analytics"],"security":[{"bearer":[]}]}},"/v1/analytics/audio-quality":{"get":{"operationId":"AnalyticsController_getAudioQualityFlags","parameters":[],"responses":{"200":{"description":""}},"tags":["analytics"],"security":[{"bearer":[]}]}},"/v1/exams":{"get":{"operationId":"ExamsController_findAll","summary":"List all exams for tenant","parameters":[],"responses":{"200":{"description":""}},"tags":["Exams"],"security":[{"bearer":[]}]},"post":{"operationId":"ExamsController_create","summary":"Create blank exam","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateExamDto"}}}},"responses":{"201":{"description":""}},"tags":["Exams"],"security":[{"bearer":[]}]}},"/v1/exams/{id}":{"get":{"operationId":"ExamsController_findOne","summary":"Get exam with versions, documents, schedules","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"tags":["Exams"],"security":[{"bearer":[]}]},"delete":{"operationId":"ExamsController_remove","summary":"Archive exam","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"tags":["Exams"],"security":[{"bearer":[]}]}},"/v1/exams/generate":{"post":{"operationId":"ExamsController_generateFromPrompt","summary":"AI: generate exam from prompt — creates exam + version A","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GenerateExamDto"}}}},"responses":{"201":{"description":""}},"tags":["Exams"],"security":[{"bearer":[]}]}},"/v1/exams/{id}/generate-from-documents":{"post":{"operationId":"ExamsController_generateFromDocuments","summary":"AI: generate exam version from uploaded documents (RAG)","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"201":{"description":""}},"tags":["Exams"],"security":[{"bearer":[]}]}},"/v1/exams/{id}/regenerate":{"post":{"operationId":"ExamsController_regenerate","summary":"Regenerate exam content (new version)","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GenerateExamVersionDto"}}}},"responses":{"201":{"description":""}},"tags":["Exams"],"security":[{"bearer":[]}]}},"/v1/exams/{id}/versions/generate":{"post":{"operationId":"ExamsController_generateVersion","summary":"Generate a new exam version (B, C, D…)","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GenerateExamVersionDto"}}}},"responses":{"201":{"description":""}},"tags":["Exams"],"security":[{"bearer":[]}]}},"/v1/exams/{id}/versions/{versionId}/questions":{"patch":{"operationId":"ExamsController_updateQuestions","summary":"Save edited questions array (moderation: edit, delete, approve)","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}},{"name":"versionId","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"tags":["Exams"],"security":[{"bearer":[]}]}},"/v1/exams/{id}/versions/{versionId}/activate":{"patch":{"operationId":"ExamsController_activateVersion","summary":"Set a version as active (deactivates others)","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}},{"name":"versionId","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"tags":["Exams"],"security":[{"bearer":[]}]}},"/v1/exams/{id}/questions/draw":{"get":{"operationId":"ExamsController_drawQuestions","summary":"Draw randomised question set from active version pool","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"tags":["Exams"],"security":[{"bearer":[]}]}},"/v1/exams/{id}/schedule":{"post":{"operationId":"ExamsController_createSchedule","summary":"Schedule recurring exam cycle","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ScheduleExamDto"}}}},"responses":{"201":{"description":""}},"tags":["Exams"],"security":[{"bearer":[]}]}},"/v1/exams/{id}/schedules":{"get":{"operationId":"ExamsController_listSchedules","summary":"List schedules for exam","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"tags":["Exams"],"security":[{"bearer":[]}]}},"/v1/exams/schedules/{scheduleId}/toggle":{"patch":{"operationId":"ExamsController_toggleSchedule","summary":"Enable or disable a schedule","parameters":[{"name":"scheduleId","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"tags":["Exams"],"security":[{"bearer":[]}]}},"/v1/exams/{id}/documents/presigned-url":{"post":{"operationId":"ExamsController_getUploadUrl","summary":"Get presigned S3 URL to upload a source document directly","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"201":{"description":""}},"tags":["Exams"],"security":[{"bearer":[]}]}},"/v1/exams/{id}/documents":{"post":{"operationId":"ExamsController_registerDocument","summary":"Register uploaded document (after S3 direct upload)","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"201":{"description":""}},"tags":["Exams"],"security":[{"bearer":[]}]}},"/v1/exams/refreshers/check":{"post":{"operationId":"ExamsController_checkRefreshers","summary":"Check fail rates and trigger AI refresher modules where needed","parameters":[],"responses":{"201":{"description":""}},"tags":["Exams"],"security":[{"bearer":[]}]}},"/v1/interventions/feed":{"get":{"operationId":"InterventionsController_getFeed","parameters":[],"responses":{"200":{"description":""}},"tags":["interventions"],"security":[{"bearer":[]}]}},"/v1/interventions/health/{packageId}":{"get":{"operationId":"InterventionsController_getPackageHealth","parameters":[{"name":"packageId","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"tags":["interventions"],"security":[{"bearer":[]}]}},"/v1/interventions/review-queue":{"get":{"operationId":"InterventionsController_getReviewQueue","parameters":[{"name":"status","required":true,"in":"query","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"tags":["interventions"],"security":[{"bearer":[]}]}},"/v1/interventions/integrity/{packageId}":{"get":{"operationId":"InterventionsController_getLearningIntegrity","parameters":[{"name":"packageId","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"tags":["interventions"],"security":[{"bearer":[]}]}},"/v1/interventions/status":{"get":{"operationId":"InterventionsController_getTenantStatus","parameters":[],"responses":{"200":{"description":""}},"tags":["interventions"],"security":[{"bearer":[]}]}},"/v1/interventions/package-rankings":{"get":{"operationId":"InterventionsController_getPackageRankings","parameters":[],"responses":{"200":{"description":""}},"tags":["interventions"],"security":[{"bearer":[]}]}},"/v1/interventions/pilot-summary":{"get":{"operationId":"InterventionsController_getPilotSummary","parameters":[],"responses":{"200":{"description":""}},"tags":["interventions"],"security":[{"bearer":[]}]}},"/v1/interventions/review-queue/{id}/action":{"post":{"operationId":"InterventionsController_actOnReviewItem","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReviewActionDto"}}}},"responses":{"201":{"description":""}},"tags":["interventions"],"security":[{"bearer":[]}]}},"/v1/interventions/questions/mark-critical":{"post":{"operationId":"InterventionsController_markCritical","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MarkCriticalDto"}}}},"responses":{"201":{"description":""}},"tags":["interventions"],"security":[{"bearer":[]}]}},"/v1/interventions/rollback":{"post":{"operationId":"InterventionsController_rollbackQuestion","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RollbackDto"}}}},"responses":{"201":{"description":""}},"tags":["interventions"],"security":[{"bearer":[]}]}},"/v1/interventions/lock":{"post":{"operationId":"InterventionsController_setLock","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SetLockDto"}}}},"responses":{"201":{"description":""}},"tags":["interventions"],"security":[{"bearer":[]}]}},"/v1/testing/seed-pilot-data":{"post":{"operationId":"TestingController_seedPilotData","summary":"Seed deterministic pilot QA data (non-production only)","parameters":[],"responses":{"201":{"description":""}},"tags":["testing"]}},"/v1/testing/reset-pilot-data":{"post":{"operationId":"TestingController_resetPilotData","summary":"Delete all pilot QA data (non-production only)","parameters":[],"responses":{"201":{"description":""}},"tags":["testing"]}}},"info":{"title":"VoomGuard API","description":"TrainOS AI – AI-native workforce training platform","version":"1.0","contact":{}},"tags":[{"name":"auth","description":""},{"name":"tenants","description":""},{"name":"users","description":""},{"name":"departments","description":""},{"name":"roles","description":""},{"name":"packages","description":""},{"name":"assignments","description":""},{"name":"attempts","description":""},{"name":"certificates","description":""},{"name":"audit-logs","description":""},{"name":"analytics","description":""},{"name":"webhooks","description":""}],"servers":[],"components":{"securitySchemes":{"bearer":{"scheme":"bearer","bearerFormat":"JWT","type":"http"}},"schemas":{"LoginDto":{"type":"object","properties":{}},"SetPasswordDto":{"type":"object","properties":{}},"InviteUserDto":{"type":"object","properties":{}},"AcceptInviteDto":{"type":"object","properties":{}},"ForgotPasswordDto":{"type":"object","properties":{}},"ResetPasswordDto":{"type":"object","properties":{}},"CreateTenantDto":{"type":"object","properties":{}},"UpdateTenantDto":{"type":"object","properties":{}},"CreateUserDto":{"type":"object","properties":{}},"SetRoleDto":{"type":"object","properties":{}},"UpdateUserDto":{"type":"object","properties":{}},"CreateDepartmentDto":{"type":"object","properties":{}},"CreateRoleDto":{"type":"object","properties":{}},"CreateTeamDto":{"type":"object","properties":{}},"GenerateDto":{"type":"object","properties":{}},"CreatePackageDto":{"type":"object","properties":{}},"GeneratePackageDto":{"type":"object","properties":{}},"GenerateQuestionsDto":{"type":"object","properties":{}},"CreateAssignmentDto":{"type":"object","properties":{}},"WaiveDto":{"type":"object","properties":{}},"CreateWebhookDto":{"type":"object","properties":{}},"StartAttemptDto":{"type":"object","properties":{}},"SubmitAnswerDto":{"type":"object","properties":{}},"ScenarioChoiceDto":{"type":"object","properties":{}},"ModuleEngagementDto":{"type":"object","properties":{}},"FeedbackDto":{"type":"object","properties":{}},"CreateExamDto":{"type":"object","properties":{"title":{"type":"string"},"description":{"type":"string"},"packageId":{"type":"string"},"timeLimit":{"type":"number"},"passScore":{"type":"number"},"questionPoolSize":{"type":"number"},"questionsPerAttempt":{"type":"number"},"failRateThreshold":{"type":"number"},"sourceType":{"type":"string"}},"required":["title"]},"GenerateExamDto":{"type":"object","properties":{"title":{"type":"string"},"description":{"type":"string"},"topic":{"type":"string"},"audience":{"type":"string"},"language":{"type":"string"},"questionCount":{"type":"number"},"difficulty":{"type":"number"},"passScore":{"type":"number"},"questionsPerAttempt":{"type":"number"},"timeLimit":{"type":"number"},"failRateThreshold":{"type":"number"},"context":{"type":"string"},"policyText":{"type":"string"},"packageId":{"type":"string"},"questionTypes":{"type":"array","items":{"type":"string"}}},"required":["title"]},"GenerateExamVersionDto":{"type":"object","properties":{"versionLabel":{"type":"string"},"language":{"type":"string"},"questionCount":{"type":"number"},"difficulty":{"type":"number"}}},"ScheduleExamDto":{"type":"object","properties":{"frequency":{"type":"string","enum":["monthly","quarterly","annually","custom"]},"cronExpr":{"type":"string"},"targetRoles":{"type":"array","items":{"type":"string"}},"targetDepts":{"type":"array","items":{"type":"string"}}},"required":["frequency"]},"ReviewActionDto":{"type":"object","properties":{}},"MarkCriticalDto":{"type":"object","properties":{}},"RollbackDto":{"type":"object","properties":{}},"SetLockDto":{"type":"object","properties":{}}}}}