{"timestamp":"2026-10-17T22:00:00.019Z","level":"log","context":"ClaudeThreatSchedulerService","message":"Starting daily Claude threat intelligence search..."}
{"timestamp":"2026-10-17T22:00:00.019Z","level":"log","context":"ClaudeThreatScraperService","message":"Starting comprehensive Claude threat search..."}
{"timestamp":"2026-10-17T22:00:00.019Z","level":"log","context":"ClaudeThreatScraperService","message":"Starting Claude web search for latest cyber threats..."}
{"timestamp":"2026-10-17T22:00:00.020Z","level":"log","context":"ClaudeThreatScraperService","message":"Searching for Business Email Compromise threats..."}
{"timestamp":"2026-10-17T22:00:00.020Z","level":"log","context":"ClaudeThreatScraperService","message":"Searching for trending cyber attacks..."}
{"timestamp":"2026-10-17T22:00:00.021Z","level":"log","context":"ClaudeThreatScraperService","message":"Using Claude model: claude-3-5-sonnet-20241022"}
{"timestamp":"2026-10-17T22:00:00.069Z","level":"log","context":"CampaignSchedulerService","message":"Running daily campaign scheduling job"}
{"timestamp":"2026-10-17T22:00:00.076Z","level":"log","context":"ClaudeThreatSchedulerService","message":"Starting 8-hourly trending threat search..."}
{"timestamp":"2026-10-17T22:00:00.076Z","level":"log","context":"ClaudeThreatScraperService","message":"Searching for trending cyber attacks..."}
{"timestamp":"2026-10-17T22:00:00.076Z","level":"log","context":"ClaudeThreatScraperService","message":"Using Claude model: claude-3-5-sonnet-20241022"}
{"timestamp":"2026-10-17T22:00:00.085Z","level":"log","context":"ClaudeThreatSchedulerService","message":"Starting daily Claude threat intelligence search..."}
{"timestamp":"2026-10-17T22:00:00.085Z","level":"log","context":"ClaudeThreatScraperService","message":"Starting comprehensive Claude threat search..."}
{"timestamp":"2026-10-17T22:00:00.085Z","level":"log","context":"ClaudeThreatScraperService","message":"Starting Claude web search for latest cyber threats..."}
{"timestamp":"2026-10-17T22:00:00.085Z","level":"log","context":"ClaudeThreatScraperService","message":"Searching for Business Email Compromise threats..."}
{"timestamp":"2026-10-17T22:00:00.085Z","level":"log","context":"ClaudeThreatScraperService","message":"Searching for trending cyber attacks..."}
{"timestamp":"2026-10-17T22:00:00.085Z","level":"log","context":"ClaudeThreatScraperService","message":"Using Claude model: claude-3-5-sonnet-20241022"}
{"timestamp":"2026-10-17T22:00:00.100Z","level":"log","context":"ClaudeThreatSchedulerService","message":"Starting 8-hourly trending threat search..."}
{"timestamp":"2026-10-17T22:00:00.100Z","level":"log","context":"ClaudeThreatScraperService","message":"Searching for trending cyber attacks..."}
{"timestamp":"2026-10-17T22:00:00.100Z","level":"log","context":"ClaudeThreatScraperService","message":"Using Claude model: claude-3-5-sonnet-20241022"}
{"timestamp":"2026-10-17T22:00:00.110Z","level":"log","context":"CampaignEmailSenderService","message":"Running minutely campaign email sender job"}
{"timestamp":"2026-10-17T22:00:00.127Z","level":"log","context":"CampaignEmailSenderService","message":"Running minutely campaign email sender job"}
{"timestamp":"2026-10-17T22:00:00.213Z","level":"log","context":"CampaignEmailSenderService","message":"Found 0 clicked emails that need training emails"}
{"timestamp":"2026-10-17T22:00:00.226Z","level":"log","context":"CampaignEmailSenderService","message":"Found 0 clicked emails that need training emails"}
{"timestamp":"2026-10-17T22:00:00.357Z","level":"error","context":"ClaudeThreatScraperService","message":"Error searching threats with Claude:","trace":{"status":401,"headers":{},"requestID":"req_011Cg8ZV359QGQ7ZAsa61pTk","error":{"type":"error","error":{"type":"authentication_error","message":"invalid x-api-key"},"request_id":"req_011Cg8ZV359QGQ7ZAsa61pTk"}}}
{"timestamp":"2026-10-17T22:00:00.362Z","level":"error","context":"ClaudeThreatScraperService","message":"Error searching trending attacks:","trace":{"status":401,"headers":{},"requestID":"req_011Cg8ZV36snuRrfaGegbWsN","error":{"type":"error","error":{"type":"authentication_error","message":"invalid x-api-key"},"request_id":"req_011Cg8ZV36snuRrfaGegbWsN"}}}
{"timestamp":"2026-10-17T22:00:00.363Z","level":"error","context":"ClaudeThreatSchedulerService","message":"Error in trending threat search:","trace":{"status":401,"headers":{},"requestID":"req_011Cg8ZV36snuRrfaGegbWsN","error":{"type":"error","error":{"type":"authentication_error","message":"invalid x-api-key"},"request_id":"req_011Cg8ZV36snuRrfaGegbWsN"}}}
{"timestamp":"2026-10-17T22:00:00.366Z","level":"error","context":"ClaudeThreatScraperService","message":"Error searching trending attacks:","trace":{"status":401,"headers":{},"requestID":"req_011Cg8ZV35u27tMdbukpxWXt","error":{"type":"error","error":{"type":"authentication_error","message":"invalid x-api-key"},"request_id":"req_011Cg8ZV35u27tMdbukpxWXt"}}}
{"timestamp":"2026-10-17T22:00:00.368Z","level":"error","context":"ClaudeThreatScraperService","message":"Error searching threats with Claude:","trace":{"status":401,"headers":{},"requestID":"req_011Cg8ZV36PVMC5YTAM7kemd","error":{"type":"error","error":{"type":"authentication_error","message":"invalid x-api-key"},"request_id":"req_011Cg8ZV36PVMC5YTAM7kemd"}}}
{"timestamp":"2026-10-17T22:00:00.369Z","level":"error","context":"ClaudeThreatScraperService","message":"Error searching trending attacks:","trace":{"status":401,"headers":{},"requestID":"req_011Cg8ZV37dUj8Y6oofFGnJD","error":{"type":"error","error":{"type":"authentication_error","message":"invalid x-api-key"},"request_id":"req_011Cg8ZV37dUj8Y6oofFGnJD"}}}
{"timestamp":"2026-10-17T22:00:00.369Z","level":"error","context":"ClaudeThreatSchedulerService","message":"Error in trending threat search:","trace":{"status":401,"headers":{},"requestID":"req_011Cg8ZV37dUj8Y6oofFGnJD","error":{"type":"error","error":{"type":"authentication_error","message":"invalid x-api-key"},"request_id":"req_011Cg8ZV37dUj8Y6oofFGnJD"}}}
{"timestamp":"2026-10-17T22:00:00.375Z","level":"error","context":"ClaudeThreatScraperService","message":"Error searching trending attacks:","trace":{"status":401,"headers":{},"requestID":"req_011Cg8ZV38Niqj3yLD18ZwW4","error":{"type":"error","error":{"type":"authentication_error","message":"invalid x-api-key"},"request_id":"req_011Cg8ZV38Niqj3yLD18ZwW4"}}}
{"timestamp":"2026-10-17T22:00:00.376Z","level":"error","context":"ClaudeThreatScraperService","message":"Error searching Business Email Compromise:","trace":{"status":401,"headers":{},"requestID":"req_011Cg8ZV38csV3Sr5HqkhEH3","error":{"type":"error","error":{"type":"authentication_error","message":"invalid x-api-key"},"request_id":"req_011Cg8ZV38csV3Sr5HqkhEH3"}}}
{"timestamp":"2026-10-17T22:00:00.376Z","level":"log","context":"ClaudeThreatScraperService","message":"Searching for Credential Theft threats..."}
{"timestamp":"2026-10-17T22:00:00.381Z","level":"error","context":"ClaudeThreatScraperService","message":"Error searching Business Email Compromise:","trace":{"status":401,"headers":{},"requestID":"req_011Cg8ZV39Mu8q4rDkEXYJZN","error":{"type":"error","error":{"type":"authentication_error","message":"invalid x-api-key"},"request_id":"req_011Cg8ZV39Mu8q4rDkEXYJZN"}}}
{"timestamp":"2026-10-17T22:00:00.381Z","level":"log","context":"ClaudeThreatScraperService","message":"Searching for Credential Theft threats..."}
{"timestamp":"2026-10-17T22:00:00.535Z","level":"error","context":"ClaudeThreatScraperService","message":"Error searching Credential Theft:","trace":{"status":401,"headers":{},"requestID":"req_011Cg8ZV3tGGGfd5euUhheaX","error":{"type":"error","error":{"type":"authentication_error","message":"invalid x-api-key"},"request_id":"req_011Cg8ZV3tGGGfd5euUhheaX"}}}
{"timestamp":"2026-10-17T22:00:00.535Z","level":"log","context":"ClaudeThreatScraperService","message":"Searching for SMS Phishing threats..."}
{"timestamp":"2026-10-17T22:00:00.539Z","level":"error","context":"ClaudeThreatScraperService","message":"Error searching Credential Theft:","trace":{"status":401,"headers":{},"requestID":"req_011Cg8ZV3t1cGp1hy5g1cnWU","error":{"type":"error","error":{"type":"authentication_error","message":"invalid x-api-key"},"request_id":"req_011Cg8ZV3t1cGp1hy5g1cnWU"}}}
{"timestamp":"2026-10-17T22:00:00.539Z","level":"log","context":"ClaudeThreatScraperService","message":"Searching for SMS Phishing threats..."}
{"timestamp":"2026-10-17T22:00:00.686Z","level":"error","context":"ClaudeThreatScraperService","message":"Error searching SMS Phishing:","trace":{"status":401,"headers":{},"requestID":"req_011Cg8ZV4XwzUW9C7rMtATAp","error":{"type":"error","error":{"type":"authentication_error","message":"invalid x-api-key"},"request_id":"req_011Cg8ZV4XwzUW9C7rMtATAp"}}}
{"timestamp":"2026-10-17T22:00:00.687Z","level":"log","context":"ClaudeThreatScraperService","message":"Searching for Deepfake Fraud threats..."}
{"timestamp":"2026-10-17T22:00:00.696Z","level":"error","context":"ClaudeThreatScraperService","message":"Error searching SMS Phishing:","trace":{"status":401,"headers":{},"requestID":"req_011Cg8ZV4ZvvyUdS9kE3Zi5n","error":{"type":"error","error":{"type":"authentication_error","message":"invalid x-api-key"},"request_id":"req_011Cg8ZV4ZvvyUdS9kE3Zi5n"}}}
{"timestamp":"2026-10-17T22:00:00.696Z","level":"log","context":"ClaudeThreatScraperService","message":"Searching for Deepfake Fraud threats..."}
{"timestamp":"2026-10-17T22:00:00.841Z","level":"error","context":"ClaudeThreatScraperService","message":"Error searching Deepfake Fraud:","trace":{"status":401,"headers":{},"requestID":"req_011Cg8ZV5BtaCqFKVDfYTx3B","error":{"type":"error","error":{"type":"authentication_error","message":"invalid x-api-key"},"request_id":"req_011Cg8ZV5BtaCqFKVDfYTx3B"}}}
{"timestamp":"2026-10-17T22:00:00.841Z","level":"log","context":"ClaudeThreatScraperService","message":"Searching for Malware Delivery threats..."}
{"timestamp":"2026-10-17T22:00:00.846Z","level":"error","context":"ClaudeThreatScraperService","message":"Error searching Deepfake Fraud:","trace":{"status":401,"headers":{},"requestID":"req_011Cg8ZV5E85niJ6qWamMwRU","error":{"type":"error","error":{"type":"authentication_error","message":"invalid x-api-key"},"request_id":"req_011Cg8ZV5E85niJ6qWamMwRU"}}}
{"timestamp":"2026-10-17T22:00:00.846Z","level":"log","context":"ClaudeThreatScraperService","message":"Searching for Malware Delivery threats..."}
{"timestamp":"2026-10-17T22:00:00.999Z","level":"error","context":"ClaudeThreatScraperService","message":"Error searching Malware Delivery:","trace":{"status":401,"headers":{},"requestID":"req_011Cg8ZV5s5CbwJmGmCzoqQK","error":{"type":"error","error":{"type":"authentication_error","message":"invalid x-api-key"},"request_id":"req_011Cg8ZV5s5CbwJmGmCzoqQK"}}}
{"timestamp":"2026-10-17T22:00:01.000Z","level":"log","context":"ClaudeThreatScraperService","message":"Claude threat search completed. Saved 0 new threats."}
{"timestamp":"2026-10-17T22:00:01.000Z","level":"log","context":"ClaudeThreatSchedulerService","message":"Daily Claude threat search completed. Found 0 new threats."}
{"timestamp":"2026-10-17T22:00:01.000Z","level":"log","context":"ClaudeThreatSchedulerService","message":"Threat severity breakdown: {\"critical\":0,\"high\":0,\"medium\":0,\"low\":0}"}
{"timestamp":"2026-10-17T22:00:01.002Z","level":"error","context":"ClaudeThreatScraperService","message":"Error searching Malware Delivery:","trace":{"status":401,"headers":{},"requestID":"req_011Cg8ZV5saLA8uxQKBd7qfz","error":{"type":"error","error":{"type":"authentication_error","message":"invalid x-api-key"},"request_id":"req_011Cg8ZV5saLA8uxQKBd7qfz"}}}
{"timestamp":"2026-10-17T22:00:01.003Z","level":"log","context":"ClaudeThreatScraperService","message":"Claude threat search completed. Saved 0 new threats."}
{"timestamp":"2026-10-17T22:00:01.003Z","level":"log","context":"ClaudeThreatSchedulerService","message":"Daily Claude threat search completed. Found 0 new threats."}
{"timestamp":"2026-10-17T22:00:01.003Z","level":"log","context":"ClaudeThreatSchedulerService","message":"Threat severity breakdown: {\"critical\":0,\"high\":0,\"medium\":0,\"low\":0}"}
{"timestamp":"2026-10-17T22:18:37.462Z","level":"warn","context":"LegacyRouteConverter","message":"Unsupported route path: \"/lp/*\". In previous versions, the symbols ?, *, and + were used to denote optional or repeating path parameters. The latest version of \"path-to-regexp\" now requires the use of named parameters. For example, instead of using a route like /users/* to capture all routes starting with \"/users\", you should use /users/*path. For more details, refer to the migration guide. Attempting to auto-convert..."}
{"timestamp":"2026-10-17T22:18:37.505Z","level":"log","context":"Bootstrap","message":"Starting Users API on port 3842..."}
{"timestamp":"2026-10-17T22:18:37.508Z","level":"log","context":"RoutesResolver","message":"UsersApiController {/}:"}
{"timestamp":"2026-10-17T22:18:37.512Z","level":"log","context":"RouterExplorer","message":"Mapped {/, GET} route"}
{"timestamp":"2026-10-17T22:18:37.513Z","level":"log","context":"RoutesResolver","message":"AuthController {/auth}:"}
{"timestamp":"2026-10-17T22:18:37.514Z","level":"log","context":"RouterExplorer","message":"Mapped {/auth/login, POST} route"}
{"timestamp":"2026-10-17T22:18:37.514Z","level":"log","context":"RouterExplorer","message":"Mapped {/auth/admin/login, POST} route"}
{"timestamp":"2026-10-17T22:18:37.515Z","level":"log","context":"RouterExplorer","message":"Mapped {/auth/send-otp, POST} route"}
{"timestamp":"2026-10-17T22:18:37.515Z","level":"log","context":"RouterExplorer","message":"Mapped {/auth/verify-otp, POST} route"}
{"timestamp":"2026-10-17T22:18:37.516Z","level":"log","context":"RouterExplorer","message":"Mapped {/auth/signup, POST} route"}
{"timestamp":"2026-10-17T22:18:37.516Z","level":"log","context":"RouterExplorer","message":"Mapped {/auth/subscription-status, GET} route"}
{"timestamp":"2026-10-17T22:18:37.516Z","level":"log","context":"RoutesResolver","message":"AdminMspController {/admin/msp}:"}
{"timestamp":"2026-10-17T22:18:37.517Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/msp, GET} route"}
{"timestamp":"2026-10-17T22:18:37.518Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/msp/:id, GET} route"}
{"timestamp":"2026-10-17T22:18:37.518Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/msp, POST} route"}
{"timestamp":"2026-10-17T22:18:37.519Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/msp/:id, PUT} route"}
{"timestamp":"2026-10-17T22:18:37.519Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/msp/:id, DELETE} route"}
{"timestamp":"2026-10-17T22:18:37.519Z","level":"log","context":"RoutesResolver","message":"AdminLicenseController {/admin/licenses}:"}
{"timestamp":"2026-10-17T22:18:37.519Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/licenses/summary, GET} route"}
{"timestamp":"2026-10-17T22:18:37.520Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/licenses/msp/:mspId, GET} route"}
{"timestamp":"2026-10-17T22:18:37.523Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/licenses/msp/:mspId, PUT} route"}
{"timestamp":"2026-10-17T22:18:37.523Z","level":"log","context":"RoutesResolver","message":"AdminImpersonationController {/admin/impersonation}:"}
{"timestamp":"2026-10-17T22:18:37.523Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/impersonation/msp-users, GET} route"}
{"timestamp":"2026-10-17T22:18:37.524Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/impersonation/impersonate, POST} route"}
{"timestamp":"2026-10-17T22:18:37.524Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/impersonation/stop, POST} route"}
{"timestamp":"2026-10-17T22:18:37.524Z","level":"log","context":"RoutesResolver","message":"AdminAiUsageController {/admin/ai-usage}:"}
{"timestamp":"2026-10-17T22:18:37.524Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-usage, GET} route"}
{"timestamp":"2026-10-17T22:18:37.525Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-usage/business/:businessId, GET} route"}
{"timestamp":"2026-10-17T22:18:37.525Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-usage/report/monthly, GET} route"}
{"timestamp":"2026-10-17T22:18:37.525Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-usage/pricing, GET} route"}
{"timestamp":"2026-10-17T22:18:37.525Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-usage/pricing, POST} route"}
{"timestamp":"2026-10-17T22:18:37.526Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-usage/credit/:businessId, PUT} route"}
{"timestamp":"2026-10-17T22:18:37.526Z","level":"log","context":"RoutesResolver","message":"AdminAiUsageController {/api/admin/ai-usage}:"}
{"timestamp":"2026-10-17T22:18:37.526Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-usage, GET} route"}
{"timestamp":"2026-10-17T22:18:37.526Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-usage/business/:businessId, GET} route"}
{"timestamp":"2026-10-17T22:18:37.526Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-usage/report/monthly, GET} route"}
{"timestamp":"2026-10-17T22:18:37.526Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-usage/pricing, GET} route"}
{"timestamp":"2026-10-17T22:18:37.527Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-usage/pricing, POST} route"}
{"timestamp":"2026-10-17T22:18:37.527Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-usage/credit/:businessId, PUT} route"}
{"timestamp":"2026-10-17T22:18:37.527Z","level":"log","context":"RoutesResolver","message":"AdminAiModelController {/admin/ai-models}:"}
{"timestamp":"2026-10-17T22:18:37.527Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models, POST} route"}
{"timestamp":"2026-10-17T22:18:37.527Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models, GET} route"}
{"timestamp":"2026-10-17T22:18:37.528Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/default, GET} route"}
{"timestamp":"2026-10-17T22:18:37.528Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/:id, GET} route"}
{"timestamp":"2026-10-17T22:18:37.528Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/:id, PUT} route"}
{"timestamp":"2026-10-17T22:18:37.528Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/:id, DELETE} route"}
{"timestamp":"2026-10-17T22:18:37.528Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/:id/set-default, POST} route"}
{"timestamp":"2026-10-17T22:18:37.529Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/assign-to-business, POST} route"}
{"timestamp":"2026-10-17T22:18:37.529Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/business/:businessId, GET} route"}
{"timestamp":"2026-10-17T22:18:37.529Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/:id/businesses, GET} route"}
{"timestamp":"2026-10-17T22:18:37.529Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/initialize-defaults, POST} route"}
{"timestamp":"2026-10-17T22:18:37.529Z","level":"log","context":"RoutesResolver","message":"AdminAiModelController {/api/admin/ai-models}:"}
{"timestamp":"2026-10-17T22:18:37.530Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models, POST} route"}
{"timestamp":"2026-10-17T22:18:37.530Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models, GET} route"}
{"timestamp":"2026-10-17T22:18:37.530Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/default, GET} route"}
{"timestamp":"2026-10-17T22:18:37.530Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/:id, GET} route"}
{"timestamp":"2026-10-17T22:18:37.530Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/:id, PUT} route"}
{"timestamp":"2026-10-17T22:18:37.530Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/:id, DELETE} route"}
{"timestamp":"2026-10-17T22:18:37.531Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/:id/set-default, POST} route"}
{"timestamp":"2026-10-17T22:18:37.531Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/assign-to-business, POST} route"}
{"timestamp":"2026-10-17T22:18:37.531Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/business/:businessId, GET} route"}
{"timestamp":"2026-10-17T22:18:37.531Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/:id/businesses, GET} route"}
{"timestamp":"2026-10-17T22:18:37.532Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/initialize-defaults, POST} route"}
{"timestamp":"2026-10-17T22:18:37.532Z","level":"log","context":"RoutesResolver","message":"AdminBusinessController {/admin/businesses}:"}
{"timestamp":"2026-10-17T22:18:37.532Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/businesses, GET} route"}
{"timestamp":"2026-10-17T22:18:37.532Z","level":"log","context":"RoutesResolver","message":"ResellerManagementController {/admin/resellers}:"}
{"timestamp":"2026-10-17T22:18:37.532Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/resellers, GET} route"}
{"timestamp":"2026-10-17T22:18:37.532Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/resellers/create-default, POST} route"}
{"timestamp":"2026-10-17T22:18:37.533Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/resellers, POST} route"}
{"timestamp":"2026-10-17T22:18:37.533Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/resellers/:id/toggle-status, PUT} route"}
{"timestamp":"2026-10-17T22:18:37.533Z","level":"log","context":"RoutesResolver","message":"SubscriptionController {/subscription}:"}
{"timestamp":"2026-10-17T22:18:37.533Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/plans, GET} route"}
{"timestamp":"2026-10-17T22:18:37.533Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/calculate-price, POST} route"}
{"timestamp":"2026-10-17T22:18:37.534Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/current, GET} route"}
{"timestamp":"2026-10-17T22:18:37.534Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/create, POST} route"}
{"timestamp":"2026-10-17T22:18:37.534Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/:id, PUT} route"}
{"timestamp":"2026-10-17T22:18:37.534Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/:id/cancel, DELETE} route"}
{"timestamp":"2026-10-17T22:18:37.534Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/sync/:stripeSubscriptionId, POST} route"}
{"timestamp":"2026-10-17T22:18:37.535Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/payments, GET} route"}
{"timestamp":"2026-10-17T22:18:37.535Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/payments/stats, GET} route"}
{"timestamp":"2026-10-17T22:18:37.535Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/payment/:id, GET} route"}
{"timestamp":"2026-10-17T22:18:37.535Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/payment-methods/attach, POST} route"}
{"timestamp":"2026-10-17T22:18:37.535Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/payment-methods/:paymentMethodId, DELETE} route"}
{"timestamp":"2026-10-17T22:18:37.535Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/payment-methods, GET} route"}
{"timestamp":"2026-10-17T22:18:37.536Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/setup-intent, POST} route"}
{"timestamp":"2026-10-17T22:18:37.536Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/update-employee-count, POST} route"}
{"timestamp":"2026-10-17T22:18:37.536Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/retry-payment/:subscriptionId, POST} route"}
{"timestamp":"2026-10-17T22:18:37.536Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/invoice/:invoiceId/pdf, GET} route"}
{"timestamp":"2026-10-17T22:18:37.536Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/preview-upgrade, POST} route"}
{"timestamp":"2026-10-17T22:18:37.536Z","level":"log","context":"RoutesResolver","message":"SubscriptionController {/api/subscription}:"}
{"timestamp":"2026-10-17T22:18:37.537Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/plans, GET} route"}
{"timestamp":"2026-10-17T22:18:37.537Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/calculate-price, POST} route"}
{"timestamp":"2026-10-17T22:18:37.537Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/current, GET} route"}
{"timestamp":"2026-10-17T22:18:37.537Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/create, POST} route"}
{"timestamp":"2026-10-17T22:18:37.537Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/:id, PUT} route"}
{"timestamp":"2026-10-17T22:18:37.537Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/:id/cancel, DELETE} route"}
{"timestamp":"2026-10-17T22:18:37.538Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/sync/:stripeSubscriptionId, POST} route"}
{"timestamp":"2026-10-17T22:18:37.538Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/payments, GET} route"}
{"timestamp":"2026-10-17T22:18:37.538Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/payments/stats, GET} route"}
{"timestamp":"2026-10-17T22:18:37.538Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/payment/:id, GET} route"}
{"timestamp":"2026-10-17T22:18:37.538Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/payment-methods/attach, POST} route"}
{"timestamp":"2026-10-17T22:18:37.538Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/payment-methods/:paymentMethodId, DELETE} route"}
{"timestamp":"2026-10-17T22:18:37.539Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/payment-methods, GET} route"}
{"timestamp":"2026-10-17T22:18:37.539Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/setup-intent, POST} route"}
{"timestamp":"2026-10-17T22:18:37.539Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/update-employee-count, POST} route"}
{"timestamp":"2026-10-17T22:18:37.539Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/retry-payment/:subscriptionId, POST} route"}
{"timestamp":"2026-10-17T22:18:37.539Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/invoice/:invoiceId/pdf, GET} route"}
{"timestamp":"2026-10-17T22:18:37.540Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/preview-upgrade, POST} route"}
{"timestamp":"2026-10-17T22:18:37.540Z","level":"log","context":"RoutesResolver","message":"StripeWebhookController {/stripe/webhook}:"}
{"timestamp":"2026-10-17T22:18:37.540Z","level":"log","context":"RouterExplorer","message":"Mapped {/stripe/webhook/test, GET} route"}
{"timestamp":"2026-10-17T22:18:37.540Z","level":"log","context":"RouterExplorer","message":"Mapped {/stripe/webhook, POST} route"}
{"timestamp":"2026-10-17T22:18:37.540Z","level":"log","context":"RoutesResolver","message":"EmailController {/email-templates}:"}
{"timestamp":"2026-10-17T22:18:37.540Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates/test, POST} route"}
{"timestamp":"2026-10-17T22:18:37.540Z","level":"log","context":"RoutesResolver","message":"EmployeeController {/employees}:"}
{"timestamp":"2026-10-17T22:18:37.541Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees, POST} route"}
{"timestamp":"2026-10-17T22:18:37.541Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees, GET} route"}
{"timestamp":"2026-10-17T22:18:37.541Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees/export, GET} route"}
{"timestamp":"2026-10-17T22:18:37.541Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees/risk-stats, GET} route"}
{"timestamp":"2026-10-17T22:18:37.541Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees/:id, GET} route"}
{"timestamp":"2026-10-17T22:18:37.541Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees/:id, PUT} route"}
{"timestamp":"2026-10-17T22:18:37.542Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees/:id, DELETE} route"}
{"timestamp":"2026-10-17T22:18:37.542Z","level":"log","context":"RoutesResolver","message":"GroupController {/groups}:"}
{"timestamp":"2026-10-17T22:18:37.542Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups, POST} route"}
{"timestamp":"2026-10-17T22:18:37.542Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups, GET} route"}
{"timestamp":"2026-10-17T22:18:37.542Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups/standard, GET} route"}
{"timestamp":"2026-10-17T22:18:37.542Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups/:id, GET} route"}
{"timestamp":"2026-10-17T22:18:37.543Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups/:id, PUT} route"}
{"timestamp":"2026-10-17T22:18:37.543Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups/:id, DELETE} route"}
{"timestamp":"2026-10-17T22:18:37.543Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups/:id/info, GET} route"}
{"timestamp":"2026-10-17T22:18:37.543Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups/:id/with-employees, GET} route"}
{"timestamp":"2026-10-17T22:18:37.543Z","level":"log","context":"RoutesResolver","message":"SenderProfileController {/sender-profiles}:"}
{"timestamp":"2026-10-17T22:18:37.544Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles, GET} route"}
{"timestamp":"2026-10-17T22:18:37.544Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles/:id, GET} route"}
{"timestamp":"2026-10-17T22:18:37.544Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles, POST} route"}
{"timestamp":"2026-10-17T22:18:37.544Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles/:id, PUT} route"}
{"timestamp":"2026-10-17T22:18:37.544Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles/:id, DELETE} route"}
{"timestamp":"2026-10-17T22:18:37.544Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles/:id/verify-domain, POST} route"}
{"timestamp":"2026-10-17T22:18:37.545Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles/domain-verification, GET} route"}
{"timestamp":"2026-10-17T22:18:37.545Z","level":"log","context":"RoutesResolver","message":"EmailTemplateController {/email-templates}:"}
{"timestamp":"2026-10-17T22:18:37.545Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates, GET} route"}
{"timestamp":"2026-10-17T22:18:37.545Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates/:id, GET} route"}
{"timestamp":"2026-10-17T22:18:37.545Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates, POST} route"}
{"timestamp":"2026-10-17T22:18:37.545Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates/:id, PUT} route"}
{"timestamp":"2026-10-17T22:18:37.546Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates/:id, DELETE} route"}
{"timestamp":"2026-10-17T22:18:37.546Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates/:id/duplicate, POST} route"}
{"timestamp":"2026-10-17T22:18:37.546Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates/:id/preview, GET} route"}
{"timestamp":"2026-10-17T22:18:37.546Z","level":"log","context":"RoutesResolver","message":"ScenarioController {/scenarios}:"}
{"timestamp":"2026-10-17T22:18:37.546Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios, POST} route"}
{"timestamp":"2026-10-17T22:18:37.546Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios/generate-content, POST} route"}
{"timestamp":"2026-10-17T22:18:37.547Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios, GET} route"}
{"timestamp":"2026-10-17T22:18:37.547Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios/:id, GET} route"}
{"timestamp":"2026-10-17T22:18:37.547Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios/:id, PUT} route"}
{"timestamp":"2026-10-17T22:18:37.547Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios/:id, DELETE} route"}
{"timestamp":"2026-10-17T22:18:37.547Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios/generate-from-json, POST} route"}
{"timestamp":"2026-10-17T22:18:37.548Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios/:id/save-as-custom-scenario, POST} route"}
{"timestamp":"2026-10-17T22:18:37.548Z","level":"log","context":"RoutesResolver","message":"CampaignController {/campaigns}:"}
{"timestamp":"2026-10-17T22:18:37.548Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns, POST} route"}
{"timestamp":"2026-10-17T22:18:37.548Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns, GET} route"}
{"timestamp":"2026-10-17T22:18:37.548Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id, GET} route"}
{"timestamp":"2026-10-17T22:18:37.548Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id/details, GET} route"}
{"timestamp":"2026-10-17T22:18:37.549Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id/employees, GET} route"}
{"timestamp":"2026-10-17T22:18:37.549Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id, PATCH} route"}
{"timestamp":"2026-10-17T22:18:37.549Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id/start, POST} route"}
{"timestamp":"2026-10-17T22:18:37.549Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id/stop, POST} route"}
{"timestamp":"2026-10-17T22:18:37.550Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id/duplicate, POST} route"}
{"timestamp":"2026-10-17T22:18:37.550Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id, DELETE} route"}
{"timestamp":"2026-10-17T22:18:37.550Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/auto-generate-program, POST} route"}
{"timestamp":"2026-10-17T22:18:37.550Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/generate-from-threat-intelligence, POST} route"}
{"timestamp":"2026-10-17T22:18:37.550Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id/risk-score, GET} route"}
{"timestamp":"2026-10-17T22:18:37.550Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/recalculate-risk-scores, POST} route"}
{"timestamp":"2026-10-17T22:18:37.550Z","level":"log","context":"RoutesResolver","message":"CampaignController {/api/campaigns}:"}
{"timestamp":"2026-10-17T22:18:37.551Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns, POST} route"}
{"timestamp":"2026-10-17T22:18:37.551Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns, GET} route"}
{"timestamp":"2026-10-17T22:18:37.551Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id, GET} route"}
{"timestamp":"2026-10-17T22:18:37.551Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id/details, GET} route"}
{"timestamp":"2026-10-17T22:18:37.551Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id/employees, GET} route"}
{"timestamp":"2026-10-17T22:18:37.551Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id, PATCH} route"}
{"timestamp":"2026-10-17T22:18:37.552Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id/start, POST} route"}
{"timestamp":"2026-10-17T22:18:37.552Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id/stop, POST} route"}
{"timestamp":"2026-10-17T22:18:37.552Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id/duplicate, POST} route"}
{"timestamp":"2026-10-17T22:18:37.552Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id, DELETE} route"}
{"timestamp":"2026-10-17T22:18:37.552Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/auto-generate-program, POST} route"}
{"timestamp":"2026-10-17T22:18:37.553Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/generate-from-threat-intelligence, POST} route"}
{"timestamp":"2026-10-17T22:18:37.553Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id/risk-score, GET} route"}
{"timestamp":"2026-10-17T22:18:37.553Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/recalculate-risk-scores, POST} route"}
{"timestamp":"2026-10-17T22:18:37.553Z","level":"log","context":"RoutesResolver","message":"NotificationsController {/notifications}:"}
{"timestamp":"2026-10-17T22:18:37.553Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications, POST} route"}
{"timestamp":"2026-10-17T22:18:37.553Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications, GET} route"}
{"timestamp":"2026-10-17T22:18:37.554Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/unread, GET} route"}
{"timestamp":"2026-10-17T22:18:37.554Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/unread-count, GET} route"}
{"timestamp":"2026-10-17T22:18:37.554Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/:id, GET} route"}
{"timestamp":"2026-10-17T22:18:37.554Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/:id, PATCH} route"}
{"timestamp":"2026-10-17T22:18:37.554Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/:id/read, PATCH} route"}
{"timestamp":"2026-10-17T22:18:37.555Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/mark-all-read, PATCH} route"}
{"timestamp":"2026-10-17T22:18:37.555Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/:id, DELETE} route"}
{"timestamp":"2026-10-17T22:18:37.555Z","level":"log","context":"RoutesResolver","message":"LandingPageController {/lp}:"}
{"timestamp":"2026-10-17T22:18:37.555Z","level":"log","context":"RouterExplorer","message":"Mapped {/lp/image, GET} route"}
{"timestamp":"2026-10-17T22:18:37.556Z","level":"log","context":"RouterExplorer","message":"Mapped {/lp/learning, GET} route"}
{"timestamp":"2026-10-17T22:18:37.556Z","level":"log","context":"RouterExplorer","message":"Mapped {/lp/submit, POST} route"}
{"timestamp":"2026-10-17T22:18:37.556Z","level":"log","context":"RouterExplorer","message":"Mapped {/lp/test, GET} route"}
{"timestamp":"2026-10-17T22:18:37.556Z","level":"warn","context":"LegacyRouteConverter","message":"Unsupported route path: \"/lp/*\". In previous versions, the symbols ?, *, and + were used to denote optional or repeating path parameters. The latest version of \"path-to-regexp\" now requires the use of named parameters. For example, instead of using a route like /users/* to capture all routes starting with \"/users\", you should use /users/*path. For more details, refer to the migration guide. Attempting to auto-convert..."}
{"timestamp":"2026-10-17T22:18:37.557Z","level":"log","context":"RouterExplorer","message":"Mapped {/lp/*, ALL} route"}
{"timestamp":"2026-10-17T22:18:37.557Z","level":"log","context":"RoutesResolver","message":"SupportController {/support}:"}
{"timestamp":"2026-10-17T22:18:37.557Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets, POST} route"}
{"timestamp":"2026-10-17T22:18:37.558Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets, GET} route"}
{"timestamp":"2026-10-17T22:18:37.558Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets/:id, GET} route"}
{"timestamp":"2026-10-17T22:18:37.558Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets/:id, PATCH} route"}
{"timestamp":"2026-10-17T22:18:37.558Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets/:id, DELETE} route"}
{"timestamp":"2026-10-17T22:18:37.558Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets/:id/messages, POST} route"}
{"timestamp":"2026-10-17T22:18:37.559Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets/:id/close, POST} route"}
{"timestamp":"2026-10-17T22:18:37.559Z","level":"log","context":"RoutesResolver","message":"BusninessMetricsController {/business-metrics}:"}
{"timestamp":"2026-10-17T22:18:37.559Z","level":"log","context":"RouterExplorer","message":"Mapped {/business-metrics, GET} route"}
{"timestamp":"2026-10-17T22:18:37.559Z","level":"log","context":"RoutesResolver","message":"UsersController {/users}:"}
{"timestamp":"2026-10-17T22:18:37.559Z","level":"log","context":"RouterExplorer","message":"Mapped {/users/:id, PUT} route"}
{"timestamp":"2026-10-17T22:18:37.559Z","level":"log","context":"RouterExplorer","message":"Mapped {/users/settings, GET} route"}
{"timestamp":"2026-10-17T22:18:37.560Z","level":"log","context":"RouterExplorer","message":"Mapped {/users/settings/general, PUT} route"}
{"timestamp":"2026-10-17T22:18:37.560Z","level":"log","context":"RouterExplorer","message":"Mapped {/users/company/settings, PUT} route"}
{"timestamp":"2026-10-17T22:18:37.560Z","level":"log","context":"RouterExplorer","message":"Mapped {/users/change-password, POST} route"}
{"timestamp":"2026-10-17T22:18:37.560Z","level":"log","context":"RouterExplorer","message":"Mapped {/users/localization/settings, PUT} route"}
{"timestamp":"2026-10-17T22:18:37.560Z","level":"log","context":"RoutesResolver","message":"PartnerController {/partner}:"}
{"timestamp":"2026-10-17T22:18:37.561Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses, POST} route"}
{"timestamp":"2026-10-17T22:18:37.561Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses, GET} route"}
{"timestamp":"2026-10-17T22:18:37.561Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses/:id, GET} route"}
{"timestamp":"2026-10-17T22:18:37.561Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses/:id, PUT} route"}
{"timestamp":"2026-10-17T22:18:37.561Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses/:id, DELETE} route"}
{"timestamp":"2026-10-17T22:18:37.561Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses/:id/impersonate, POST} route"}
{"timestamp":"2026-10-17T22:18:37.562Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses/stop-impersonation, POST} route"}
{"timestamp":"2026-10-17T22:18:37.562Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/license-usage, GET} route"}
{"timestamp":"2026-10-17T22:18:37.562Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/invoices, POST} route"}
{"timestamp":"2026-10-17T22:18:37.562Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/invoices, GET} route"}
{"timestamp":"2026-10-17T22:18:37.562Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/invoices/:id, GET} route"}
{"timestamp":"2026-10-17T22:18:37.563Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/invoices/:id, PUT} route"}
{"timestamp":"2026-10-17T22:18:37.563Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/invoices/:id, DELETE} route"}
{"timestamp":"2026-10-17T22:18:37.563Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/invoices/:id/mark-paid, PUT} route"}
{"timestamp":"2026-10-17T22:18:37.563Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/onboarding/generate-token, POST} route"}
{"timestamp":"2026-10-17T22:18:37.563Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/dashboard, GET} route"}
{"timestamp":"2026-10-17T22:18:37.563Z","level":"log","context":"RoutesResolver","message":"MspSubscriptionController {/partner/msp-subscriptions}:"}
{"timestamp":"2026-10-17T22:18:37.564Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/plans, POST} route"}
{"timestamp":"2026-10-17T22:18:37.564Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/plans, GET} route"}
{"timestamp":"2026-10-17T22:18:37.564Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/plans/:planId, GET} route"}
{"timestamp":"2026-10-17T22:18:37.564Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/plans/:planId, PUT} route"}
{"timestamp":"2026-10-17T22:18:37.564Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/plans/:planId, DELETE} route"}
{"timestamp":"2026-10-17T22:18:37.565Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/businesses/:businessId/subscription, POST} route"}
{"timestamp":"2026-10-17T22:18:37.565Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions, GET} route"}
{"timestamp":"2026-10-17T22:18:37.565Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/businesses/:businessId/subscription, GET} route"}
{"timestamp":"2026-10-17T22:18:37.565Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/businesses/:businessId/subscription, PUT} route"}
{"timestamp":"2026-10-17T22:18:37.565Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/businesses/:businessId/subscription, DELETE} route"}
{"timestamp":"2026-10-17T22:18:37.566Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/businesses/:businessId/subscription/limits, GET} route"}
{"timestamp":"2026-10-17T22:18:37.566Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/businesses/:businessId/subscription/change-plan, PUT} route"}
{"timestamp":"2026-10-17T22:18:37.566Z","level":"log","context":"RoutesResolver","message":"OnboardingController {/onboarding}:"}
{"timestamp":"2026-10-17T22:18:37.566Z","level":"log","context":"RouterExplorer","message":"Mapped {/onboarding/validate/:token, GET} route"}
{"timestamp":"2026-10-17T22:18:37.566Z","level":"log","context":"RouterExplorer","message":"Mapped {/onboarding/complete/:token, POST} route"}
{"timestamp":"2026-10-17T22:18:37.566Z","level":"log","context":"RoutesResolver","message":"ResellerController {/reseller}:"}
{"timestamp":"2026-10-17T22:18:37.566Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/businesses, POST} route"}
{"timestamp":"2026-10-17T22:18:37.567Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/businesses, GET} route"}
{"timestamp":"2026-10-17T22:18:37.567Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/businesses/:id, GET} route"}
{"timestamp":"2026-10-17T22:18:37.567Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/businesses/:id, PUT} route"}
{"timestamp":"2026-10-17T22:18:37.567Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/businesses/:id, DELETE} route"}
{"timestamp":"2026-10-17T22:18:37.567Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/license-usage, GET} route"}
{"timestamp":"2026-10-17T22:18:37.568Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/invoices, POST} route"}
{"timestamp":"2026-10-17T22:18:37.568Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/invoices, GET} route"}
{"timestamp":"2026-10-17T22:18:37.568Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/invoices/:id, GET} route"}
{"timestamp":"2026-10-17T22:18:37.568Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/invoices/:id, PUT} route"}
{"timestamp":"2026-10-17T22:18:37.568Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/invoices/:id, DELETE} route"}
{"timestamp":"2026-10-17T22:18:37.568Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/invoices/:id/mark-paid, PUT} route"}
{"timestamp":"2026-10-17T22:18:37.569Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/onboarding/generate-token, POST} route"}
{"timestamp":"2026-10-17T22:18:37.569Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/dashboard, GET} route"}
{"timestamp":"2026-10-17T22:18:37.569Z","level":"log","context":"RoutesResolver","message":"ResellerSubscriptionController {/reseller}:"}
{"timestamp":"2026-10-17T22:18:37.569Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/plans, POST} route"}
{"timestamp":"2026-10-17T22:18:37.569Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/plans, GET} route"}
{"timestamp":"2026-10-17T22:18:37.569Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/plans/:planId, GET} route"}
{"timestamp":"2026-10-17T22:18:37.569Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/plans/:planId, PUT} route"}
{"timestamp":"2026-10-17T22:18:37.570Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/plans/:planId, DELETE} route"}
{"timestamp":"2026-10-17T22:18:37.570Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/subscriptions/businesses/:businessId/subscription, POST} route"}
{"timestamp":"2026-10-17T22:18:37.570Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/subscriptions, GET} route"}
{"timestamp":"2026-10-17T22:18:37.570Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/subscriptions/businesses/:businessId/subscription, GET} route"}
{"timestamp":"2026-10-17T22:18:37.570Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/subscriptions/businesses/:businessId/subscription, PUT} route"}
{"timestamp":"2026-10-17T22:18:37.571Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/subscriptions/businesses/:businessId/subscription, DELETE} route"}
{"timestamp":"2026-10-17T22:18:37.571Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/subscriptions/businesses/:businessId/subscription/limits, GET} route"}
{"timestamp":"2026-10-17T22:18:37.571Z","level":"log","context":"RoutesResolver","message":"HealthController {/health}:"}
{"timestamp":"2026-10-17T22:18:37.571Z","level":"log","context":"RouterExplorer","message":"Mapped {/health, GET} route"}
{"timestamp":"2026-10-17T22:18:37.571Z","level":"log","context":"RouterExplorer","message":"Mapped {/health/test-logs, GET} route"}
{"timestamp":"2026-10-17T22:18:37.571Z","level":"log","context":"RoutesResolver","message":"AzureAdController {/azure-ad}:"}
{"timestamp":"2026-10-17T22:18:37.571Z","level":"log","context":"RouterExplorer","message":"Mapped {/azure-ad/config, POST} route"}
{"timestamp":"2026-10-17T22:18:37.572Z","level":"log","context":"RouterExplorer","message":"Mapped {/azure-ad/config, GET} route"}
{"timestamp":"2026-10-17T22:18:37.572Z","level":"log","context":"RouterExplorer","message":"Mapped {/azure-ad/test-connection, POST} route"}
{"timestamp":"2026-10-17T22:18:37.572Z","level":"log","context":"RouterExplorer","message":"Mapped {/azure-ad/sync, POST} route"}
{"timestamp":"2026-10-17T22:18:37.572Z","level":"log","context":"RoutesResolver","message":"ThreatsController {/threats}:"}
{"timestamp":"2026-10-17T22:18:37.572Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats, POST} route"}
{"timestamp":"2026-10-17T22:18:37.572Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats, GET} route"}
{"timestamp":"2026-10-17T22:18:37.572Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/chart-data, GET} route"}
{"timestamp":"2026-10-17T22:18:37.573Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/claude-search, POST} route"}
{"timestamp":"2026-10-17T22:18:37.573Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/claude-latest, POST} route"}
{"timestamp":"2026-10-17T22:18:37.573Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/claude-trending, POST} route"}
{"timestamp":"2026-10-17T22:18:37.573Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/claude-categories, POST} route"}
{"timestamp":"2026-10-17T22:18:37.573Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/claude-manual-search, POST} route"}
{"timestamp":"2026-10-17T22:18:37.574Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/claude-quick-search, POST} route"}
{"timestamp":"2026-10-17T22:18:37.574Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/scheduler-status, GET} route"}
{"timestamp":"2026-10-17T22:18:37.574Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/health-check, GET} route"}
{"timestamp":"2026-10-17T22:18:37.574Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/pause-scheduler, POST} route"}
{"timestamp":"2026-10-17T22:18:37.574Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/:id, GET} route"}
{"timestamp":"2026-10-17T22:18:37.574Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/:id, PATCH} route"}
{"timestamp":"2026-10-17T22:18:37.575Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/:id, DELETE} route"}
{"timestamp":"2026-10-17T22:18:37.575Z","level":"log","context":"RoutesResolver","message":"DomainController {/domains}:"}
{"timestamp":"2026-10-17T22:18:37.575Z","level":"log","context":"RouterExplorer","message":"Mapped {/domains, GET} route"}
{"timestamp":"2026-10-17T22:18:37.575Z","level":"log","context":"RouterExplorer","message":"Mapped {/domains/:id, GET} route"}
{"timestamp":"2026-10-17T22:18:37.575Z","level":"log","context":"RouterExplorer","message":"Mapped {/domains, POST} route"}
{"timestamp":"2026-10-17T22:18:37.575Z","level":"log","context":"RouterExplorer","message":"Mapped {/domains/:id, PUT} route"}
{"timestamp":"2026-10-17T22:18:37.576Z","level":"log","context":"RouterExplorer","message":"Mapped {/domains/:id, DELETE} route"}
{"timestamp":"2026-10-17T22:18:37.576Z","level":"log","context":"RouterExplorer","message":"Mapped {/domains/seed, POST} route"}
{"timestamp":"2026-10-17T22:18:37.576Z","level":"log","context":"RoutesResolver","message":"MspSubscriptionController {/msp-subscription}:"}
{"timestamp":"2026-10-17T22:18:37.576Z","level":"log","context":"RouterExplorer","message":"Mapped {/msp-subscription/current, GET} route"}
{"timestamp":"2026-10-17T22:18:37.576Z","level":"log","context":"RouterExplorer","message":"Mapped {/msp-subscription/invoices, GET} route"}
{"timestamp":"2026-10-17T22:18:37.576Z","level":"log","context":"RouterExplorer","message":"Mapped {/msp-subscription/invoice/:invoiceId/pdf, GET} route"}
{"timestamp":"2026-10-17T22:18:37.576Z","level":"log","context":"RoutesResolver","message":"MspSubscriptionController {/api/msp-subscription}:"}
{"timestamp":"2026-10-17T22:18:37.576Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/msp-subscription/current, GET} route"}
{"timestamp":"2026-10-17T22:18:37.577Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/msp-subscription/invoices, GET} route"}
{"timestamp":"2026-10-17T22:18:37.577Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/msp-subscription/invoice/:invoiceId/pdf, GET} route"}
{"timestamp":"2026-10-17T22:18:37.679Z","level":"log","context":"NestApplication","message":"Nest application successfully started"}
{"timestamp":"2026-10-17T22:18:37.698Z","level":"log","context":"Bootstrap","message":"Users API successfully started on port 3842"}
{"timestamp":"2026-10-17T22:18:37.698Z","level":"log","context":"SeedService","message":"🌱 Starting database seeding..."}
{"timestamp":"2026-10-17T22:18:37.702Z","level":"log","context":"SeedService","message":"Admin account already exists, skipping seed"}
{"timestamp":"2026-10-17T22:18:37.704Z","level":"log","context":"SeedService","message":"Reseller account already exists, skipping seed"}
{"timestamp":"2026-10-17T22:18:37.706Z","level":"log","context":"SeedService","message":"MSP account already exists, skipping seed"}
{"timestamp":"2026-10-17T22:18:37.706Z","level":"log","context":"SeedService","message":"✅ Database seeding completed successfully"}
{"timestamp":"2026-10-18T00:01:05.469Z","level":"warn","context":"LegacyRouteConverter","message":"Unsupported route path: \"/lp/*\". In previous versions, the symbols ?, *, and + were used to denote optional or repeating path parameters. The latest version of \"path-to-regexp\" now requires the use of named parameters. For example, instead of using a route like /users/* to capture all routes starting with \"/users\", you should use /users/*path. For more details, refer to the migration guide. Attempting to auto-convert..."}
{"timestamp":"2026-10-18T00:01:05.512Z","level":"log","context":"Bootstrap","message":"Starting Users API on port 3842..."}
{"timestamp":"2026-10-18T00:01:05.516Z","level":"log","context":"RoutesResolver","message":"UsersApiController {/}:"}
{"timestamp":"2026-10-18T00:01:05.520Z","level":"log","context":"RouterExplorer","message":"Mapped {/, GET} route"}
{"timestamp":"2026-10-18T00:01:05.520Z","level":"log","context":"RoutesResolver","message":"AuthController {/auth}:"}
{"timestamp":"2026-10-18T00:01:05.521Z","level":"log","context":"RouterExplorer","message":"Mapped {/auth/login, POST} route"}
{"timestamp":"2026-10-18T00:01:05.522Z","level":"log","context":"RouterExplorer","message":"Mapped {/auth/admin/login, POST} route"}
{"timestamp":"2026-10-18T00:01:05.522Z","level":"log","context":"RouterExplorer","message":"Mapped {/auth/send-otp, POST} route"}
{"timestamp":"2026-10-18T00:01:05.523Z","level":"log","context":"RouterExplorer","message":"Mapped {/auth/verify-otp, POST} route"}
{"timestamp":"2026-10-18T00:01:05.523Z","level":"log","context":"RouterExplorer","message":"Mapped {/auth/signup, POST} route"}
{"timestamp":"2026-10-18T00:01:05.524Z","level":"log","context":"RouterExplorer","message":"Mapped {/auth/subscription-status, GET} route"}
{"timestamp":"2026-10-18T00:01:05.524Z","level":"log","context":"RoutesResolver","message":"AdminMspController {/admin/msp}:"}
{"timestamp":"2026-10-18T00:01:05.525Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/msp, GET} route"}
{"timestamp":"2026-10-18T00:01:05.525Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/msp/:id, GET} route"}
{"timestamp":"2026-10-18T00:01:05.526Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/msp, POST} route"}
{"timestamp":"2026-10-18T00:01:05.526Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/msp/:id, PUT} route"}
{"timestamp":"2026-10-18T00:01:05.527Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/msp/:id, DELETE} route"}
{"timestamp":"2026-10-18T00:01:05.527Z","level":"log","context":"RoutesResolver","message":"AdminLicenseController {/admin/licenses}:"}
{"timestamp":"2026-10-18T00:01:05.527Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/licenses/summary, GET} route"}
{"timestamp":"2026-10-18T00:01:05.527Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/licenses/msp/:mspId, GET} route"}
{"timestamp":"2026-10-18T00:01:05.528Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/licenses/msp/:mspId, PUT} route"}
{"timestamp":"2026-10-18T00:01:05.528Z","level":"log","context":"RoutesResolver","message":"AdminImpersonationController {/admin/impersonation}:"}
{"timestamp":"2026-10-18T00:01:05.531Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/impersonation/msp-users, GET} route"}
{"timestamp":"2026-10-18T00:01:05.532Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/impersonation/impersonate, POST} route"}
{"timestamp":"2026-10-18T00:01:05.532Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/impersonation/stop, POST} route"}
{"timestamp":"2026-10-18T00:01:05.532Z","level":"log","context":"RoutesResolver","message":"AdminAiUsageController {/admin/ai-usage}:"}
{"timestamp":"2026-10-18T00:01:05.532Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-usage, GET} route"}
{"timestamp":"2026-10-18T00:01:05.532Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-usage/business/:businessId, GET} route"}
{"timestamp":"2026-10-18T00:01:05.533Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-usage/report/monthly, GET} route"}
{"timestamp":"2026-10-18T00:01:05.533Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-usage/pricing, GET} route"}
{"timestamp":"2026-10-18T00:01:05.533Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-usage/pricing, POST} route"}
{"timestamp":"2026-10-18T00:01:05.533Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-usage/credit/:businessId, PUT} route"}
{"timestamp":"2026-10-18T00:01:05.534Z","level":"log","context":"RoutesResolver","message":"AdminAiUsageController {/api/admin/ai-usage}:"}
{"timestamp":"2026-10-18T00:01:05.534Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-usage, GET} route"}
{"timestamp":"2026-10-18T00:01:05.534Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-usage/business/:businessId, GET} route"}
{"timestamp":"2026-10-18T00:01:05.534Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-usage/report/monthly, GET} route"}
{"timestamp":"2026-10-18T00:01:05.534Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-usage/pricing, GET} route"}
{"timestamp":"2026-10-18T00:01:05.535Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-usage/pricing, POST} route"}
{"timestamp":"2026-10-18T00:01:05.535Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-usage/credit/:businessId, PUT} route"}
{"timestamp":"2026-10-18T00:01:05.535Z","level":"log","context":"RoutesResolver","message":"AdminAiModelController {/admin/ai-models}:"}
{"timestamp":"2026-10-18T00:01:05.535Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models, POST} route"}
{"timestamp":"2026-10-18T00:01:05.535Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models, GET} route"}
{"timestamp":"2026-10-18T00:01:05.536Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/default, GET} route"}
{"timestamp":"2026-10-18T00:01:05.536Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/:id, GET} route"}
{"timestamp":"2026-10-18T00:01:05.536Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/:id, PUT} route"}
{"timestamp":"2026-10-18T00:01:05.536Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/:id, DELETE} route"}
{"timestamp":"2026-10-18T00:01:05.536Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/:id/set-default, POST} route"}
{"timestamp":"2026-10-18T00:01:05.537Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/assign-to-business, POST} route"}
{"timestamp":"2026-10-18T00:01:05.537Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/business/:businessId, GET} route"}
{"timestamp":"2026-10-18T00:01:05.537Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/:id/businesses, GET} route"}
{"timestamp":"2026-10-18T00:01:05.537Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/initialize-defaults, POST} route"}
{"timestamp":"2026-10-18T00:01:05.537Z","level":"log","context":"RoutesResolver","message":"AdminAiModelController {/api/admin/ai-models}:"}
{"timestamp":"2026-10-18T00:01:05.538Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models, POST} route"}
{"timestamp":"2026-10-18T00:01:05.538Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models, GET} route"}
{"timestamp":"2026-10-18T00:01:05.538Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/default, GET} route"}
{"timestamp":"2026-10-18T00:01:05.538Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/:id, GET} route"}
{"timestamp":"2026-10-18T00:01:05.538Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/:id, PUT} route"}
{"timestamp":"2026-10-18T00:01:05.539Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/:id, DELETE} route"}
{"timestamp":"2026-10-18T00:01:05.539Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/:id/set-default, POST} route"}
{"timestamp":"2026-10-18T00:01:05.539Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/assign-to-business, POST} route"}
{"timestamp":"2026-10-18T00:01:05.539Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/business/:businessId, GET} route"}
{"timestamp":"2026-10-18T00:01:05.539Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/:id/businesses, GET} route"}
{"timestamp":"2026-10-18T00:01:05.540Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/initialize-defaults, POST} route"}
{"timestamp":"2026-10-18T00:01:05.540Z","level":"log","context":"RoutesResolver","message":"AdminBusinessController {/admin/businesses}:"}
{"timestamp":"2026-10-18T00:01:05.540Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/businesses, GET} route"}
{"timestamp":"2026-10-18T00:01:05.540Z","level":"log","context":"RoutesResolver","message":"ResellerManagementController {/admin/resellers}:"}
{"timestamp":"2026-10-18T00:01:05.540Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/resellers, GET} route"}
{"timestamp":"2026-10-18T00:01:05.541Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/resellers/create-default, POST} route"}
{"timestamp":"2026-10-18T00:01:05.541Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/resellers, POST} route"}
{"timestamp":"2026-10-18T00:01:05.541Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/resellers/:id/toggle-status, PUT} route"}
{"timestamp":"2026-10-18T00:01:05.541Z","level":"log","context":"RoutesResolver","message":"SubscriptionController {/subscription}:"}
{"timestamp":"2026-10-18T00:01:05.541Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/plans, GET} route"}
{"timestamp":"2026-10-18T00:01:05.542Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/calculate-price, POST} route"}
{"timestamp":"2026-10-18T00:01:05.542Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/current, GET} route"}
{"timestamp":"2026-10-18T00:01:05.542Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/create, POST} route"}
{"timestamp":"2026-10-18T00:01:05.542Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/:id, PUT} route"}
{"timestamp":"2026-10-18T00:01:05.542Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/:id/cancel, DELETE} route"}
{"timestamp":"2026-10-18T00:01:05.543Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/sync/:stripeSubscriptionId, POST} route"}
{"timestamp":"2026-10-18T00:01:05.543Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/payments, GET} route"}
{"timestamp":"2026-10-18T00:01:05.543Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/payments/stats, GET} route"}
{"timestamp":"2026-10-18T00:01:05.543Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/payment/:id, GET} route"}
{"timestamp":"2026-10-18T00:01:05.543Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/payment-methods/attach, POST} route"}
{"timestamp":"2026-10-18T00:01:05.543Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/payment-methods/:paymentMethodId, DELETE} route"}
{"timestamp":"2026-10-18T00:01:05.544Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/payment-methods, GET} route"}
{"timestamp":"2026-10-18T00:01:05.544Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/setup-intent, POST} route"}
{"timestamp":"2026-10-18T00:01:05.544Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/update-employee-count, POST} route"}
{"timestamp":"2026-10-18T00:01:05.544Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/retry-payment/:subscriptionId, POST} route"}
{"timestamp":"2026-10-18T00:01:05.544Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/invoice/:invoiceId/pdf, GET} route"}
{"timestamp":"2026-10-18T00:01:05.545Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/preview-upgrade, POST} route"}
{"timestamp":"2026-10-18T00:01:05.545Z","level":"log","context":"RoutesResolver","message":"SubscriptionController {/api/subscription}:"}
{"timestamp":"2026-10-18T00:01:05.545Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/plans, GET} route"}
{"timestamp":"2026-10-18T00:01:05.545Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/calculate-price, POST} route"}
{"timestamp":"2026-10-18T00:01:05.545Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/current, GET} route"}
{"timestamp":"2026-10-18T00:01:05.545Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/create, POST} route"}
{"timestamp":"2026-10-18T00:01:05.546Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/:id, PUT} route"}
{"timestamp":"2026-10-18T00:01:05.546Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/:id/cancel, DELETE} route"}
{"timestamp":"2026-10-18T00:01:05.546Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/sync/:stripeSubscriptionId, POST} route"}
{"timestamp":"2026-10-18T00:01:05.546Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/payments, GET} route"}
{"timestamp":"2026-10-18T00:01:05.546Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/payments/stats, GET} route"}
{"timestamp":"2026-10-18T00:01:05.546Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/payment/:id, GET} route"}
{"timestamp":"2026-10-18T00:01:05.547Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/payment-methods/attach, POST} route"}
{"timestamp":"2026-10-18T00:01:05.547Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/payment-methods/:paymentMethodId, DELETE} route"}
{"timestamp":"2026-10-18T00:01:05.547Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/payment-methods, GET} route"}
{"timestamp":"2026-10-18T00:01:05.547Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/setup-intent, POST} route"}
{"timestamp":"2026-10-18T00:01:05.547Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/update-employee-count, POST} route"}
{"timestamp":"2026-10-18T00:01:05.547Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/retry-payment/:subscriptionId, POST} route"}
{"timestamp":"2026-10-18T00:01:05.548Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/invoice/:invoiceId/pdf, GET} route"}
{"timestamp":"2026-10-18T00:01:05.548Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/preview-upgrade, POST} route"}
{"timestamp":"2026-10-18T00:01:05.548Z","level":"log","context":"RoutesResolver","message":"StripeWebhookController {/stripe/webhook}:"}
{"timestamp":"2026-10-18T00:01:05.548Z","level":"log","context":"RouterExplorer","message":"Mapped {/stripe/webhook/test, GET} route"}
{"timestamp":"2026-10-18T00:01:05.548Z","level":"log","context":"RouterExplorer","message":"Mapped {/stripe/webhook, POST} route"}
{"timestamp":"2026-10-18T00:01:05.548Z","level":"log","context":"RoutesResolver","message":"EmailController {/email-templates}:"}
{"timestamp":"2026-10-18T00:01:05.549Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates/test, POST} route"}
{"timestamp":"2026-10-18T00:01:05.549Z","level":"log","context":"RoutesResolver","message":"EmployeeController {/employees}:"}
{"timestamp":"2026-10-18T00:01:05.549Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees, POST} route"}
{"timestamp":"2026-10-18T00:01:05.549Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees, GET} route"}
{"timestamp":"2026-10-18T00:01:05.549Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees/export, GET} route"}
{"timestamp":"2026-10-18T00:01:05.549Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees/risk-stats, GET} route"}
{"timestamp":"2026-10-18T00:01:05.550Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees/:id, GET} route"}
{"timestamp":"2026-10-18T00:01:05.550Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees/:id, PUT} route"}
{"timestamp":"2026-10-18T00:01:05.550Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees/:id, DELETE} route"}
{"timestamp":"2026-10-18T00:01:05.550Z","level":"log","context":"RoutesResolver","message":"GroupController {/groups}:"}
{"timestamp":"2026-10-18T00:01:05.550Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups, POST} route"}
{"timestamp":"2026-10-18T00:01:05.550Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups, GET} route"}
{"timestamp":"2026-10-18T00:01:05.551Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups/standard, GET} route"}
{"timestamp":"2026-10-18T00:01:05.551Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups/:id, GET} route"}
{"timestamp":"2026-10-18T00:01:05.551Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups/:id, PUT} route"}
{"timestamp":"2026-10-18T00:01:05.551Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups/:id, DELETE} route"}
{"timestamp":"2026-10-18T00:01:05.551Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups/:id/info, GET} route"}
{"timestamp":"2026-10-18T00:01:05.551Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups/:id/with-employees, GET} route"}
{"timestamp":"2026-10-18T00:01:05.552Z","level":"log","context":"RoutesResolver","message":"SenderProfileController {/sender-profiles}:"}
{"timestamp":"2026-10-18T00:01:05.552Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles, GET} route"}
{"timestamp":"2026-10-18T00:01:05.552Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles/:id, GET} route"}
{"timestamp":"2026-10-18T00:01:05.552Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles, POST} route"}
{"timestamp":"2026-10-18T00:01:05.552Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles/:id, PUT} route"}
{"timestamp":"2026-10-18T00:01:05.552Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles/:id, DELETE} route"}
{"timestamp":"2026-10-18T00:01:05.553Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles/:id/verify-domain, POST} route"}
{"timestamp":"2026-10-18T00:01:05.553Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles/domain-verification, GET} route"}
{"timestamp":"2026-10-18T00:01:05.553Z","level":"log","context":"RoutesResolver","message":"EmailTemplateController {/email-templates}:"}
{"timestamp":"2026-10-18T00:01:05.553Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates, GET} route"}
{"timestamp":"2026-10-18T00:01:05.553Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates/:id, GET} route"}
{"timestamp":"2026-10-18T00:01:05.554Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates, POST} route"}
{"timestamp":"2026-10-18T00:01:05.554Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates/:id, PUT} route"}
{"timestamp":"2026-10-18T00:01:05.554Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates/:id, DELETE} route"}
{"timestamp":"2026-10-18T00:01:05.554Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates/:id/duplicate, POST} route"}
{"timestamp":"2026-10-18T00:01:05.554Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates/:id/preview, GET} route"}
{"timestamp":"2026-10-18T00:01:05.554Z","level":"log","context":"RoutesResolver","message":"ScenarioController {/scenarios}:"}
{"timestamp":"2026-10-18T00:01:05.555Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios, POST} route"}
{"timestamp":"2026-10-18T00:01:05.555Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios/generate-content, POST} route"}
{"timestamp":"2026-10-18T00:01:05.555Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios, GET} route"}
{"timestamp":"2026-10-18T00:01:05.555Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios/:id, GET} route"}
{"timestamp":"2026-10-18T00:01:05.555Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios/:id, PUT} route"}
{"timestamp":"2026-10-18T00:01:05.555Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios/:id, DELETE} route"}
{"timestamp":"2026-10-18T00:01:05.556Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios/generate-from-json, POST} route"}
{"timestamp":"2026-10-18T00:01:05.556Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios/:id/save-as-custom-scenario, POST} route"}
{"timestamp":"2026-10-18T00:01:05.556Z","level":"log","context":"RoutesResolver","message":"CampaignController {/campaigns}:"}
{"timestamp":"2026-10-18T00:01:05.556Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns, POST} route"}
{"timestamp":"2026-10-18T00:01:05.556Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns, GET} route"}
{"timestamp":"2026-10-18T00:01:05.556Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id, GET} route"}
{"timestamp":"2026-10-18T00:01:05.557Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id/details, GET} route"}
{"timestamp":"2026-10-18T00:01:05.557Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id/employees, GET} route"}
{"timestamp":"2026-10-18T00:01:05.557Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id, PATCH} route"}
{"timestamp":"2026-10-18T00:01:05.557Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id/start, POST} route"}
{"timestamp":"2026-10-18T00:01:05.558Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id/stop, POST} route"}
{"timestamp":"2026-10-18T00:01:05.558Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id/duplicate, POST} route"}
{"timestamp":"2026-10-18T00:01:05.558Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id, DELETE} route"}
{"timestamp":"2026-10-18T00:01:05.558Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/auto-generate-program, POST} route"}
{"timestamp":"2026-10-18T00:01:05.558Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/generate-from-threat-intelligence, POST} route"}
{"timestamp":"2026-10-18T00:01:05.558Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id/risk-score, GET} route"}
{"timestamp":"2026-10-18T00:01:05.559Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/recalculate-risk-scores, POST} route"}
{"timestamp":"2026-10-18T00:01:05.559Z","level":"log","context":"RoutesResolver","message":"CampaignController {/api/campaigns}:"}
{"timestamp":"2026-10-18T00:01:05.559Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns, POST} route"}
{"timestamp":"2026-10-18T00:01:05.559Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns, GET} route"}
{"timestamp":"2026-10-18T00:01:05.559Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id, GET} route"}
{"timestamp":"2026-10-18T00:01:05.559Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id/details, GET} route"}
{"timestamp":"2026-10-18T00:01:05.560Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id/employees, GET} route"}
{"timestamp":"2026-10-18T00:01:05.560Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id, PATCH} route"}
{"timestamp":"2026-10-18T00:01:05.560Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id/start, POST} route"}
{"timestamp":"2026-10-18T00:01:05.560Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id/stop, POST} route"}
{"timestamp":"2026-10-18T00:01:05.560Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id/duplicate, POST} route"}
{"timestamp":"2026-10-18T00:01:05.560Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id, DELETE} route"}
{"timestamp":"2026-10-18T00:01:05.561Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/auto-generate-program, POST} route"}
{"timestamp":"2026-10-18T00:01:05.561Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/generate-from-threat-intelligence, POST} route"}
{"timestamp":"2026-10-18T00:01:05.561Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id/risk-score, GET} route"}
{"timestamp":"2026-10-18T00:01:05.561Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/recalculate-risk-scores, POST} route"}
{"timestamp":"2026-10-18T00:01:05.561Z","level":"log","context":"RoutesResolver","message":"NotificationsController {/notifications}:"}
{"timestamp":"2026-10-18T00:01:05.562Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications, POST} route"}
{"timestamp":"2026-10-18T00:01:05.562Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications, GET} route"}
{"timestamp":"2026-10-18T00:01:05.562Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/unread, GET} route"}
{"timestamp":"2026-10-18T00:01:05.562Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/unread-count, GET} route"}
{"timestamp":"2026-10-18T00:01:05.562Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/:id, GET} route"}
{"timestamp":"2026-10-18T00:01:05.562Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/:id, PATCH} route"}
{"timestamp":"2026-10-18T00:01:05.563Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/:id/read, PATCH} route"}
{"timestamp":"2026-10-18T00:01:05.563Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/mark-all-read, PATCH} route"}
{"timestamp":"2026-10-18T00:01:05.563Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/:id, DELETE} route"}
{"timestamp":"2026-10-18T00:01:05.563Z","level":"log","context":"RoutesResolver","message":"LandingPageController {/lp}:"}
{"timestamp":"2026-10-18T00:01:05.564Z","level":"log","context":"RouterExplorer","message":"Mapped {/lp/image, GET} route"}
{"timestamp":"2026-10-18T00:01:05.564Z","level":"log","context":"RouterExplorer","message":"Mapped {/lp/learning, GET} route"}
{"timestamp":"2026-10-18T00:01:05.564Z","level":"log","context":"RouterExplorer","message":"Mapped {/lp/submit, POST} route"}
{"timestamp":"2026-10-18T00:01:05.564Z","level":"log","context":"RouterExplorer","message":"Mapped {/lp/test, GET} route"}
{"timestamp":"2026-10-18T00:01:05.564Z","level":"warn","context":"LegacyRouteConverter","message":"Unsupported route path: \"/lp/*\". In previous versions, the symbols ?, *, and + were used to denote optional or repeating path parameters. The latest version of \"path-to-regexp\" now requires the use of named parameters. For example, instead of using a route like /users/* to capture all routes starting with \"/users\", you should use /users/*path. For more details, refer to the migration guide. Attempting to auto-convert..."}
{"timestamp":"2026-10-18T00:01:05.565Z","level":"log","context":"RouterExplorer","message":"Mapped {/lp/*, ALL} route"}
{"timestamp":"2026-10-18T00:01:05.565Z","level":"log","context":"RoutesResolver","message":"SupportController {/support}:"}
{"timestamp":"2026-10-18T00:01:05.566Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets, POST} route"}
{"timestamp":"2026-10-18T00:01:05.566Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets, GET} route"}
{"timestamp":"2026-10-18T00:01:05.566Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets/:id, GET} route"}
{"timestamp":"2026-10-18T00:01:05.566Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets/:id, PATCH} route"}
{"timestamp":"2026-10-18T00:01:05.566Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets/:id, DELETE} route"}
{"timestamp":"2026-10-18T00:01:05.567Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets/:id/messages, POST} route"}
{"timestamp":"2026-10-18T00:01:05.567Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets/:id/close, POST} route"}
{"timestamp":"2026-10-18T00:01:05.567Z","level":"log","context":"RoutesResolver","message":"BusninessMetricsController {/business-metrics}:"}
{"timestamp":"2026-10-18T00:01:05.567Z","level":"log","context":"RouterExplorer","message":"Mapped {/business-metrics, GET} route"}
{"timestamp":"2026-10-18T00:01:05.567Z","level":"log","context":"RoutesResolver","message":"UsersController {/users}:"}
{"timestamp":"2026-10-18T00:01:05.567Z","level":"log","context":"RouterExplorer","message":"Mapped {/users/:id, PUT} route"}
{"timestamp":"2026-10-18T00:01:05.568Z","level":"log","context":"RouterExplorer","message":"Mapped {/users/settings, GET} route"}
{"timestamp":"2026-10-18T00:01:05.568Z","level":"log","context":"RouterExplorer","message":"Mapped {/users/settings/general, PUT} route"}
{"timestamp":"2026-10-18T00:01:05.568Z","level":"log","context":"RouterExplorer","message":"Mapped {/users/company/settings, PUT} route"}
{"timestamp":"2026-10-18T00:01:05.568Z","level":"log","context":"RouterExplorer","message":"Mapped {/users/change-password, POST} route"}
{"timestamp":"2026-10-18T00:01:05.568Z","level":"log","context":"RouterExplorer","message":"Mapped {/users/localization/settings, PUT} route"}
{"timestamp":"2026-10-18T00:01:05.568Z","level":"log","context":"RoutesResolver","message":"PartnerController {/partner}:"}
{"timestamp":"2026-10-18T00:01:05.569Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses, POST} route"}
{"timestamp":"2026-10-18T00:01:05.569Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses, GET} route"}
{"timestamp":"2026-10-18T00:01:05.569Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses/:id, GET} route"}
{"timestamp":"2026-10-18T00:01:05.569Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses/:id, PUT} route"}
{"timestamp":"2026-10-18T00:01:05.569Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses/:id, DELETE} route"}
{"timestamp":"2026-10-18T00:01:05.570Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses/:id/impersonate, POST} route"}
{"timestamp":"2026-10-18T00:01:05.570Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses/stop-impersonation, POST} route"}
{"timestamp":"2026-10-18T00:01:05.570Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/license-usage, GET} route"}
{"timestamp":"2026-10-18T00:01:05.570Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/invoices, POST} route"}
{"timestamp":"2026-10-18T00:01:05.570Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/invoices, GET} route"}
{"timestamp":"2026-10-18T00:01:05.571Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/invoices/:id, GET} route"}
{"timestamp":"2026-10-18T00:01:05.571Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/invoices/:id, PUT} route"}
{"timestamp":"2026-10-18T00:01:05.571Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/invoices/:id, DELETE} route"}
{"timestamp":"2026-10-18T00:01:05.571Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/invoices/:id/mark-paid, PUT} route"}
{"timestamp":"2026-10-18T00:01:05.571Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/onboarding/generate-token, POST} route"}
{"timestamp":"2026-10-18T00:01:05.571Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/dashboard, GET} route"}
{"timestamp":"2026-10-18T00:01:05.571Z","level":"log","context":"RoutesResolver","message":"MspSubscriptionController {/partner/msp-subscriptions}:"}
{"timestamp":"2026-10-18T00:01:05.572Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/plans, POST} route"}
{"timestamp":"2026-10-18T00:01:05.572Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/plans, GET} route"}
{"timestamp":"2026-10-18T00:01:05.572Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/plans/:planId, GET} route"}
{"timestamp":"2026-10-18T00:01:05.572Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/plans/:planId, PUT} route"}
{"timestamp":"2026-10-18T00:01:05.572Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/plans/:planId, DELETE} route"}
{"timestamp":"2026-10-18T00:01:05.573Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/businesses/:businessId/subscription, POST} route"}
{"timestamp":"2026-10-18T00:01:05.573Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions, GET} route"}
{"timestamp":"2026-10-18T00:01:05.573Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/businesses/:businessId/subscription, GET} route"}
{"timestamp":"2026-10-18T00:01:05.573Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/businesses/:businessId/subscription, PUT} route"}
{"timestamp":"2026-10-18T00:01:05.573Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/businesses/:businessId/subscription, DELETE} route"}
{"timestamp":"2026-10-18T00:01:05.574Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/businesses/:businessId/subscription/limits, GET} route"}
{"timestamp":"2026-10-18T00:01:05.574Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/businesses/:businessId/subscription/change-plan, PUT} route"}
{"timestamp":"2026-10-18T00:01:05.574Z","level":"log","context":"RoutesResolver","message":"OnboardingController {/onboarding}:"}
{"timestamp":"2026-10-18T00:01:05.574Z","level":"log","context":"RouterExplorer","message":"Mapped {/onboarding/validate/:token, GET} route"}
{"timestamp":"2026-10-18T00:01:05.574Z","level":"log","context":"RouterExplorer","message":"Mapped {/onboarding/complete/:token, POST} route"}
{"timestamp":"2026-10-18T00:01:05.574Z","level":"log","context":"RoutesResolver","message":"ResellerController {/reseller}:"}
{"timestamp":"2026-10-18T00:01:05.575Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/businesses, POST} route"}
{"timestamp":"2026-10-18T00:01:05.575Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/businesses, GET} route"}
{"timestamp":"2026-10-18T00:01:05.575Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/businesses/:id, GET} route"}
{"timestamp":"2026-10-18T00:01:05.575Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/businesses/:id, PUT} route"}
{"timestamp":"2026-10-18T00:01:05.575Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/businesses/:id, DELETE} route"}
{"timestamp":"2026-10-18T00:01:05.575Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/license-usage, GET} route"}
{"timestamp":"2026-10-18T00:01:05.576Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/invoices, POST} route"}
{"timestamp":"2026-10-18T00:01:05.576Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/invoices, GET} route"}
{"timestamp":"2026-10-18T00:01:05.576Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/invoices/:id, GET} route"}
{"timestamp":"2026-10-18T00:01:05.576Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/invoices/:id, PUT} route"}
{"timestamp":"2026-10-18T00:01:05.576Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/invoices/:id, DELETE} route"}
{"timestamp":"2026-10-18T00:01:05.576Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/invoices/:id/mark-paid, PUT} route"}
{"timestamp":"2026-10-18T00:01:05.577Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/onboarding/generate-token, POST} route"}
{"timestamp":"2026-10-18T00:01:05.577Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/dashboard, GET} route"}
{"timestamp":"2026-10-18T00:01:05.577Z","level":"log","context":"RoutesResolver","message":"ResellerSubscriptionController {/reseller}:"}
{"timestamp":"2026-10-18T00:01:05.577Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/plans, POST} route"}
{"timestamp":"2026-10-18T00:01:05.577Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/plans, GET} route"}
{"timestamp":"2026-10-18T00:01:05.577Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/plans/:planId, GET} route"}
{"timestamp":"2026-10-18T00:01:05.577Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/plans/:planId, PUT} route"}
{"timestamp":"2026-10-18T00:01:05.578Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/plans/:planId, DELETE} route"}
{"timestamp":"2026-10-18T00:01:05.578Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/subscriptions/businesses/:businessId/subscription, POST} route"}
{"timestamp":"2026-10-18T00:01:05.578Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/subscriptions, GET} route"}
{"timestamp":"2026-10-18T00:01:05.578Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/subscriptions/businesses/:businessId/subscription, GET} route"}
{"timestamp":"2026-10-18T00:01:05.578Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/subscriptions/businesses/:businessId/subscription, PUT} route"}
{"timestamp":"2026-10-18T00:01:05.579Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/subscriptions/businesses/:businessId/subscription, DELETE} route"}
{"timestamp":"2026-10-18T00:01:05.579Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/subscriptions/businesses/:businessId/subscription/limits, GET} route"}
{"timestamp":"2026-10-18T00:01:05.579Z","level":"log","context":"RoutesResolver","message":"HealthController {/health}:"}
{"timestamp":"2026-10-18T00:01:05.579Z","level":"log","context":"RouterExplorer","message":"Mapped {/health, GET} route"}
{"timestamp":"2026-10-18T00:01:05.579Z","level":"log","context":"RouterExplorer","message":"Mapped {/health/test-logs, GET} route"}
{"timestamp":"2026-10-18T00:01:05.579Z","level":"log","context":"RoutesResolver","message":"AzureAdController {/azure-ad}:"}
{"timestamp":"2026-10-18T00:01:05.579Z","level":"log","context":"RouterExplorer","message":"Mapped {/azure-ad/config, POST} route"}
{"timestamp":"2026-10-18T00:01:05.580Z","level":"log","context":"RouterExplorer","message":"Mapped {/azure-ad/config, GET} route"}
{"timestamp":"2026-10-18T00:01:05.580Z","level":"log","context":"RouterExplorer","message":"Mapped {/azure-ad/test-connection, POST} route"}
{"timestamp":"2026-10-18T00:01:05.580Z","level":"log","context":"RouterExplorer","message":"Mapped {/azure-ad/sync, POST} route"}
{"timestamp":"2026-10-18T00:01:05.580Z","level":"log","context":"RoutesResolver","message":"ThreatsController {/threats}:"}
{"timestamp":"2026-10-18T00:01:05.580Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats, POST} route"}
{"timestamp":"2026-10-18T00:01:05.580Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats, GET} route"}
{"timestamp":"2026-10-18T00:01:05.581Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/chart-data, GET} route"}
{"timestamp":"2026-10-18T00:01:05.581Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/claude-search, POST} route"}
{"timestamp":"2026-10-18T00:01:05.581Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/claude-latest, POST} route"}
{"timestamp":"2026-10-18T00:01:05.581Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/claude-trending, POST} route"}
{"timestamp":"2026-10-18T00:01:05.581Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/claude-categories, POST} route"}
{"timestamp":"2026-10-18T00:01:05.581Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/claude-manual-search, POST} route"}
{"timestamp":"2026-10-18T00:01:05.582Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/claude-quick-search, POST} route"}
{"timestamp":"2026-10-18T00:01:05.582Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/scheduler-status, GET} route"}
{"timestamp":"2026-10-18T00:01:05.582Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/health-check, GET} route"}
{"timestamp":"2026-10-18T00:01:05.582Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/pause-scheduler, POST} route"}
{"timestamp":"2026-10-18T00:01:05.582Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/:id, GET} route"}
{"timestamp":"2026-10-18T00:01:05.582Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/:id, PATCH} route"}
{"timestamp":"2026-10-18T00:01:05.583Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/:id, DELETE} route"}
{"timestamp":"2026-10-18T00:01:05.583Z","level":"log","context":"RoutesResolver","message":"DomainController {/domains}:"}
{"timestamp":"2026-10-18T00:01:05.583Z","level":"log","context":"RouterExplorer","message":"Mapped {/domains, GET} route"}
{"timestamp":"2026-10-18T00:01:05.583Z","level":"log","context":"RouterExplorer","message":"Mapped {/domains/:id, GET} route"}
{"timestamp":"2026-10-18T00:01:05.583Z","level":"log","context":"RouterExplorer","message":"Mapped {/domains, POST} route"}
{"timestamp":"2026-10-18T00:01:05.583Z","level":"log","context":"RouterExplorer","message":"Mapped {/domains/:id, PUT} route"}
{"timestamp":"2026-10-18T00:01:05.584Z","level":"log","context":"RouterExplorer","message":"Mapped {/domains/:id, DELETE} route"}
{"timestamp":"2026-10-18T00:01:05.584Z","level":"log","context":"RouterExplorer","message":"Mapped {/domains/seed, POST} route"}
{"timestamp":"2026-10-18T00:01:05.584Z","level":"log","context":"RoutesResolver","message":"MspSubscriptionController {/msp-subscription}:"}
{"timestamp":"2026-10-18T00:01:05.584Z","level":"log","context":"RouterExplorer","message":"Mapped {/msp-subscription/current, GET} route"}
{"timestamp":"2026-10-18T00:01:05.584Z","level":"log","context":"RouterExplorer","message":"Mapped {/msp-subscription/invoices, GET} route"}
{"timestamp":"2026-10-18T00:01:05.584Z","level":"log","context":"RouterExplorer","message":"Mapped {/msp-subscription/invoice/:invoiceId/pdf, GET} route"}
{"timestamp":"2026-10-18T00:01:05.584Z","level":"log","context":"RoutesResolver","message":"MspSubscriptionController {/api/msp-subscription}:"}
{"timestamp":"2026-10-18T00:01:05.585Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/msp-subscription/current, GET} route"}
{"timestamp":"2026-10-18T00:01:05.585Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/msp-subscription/invoices, GET} route"}
{"timestamp":"2026-10-18T00:01:05.585Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/msp-subscription/invoice/:invoiceId/pdf, GET} route"}
{"timestamp":"2026-10-18T00:01:05.664Z","level":"log","context":"NestApplication","message":"Nest application successfully started"}
{"timestamp":"2026-10-18T00:01:05.672Z","level":"log","context":"Bootstrap","message":"Users API successfully started on port 3842"}
{"timestamp":"2026-10-18T00:01:05.672Z","level":"log","context":"SeedService","message":"🌱 Starting database seeding..."}
{"timestamp":"2026-10-18T00:01:05.679Z","level":"log","context":"SeedService","message":"Admin account already exists, skipping seed"}
{"timestamp":"2026-10-18T00:01:05.681Z","level":"log","context":"SeedService","message":"Reseller account already exists, skipping seed"}
{"timestamp":"2026-10-18T00:01:05.683Z","level":"log","context":"SeedService","message":"MSP account already exists, skipping seed"}
{"timestamp":"2026-10-18T00:01:05.683Z","level":"log","context":"SeedService","message":"✅ Database seeding completed successfully"}
{"timestamp":"2026-10-18T00:48:03.513Z","level":"warn","context":"LegacyRouteConverter","message":"Unsupported route path: \"/lp/*\". In previous versions, the symbols ?, *, and + were used to denote optional or repeating path parameters. The latest version of \"path-to-regexp\" now requires the use of named parameters. For example, instead of using a route like /users/* to capture all routes starting with \"/users\", you should use /users/*path. For more details, refer to the migration guide. Attempting to auto-convert..."}
{"timestamp":"2026-10-18T00:48:03.553Z","level":"log","context":"Bootstrap","message":"Starting Users API on port 3842..."}
{"timestamp":"2026-10-18T00:48:03.556Z","level":"log","context":"RoutesResolver","message":"UsersApiController {/}:"}
{"timestamp":"2026-10-18T00:48:03.560Z","level":"log","context":"RouterExplorer","message":"Mapped {/, GET} route"}
{"timestamp":"2026-10-18T00:48:03.560Z","level":"log","context":"RoutesResolver","message":"AuthController {/auth}:"}
{"timestamp":"2026-10-18T00:48:03.561Z","level":"log","context":"RouterExplorer","message":"Mapped {/auth/login, POST} route"}
{"timestamp":"2026-10-18T00:48:03.562Z","level":"log","context":"RouterExplorer","message":"Mapped {/auth/admin/login, POST} route"}
{"timestamp":"2026-10-18T00:48:03.562Z","level":"log","context":"RouterExplorer","message":"Mapped {/auth/send-otp, POST} route"}
{"timestamp":"2026-10-18T00:48:03.563Z","level":"log","context":"RouterExplorer","message":"Mapped {/auth/verify-otp, POST} route"}
{"timestamp":"2026-10-18T00:48:03.563Z","level":"log","context":"RouterExplorer","message":"Mapped {/auth/signup, POST} route"}
{"timestamp":"2026-10-18T00:48:03.564Z","level":"log","context":"RouterExplorer","message":"Mapped {/auth/subscription-status, GET} route"}
{"timestamp":"2026-10-18T00:48:03.564Z","level":"log","context":"RoutesResolver","message":"AdminMspController {/admin/msp}:"}
{"timestamp":"2026-10-18T00:48:03.565Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/msp, GET} route"}
{"timestamp":"2026-10-18T00:48:03.565Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/msp/:id, GET} route"}
{"timestamp":"2026-10-18T00:48:03.566Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/msp, POST} route"}
{"timestamp":"2026-10-18T00:48:03.566Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/msp/:id, PUT} route"}
{"timestamp":"2026-10-18T00:48:03.567Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/msp/:id, DELETE} route"}
{"timestamp":"2026-10-18T00:48:03.567Z","level":"log","context":"RoutesResolver","message":"AdminLicenseController {/admin/licenses}:"}
{"timestamp":"2026-10-18T00:48:03.567Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/licenses/summary, GET} route"}
{"timestamp":"2026-10-18T00:48:03.567Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/licenses/msp/:mspId, GET} route"}
{"timestamp":"2026-10-18T00:48:03.568Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/licenses/msp/:mspId, PUT} route"}
{"timestamp":"2026-10-18T00:48:03.568Z","level":"log","context":"RoutesResolver","message":"AdminImpersonationController {/admin/impersonation}:"}
{"timestamp":"2026-10-18T00:48:03.571Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/impersonation/msp-users, GET} route"}
{"timestamp":"2026-10-18T00:48:03.571Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/impersonation/impersonate, POST} route"}
{"timestamp":"2026-10-18T00:48:03.571Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/impersonation/stop, POST} route"}
{"timestamp":"2026-10-18T00:48:03.571Z","level":"log","context":"RoutesResolver","message":"AdminAiUsageController {/admin/ai-usage}:"}
{"timestamp":"2026-10-18T00:48:03.572Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-usage, GET} route"}
{"timestamp":"2026-10-18T00:48:03.572Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-usage/business/:businessId, GET} route"}
{"timestamp":"2026-10-18T00:48:03.572Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-usage/report/monthly, GET} route"}
{"timestamp":"2026-10-18T00:48:03.572Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-usage/pricing, GET} route"}
{"timestamp":"2026-10-18T00:48:03.572Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-usage/pricing, POST} route"}
{"timestamp":"2026-10-18T00:48:03.573Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-usage/credit/:businessId, PUT} route"}
{"timestamp":"2026-10-18T00:48:03.573Z","level":"log","context":"RoutesResolver","message":"AdminAiUsageController {/api/admin/ai-usage}:"}
{"timestamp":"2026-10-18T00:48:03.573Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-usage, GET} route"}
{"timestamp":"2026-10-18T00:48:03.573Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-usage/business/:businessId, GET} route"}
{"timestamp":"2026-10-18T00:48:03.573Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-usage/report/monthly, GET} route"}
{"timestamp":"2026-10-18T00:48:03.574Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-usage/pricing, GET} route"}
{"timestamp":"2026-10-18T00:48:03.574Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-usage/pricing, POST} route"}
{"timestamp":"2026-10-18T00:48:03.574Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-usage/credit/:businessId, PUT} route"}
{"timestamp":"2026-10-18T00:48:03.574Z","level":"log","context":"RoutesResolver","message":"AdminAiModelController {/admin/ai-models}:"}
{"timestamp":"2026-10-18T00:48:03.574Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models, POST} route"}
{"timestamp":"2026-10-18T00:48:03.574Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models, GET} route"}
{"timestamp":"2026-10-18T00:48:03.575Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/default, GET} route"}
{"timestamp":"2026-10-18T00:48:03.575Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/:id, GET} route"}
{"timestamp":"2026-10-18T00:48:03.575Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/:id, PUT} route"}
{"timestamp":"2026-10-18T00:48:03.575Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/:id, DELETE} route"}
{"timestamp":"2026-10-18T00:48:03.575Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/:id/set-default, POST} route"}
{"timestamp":"2026-10-18T00:48:03.576Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/assign-to-business, POST} route"}
{"timestamp":"2026-10-18T00:48:03.576Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/business/:businessId, GET} route"}
{"timestamp":"2026-10-18T00:48:03.576Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/:id/businesses, GET} route"}
{"timestamp":"2026-10-18T00:48:03.576Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/initialize-defaults, POST} route"}
{"timestamp":"2026-10-18T00:48:03.576Z","level":"log","context":"RoutesResolver","message":"AdminAiModelController {/api/admin/ai-models}:"}
{"timestamp":"2026-10-18T00:48:03.577Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models, POST} route"}
{"timestamp":"2026-10-18T00:48:03.577Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models, GET} route"}
{"timestamp":"2026-10-18T00:48:03.577Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/default, GET} route"}
{"timestamp":"2026-10-18T00:48:03.577Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/:id, GET} route"}
{"timestamp":"2026-10-18T00:48:03.577Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/:id, PUT} route"}
{"timestamp":"2026-10-18T00:48:03.577Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/:id, DELETE} route"}
{"timestamp":"2026-10-18T00:48:03.578Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/:id/set-default, POST} route"}
{"timestamp":"2026-10-18T00:48:03.578Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/assign-to-business, POST} route"}
{"timestamp":"2026-10-18T00:48:03.578Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/business/:businessId, GET} route"}
{"timestamp":"2026-10-18T00:48:03.578Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/:id/businesses, GET} route"}
{"timestamp":"2026-10-18T00:48:03.578Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/initialize-defaults, POST} route"}
{"timestamp":"2026-10-18T00:48:03.579Z","level":"log","context":"RoutesResolver","message":"AdminBusinessController {/admin/businesses}:"}
{"timestamp":"2026-10-18T00:48:03.579Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/businesses, GET} route"}
{"timestamp":"2026-10-18T00:48:03.579Z","level":"log","context":"RoutesResolver","message":"ResellerManagementController {/admin/resellers}:"}
{"timestamp":"2026-10-18T00:48:03.579Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/resellers, GET} route"}
{"timestamp":"2026-10-18T00:48:03.579Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/resellers/create-default, POST} route"}
{"timestamp":"2026-10-18T00:48:03.579Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/resellers, POST} route"}
{"timestamp":"2026-10-18T00:48:03.580Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/resellers/:id/toggle-status, PUT} route"}
{"timestamp":"2026-10-18T00:48:03.580Z","level":"log","context":"RoutesResolver","message":"SubscriptionController {/subscription}:"}
{"timestamp":"2026-10-18T00:48:03.580Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/plans, GET} route"}
{"timestamp":"2026-10-18T00:48:03.580Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/calculate-price, POST} route"}
{"timestamp":"2026-10-18T00:48:03.580Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/current, GET} route"}
{"timestamp":"2026-10-18T00:48:03.581Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/create, POST} route"}
{"timestamp":"2026-10-18T00:48:03.581Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/:id, PUT} route"}
{"timestamp":"2026-10-18T00:48:03.581Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/:id/cancel, DELETE} route"}
{"timestamp":"2026-10-18T00:48:03.581Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/sync/:stripeSubscriptionId, POST} route"}
{"timestamp":"2026-10-18T00:48:03.581Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/payments, GET} route"}
{"timestamp":"2026-10-18T00:48:03.581Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/payments/stats, GET} route"}
{"timestamp":"2026-10-18T00:48:03.582Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/payment/:id, GET} route"}
{"timestamp":"2026-10-18T00:48:03.582Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/payment-methods/attach, POST} route"}
{"timestamp":"2026-10-18T00:48:03.582Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/payment-methods/:paymentMethodId, DELETE} route"}
{"timestamp":"2026-10-18T00:48:03.582Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/payment-methods, GET} route"}
{"timestamp":"2026-10-18T00:48:03.582Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/setup-intent, POST} route"}
{"timestamp":"2026-10-18T00:48:03.582Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/update-employee-count, POST} route"}
{"timestamp":"2026-10-18T00:48:03.583Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/retry-payment/:subscriptionId, POST} route"}
{"timestamp":"2026-10-18T00:48:03.583Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/invoice/:invoiceId/pdf, GET} route"}
{"timestamp":"2026-10-18T00:48:03.583Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/preview-upgrade, POST} route"}
{"timestamp":"2026-10-18T00:48:03.583Z","level":"log","context":"RoutesResolver","message":"SubscriptionController {/api/subscription}:"}
{"timestamp":"2026-10-18T00:48:03.583Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/plans, GET} route"}
{"timestamp":"2026-10-18T00:48:03.583Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/calculate-price, POST} route"}
{"timestamp":"2026-10-18T00:48:03.583Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/current, GET} route"}
{"timestamp":"2026-10-18T00:48:03.584Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/create, POST} route"}
{"timestamp":"2026-10-18T00:48:03.584Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/:id, PUT} route"}
{"timestamp":"2026-10-18T00:48:03.584Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/:id/cancel, DELETE} route"}
{"timestamp":"2026-10-18T00:48:03.584Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/sync/:stripeSubscriptionId, POST} route"}
{"timestamp":"2026-10-18T00:48:03.584Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/payments, GET} route"}
{"timestamp":"2026-10-18T00:48:03.584Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/payments/stats, GET} route"}
{"timestamp":"2026-10-18T00:48:03.585Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/payment/:id, GET} route"}
{"timestamp":"2026-10-18T00:48:03.585Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/payment-methods/attach, POST} route"}
{"timestamp":"2026-10-18T00:48:03.585Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/payment-methods/:paymentMethodId, DELETE} route"}
{"timestamp":"2026-10-18T00:48:03.585Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/payment-methods, GET} route"}
{"timestamp":"2026-10-18T00:48:03.585Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/setup-intent, POST} route"}
{"timestamp":"2026-10-18T00:48:03.585Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/update-employee-count, POST} route"}
{"timestamp":"2026-10-18T00:48:03.586Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/retry-payment/:subscriptionId, POST} route"}
{"timestamp":"2026-10-18T00:48:03.586Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/invoice/:invoiceId/pdf, GET} route"}
{"timestamp":"2026-10-18T00:48:03.586Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/preview-upgrade, POST} route"}
{"timestamp":"2026-10-18T00:48:03.586Z","level":"log","context":"RoutesResolver","message":"StripeWebhookController {/stripe/webhook}:"}
{"timestamp":"2026-10-18T00:48:03.586Z","level":"log","context":"RouterExplorer","message":"Mapped {/stripe/webhook/test, GET} route"}
{"timestamp":"2026-10-18T00:48:03.586Z","level":"log","context":"RouterExplorer","message":"Mapped {/stripe/webhook, POST} route"}
{"timestamp":"2026-10-18T00:48:03.586Z","level":"log","context":"RoutesResolver","message":"EmailController {/email-templates}:"}
{"timestamp":"2026-10-18T00:48:03.587Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates/test, POST} route"}
{"timestamp":"2026-10-18T00:48:03.587Z","level":"log","context":"RoutesResolver","message":"EmployeeController {/employees}:"}
{"timestamp":"2026-10-18T00:48:03.587Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees, POST} route"}
{"timestamp":"2026-10-18T00:48:03.587Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees, GET} route"}
{"timestamp":"2026-10-18T00:48:03.587Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees/export, GET} route"}
{"timestamp":"2026-10-18T00:48:03.587Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees/risk-stats, GET} route"}
{"timestamp":"2026-10-18T00:48:03.588Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees/:id, GET} route"}
{"timestamp":"2026-10-18T00:48:03.588Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees/:id, PUT} route"}
{"timestamp":"2026-10-18T00:48:03.588Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees/:id, DELETE} route"}
{"timestamp":"2026-10-18T00:48:03.588Z","level":"log","context":"RoutesResolver","message":"GroupController {/groups}:"}
{"timestamp":"2026-10-18T00:48:03.588Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups, POST} route"}
{"timestamp":"2026-10-18T00:48:03.588Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups, GET} route"}
{"timestamp":"2026-10-18T00:48:03.588Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups/standard, GET} route"}
{"timestamp":"2026-10-18T00:48:03.589Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups/:id, GET} route"}
{"timestamp":"2026-10-18T00:48:03.589Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups/:id, PUT} route"}
{"timestamp":"2026-10-18T00:48:03.589Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups/:id, DELETE} route"}
{"timestamp":"2026-10-18T00:48:03.589Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups/:id/info, GET} route"}
{"timestamp":"2026-10-18T00:48:03.589Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups/:id/with-employees, GET} route"}
{"timestamp":"2026-10-18T00:48:03.589Z","level":"log","context":"RoutesResolver","message":"SenderProfileController {/sender-profiles}:"}
{"timestamp":"2026-10-18T00:48:03.590Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles, GET} route"}
{"timestamp":"2026-10-18T00:48:03.590Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles/:id, GET} route"}
{"timestamp":"2026-10-18T00:48:03.590Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles, POST} route"}
{"timestamp":"2026-10-18T00:48:03.590Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles/:id, PUT} route"}
{"timestamp":"2026-10-18T00:48:03.590Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles/:id, DELETE} route"}
{"timestamp":"2026-10-18T00:48:03.590Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles/:id/verify-domain, POST} route"}
{"timestamp":"2026-10-18T00:48:03.591Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles/domain-verification, GET} route"}
{"timestamp":"2026-10-18T00:48:03.591Z","level":"log","context":"RoutesResolver","message":"EmailTemplateController {/email-templates}:"}
{"timestamp":"2026-10-18T00:48:03.591Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates, GET} route"}
{"timestamp":"2026-10-18T00:48:03.591Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates/:id, GET} route"}
{"timestamp":"2026-10-18T00:48:03.591Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates, POST} route"}
{"timestamp":"2026-10-18T00:48:03.591Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates/:id, PUT} route"}
{"timestamp":"2026-10-18T00:48:03.591Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates/:id, DELETE} route"}
{"timestamp":"2026-10-18T00:48:03.592Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates/:id/duplicate, POST} route"}
{"timestamp":"2026-10-18T00:48:03.592Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates/:id/preview, GET} route"}
{"timestamp":"2026-10-18T00:48:03.592Z","level":"log","context":"RoutesResolver","message":"ScenarioController {/scenarios}:"}
{"timestamp":"2026-10-18T00:48:03.592Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios, POST} route"}
{"timestamp":"2026-10-18T00:48:03.592Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios/generate-content, POST} route"}
{"timestamp":"2026-10-18T00:48:03.592Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios, GET} route"}
{"timestamp":"2026-10-18T00:48:03.593Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios/:id, GET} route"}
{"timestamp":"2026-10-18T00:48:03.593Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios/:id, PUT} route"}
{"timestamp":"2026-10-18T00:48:03.593Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios/:id, DELETE} route"}
{"timestamp":"2026-10-18T00:48:03.593Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios/generate-from-json, POST} route"}
{"timestamp":"2026-10-18T00:48:03.593Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios/:id/save-as-custom-scenario, POST} route"}
{"timestamp":"2026-10-18T00:48:03.593Z","level":"log","context":"RoutesResolver","message":"CampaignController {/campaigns}:"}
{"timestamp":"2026-10-18T00:48:03.594Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns, POST} route"}
{"timestamp":"2026-10-18T00:48:03.594Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns, GET} route"}
{"timestamp":"2026-10-18T00:48:03.594Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id, GET} route"}
{"timestamp":"2026-10-18T00:48:03.594Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id/details, GET} route"}
{"timestamp":"2026-10-18T00:48:03.594Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id/employees, GET} route"}
{"timestamp":"2026-10-18T00:48:03.594Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id, PATCH} route"}
{"timestamp":"2026-10-18T00:48:03.595Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id/start, POST} route"}
{"timestamp":"2026-10-18T00:48:03.595Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id/stop, POST} route"}
{"timestamp":"2026-10-18T00:48:03.595Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id/duplicate, POST} route"}
{"timestamp":"2026-10-18T00:48:03.595Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id, DELETE} route"}
{"timestamp":"2026-10-18T00:48:03.595Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/auto-generate-program, POST} route"}
{"timestamp":"2026-10-18T00:48:03.596Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/generate-from-threat-intelligence, POST} route"}
{"timestamp":"2026-10-18T00:48:03.596Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id/risk-score, GET} route"}
{"timestamp":"2026-10-18T00:48:03.596Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/recalculate-risk-scores, POST} route"}
{"timestamp":"2026-10-18T00:48:03.596Z","level":"log","context":"RoutesResolver","message":"CampaignController {/api/campaigns}:"}
{"timestamp":"2026-10-18T00:48:03.596Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns, POST} route"}
{"timestamp":"2026-10-18T00:48:03.596Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns, GET} route"}
{"timestamp":"2026-10-18T00:48:03.596Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id, GET} route"}
{"timestamp":"2026-10-18T00:48:03.597Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id/details, GET} route"}
{"timestamp":"2026-10-18T00:48:03.597Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id/employees, GET} route"}
{"timestamp":"2026-10-18T00:48:03.597Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id, PATCH} route"}
{"timestamp":"2026-10-18T00:48:03.597Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id/start, POST} route"}
{"timestamp":"2026-10-18T00:48:03.597Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id/stop, POST} route"}
{"timestamp":"2026-10-18T00:48:03.597Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id/duplicate, POST} route"}
{"timestamp":"2026-10-18T00:48:03.597Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id, DELETE} route"}
{"timestamp":"2026-10-18T00:48:03.598Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/auto-generate-program, POST} route"}
{"timestamp":"2026-10-18T00:48:03.598Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/generate-from-threat-intelligence, POST} route"}
{"timestamp":"2026-10-18T00:48:03.598Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id/risk-score, GET} route"}
{"timestamp":"2026-10-18T00:48:03.598Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/recalculate-risk-scores, POST} route"}
{"timestamp":"2026-10-18T00:48:03.598Z","level":"log","context":"RoutesResolver","message":"NotificationsController {/notifications}:"}
{"timestamp":"2026-10-18T00:48:03.599Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications, POST} route"}
{"timestamp":"2026-10-18T00:48:03.599Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications, GET} route"}
{"timestamp":"2026-10-18T00:48:03.599Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/unread, GET} route"}
{"timestamp":"2026-10-18T00:48:03.599Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/unread-count, GET} route"}
{"timestamp":"2026-10-18T00:48:03.599Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/:id, GET} route"}
{"timestamp":"2026-10-18T00:48:03.599Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/:id, PATCH} route"}
{"timestamp":"2026-10-18T00:48:03.600Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/:id/read, PATCH} route"}
{"timestamp":"2026-10-18T00:48:03.600Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/mark-all-read, PATCH} route"}
{"timestamp":"2026-10-18T00:48:03.600Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/:id, DELETE} route"}
{"timestamp":"2026-10-18T00:48:03.600Z","level":"log","context":"RoutesResolver","message":"LandingPageController {/lp}:"}
{"timestamp":"2026-10-18T00:48:03.601Z","level":"log","context":"RouterExplorer","message":"Mapped {/lp/image, GET} route"}
{"timestamp":"2026-10-18T00:48:03.601Z","level":"log","context":"RouterExplorer","message":"Mapped {/lp/learning, GET} route"}
{"timestamp":"2026-10-18T00:48:03.601Z","level":"log","context":"RouterExplorer","message":"Mapped {/lp/submit, POST} route"}
{"timestamp":"2026-10-18T00:48:03.601Z","level":"log","context":"RouterExplorer","message":"Mapped {/lp/test, GET} route"}
{"timestamp":"2026-10-18T00:48:03.601Z","level":"warn","context":"LegacyRouteConverter","message":"Unsupported route path: \"/lp/*\". In previous versions, the symbols ?, *, and + were used to denote optional or repeating path parameters. The latest version of \"path-to-regexp\" now requires the use of named parameters. For example, instead of using a route like /users/* to capture all routes starting with \"/users\", you should use /users/*path. For more details, refer to the migration guide. Attempting to auto-convert..."}
{"timestamp":"2026-10-18T00:48:03.602Z","level":"log","context":"RouterExplorer","message":"Mapped {/lp/*, ALL} route"}
{"timestamp":"2026-10-18T00:48:03.602Z","level":"log","context":"RoutesResolver","message":"SupportController {/support}:"}
{"timestamp":"2026-10-18T00:48:03.602Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets, POST} route"}
{"timestamp":"2026-10-18T00:48:03.602Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets, GET} route"}
{"timestamp":"2026-10-18T00:48:03.603Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets/:id, GET} route"}
{"timestamp":"2026-10-18T00:48:03.603Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets/:id, PATCH} route"}
{"timestamp":"2026-10-18T00:48:03.603Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets/:id, DELETE} route"}
{"timestamp":"2026-10-18T00:48:03.603Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets/:id/messages, POST} route"}
{"timestamp":"2026-10-18T00:48:03.603Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets/:id/close, POST} route"}
{"timestamp":"2026-10-18T00:48:03.603Z","level":"log","context":"RoutesResolver","message":"BusninessMetricsController {/business-metrics}:"}
{"timestamp":"2026-10-18T00:48:03.604Z","level":"log","context":"RouterExplorer","message":"Mapped {/business-metrics, GET} route"}
{"timestamp":"2026-10-18T00:48:03.604Z","level":"log","context":"RoutesResolver","message":"UsersController {/users}:"}
{"timestamp":"2026-10-18T00:48:03.604Z","level":"log","context":"RouterExplorer","message":"Mapped {/users/:id, PUT} route"}
{"timestamp":"2026-10-18T00:48:03.604Z","level":"log","context":"RouterExplorer","message":"Mapped {/users/settings, GET} route"}
{"timestamp":"2026-10-18T00:48:03.604Z","level":"log","context":"RouterExplorer","message":"Mapped {/users/settings/general, PUT} route"}
{"timestamp":"2026-10-18T00:48:03.604Z","level":"log","context":"RouterExplorer","message":"Mapped {/users/company/settings, PUT} route"}
{"timestamp":"2026-10-18T00:48:03.605Z","level":"log","context":"RouterExplorer","message":"Mapped {/users/change-password, POST} route"}
{"timestamp":"2026-10-18T00:48:03.605Z","level":"log","context":"RouterExplorer","message":"Mapped {/users/localization/settings, PUT} route"}
{"timestamp":"2026-10-18T00:48:03.605Z","level":"log","context":"RoutesResolver","message":"PartnerController {/partner}:"}
{"timestamp":"2026-10-18T00:48:03.605Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses, POST} route"}
{"timestamp":"2026-10-18T00:48:03.605Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses, GET} route"}
{"timestamp":"2026-10-18T00:48:03.605Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses/:id, GET} route"}
{"timestamp":"2026-10-18T00:48:03.606Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses/:id, PUT} route"}
{"timestamp":"2026-10-18T00:48:03.606Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses/:id, DELETE} route"}
{"timestamp":"2026-10-18T00:48:03.606Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses/:id/impersonate, POST} route"}
{"timestamp":"2026-10-18T00:48:03.606Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses/stop-impersonation, POST} route"}
{"timestamp":"2026-10-18T00:48:03.606Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/license-usage, GET} route"}
{"timestamp":"2026-10-18T00:48:03.606Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/invoices, POST} route"}
{"timestamp":"2026-10-18T00:48:03.607Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/invoices, GET} route"}
{"timestamp":"2026-10-18T00:48:03.607Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/invoices/:id, GET} route"}
{"timestamp":"2026-10-18T00:48:03.607Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/invoices/:id, PUT} route"}
{"timestamp":"2026-10-18T00:48:03.607Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/invoices/:id, DELETE} route"}
{"timestamp":"2026-10-18T00:48:03.607Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/invoices/:id/mark-paid, PUT} route"}
{"timestamp":"2026-10-18T00:48:03.608Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/onboarding/generate-token, POST} route"}
{"timestamp":"2026-10-18T00:48:03.608Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/dashboard, GET} route"}
{"timestamp":"2026-10-18T00:48:03.608Z","level":"log","context":"RoutesResolver","message":"MspSubscriptionController {/partner/msp-subscriptions}:"}
{"timestamp":"2026-10-18T00:48:03.608Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/plans, POST} route"}
{"timestamp":"2026-10-18T00:48:03.608Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/plans, GET} route"}
{"timestamp":"2026-10-18T00:48:03.608Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/plans/:planId, GET} route"}
{"timestamp":"2026-10-18T00:48:03.608Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/plans/:planId, PUT} route"}
{"timestamp":"2026-10-18T00:48:03.609Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/plans/:planId, DELETE} route"}
{"timestamp":"2026-10-18T00:48:03.609Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/businesses/:businessId/subscription, POST} route"}
{"timestamp":"2026-10-18T00:48:03.609Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions, GET} route"}
{"timestamp":"2026-10-18T00:48:03.609Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/businesses/:businessId/subscription, GET} route"}
{"timestamp":"2026-10-18T00:48:03.609Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/businesses/:businessId/subscription, PUT} route"}
{"timestamp":"2026-10-18T00:48:03.610Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/businesses/:businessId/subscription, DELETE} route"}
{"timestamp":"2026-10-18T00:48:03.610Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/businesses/:businessId/subscription/limits, GET} route"}
{"timestamp":"2026-10-18T00:48:03.610Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/businesses/:businessId/subscription/change-plan, PUT} route"}
{"timestamp":"2026-10-18T00:48:03.610Z","level":"log","context":"RoutesResolver","message":"OnboardingController {/onboarding}:"}
{"timestamp":"2026-10-18T00:48:03.610Z","level":"log","context":"RouterExplorer","message":"Mapped {/onboarding/validate/:token, GET} route"}
{"timestamp":"2026-10-18T00:48:03.610Z","level":"log","context":"RouterExplorer","message":"Mapped {/onboarding/complete/:token, POST} route"}
{"timestamp":"2026-10-18T00:48:03.610Z","level":"log","context":"RoutesResolver","message":"ResellerController {/reseller}:"}
{"timestamp":"2026-10-18T00:48:03.611Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/businesses, POST} route"}
{"timestamp":"2026-10-18T00:48:03.611Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/businesses, GET} route"}
{"timestamp":"2026-10-18T00:48:03.611Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/businesses/:id, GET} route"}
{"timestamp":"2026-10-18T00:48:03.611Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/businesses/:id, PUT} route"}
{"timestamp":"2026-10-18T00:48:03.611Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/businesses/:id, DELETE} route"}
{"timestamp":"2026-10-18T00:48:03.611Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/license-usage, GET} route"}
{"timestamp":"2026-10-18T00:48:03.612Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/invoices, POST} route"}
{"timestamp":"2026-10-18T00:48:03.612Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/invoices, GET} route"}
{"timestamp":"2026-10-18T00:48:03.612Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/invoices/:id, GET} route"}
{"timestamp":"2026-10-18T00:48:03.612Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/invoices/:id, PUT} route"}
{"timestamp":"2026-10-18T00:48:03.612Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/invoices/:id, DELETE} route"}
{"timestamp":"2026-10-18T00:48:03.612Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/invoices/:id/mark-paid, PUT} route"}
{"timestamp":"2026-10-18T00:48:03.613Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/onboarding/generate-token, POST} route"}
{"timestamp":"2026-10-18T00:48:03.613Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/dashboard, GET} route"}
{"timestamp":"2026-10-18T00:48:03.613Z","level":"log","context":"RoutesResolver","message":"ResellerSubscriptionController {/reseller}:"}
{"timestamp":"2026-10-18T00:48:03.613Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/plans, POST} route"}
{"timestamp":"2026-10-18T00:48:03.613Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/plans, GET} route"}
{"timestamp":"2026-10-18T00:48:03.613Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/plans/:planId, GET} route"}
{"timestamp":"2026-10-18T00:48:03.614Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/plans/:planId, PUT} route"}
{"timestamp":"2026-10-18T00:48:03.614Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/plans/:planId, DELETE} route"}
{"timestamp":"2026-10-18T00:48:03.614Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/subscriptions/businesses/:businessId/subscription, POST} route"}
{"timestamp":"2026-10-18T00:48:03.614Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/subscriptions, GET} route"}
{"timestamp":"2026-10-18T00:48:03.614Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/subscriptions/businesses/:businessId/subscription, GET} route"}
{"timestamp":"2026-10-18T00:48:03.614Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/subscriptions/businesses/:businessId/subscription, PUT} route"}
{"timestamp":"2026-10-18T00:48:03.615Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/subscriptions/businesses/:businessId/subscription, DELETE} route"}
{"timestamp":"2026-10-18T00:48:03.615Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/subscriptions/businesses/:businessId/subscription/limits, GET} route"}
{"timestamp":"2026-10-18T00:48:03.615Z","level":"log","context":"RoutesResolver","message":"HealthController {/health}:"}
{"timestamp":"2026-10-18T00:48:03.615Z","level":"log","context":"RouterExplorer","message":"Mapped {/health, GET} route"}
{"timestamp":"2026-10-18T00:48:03.615Z","level":"log","context":"RouterExplorer","message":"Mapped {/health/test-logs, GET} route"}
{"timestamp":"2026-10-18T00:48:03.615Z","level":"log","context":"RoutesResolver","message":"AzureAdController {/azure-ad}:"}
{"timestamp":"2026-10-18T00:48:03.615Z","level":"log","context":"RouterExplorer","message":"Mapped {/azure-ad/config, POST} route"}
{"timestamp":"2026-10-18T00:48:03.616Z","level":"log","context":"RouterExplorer","message":"Mapped {/azure-ad/config, GET} route"}
{"timestamp":"2026-10-18T00:48:03.616Z","level":"log","context":"RouterExplorer","message":"Mapped {/azure-ad/test-connection, POST} route"}
{"timestamp":"2026-10-18T00:48:03.616Z","level":"log","context":"RouterExplorer","message":"Mapped {/azure-ad/sync, POST} route"}
{"timestamp":"2026-10-18T00:48:03.616Z","level":"log","context":"RoutesResolver","message":"ThreatsController {/threats}:"}
{"timestamp":"2026-10-18T00:48:03.616Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats, POST} route"}
{"timestamp":"2026-10-18T00:48:03.616Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats, GET} route"}
{"timestamp":"2026-10-18T00:48:03.616Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/chart-data, GET} route"}
{"timestamp":"2026-10-18T00:48:03.617Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/claude-search, POST} route"}
{"timestamp":"2026-10-18T00:48:03.617Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/claude-latest, POST} route"}
{"timestamp":"2026-10-18T00:48:03.617Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/claude-trending, POST} route"}
{"timestamp":"2026-10-18T00:48:03.617Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/claude-categories, POST} route"}
{"timestamp":"2026-10-18T00:48:03.617Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/claude-manual-search, POST} route"}
{"timestamp":"2026-10-18T00:48:03.617Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/claude-quick-search, POST} route"}
{"timestamp":"2026-10-18T00:48:03.618Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/scheduler-status, GET} route"}
{"timestamp":"2026-10-18T00:48:03.618Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/health-check, GET} route"}
{"timestamp":"2026-10-18T00:48:03.618Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/pause-scheduler, POST} route"}
{"timestamp":"2026-10-18T00:48:03.618Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/:id, GET} route"}
{"timestamp":"2026-10-18T00:48:03.618Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/:id, PATCH} route"}
{"timestamp":"2026-10-18T00:48:03.618Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/:id, DELETE} route"}
{"timestamp":"2026-10-18T00:48:03.618Z","level":"log","context":"RoutesResolver","message":"DomainController {/domains}:"}
{"timestamp":"2026-10-18T00:48:03.619Z","level":"log","context":"RouterExplorer","message":"Mapped {/domains, GET} route"}
{"timestamp":"2026-10-18T00:48:03.619Z","level":"log","context":"RouterExplorer","message":"Mapped {/domains/:id, GET} route"}
{"timestamp":"2026-10-18T00:48:03.619Z","level":"log","context":"RouterExplorer","message":"Mapped {/domains, POST} route"}
{"timestamp":"2026-10-18T00:48:03.619Z","level":"log","context":"RouterExplorer","message":"Mapped {/domains/:id, PUT} route"}
{"timestamp":"2026-10-18T00:48:03.619Z","level":"log","context":"RouterExplorer","message":"Mapped {/domains/:id, DELETE} route"}
{"timestamp":"2026-10-18T00:48:03.619Z","level":"log","context":"RouterExplorer","message":"Mapped {/domains/seed, POST} route"}
{"timestamp":"2026-10-18T00:48:03.619Z","level":"log","context":"RoutesResolver","message":"MspSubscriptionController {/msp-subscription}:"}
{"timestamp":"2026-10-18T00:48:03.620Z","level":"log","context":"RouterExplorer","message":"Mapped {/msp-subscription/current, GET} route"}
{"timestamp":"2026-10-18T00:48:03.620Z","level":"log","context":"RouterExplorer","message":"Mapped {/msp-subscription/invoices, GET} route"}
{"timestamp":"2026-10-18T00:48:03.620Z","level":"log","context":"RouterExplorer","message":"Mapped {/msp-subscription/invoice/:invoiceId/pdf, GET} route"}
{"timestamp":"2026-10-18T00:48:03.620Z","level":"log","context":"RoutesResolver","message":"MspSubscriptionController {/api/msp-subscription}:"}
{"timestamp":"2026-10-18T00:48:03.620Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/msp-subscription/current, GET} route"}
{"timestamp":"2026-10-18T00:48:03.620Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/msp-subscription/invoices, GET} route"}
{"timestamp":"2026-10-18T00:48:03.621Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/msp-subscription/invoice/:invoiceId/pdf, GET} route"}
{"timestamp":"2026-10-18T00:48:03.697Z","level":"log","context":"NestApplication","message":"Nest application successfully started"}
{"timestamp":"2026-10-18T00:48:03.715Z","level":"log","context":"Bootstrap","message":"Users API successfully started on port 3842"}
{"timestamp":"2026-10-18T00:48:03.715Z","level":"log","context":"SeedService","message":"🌱 Starting database seeding..."}
{"timestamp":"2026-10-18T00:48:03.721Z","level":"log","context":"SeedService","message":"Admin account already exists, skipping seed"}
{"timestamp":"2026-10-18T00:48:03.724Z","level":"log","context":"SeedService","message":"Reseller account already exists, skipping seed"}
{"timestamp":"2026-10-18T00:48:03.726Z","level":"log","context":"SeedService","message":"MSP account already exists, skipping seed"}
{"timestamp":"2026-10-18T00:48:03.726Z","level":"log","context":"SeedService","message":"✅ Database seeding completed successfully"}
{"timestamp":"2026-10-18T00:48:03.766Z","level":"log","context":"UsersApiController","message":"Hello endpoint accessed"}
{"timestamp":"2026-10-18T00:48:33.157Z","level":"log","context":"UsersApiController","message":"Hello endpoint accessed"}
{"timestamp":"2026-10-18T01:02:05.418Z","level":"log","context":"UsersApiController","message":"Hello endpoint accessed"}
{"timestamp":"2026-10-18T01:24:24.655Z","level":"log","context":"UsersApiController","message":"Hello endpoint accessed"}
{"timestamp":"2026-10-18T04:21:10.363Z","level":"warn","context":"LegacyRouteConverter","message":"Unsupported route path: \"/lp/*\". In previous versions, the symbols ?, *, and + were used to denote optional or repeating path parameters. The latest version of \"path-to-regexp\" now requires the use of named parameters. For example, instead of using a route like /users/* to capture all routes starting with \"/users\", you should use /users/*path. For more details, refer to the migration guide. Attempting to auto-convert..."}
{"timestamp":"2026-10-18T04:21:10.409Z","level":"log","context":"Bootstrap","message":"Starting Users API on port 3842..."}
{"timestamp":"2026-10-18T04:21:10.413Z","level":"log","context":"RoutesResolver","message":"UsersApiController {/}:"}
{"timestamp":"2026-10-18T04:21:10.417Z","level":"log","context":"RouterExplorer","message":"Mapped {/, GET} route"}
{"timestamp":"2026-10-18T04:21:10.417Z","level":"log","context":"RoutesResolver","message":"AuthController {/auth}:"}
{"timestamp":"2026-10-18T04:21:10.418Z","level":"log","context":"RouterExplorer","message":"Mapped {/auth/login, POST} route"}
{"timestamp":"2026-10-18T04:21:10.419Z","level":"log","context":"RouterExplorer","message":"Mapped {/auth/admin/login, POST} route"}
{"timestamp":"2026-10-18T04:21:10.419Z","level":"log","context":"RouterExplorer","message":"Mapped {/auth/send-otp, POST} route"}
{"timestamp":"2026-10-18T04:21:10.420Z","level":"log","context":"RouterExplorer","message":"Mapped {/auth/verify-otp, POST} route"}
{"timestamp":"2026-10-18T04:21:10.420Z","level":"log","context":"RouterExplorer","message":"Mapped {/auth/signup, POST} route"}
{"timestamp":"2026-10-18T04:21:10.421Z","level":"log","context":"RouterExplorer","message":"Mapped {/auth/subscription-status, GET} route"}
{"timestamp":"2026-10-18T04:21:10.421Z","level":"log","context":"RoutesResolver","message":"AdminMspController {/admin/msp}:"}
{"timestamp":"2026-10-18T04:21:10.422Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/msp, GET} route"}
{"timestamp":"2026-10-18T04:21:10.423Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/msp/:id, GET} route"}
{"timestamp":"2026-10-18T04:21:10.424Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/msp, POST} route"}
{"timestamp":"2026-10-18T04:21:10.425Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/msp/:id, PUT} route"}
{"timestamp":"2026-10-18T04:21:10.425Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/msp/:id, DELETE} route"}
{"timestamp":"2026-10-18T04:21:10.425Z","level":"log","context":"RoutesResolver","message":"AdminLicenseController {/admin/licenses}:"}
{"timestamp":"2026-10-18T04:21:10.425Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/licenses/summary, GET} route"}
{"timestamp":"2026-10-18T04:21:10.426Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/licenses/msp/:mspId, GET} route"}
{"timestamp":"2026-10-18T04:21:10.426Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/licenses/msp/:mspId, PUT} route"}
{"timestamp":"2026-10-18T04:21:10.426Z","level":"log","context":"RoutesResolver","message":"AdminImpersonationController {/admin/impersonation}:"}
{"timestamp":"2026-10-18T04:21:10.426Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/impersonation/msp-users, GET} route"}
{"timestamp":"2026-10-18T04:21:10.427Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/impersonation/impersonate, POST} route"}
{"timestamp":"2026-10-18T04:21:10.427Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/impersonation/stop, POST} route"}
{"timestamp":"2026-10-18T04:21:10.427Z","level":"log","context":"RoutesResolver","message":"AdminAiUsageController {/admin/ai-usage}:"}
{"timestamp":"2026-10-18T04:21:10.427Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-usage, GET} route"}
{"timestamp":"2026-10-18T04:21:10.428Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-usage/business/:businessId, GET} route"}
{"timestamp":"2026-10-18T04:21:10.428Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-usage/report/monthly, GET} route"}
{"timestamp":"2026-10-18T04:21:10.428Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-usage/pricing, GET} route"}
{"timestamp":"2026-10-18T04:21:10.428Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-usage/pricing, POST} route"}
{"timestamp":"2026-10-18T04:21:10.429Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-usage/credit/:businessId, PUT} route"}
{"timestamp":"2026-10-18T04:21:10.429Z","level":"log","context":"RoutesResolver","message":"AdminAiUsageController {/api/admin/ai-usage}:"}
{"timestamp":"2026-10-18T04:21:10.429Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-usage, GET} route"}
{"timestamp":"2026-10-18T04:21:10.429Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-usage/business/:businessId, GET} route"}
{"timestamp":"2026-10-18T04:21:10.429Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-usage/report/monthly, GET} route"}
{"timestamp":"2026-10-18T04:21:10.429Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-usage/pricing, GET} route"}
{"timestamp":"2026-10-18T04:21:10.430Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-usage/pricing, POST} route"}
{"timestamp":"2026-10-18T04:21:10.430Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-usage/credit/:businessId, PUT} route"}
{"timestamp":"2026-10-18T04:21:10.430Z","level":"log","context":"RoutesResolver","message":"AdminAiModelController {/admin/ai-models}:"}
{"timestamp":"2026-10-18T04:21:10.430Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models, POST} route"}
{"timestamp":"2026-10-18T04:21:10.430Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models, GET} route"}
{"timestamp":"2026-10-18T04:21:10.431Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/default, GET} route"}
{"timestamp":"2026-10-18T04:21:10.431Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/:id, GET} route"}
{"timestamp":"2026-10-18T04:21:10.431Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/:id, PUT} route"}
{"timestamp":"2026-10-18T04:21:10.431Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/:id, DELETE} route"}
{"timestamp":"2026-10-18T04:21:10.432Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/:id/set-default, POST} route"}
{"timestamp":"2026-10-18T04:21:10.432Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/assign-to-business, POST} route"}
{"timestamp":"2026-10-18T04:21:10.432Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/business/:businessId, GET} route"}
{"timestamp":"2026-10-18T04:21:10.433Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/:id/businesses, GET} route"}
{"timestamp":"2026-10-18T04:21:10.433Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/initialize-defaults, POST} route"}
{"timestamp":"2026-10-18T04:21:10.433Z","level":"log","context":"RoutesResolver","message":"AdminAiModelController {/api/admin/ai-models}:"}
{"timestamp":"2026-10-18T04:21:10.433Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models, POST} route"}
{"timestamp":"2026-10-18T04:21:10.433Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models, GET} route"}
{"timestamp":"2026-10-18T04:21:10.434Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/default, GET} route"}
{"timestamp":"2026-10-18T04:21:10.434Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/:id, GET} route"}
{"timestamp":"2026-10-18T04:21:10.434Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/:id, PUT} route"}
{"timestamp":"2026-10-18T04:21:10.434Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/:id, DELETE} route"}
{"timestamp":"2026-10-18T04:21:10.434Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/:id/set-default, POST} route"}
{"timestamp":"2026-10-18T04:21:10.435Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/assign-to-business, POST} route"}
{"timestamp":"2026-10-18T04:21:10.435Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/business/:businessId, GET} route"}
{"timestamp":"2026-10-18T04:21:10.435Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/:id/businesses, GET} route"}
{"timestamp":"2026-10-18T04:21:10.435Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/initialize-defaults, POST} route"}
{"timestamp":"2026-10-18T04:21:10.435Z","level":"log","context":"RoutesResolver","message":"AdminBusinessController {/admin/businesses}:"}
{"timestamp":"2026-10-18T04:21:10.436Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/businesses, GET} route"}
{"timestamp":"2026-10-18T04:21:10.436Z","level":"log","context":"RoutesResolver","message":"ResellerManagementController {/admin/resellers}:"}
{"timestamp":"2026-10-18T04:21:10.436Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/resellers, GET} route"}
{"timestamp":"2026-10-18T04:21:10.436Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/resellers/create-default, POST} route"}
{"timestamp":"2026-10-18T04:21:10.436Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/resellers, POST} route"}
{"timestamp":"2026-10-18T04:21:10.436Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/resellers/:id/toggle-status, PUT} route"}
{"timestamp":"2026-10-18T04:21:10.437Z","level":"log","context":"RoutesResolver","message":"SubscriptionController {/subscription}:"}
{"timestamp":"2026-10-18T04:21:10.437Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/plans, GET} route"}
{"timestamp":"2026-10-18T04:21:10.437Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/calculate-price, POST} route"}
{"timestamp":"2026-10-18T04:21:10.437Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/current, GET} route"}
{"timestamp":"2026-10-18T04:21:10.437Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/create, POST} route"}
{"timestamp":"2026-10-18T04:21:10.438Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/:id, PUT} route"}
{"timestamp":"2026-10-18T04:21:10.438Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/:id/cancel, DELETE} route"}
{"timestamp":"2026-10-18T04:21:10.438Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/sync/:stripeSubscriptionId, POST} route"}
{"timestamp":"2026-10-18T04:21:10.438Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/payments, GET} route"}
{"timestamp":"2026-10-18T04:21:10.438Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/payments/stats, GET} route"}
{"timestamp":"2026-10-18T04:21:10.439Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/payment/:id, GET} route"}
{"timestamp":"2026-10-18T04:21:10.439Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/payment-methods/attach, POST} route"}
{"timestamp":"2026-10-18T04:21:10.439Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/payment-methods/:paymentMethodId, DELETE} route"}
{"timestamp":"2026-10-18T04:21:10.439Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/payment-methods, GET} route"}
{"timestamp":"2026-10-18T04:21:10.439Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/setup-intent, POST} route"}
{"timestamp":"2026-10-18T04:21:10.440Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/update-employee-count, POST} route"}
{"timestamp":"2026-10-18T04:21:10.440Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/retry-payment/:subscriptionId, POST} route"}
{"timestamp":"2026-10-18T04:21:10.440Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/invoice/:invoiceId/pdf, GET} route"}
{"timestamp":"2026-10-18T04:21:10.440Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/preview-upgrade, POST} route"}
{"timestamp":"2026-10-18T04:21:10.440Z","level":"log","context":"RoutesResolver","message":"SubscriptionController {/api/subscription}:"}
{"timestamp":"2026-10-18T04:21:10.440Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/plans, GET} route"}
{"timestamp":"2026-10-18T04:21:10.440Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/calculate-price, POST} route"}
{"timestamp":"2026-10-18T04:21:10.441Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/current, GET} route"}
{"timestamp":"2026-10-18T04:21:10.441Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/create, POST} route"}
{"timestamp":"2026-10-18T04:21:10.441Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/:id, PUT} route"}
{"timestamp":"2026-10-18T04:21:10.441Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/:id/cancel, DELETE} route"}
{"timestamp":"2026-10-18T04:21:10.441Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/sync/:stripeSubscriptionId, POST} route"}
{"timestamp":"2026-10-18T04:21:10.442Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/payments, GET} route"}
{"timestamp":"2026-10-18T04:21:10.442Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/payments/stats, GET} route"}
{"timestamp":"2026-10-18T04:21:10.442Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/payment/:id, GET} route"}
{"timestamp":"2026-10-18T04:21:10.442Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/payment-methods/attach, POST} route"}
{"timestamp":"2026-10-18T04:21:10.442Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/payment-methods/:paymentMethodId, DELETE} route"}
{"timestamp":"2026-10-18T04:21:10.442Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/payment-methods, GET} route"}
{"timestamp":"2026-10-18T04:21:10.443Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/setup-intent, POST} route"}
{"timestamp":"2026-10-18T04:21:10.443Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/update-employee-count, POST} route"}
{"timestamp":"2026-10-18T04:21:10.443Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/retry-payment/:subscriptionId, POST} route"}
{"timestamp":"2026-10-18T04:21:10.443Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/invoice/:invoiceId/pdf, GET} route"}
{"timestamp":"2026-10-18T04:21:10.443Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/preview-upgrade, POST} route"}
{"timestamp":"2026-10-18T04:21:10.443Z","level":"log","context":"RoutesResolver","message":"StripeWebhookController {/stripe/webhook}:"}
{"timestamp":"2026-10-18T04:21:10.443Z","level":"log","context":"RouterExplorer","message":"Mapped {/stripe/webhook/test, GET} route"}
{"timestamp":"2026-10-18T04:21:10.444Z","level":"log","context":"RouterExplorer","message":"Mapped {/stripe/webhook, POST} route"}
{"timestamp":"2026-10-18T04:21:10.444Z","level":"log","context":"RoutesResolver","message":"EmailController {/email-templates}:"}
{"timestamp":"2026-10-18T04:21:10.444Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates/test, POST} route"}
{"timestamp":"2026-10-18T04:21:10.444Z","level":"log","context":"RoutesResolver","message":"EmployeeController {/employees}:"}
{"timestamp":"2026-10-18T04:21:10.444Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees, POST} route"}
{"timestamp":"2026-10-18T04:21:10.445Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees, GET} route"}
{"timestamp":"2026-10-18T04:21:10.445Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees/export, GET} route"}
{"timestamp":"2026-10-18T04:21:10.445Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees/risk-stats, GET} route"}
{"timestamp":"2026-10-18T04:21:10.445Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees/:id, GET} route"}
{"timestamp":"2026-10-18T04:21:10.446Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees/:id, PUT} route"}
{"timestamp":"2026-10-18T04:21:10.446Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees/:id, DELETE} route"}
{"timestamp":"2026-10-18T04:21:10.446Z","level":"log","context":"RoutesResolver","message":"GroupController {/groups}:"}
{"timestamp":"2026-10-18T04:21:10.446Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups, POST} route"}
{"timestamp":"2026-10-18T04:21:10.447Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups, GET} route"}
{"timestamp":"2026-10-18T04:21:10.447Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups/standard, GET} route"}
{"timestamp":"2026-10-18T04:21:10.447Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups/:id, GET} route"}
{"timestamp":"2026-10-18T04:21:10.447Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups/:id, PUT} route"}
{"timestamp":"2026-10-18T04:21:10.447Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups/:id, DELETE} route"}
{"timestamp":"2026-10-18T04:21:10.448Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups/:id/info, GET} route"}
{"timestamp":"2026-10-18T04:21:10.448Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups/:id/with-employees, GET} route"}
{"timestamp":"2026-10-18T04:21:10.448Z","level":"log","context":"RoutesResolver","message":"SenderProfileController {/sender-profiles}:"}
{"timestamp":"2026-10-18T04:21:10.448Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles, GET} route"}
{"timestamp":"2026-10-18T04:21:10.449Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles/:id, GET} route"}
{"timestamp":"2026-10-18T04:21:10.449Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles, POST} route"}
{"timestamp":"2026-10-18T04:21:10.449Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles/:id, PUT} route"}
{"timestamp":"2026-10-18T04:21:10.449Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles/:id, DELETE} route"}
{"timestamp":"2026-10-18T04:21:10.450Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles/:id/verify-domain, POST} route"}
{"timestamp":"2026-10-18T04:21:10.450Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles/domain-verification, GET} route"}
{"timestamp":"2026-10-18T04:21:10.450Z","level":"log","context":"RoutesResolver","message":"EmailTemplateController {/email-templates}:"}
{"timestamp":"2026-10-18T04:21:10.450Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates, GET} route"}
{"timestamp":"2026-10-18T04:21:10.451Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates/:id, GET} route"}
{"timestamp":"2026-10-18T04:21:10.451Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates, POST} route"}
{"timestamp":"2026-10-18T04:21:10.451Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates/:id, PUT} route"}
{"timestamp":"2026-10-18T04:21:10.451Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates/:id, DELETE} route"}
{"timestamp":"2026-10-18T04:21:10.452Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates/:id/duplicate, POST} route"}
{"timestamp":"2026-10-18T04:21:10.452Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates/:id/preview, GET} route"}
{"timestamp":"2026-10-18T04:21:10.452Z","level":"log","context":"RoutesResolver","message":"ScenarioController {/scenarios}:"}
{"timestamp":"2026-10-18T04:21:10.452Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios, POST} route"}
{"timestamp":"2026-10-18T04:21:10.452Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios/generate-content, POST} route"}
{"timestamp":"2026-10-18T04:21:10.453Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios, GET} route"}
{"timestamp":"2026-10-18T04:21:10.453Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios/:id, GET} route"}
{"timestamp":"2026-10-18T04:21:10.453Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios/:id, PUT} route"}
{"timestamp":"2026-10-18T04:21:10.453Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios/:id, DELETE} route"}
{"timestamp":"2026-10-18T04:21:10.454Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios/generate-from-json, POST} route"}
{"timestamp":"2026-10-18T04:21:10.454Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios/:id/save-as-custom-scenario, POST} route"}
{"timestamp":"2026-10-18T04:21:10.454Z","level":"log","context":"RoutesResolver","message":"CampaignController {/campaigns}:"}
{"timestamp":"2026-10-18T04:21:10.454Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns, POST} route"}
{"timestamp":"2026-10-18T04:21:10.454Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns, GET} route"}
{"timestamp":"2026-10-18T04:21:10.455Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id, GET} route"}
{"timestamp":"2026-10-18T04:21:10.455Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id/details, GET} route"}
{"timestamp":"2026-10-18T04:21:10.455Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id/employees, GET} route"}
{"timestamp":"2026-10-18T04:21:10.456Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id, PATCH} route"}
{"timestamp":"2026-10-18T04:21:10.456Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id/start, POST} route"}
{"timestamp":"2026-10-18T04:21:10.456Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id/stop, POST} route"}
{"timestamp":"2026-10-18T04:21:10.456Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id/duplicate, POST} route"}
{"timestamp":"2026-10-18T04:21:10.457Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id, DELETE} route"}
{"timestamp":"2026-10-18T04:21:10.457Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/auto-generate-program, POST} route"}
{"timestamp":"2026-10-18T04:21:10.457Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/generate-from-threat-intelligence, POST} route"}
{"timestamp":"2026-10-18T04:21:10.457Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id/risk-score, GET} route"}
{"timestamp":"2026-10-18T04:21:10.458Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/recalculate-risk-scores, POST} route"}
{"timestamp":"2026-10-18T04:21:10.458Z","level":"log","context":"RoutesResolver","message":"CampaignController {/api/campaigns}:"}
{"timestamp":"2026-10-18T04:21:10.458Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns, POST} route"}
{"timestamp":"2026-10-18T04:21:10.458Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns, GET} route"}
{"timestamp":"2026-10-18T04:21:10.458Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id, GET} route"}
{"timestamp":"2026-10-18T04:21:10.459Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id/details, GET} route"}
{"timestamp":"2026-10-18T04:21:10.459Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id/employees, GET} route"}
{"timestamp":"2026-10-18T04:21:10.459Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id, PATCH} route"}
{"timestamp":"2026-10-18T04:21:10.459Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id/start, POST} route"}
{"timestamp":"2026-10-18T04:21:10.459Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id/stop, POST} route"}
{"timestamp":"2026-10-18T04:21:10.460Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id/duplicate, POST} route"}
{"timestamp":"2026-10-18T04:21:10.460Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id, DELETE} route"}
{"timestamp":"2026-10-18T04:21:10.460Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/auto-generate-program, POST} route"}
{"timestamp":"2026-10-18T04:21:10.460Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/generate-from-threat-intelligence, POST} route"}
{"timestamp":"2026-10-18T04:21:10.461Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id/risk-score, GET} route"}
{"timestamp":"2026-10-18T04:21:10.461Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/recalculate-risk-scores, POST} route"}
{"timestamp":"2026-10-18T04:21:10.461Z","level":"log","context":"RoutesResolver","message":"NotificationsController {/notifications}:"}
{"timestamp":"2026-10-18T04:21:10.461Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications, POST} route"}
{"timestamp":"2026-10-18T04:21:10.462Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications, GET} route"}
{"timestamp":"2026-10-18T04:21:10.462Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/unread, GET} route"}
{"timestamp":"2026-10-18T04:21:10.462Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/unread-count, GET} route"}
{"timestamp":"2026-10-18T04:21:10.462Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/:id, GET} route"}
{"timestamp":"2026-10-18T04:21:10.462Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/:id, PATCH} route"}
{"timestamp":"2026-10-18T04:21:10.463Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/:id/read, PATCH} route"}
{"timestamp":"2026-10-18T04:21:10.463Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/mark-all-read, PATCH} route"}
{"timestamp":"2026-10-18T04:21:10.464Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/:id, DELETE} route"}
{"timestamp":"2026-10-18T04:21:10.464Z","level":"log","context":"RoutesResolver","message":"LandingPageController {/lp}:"}
{"timestamp":"2026-10-18T04:21:10.464Z","level":"log","context":"RouterExplorer","message":"Mapped {/lp/image, GET} route"}
{"timestamp":"2026-10-18T04:21:10.464Z","level":"log","context":"RouterExplorer","message":"Mapped {/lp/learning, GET} route"}
{"timestamp":"2026-10-18T04:21:10.465Z","level":"log","context":"RouterExplorer","message":"Mapped {/lp/submit, POST} route"}
{"timestamp":"2026-10-18T04:21:10.465Z","level":"log","context":"RouterExplorer","message":"Mapped {/lp/test, GET} route"}
{"timestamp":"2026-10-18T04:21:10.465Z","level":"warn","context":"LegacyRouteConverter","message":"Unsupported route path: \"/lp/*\". In previous versions, the symbols ?, *, and + were used to denote optional or repeating path parameters. The latest version of \"path-to-regexp\" now requires the use of named parameters. For example, instead of using a route like /users/* to capture all routes starting with \"/users\", you should use /users/*path. For more details, refer to the migration guide. Attempting to auto-convert..."}
{"timestamp":"2026-10-18T04:21:10.466Z","level":"log","context":"RouterExplorer","message":"Mapped {/lp/*, ALL} route"}
{"timestamp":"2026-10-18T04:21:10.466Z","level":"log","context":"RoutesResolver","message":"SupportController {/support}:"}
{"timestamp":"2026-10-18T04:21:10.466Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets, POST} route"}
{"timestamp":"2026-10-18T04:21:10.467Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets, GET} route"}
{"timestamp":"2026-10-18T04:21:10.467Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets/:id, GET} route"}
{"timestamp":"2026-10-18T04:21:10.467Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets/:id, PATCH} route"}
{"timestamp":"2026-10-18T04:21:10.468Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets/:id, DELETE} route"}
{"timestamp":"2026-10-18T04:21:10.468Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets/:id/messages, POST} route"}
{"timestamp":"2026-10-18T04:21:10.468Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets/:id/close, POST} route"}
{"timestamp":"2026-10-18T04:21:10.468Z","level":"log","context":"RoutesResolver","message":"BusninessMetricsController {/business-metrics}:"}
{"timestamp":"2026-10-18T04:21:10.468Z","level":"log","context":"RouterExplorer","message":"Mapped {/business-metrics, GET} route"}
{"timestamp":"2026-10-18T04:21:10.469Z","level":"log","context":"RoutesResolver","message":"UsersController {/users}:"}
{"timestamp":"2026-10-18T04:21:10.469Z","level":"log","context":"RouterExplorer","message":"Mapped {/users/:id, PUT} route"}
{"timestamp":"2026-10-18T04:21:10.469Z","level":"log","context":"RouterExplorer","message":"Mapped {/users/settings, GET} route"}
{"timestamp":"2026-10-18T04:21:10.469Z","level":"log","context":"RouterExplorer","message":"Mapped {/users/settings/general, PUT} route"}
{"timestamp":"2026-10-18T04:21:10.470Z","level":"log","context":"RouterExplorer","message":"Mapped {/users/company/settings, PUT} route"}
{"timestamp":"2026-10-18T04:21:10.470Z","level":"log","context":"RouterExplorer","message":"Mapped {/users/change-password, POST} route"}
{"timestamp":"2026-10-18T04:21:10.470Z","level":"log","context":"RouterExplorer","message":"Mapped {/users/localization/settings, PUT} route"}
{"timestamp":"2026-10-18T04:21:10.470Z","level":"log","context":"RoutesResolver","message":"PartnerController {/partner}:"}
{"timestamp":"2026-10-18T04:21:10.471Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses, POST} route"}
{"timestamp":"2026-10-18T04:21:10.471Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses, GET} route"}
{"timestamp":"2026-10-18T04:21:10.471Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses/:id, GET} route"}
{"timestamp":"2026-10-18T04:21:10.471Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses/:id, PUT} route"}
{"timestamp":"2026-10-18T04:21:10.471Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses/:id, DELETE} route"}
{"timestamp":"2026-10-18T04:21:10.472Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses/:id/impersonate, POST} route"}
{"timestamp":"2026-10-18T04:21:10.472Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses/stop-impersonation, POST} route"}
{"timestamp":"2026-10-18T04:21:10.472Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/license-usage, GET} route"}
{"timestamp":"2026-10-18T04:21:10.472Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/invoices, POST} route"}
{"timestamp":"2026-10-18T04:21:10.472Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/invoices, GET} route"}
{"timestamp":"2026-10-18T04:21:10.473Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/invoices/:id, GET} route"}
{"timestamp":"2026-10-18T04:21:10.473Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/invoices/:id, PUT} route"}
{"timestamp":"2026-10-18T04:21:10.473Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/invoices/:id, DELETE} route"}
{"timestamp":"2026-10-18T04:21:10.473Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/invoices/:id/mark-paid, PUT} route"}
{"timestamp":"2026-10-18T04:21:10.473Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/onboarding/generate-token, POST} route"}
{"timestamp":"2026-10-18T04:21:10.473Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/dashboard, GET} route"}
{"timestamp":"2026-10-18T04:21:10.473Z","level":"log","context":"RoutesResolver","message":"MspSubscriptionController {/partner/msp-subscriptions}:"}
{"timestamp":"2026-10-18T04:21:10.474Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/plans, POST} route"}
{"timestamp":"2026-10-18T04:21:10.474Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/plans, GET} route"}
{"timestamp":"2026-10-18T04:21:10.474Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/plans/:planId, GET} route"}
{"timestamp":"2026-10-18T04:21:10.474Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/plans/:planId, PUT} route"}
{"timestamp":"2026-10-18T04:21:10.474Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/plans/:planId, DELETE} route"}
{"timestamp":"2026-10-18T04:21:10.475Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/businesses/:businessId/subscription, POST} route"}
{"timestamp":"2026-10-18T04:21:10.475Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions, GET} route"}
{"timestamp":"2026-10-18T04:21:10.475Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/businesses/:businessId/subscription, GET} route"}
{"timestamp":"2026-10-18T04:21:10.475Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/businesses/:businessId/subscription, PUT} route"}
{"timestamp":"2026-10-18T04:21:10.475Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/businesses/:businessId/subscription, DELETE} route"}
{"timestamp":"2026-10-18T04:21:10.476Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/businesses/:businessId/subscription/limits, GET} route"}
{"timestamp":"2026-10-18T04:21:10.476Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/businesses/:businessId/subscription/change-plan, PUT} route"}
{"timestamp":"2026-10-18T04:21:10.476Z","level":"log","context":"RoutesResolver","message":"OnboardingController {/onboarding}:"}
{"timestamp":"2026-10-18T04:21:10.476Z","level":"log","context":"RouterExplorer","message":"Mapped {/onboarding/validate/:token, GET} route"}
{"timestamp":"2026-10-18T04:21:10.476Z","level":"log","context":"RouterExplorer","message":"Mapped {/onboarding/complete/:token, POST} route"}
{"timestamp":"2026-10-18T04:21:10.476Z","level":"log","context":"RoutesResolver","message":"ResellerController {/reseller}:"}
{"timestamp":"2026-10-18T04:21:10.477Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/businesses, POST} route"}
{"timestamp":"2026-10-18T04:21:10.477Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/businesses, GET} route"}
{"timestamp":"2026-10-18T04:21:10.477Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/businesses/:id, GET} route"}
{"timestamp":"2026-10-18T04:21:10.477Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/businesses/:id, PUT} route"}
{"timestamp":"2026-10-18T04:21:10.477Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/businesses/:id, DELETE} route"}
{"timestamp":"2026-10-18T04:21:10.481Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/license-usage, GET} route"}
{"timestamp":"2026-10-18T04:21:10.482Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/invoices, POST} route"}
{"timestamp":"2026-10-18T04:21:10.482Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/invoices, GET} route"}
{"timestamp":"2026-10-18T04:21:10.482Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/invoices/:id, GET} route"}
{"timestamp":"2026-10-18T04:21:10.482Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/invoices/:id, PUT} route"}
{"timestamp":"2026-10-18T04:21:10.482Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/invoices/:id, DELETE} route"}
{"timestamp":"2026-10-18T04:21:10.482Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/invoices/:id/mark-paid, PUT} route"}
{"timestamp":"2026-10-18T04:21:10.483Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/onboarding/generate-token, POST} route"}
{"timestamp":"2026-10-18T04:21:10.483Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/dashboard, GET} route"}
{"timestamp":"2026-10-18T04:21:10.483Z","level":"log","context":"RoutesResolver","message":"ResellerSubscriptionController {/reseller}:"}
{"timestamp":"2026-10-18T04:21:10.483Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/plans, POST} route"}
{"timestamp":"2026-10-18T04:21:10.483Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/plans, GET} route"}
{"timestamp":"2026-10-18T04:21:10.483Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/plans/:planId, GET} route"}
{"timestamp":"2026-10-18T04:21:10.484Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/plans/:planId, PUT} route"}
{"timestamp":"2026-10-18T04:21:10.484Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/plans/:planId, DELETE} route"}
{"timestamp":"2026-10-18T04:21:10.484Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/subscriptions/businesses/:businessId/subscription, POST} route"}
{"timestamp":"2026-10-18T04:21:10.484Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/subscriptions, GET} route"}
{"timestamp":"2026-10-18T04:21:10.484Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/subscriptions/businesses/:businessId/subscription, GET} route"}
{"timestamp":"2026-10-18T04:21:10.485Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/subscriptions/businesses/:businessId/subscription, PUT} route"}
{"timestamp":"2026-10-18T04:21:10.485Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/subscriptions/businesses/:businessId/subscription, DELETE} route"}
{"timestamp":"2026-10-18T04:21:10.485Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/subscriptions/businesses/:businessId/subscription/limits, GET} route"}
{"timestamp":"2026-10-18T04:21:10.485Z","level":"log","context":"RoutesResolver","message":"HealthController {/health}:"}
{"timestamp":"2026-10-18T04:21:10.485Z","level":"log","context":"RouterExplorer","message":"Mapped {/health, GET} route"}
{"timestamp":"2026-10-18T04:21:10.485Z","level":"log","context":"RouterExplorer","message":"Mapped {/health/test-logs, GET} route"}
{"timestamp":"2026-10-18T04:21:10.485Z","level":"log","context":"RoutesResolver","message":"AzureAdController {/azure-ad}:"}
{"timestamp":"2026-10-18T04:21:10.486Z","level":"log","context":"RouterExplorer","message":"Mapped {/azure-ad/config, POST} route"}
{"timestamp":"2026-10-18T04:21:10.486Z","level":"log","context":"RouterExplorer","message":"Mapped {/azure-ad/config, GET} route"}
{"timestamp":"2026-10-18T04:21:10.486Z","level":"log","context":"RouterExplorer","message":"Mapped {/azure-ad/test-connection, POST} route"}
{"timestamp":"2026-10-18T04:21:10.486Z","level":"log","context":"RouterExplorer","message":"Mapped {/azure-ad/sync, POST} route"}
{"timestamp":"2026-10-18T04:21:10.486Z","level":"log","context":"RoutesResolver","message":"ThreatsController {/threats}:"}
{"timestamp":"2026-10-18T04:21:10.486Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats, POST} route"}
{"timestamp":"2026-10-18T04:21:10.487Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats, GET} route"}
{"timestamp":"2026-10-18T04:21:10.487Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/chart-data, GET} route"}
{"timestamp":"2026-10-18T04:21:10.487Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/claude-search, POST} route"}
{"timestamp":"2026-10-18T04:21:10.487Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/claude-latest, POST} route"}
{"timestamp":"2026-10-18T04:21:10.487Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/claude-trending, POST} route"}
{"timestamp":"2026-10-18T04:21:10.487Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/claude-categories, POST} route"}
{"timestamp":"2026-10-18T04:21:10.488Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/claude-manual-search, POST} route"}
{"timestamp":"2026-10-18T04:21:10.488Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/claude-quick-search, POST} route"}
{"timestamp":"2026-10-18T04:21:10.488Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/scheduler-status, GET} route"}
{"timestamp":"2026-10-18T04:21:10.488Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/health-check, GET} route"}
{"timestamp":"2026-10-18T04:21:10.488Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/pause-scheduler, POST} route"}
{"timestamp":"2026-10-18T04:21:10.489Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/:id, GET} route"}
{"timestamp":"2026-10-18T04:21:10.489Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/:id, PATCH} route"}
{"timestamp":"2026-10-18T04:21:10.489Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/:id, DELETE} route"}
{"timestamp":"2026-10-18T04:21:10.489Z","level":"log","context":"RoutesResolver","message":"DomainController {/domains}:"}
{"timestamp":"2026-10-18T04:21:10.489Z","level":"log","context":"RouterExplorer","message":"Mapped {/domains, GET} route"}
{"timestamp":"2026-10-18T04:21:10.489Z","level":"log","context":"RouterExplorer","message":"Mapped {/domains/:id, GET} route"}
{"timestamp":"2026-10-18T04:21:10.489Z","level":"log","context":"RouterExplorer","message":"Mapped {/domains, POST} route"}
{"timestamp":"2026-10-18T04:21:10.490Z","level":"log","context":"RouterExplorer","message":"Mapped {/domains/:id, PUT} route"}
{"timestamp":"2026-10-18T04:21:10.490Z","level":"log","context":"RouterExplorer","message":"Mapped {/domains/:id, DELETE} route"}
{"timestamp":"2026-10-18T04:21:10.490Z","level":"log","context":"RouterExplorer","message":"Mapped {/domains/seed, POST} route"}
{"timestamp":"2026-10-18T04:21:10.490Z","level":"log","context":"RoutesResolver","message":"MspSubscriptionController {/msp-subscription}:"}
{"timestamp":"2026-10-18T04:21:10.490Z","level":"log","context":"RouterExplorer","message":"Mapped {/msp-subscription/current, GET} route"}
{"timestamp":"2026-10-18T04:21:10.490Z","level":"log","context":"RouterExplorer","message":"Mapped {/msp-subscription/invoices, GET} route"}
{"timestamp":"2026-10-18T04:21:10.491Z","level":"log","context":"RouterExplorer","message":"Mapped {/msp-subscription/invoice/:invoiceId/pdf, GET} route"}
{"timestamp":"2026-10-18T04:21:10.491Z","level":"log","context":"RoutesResolver","message":"MspSubscriptionController {/api/msp-subscription}:"}
{"timestamp":"2026-10-18T04:21:10.491Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/msp-subscription/current, GET} route"}
{"timestamp":"2026-10-18T04:21:10.491Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/msp-subscription/invoices, GET} route"}
{"timestamp":"2026-10-18T04:21:10.491Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/msp-subscription/invoice/:invoiceId/pdf, GET} route"}
{"timestamp":"2026-10-18T04:21:10.577Z","level":"log","context":"NestApplication","message":"Nest application successfully started"}
{"timestamp":"2026-10-18T04:21:10.595Z","level":"log","context":"Bootstrap","message":"Users API successfully started on port 3842"}
{"timestamp":"2026-10-18T04:21:10.596Z","level":"log","context":"SeedService","message":"🌱 Starting database seeding..."}
{"timestamp":"2026-10-18T04:21:10.599Z","level":"log","context":"SeedService","message":"Admin account already exists, skipping seed"}
{"timestamp":"2026-10-18T04:21:10.602Z","level":"log","context":"SeedService","message":"Reseller account already exists, skipping seed"}
{"timestamp":"2026-10-18T04:21:10.603Z","level":"log","context":"SeedService","message":"MSP account already exists, skipping seed"}
{"timestamp":"2026-10-18T04:21:10.603Z","level":"log","context":"SeedService","message":"✅ Database seeding completed successfully"}
{"timestamp":"2026-10-18T04:51:28.837Z","level":"warn","context":"LegacyRouteConverter","message":"Unsupported route path: \"/lp/*\". In previous versions, the symbols ?, *, and + were used to denote optional or repeating path parameters. The latest version of \"path-to-regexp\" now requires the use of named parameters. For example, instead of using a route like /users/* to capture all routes starting with \"/users\", you should use /users/*path. For more details, refer to the migration guide. Attempting to auto-convert..."}
{"timestamp":"2026-10-18T04:51:28.877Z","level":"log","context":"Bootstrap","message":"Starting Users API on port 3842..."}
{"timestamp":"2026-10-18T04:51:28.881Z","level":"log","context":"RoutesResolver","message":"UsersApiController {/}:"}
{"timestamp":"2026-10-18T04:51:28.885Z","level":"log","context":"RouterExplorer","message":"Mapped {/, GET} route"}
{"timestamp":"2026-10-18T04:51:28.885Z","level":"log","context":"RoutesResolver","message":"AuthController {/auth}:"}
{"timestamp":"2026-10-18T04:51:28.886Z","level":"log","context":"RouterExplorer","message":"Mapped {/auth/login, POST} route"}
{"timestamp":"2026-10-18T04:51:28.886Z","level":"log","context":"RouterExplorer","message":"Mapped {/auth/admin/login, POST} route"}
{"timestamp":"2026-10-18T04:51:28.887Z","level":"log","context":"RouterExplorer","message":"Mapped {/auth/send-otp, POST} route"}
{"timestamp":"2026-10-18T04:51:28.887Z","level":"log","context":"RouterExplorer","message":"Mapped {/auth/verify-otp, POST} route"}
{"timestamp":"2026-10-18T04:51:28.888Z","level":"log","context":"RouterExplorer","message":"Mapped {/auth/signup, POST} route"}
{"timestamp":"2026-10-18T04:51:28.889Z","level":"log","context":"RouterExplorer","message":"Mapped {/auth/subscription-status, GET} route"}
{"timestamp":"2026-10-18T04:51:28.889Z","level":"log","context":"RoutesResolver","message":"AdminMspController {/admin/msp}:"}
{"timestamp":"2026-10-18T04:51:28.889Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/msp, GET} route"}
{"timestamp":"2026-10-18T04:51:28.890Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/msp/:id, GET} route"}
{"timestamp":"2026-10-18T04:51:28.891Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/msp, POST} route"}
{"timestamp":"2026-10-18T04:51:28.891Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/msp/:id, PUT} route"}
{"timestamp":"2026-10-18T04:51:28.891Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/msp/:id, DELETE} route"}
{"timestamp":"2026-10-18T04:51:28.891Z","level":"log","context":"RoutesResolver","message":"AdminLicenseController {/admin/licenses}:"}
{"timestamp":"2026-10-18T04:51:28.892Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/licenses/summary, GET} route"}
{"timestamp":"2026-10-18T04:51:28.892Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/licenses/msp/:mspId, GET} route"}
{"timestamp":"2026-10-18T04:51:28.892Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/licenses/msp/:mspId, PUT} route"}
{"timestamp":"2026-10-18T04:51:28.892Z","level":"log","context":"RoutesResolver","message":"AdminImpersonationController {/admin/impersonation}:"}
{"timestamp":"2026-10-18T04:51:28.893Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/impersonation/msp-users, GET} route"}
{"timestamp":"2026-10-18T04:51:28.896Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/impersonation/impersonate, POST} route"}
{"timestamp":"2026-10-18T04:51:28.896Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/impersonation/stop, POST} route"}
{"timestamp":"2026-10-18T04:51:28.896Z","level":"log","context":"RoutesResolver","message":"AdminAiUsageController {/admin/ai-usage}:"}
{"timestamp":"2026-10-18T04:51:28.896Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-usage, GET} route"}
{"timestamp":"2026-10-18T04:51:28.897Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-usage/business/:businessId, GET} route"}
{"timestamp":"2026-10-18T04:51:28.897Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-usage/report/monthly, GET} route"}
{"timestamp":"2026-10-18T04:51:28.897Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-usage/pricing, GET} route"}
{"timestamp":"2026-10-18T04:51:28.897Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-usage/pricing, POST} route"}
{"timestamp":"2026-10-18T04:51:28.897Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-usage/credit/:businessId, PUT} route"}
{"timestamp":"2026-10-18T04:51:28.898Z","level":"log","context":"RoutesResolver","message":"AdminAiUsageController {/api/admin/ai-usage}:"}
{"timestamp":"2026-10-18T04:51:28.898Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-usage, GET} route"}
{"timestamp":"2026-10-18T04:51:28.898Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-usage/business/:businessId, GET} route"}
{"timestamp":"2026-10-18T04:51:28.898Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-usage/report/monthly, GET} route"}
{"timestamp":"2026-10-18T04:51:28.898Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-usage/pricing, GET} route"}
{"timestamp":"2026-10-18T04:51:28.898Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-usage/pricing, POST} route"}
{"timestamp":"2026-10-18T04:51:28.899Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-usage/credit/:businessId, PUT} route"}
{"timestamp":"2026-10-18T04:51:28.899Z","level":"log","context":"RoutesResolver","message":"AdminAiModelController {/admin/ai-models}:"}
{"timestamp":"2026-10-18T04:51:28.899Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models, POST} route"}
{"timestamp":"2026-10-18T04:51:28.899Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models, GET} route"}
{"timestamp":"2026-10-18T04:51:28.899Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/default, GET} route"}
{"timestamp":"2026-10-18T04:51:28.900Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/:id, GET} route"}
{"timestamp":"2026-10-18T04:51:28.900Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/:id, PUT} route"}
{"timestamp":"2026-10-18T04:51:28.900Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/:id, DELETE} route"}
{"timestamp":"2026-10-18T04:51:28.900Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/:id/set-default, POST} route"}
{"timestamp":"2026-10-18T04:51:28.900Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/assign-to-business, POST} route"}
{"timestamp":"2026-10-18T04:51:28.901Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/business/:businessId, GET} route"}
{"timestamp":"2026-10-18T04:51:28.901Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/:id/businesses, GET} route"}
{"timestamp":"2026-10-18T04:51:28.901Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/initialize-defaults, POST} route"}
{"timestamp":"2026-10-18T04:51:28.901Z","level":"log","context":"RoutesResolver","message":"AdminAiModelController {/api/admin/ai-models}:"}
{"timestamp":"2026-10-18T04:51:28.901Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models, POST} route"}
{"timestamp":"2026-10-18T04:51:28.901Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models, GET} route"}
{"timestamp":"2026-10-18T04:51:28.902Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/default, GET} route"}
{"timestamp":"2026-10-18T04:51:28.902Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/:id, GET} route"}
{"timestamp":"2026-10-18T04:51:28.902Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/:id, PUT} route"}
{"timestamp":"2026-10-18T04:51:28.902Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/:id, DELETE} route"}
{"timestamp":"2026-10-18T04:51:28.902Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/:id/set-default, POST} route"}
{"timestamp":"2026-10-18T04:51:28.902Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/assign-to-business, POST} route"}
{"timestamp":"2026-10-18T04:51:28.903Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/business/:businessId, GET} route"}
{"timestamp":"2026-10-18T04:51:28.903Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/:id/businesses, GET} route"}
{"timestamp":"2026-10-18T04:51:28.903Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/initialize-defaults, POST} route"}
{"timestamp":"2026-10-18T04:51:28.903Z","level":"log","context":"RoutesResolver","message":"AdminBusinessController {/admin/businesses}:"}
{"timestamp":"2026-10-18T04:51:28.903Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/businesses, GET} route"}
{"timestamp":"2026-10-18T04:51:28.903Z","level":"log","context":"RoutesResolver","message":"ResellerManagementController {/admin/resellers}:"}
{"timestamp":"2026-10-18T04:51:28.904Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/resellers, GET} route"}
{"timestamp":"2026-10-18T04:51:28.904Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/resellers/create-default, POST} route"}
{"timestamp":"2026-10-18T04:51:28.904Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/resellers, POST} route"}
{"timestamp":"2026-10-18T04:51:28.904Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/resellers/:id/toggle-status, PUT} route"}
{"timestamp":"2026-10-18T04:51:28.904Z","level":"log","context":"RoutesResolver","message":"SubscriptionController {/subscription}:"}
{"timestamp":"2026-10-18T04:51:28.905Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/plans, GET} route"}
{"timestamp":"2026-10-18T04:51:28.905Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/calculate-price, POST} route"}
{"timestamp":"2026-10-18T04:51:28.905Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/current, GET} route"}
{"timestamp":"2026-10-18T04:51:28.905Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/create, POST} route"}
{"timestamp":"2026-10-18T04:51:28.905Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/:id, PUT} route"}
{"timestamp":"2026-10-18T04:51:28.905Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/:id/cancel, DELETE} route"}
{"timestamp":"2026-10-18T04:51:28.906Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/sync/:stripeSubscriptionId, POST} route"}
{"timestamp":"2026-10-18T04:51:28.906Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/payments, GET} route"}
{"timestamp":"2026-10-18T04:51:28.906Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/payments/stats, GET} route"}
{"timestamp":"2026-10-18T04:51:28.906Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/payment/:id, GET} route"}
{"timestamp":"2026-10-18T04:51:28.906Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/payment-methods/attach, POST} route"}
{"timestamp":"2026-10-18T04:51:28.907Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/payment-methods/:paymentMethodId, DELETE} route"}
{"timestamp":"2026-10-18T04:51:28.907Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/payment-methods, GET} route"}
{"timestamp":"2026-10-18T04:51:28.907Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/setup-intent, POST} route"}
{"timestamp":"2026-10-18T04:51:28.907Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/update-employee-count, POST} route"}
{"timestamp":"2026-10-18T04:51:28.907Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/retry-payment/:subscriptionId, POST} route"}
{"timestamp":"2026-10-18T04:51:28.907Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/invoice/:invoiceId/pdf, GET} route"}
{"timestamp":"2026-10-18T04:51:28.908Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/preview-upgrade, POST} route"}
{"timestamp":"2026-10-18T04:51:28.908Z","level":"log","context":"RoutesResolver","message":"SubscriptionController {/api/subscription}:"}
{"timestamp":"2026-10-18T04:51:28.908Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/plans, GET} route"}
{"timestamp":"2026-10-18T04:51:28.908Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/calculate-price, POST} route"}
{"timestamp":"2026-10-18T04:51:28.908Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/current, GET} route"}
{"timestamp":"2026-10-18T04:51:28.908Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/create, POST} route"}
{"timestamp":"2026-10-18T04:51:28.909Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/:id, PUT} route"}
{"timestamp":"2026-10-18T04:51:28.909Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/:id/cancel, DELETE} route"}
{"timestamp":"2026-10-18T04:51:28.909Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/sync/:stripeSubscriptionId, POST} route"}
{"timestamp":"2026-10-18T04:51:28.909Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/payments, GET} route"}
{"timestamp":"2026-10-18T04:51:28.909Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/payments/stats, GET} route"}
{"timestamp":"2026-10-18T04:51:28.909Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/payment/:id, GET} route"}
{"timestamp":"2026-10-18T04:51:28.909Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/payment-methods/attach, POST} route"}
{"timestamp":"2026-10-18T04:51:28.910Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/payment-methods/:paymentMethodId, DELETE} route"}
{"timestamp":"2026-10-18T04:51:28.910Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/payment-methods, GET} route"}
{"timestamp":"2026-10-18T04:51:28.910Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/setup-intent, POST} route"}
{"timestamp":"2026-10-18T04:51:28.910Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/update-employee-count, POST} route"}
{"timestamp":"2026-10-18T04:51:28.910Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/retry-payment/:subscriptionId, POST} route"}
{"timestamp":"2026-10-18T04:51:28.910Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/invoice/:invoiceId/pdf, GET} route"}
{"timestamp":"2026-10-18T04:51:28.911Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/preview-upgrade, POST} route"}
{"timestamp":"2026-10-18T04:51:28.911Z","level":"log","context":"RoutesResolver","message":"StripeWebhookController {/stripe/webhook}:"}
{"timestamp":"2026-10-18T04:51:28.911Z","level":"log","context":"RouterExplorer","message":"Mapped {/stripe/webhook/test, GET} route"}
{"timestamp":"2026-10-18T04:51:28.911Z","level":"log","context":"RouterExplorer","message":"Mapped {/stripe/webhook, POST} route"}
{"timestamp":"2026-10-18T04:51:28.911Z","level":"log","context":"RoutesResolver","message":"EmailController {/email-templates}:"}
{"timestamp":"2026-10-18T04:51:28.911Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates/test, POST} route"}
{"timestamp":"2026-10-18T04:51:28.911Z","level":"log","context":"RoutesResolver","message":"EmployeeController {/employees}:"}
{"timestamp":"2026-10-18T04:51:28.912Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees, POST} route"}
{"timestamp":"2026-10-18T04:51:28.912Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees, GET} route"}
{"timestamp":"2026-10-18T04:51:28.912Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees/export, GET} route"}
{"timestamp":"2026-10-18T04:51:28.912Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees/risk-stats, GET} route"}
{"timestamp":"2026-10-18T04:51:28.912Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees/:id, GET} route"}
{"timestamp":"2026-10-18T04:51:28.912Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees/:id, PUT} route"}
{"timestamp":"2026-10-18T04:51:28.913Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees/:id, DELETE} route"}
{"timestamp":"2026-10-18T04:51:28.913Z","level":"log","context":"RoutesResolver","message":"GroupController {/groups}:"}
{"timestamp":"2026-10-18T04:51:28.913Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups, POST} route"}
{"timestamp":"2026-10-18T04:51:28.913Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups, GET} route"}
{"timestamp":"2026-10-18T04:51:28.913Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups/standard, GET} route"}
{"timestamp":"2026-10-18T04:51:28.913Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups/:id, GET} route"}
{"timestamp":"2026-10-18T04:51:28.914Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups/:id, PUT} route"}
{"timestamp":"2026-10-18T04:51:28.914Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups/:id, DELETE} route"}
{"timestamp":"2026-10-18T04:51:28.914Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups/:id/info, GET} route"}
{"timestamp":"2026-10-18T04:51:28.914Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups/:id/with-employees, GET} route"}
{"timestamp":"2026-10-18T04:51:28.914Z","level":"log","context":"RoutesResolver","message":"SenderProfileController {/sender-profiles}:"}
{"timestamp":"2026-10-18T04:51:28.914Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles, GET} route"}
{"timestamp":"2026-10-18T04:51:28.914Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles/:id, GET} route"}
{"timestamp":"2026-10-18T04:51:28.915Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles, POST} route"}
{"timestamp":"2026-10-18T04:51:28.915Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles/:id, PUT} route"}
{"timestamp":"2026-10-18T04:51:28.915Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles/:id, DELETE} route"}
{"timestamp":"2026-10-18T04:51:28.915Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles/:id/verify-domain, POST} route"}
{"timestamp":"2026-10-18T04:51:28.915Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles/domain-verification, GET} route"}
{"timestamp":"2026-10-18T04:51:28.915Z","level":"log","context":"RoutesResolver","message":"EmailTemplateController {/email-templates}:"}
{"timestamp":"2026-10-18T04:51:28.916Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates, GET} route"}
{"timestamp":"2026-10-18T04:51:28.916Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates/:id, GET} route"}
{"timestamp":"2026-10-18T04:51:28.916Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates, POST} route"}
{"timestamp":"2026-10-18T04:51:28.916Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates/:id, PUT} route"}
{"timestamp":"2026-10-18T04:51:28.916Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates/:id, DELETE} route"}
{"timestamp":"2026-10-18T04:51:28.916Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates/:id/duplicate, POST} route"}
{"timestamp":"2026-10-18T04:51:28.917Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates/:id/preview, GET} route"}
{"timestamp":"2026-10-18T04:51:28.917Z","level":"log","context":"RoutesResolver","message":"ScenarioController {/scenarios}:"}
{"timestamp":"2026-10-18T04:51:28.917Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios, POST} route"}
{"timestamp":"2026-10-18T04:51:28.917Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios/generate-content, POST} route"}
{"timestamp":"2026-10-18T04:51:28.917Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios, GET} route"}
{"timestamp":"2026-10-18T04:51:28.917Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios/:id, GET} route"}
{"timestamp":"2026-10-18T04:51:28.917Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios/:id, PUT} route"}
{"timestamp":"2026-10-18T04:51:28.918Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios/:id, DELETE} route"}
{"timestamp":"2026-10-18T04:51:28.918Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios/generate-from-json, POST} route"}
{"timestamp":"2026-10-18T04:51:28.918Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios/:id/save-as-custom-scenario, POST} route"}
{"timestamp":"2026-10-18T04:51:28.918Z","level":"log","context":"RoutesResolver","message":"CampaignController {/campaigns}:"}
{"timestamp":"2026-10-18T04:51:28.918Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns, POST} route"}
{"timestamp":"2026-10-18T04:51:28.918Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns, GET} route"}
{"timestamp":"2026-10-18T04:51:28.919Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id, GET} route"}
{"timestamp":"2026-10-18T04:51:28.919Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id/details, GET} route"}
{"timestamp":"2026-10-18T04:51:28.919Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id/employees, GET} route"}
{"timestamp":"2026-10-18T04:51:28.919Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id, PATCH} route"}
{"timestamp":"2026-10-18T04:51:28.919Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id/start, POST} route"}
{"timestamp":"2026-10-18T04:51:28.920Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id/stop, POST} route"}
{"timestamp":"2026-10-18T04:51:28.920Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id/duplicate, POST} route"}
{"timestamp":"2026-10-18T04:51:28.920Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id, DELETE} route"}
{"timestamp":"2026-10-18T04:51:28.920Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/auto-generate-program, POST} route"}
{"timestamp":"2026-10-18T04:51:28.920Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/generate-from-threat-intelligence, POST} route"}
{"timestamp":"2026-10-18T04:51:28.920Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id/risk-score, GET} route"}
{"timestamp":"2026-10-18T04:51:28.921Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/recalculate-risk-scores, POST} route"}
{"timestamp":"2026-10-18T04:51:28.921Z","level":"log","context":"RoutesResolver","message":"CampaignController {/api/campaigns}:"}
{"timestamp":"2026-10-18T04:51:28.921Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns, POST} route"}
{"timestamp":"2026-10-18T04:51:28.921Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns, GET} route"}
{"timestamp":"2026-10-18T04:51:28.921Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id, GET} route"}
{"timestamp":"2026-10-18T04:51:28.921Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id/details, GET} route"}
{"timestamp":"2026-10-18T04:51:28.921Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id/employees, GET} route"}
{"timestamp":"2026-10-18T04:51:28.922Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id, PATCH} route"}
{"timestamp":"2026-10-18T04:51:28.922Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id/start, POST} route"}
{"timestamp":"2026-10-18T04:51:28.922Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id/stop, POST} route"}
{"timestamp":"2026-10-18T04:51:28.922Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id/duplicate, POST} route"}
{"timestamp":"2026-10-18T04:51:28.922Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id, DELETE} route"}
{"timestamp":"2026-10-18T04:51:28.922Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/auto-generate-program, POST} route"}
{"timestamp":"2026-10-18T04:51:28.922Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/generate-from-threat-intelligence, POST} route"}
{"timestamp":"2026-10-18T04:51:28.923Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id/risk-score, GET} route"}
{"timestamp":"2026-10-18T04:51:28.923Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/recalculate-risk-scores, POST} route"}
{"timestamp":"2026-10-18T04:51:28.923Z","level":"log","context":"RoutesResolver","message":"NotificationsController {/notifications}:"}
{"timestamp":"2026-10-18T04:51:28.923Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications, POST} route"}
{"timestamp":"2026-10-18T04:51:28.923Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications, GET} route"}
{"timestamp":"2026-10-18T04:51:28.924Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/unread, GET} route"}
{"timestamp":"2026-10-18T04:51:28.924Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/unread-count, GET} route"}
{"timestamp":"2026-10-18T04:51:28.924Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/:id, GET} route"}
{"timestamp":"2026-10-18T04:51:28.924Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/:id, PATCH} route"}
{"timestamp":"2026-10-18T04:51:28.924Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/:id/read, PATCH} route"}
{"timestamp":"2026-10-18T04:51:28.924Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/mark-all-read, PATCH} route"}
{"timestamp":"2026-10-18T04:51:28.925Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/:id, DELETE} route"}
{"timestamp":"2026-10-18T04:51:28.925Z","level":"log","context":"RoutesResolver","message":"LandingPageController {/lp}:"}
{"timestamp":"2026-10-18T04:51:28.925Z","level":"log","context":"RouterExplorer","message":"Mapped {/lp/image, GET} route"}
{"timestamp":"2026-10-18T04:51:28.925Z","level":"log","context":"RouterExplorer","message":"Mapped {/lp/learning, GET} route"}
{"timestamp":"2026-10-18T04:51:28.925Z","level":"log","context":"RouterExplorer","message":"Mapped {/lp/submit, POST} route"}
{"timestamp":"2026-10-18T04:51:28.926Z","level":"log","context":"RouterExplorer","message":"Mapped {/lp/test, GET} route"}
{"timestamp":"2026-10-18T04:51:28.926Z","level":"warn","context":"LegacyRouteConverter","message":"Unsupported route path: \"/lp/*\". In previous versions, the symbols ?, *, and + were used to denote optional or repeating path parameters. The latest version of \"path-to-regexp\" now requires the use of named parameters. For example, instead of using a route like /users/* to capture all routes starting with \"/users\", you should use /users/*path. For more details, refer to the migration guide. Attempting to auto-convert..."}
{"timestamp":"2026-10-18T04:51:28.927Z","level":"log","context":"RouterExplorer","message":"Mapped {/lp/*, ALL} route"}
{"timestamp":"2026-10-18T04:51:28.927Z","level":"log","context":"RoutesResolver","message":"SupportController {/support}:"}
{"timestamp":"2026-10-18T04:51:28.927Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets, POST} route"}
{"timestamp":"2026-10-18T04:51:28.927Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets, GET} route"}
{"timestamp":"2026-10-18T04:51:28.927Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets/:id, GET} route"}
{"timestamp":"2026-10-18T04:51:28.928Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets/:id, PATCH} route"}
{"timestamp":"2026-10-18T04:51:28.928Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets/:id, DELETE} route"}
{"timestamp":"2026-10-18T04:51:28.928Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets/:id/messages, POST} route"}
{"timestamp":"2026-10-18T04:51:28.928Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets/:id/close, POST} route"}
{"timestamp":"2026-10-18T04:51:28.928Z","level":"log","context":"RoutesResolver","message":"BusninessMetricsController {/business-metrics}:"}
{"timestamp":"2026-10-18T04:51:28.928Z","level":"log","context":"RouterExplorer","message":"Mapped {/business-metrics, GET} route"}
{"timestamp":"2026-10-18T04:51:28.928Z","level":"log","context":"RoutesResolver","message":"UsersController {/users}:"}
{"timestamp":"2026-10-18T04:51:28.929Z","level":"log","context":"RouterExplorer","message":"Mapped {/users/:id, PUT} route"}
{"timestamp":"2026-10-18T04:51:28.929Z","level":"log","context":"RouterExplorer","message":"Mapped {/users/settings, GET} route"}
{"timestamp":"2026-10-18T04:51:28.929Z","level":"log","context":"RouterExplorer","message":"Mapped {/users/settings/general, PUT} route"}
{"timestamp":"2026-10-18T04:51:28.929Z","level":"log","context":"RouterExplorer","message":"Mapped {/users/company/settings, PUT} route"}
{"timestamp":"2026-10-18T04:51:28.929Z","level":"log","context":"RouterExplorer","message":"Mapped {/users/change-password, POST} route"}
{"timestamp":"2026-10-18T04:51:28.930Z","level":"log","context":"RouterExplorer","message":"Mapped {/users/localization/settings, PUT} route"}
{"timestamp":"2026-10-18T04:51:28.930Z","level":"log","context":"RoutesResolver","message":"PartnerController {/partner}:"}
{"timestamp":"2026-10-18T04:51:28.930Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses, POST} route"}
{"timestamp":"2026-10-18T04:51:28.930Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses, GET} route"}
{"timestamp":"2026-10-18T04:51:28.930Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses/:id, GET} route"}
{"timestamp":"2026-10-18T04:51:28.931Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses/:id, PUT} route"}
{"timestamp":"2026-10-18T04:51:28.931Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses/:id, DELETE} route"}
{"timestamp":"2026-10-18T04:51:28.931Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses/:id/impersonate, POST} route"}
{"timestamp":"2026-10-18T04:51:28.931Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses/stop-impersonation, POST} route"}
{"timestamp":"2026-10-18T04:51:28.931Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/license-usage, GET} route"}
{"timestamp":"2026-10-18T04:51:28.931Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/invoices, POST} route"}
{"timestamp":"2026-10-18T04:51:28.932Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/invoices, GET} route"}
{"timestamp":"2026-10-18T04:51:28.932Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/invoices/:id, GET} route"}
{"timestamp":"2026-10-18T04:51:28.932Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/invoices/:id, PUT} route"}
{"timestamp":"2026-10-18T04:51:28.932Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/invoices/:id, DELETE} route"}
{"timestamp":"2026-10-18T04:51:28.932Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/invoices/:id/mark-paid, PUT} route"}
{"timestamp":"2026-10-18T04:51:28.933Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/onboarding/generate-token, POST} route"}
{"timestamp":"2026-10-18T04:51:28.933Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/dashboard, GET} route"}
{"timestamp":"2026-10-18T04:51:28.933Z","level":"log","context":"RoutesResolver","message":"MspSubscriptionController {/partner/msp-subscriptions}:"}
{"timestamp":"2026-10-18T04:51:28.933Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/plans, POST} route"}
{"timestamp":"2026-10-18T04:51:28.933Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/plans, GET} route"}
{"timestamp":"2026-10-18T04:51:28.933Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/plans/:planId, GET} route"}
{"timestamp":"2026-10-18T04:51:28.934Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/plans/:planId, PUT} route"}
{"timestamp":"2026-10-18T04:51:28.934Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/plans/:planId, DELETE} route"}
{"timestamp":"2026-10-18T04:51:28.934Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/businesses/:businessId/subscription, POST} route"}
{"timestamp":"2026-10-18T04:51:28.934Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions, GET} route"}
{"timestamp":"2026-10-18T04:51:28.934Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/businesses/:businessId/subscription, GET} route"}
{"timestamp":"2026-10-18T04:51:28.934Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/businesses/:businessId/subscription, PUT} route"}
{"timestamp":"2026-10-18T04:51:28.935Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/businesses/:businessId/subscription, DELETE} route"}
{"timestamp":"2026-10-18T04:51:28.935Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/businesses/:businessId/subscription/limits, GET} route"}
{"timestamp":"2026-10-18T04:51:28.935Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/businesses/:businessId/subscription/change-plan, PUT} route"}
{"timestamp":"2026-10-18T04:51:28.935Z","level":"log","context":"RoutesResolver","message":"OnboardingController {/onboarding}:"}
{"timestamp":"2026-10-18T04:51:28.935Z","level":"log","context":"RouterExplorer","message":"Mapped {/onboarding/validate/:token, GET} route"}
{"timestamp":"2026-10-18T04:51:28.935Z","level":"log","context":"RouterExplorer","message":"Mapped {/onboarding/complete/:token, POST} route"}
{"timestamp":"2026-10-18T04:51:28.935Z","level":"log","context":"RoutesResolver","message":"ResellerController {/reseller}:"}
{"timestamp":"2026-10-18T04:51:28.936Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/businesses, POST} route"}
{"timestamp":"2026-10-18T04:51:28.936Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/businesses, GET} route"}
{"timestamp":"2026-10-18T04:51:28.936Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/businesses/:id, GET} route"}
{"timestamp":"2026-10-18T04:51:28.936Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/businesses/:id, PUT} route"}
{"timestamp":"2026-10-18T04:51:28.936Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/businesses/:id, DELETE} route"}
{"timestamp":"2026-10-18T04:51:28.937Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/license-usage, GET} route"}
{"timestamp":"2026-10-18T04:51:28.937Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/invoices, POST} route"}
{"timestamp":"2026-10-18T04:51:28.937Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/invoices, GET} route"}
{"timestamp":"2026-10-18T04:51:28.937Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/invoices/:id, GET} route"}
{"timestamp":"2026-10-18T04:51:28.937Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/invoices/:id, PUT} route"}
{"timestamp":"2026-10-18T04:51:28.937Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/invoices/:id, DELETE} route"}
{"timestamp":"2026-10-18T04:51:28.938Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/invoices/:id/mark-paid, PUT} route"}
{"timestamp":"2026-10-18T04:51:28.938Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/onboarding/generate-token, POST} route"}
{"timestamp":"2026-10-18T04:51:28.938Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/dashboard, GET} route"}
{"timestamp":"2026-10-18T04:51:28.938Z","level":"log","context":"RoutesResolver","message":"ResellerSubscriptionController {/reseller}:"}
{"timestamp":"2026-10-18T04:51:28.938Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/plans, POST} route"}
{"timestamp":"2026-10-18T04:51:28.938Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/plans, GET} route"}
{"timestamp":"2026-10-18T04:51:28.938Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/plans/:planId, GET} route"}
{"timestamp":"2026-10-18T04:51:28.939Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/plans/:planId, PUT} route"}
{"timestamp":"2026-10-18T04:51:28.939Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/plans/:planId, DELETE} route"}
{"timestamp":"2026-10-18T04:51:28.939Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/subscriptions/businesses/:businessId/subscription, POST} route"}
{"timestamp":"2026-10-18T04:51:28.939Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/subscriptions, GET} route"}
{"timestamp":"2026-10-18T04:51:28.939Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/subscriptions/businesses/:businessId/subscription, GET} route"}
{"timestamp":"2026-10-18T04:51:28.940Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/subscriptions/businesses/:businessId/subscription, PUT} route"}
{"timestamp":"2026-10-18T04:51:28.940Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/subscriptions/businesses/:businessId/subscription, DELETE} route"}
{"timestamp":"2026-10-18T04:51:28.940Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/subscriptions/businesses/:businessId/subscription/limits, GET} route"}
{"timestamp":"2026-10-18T04:51:28.940Z","level":"log","context":"RoutesResolver","message":"HealthController {/health}:"}
{"timestamp":"2026-10-18T04:51:28.940Z","level":"log","context":"RouterExplorer","message":"Mapped {/health, GET} route"}
{"timestamp":"2026-10-18T04:51:28.940Z","level":"log","context":"RouterExplorer","message":"Mapped {/health/test-logs, GET} route"}
{"timestamp":"2026-10-18T04:51:28.941Z","level":"log","context":"RoutesResolver","message":"AzureAdController {/azure-ad}:"}
{"timestamp":"2026-10-18T04:51:28.941Z","level":"log","context":"RouterExplorer","message":"Mapped {/azure-ad/config, POST} route"}
{"timestamp":"2026-10-18T04:51:28.941Z","level":"log","context":"RouterExplorer","message":"Mapped {/azure-ad/config, GET} route"}
{"timestamp":"2026-10-18T04:51:28.941Z","level":"log","context":"RouterExplorer","message":"Mapped {/azure-ad/test-connection, POST} route"}
{"timestamp":"2026-10-18T04:51:28.941Z","level":"log","context":"RouterExplorer","message":"Mapped {/azure-ad/sync, POST} route"}
{"timestamp":"2026-10-18T04:51:28.941Z","level":"log","context":"RoutesResolver","message":"ThreatsController {/threats}:"}
{"timestamp":"2026-10-18T04:51:28.942Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats, POST} route"}
{"timestamp":"2026-10-18T04:51:28.942Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats, GET} route"}
{"timestamp":"2026-10-18T04:51:28.942Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/chart-data, GET} route"}
{"timestamp":"2026-10-18T04:51:28.942Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/claude-search, POST} route"}
{"timestamp":"2026-10-18T04:51:28.942Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/claude-latest, POST} route"}
{"timestamp":"2026-10-18T04:51:28.942Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/claude-trending, POST} route"}
{"timestamp":"2026-10-18T04:51:28.943Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/claude-categories, POST} route"}
{"timestamp":"2026-10-18T04:51:28.943Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/claude-manual-search, POST} route"}
{"timestamp":"2026-10-18T04:51:28.943Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/claude-quick-search, POST} route"}
{"timestamp":"2026-10-18T04:51:28.943Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/scheduler-status, GET} route"}
{"timestamp":"2026-10-18T04:51:28.943Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/health-check, GET} route"}
{"timestamp":"2026-10-18T04:51:28.943Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/pause-scheduler, POST} route"}
{"timestamp":"2026-10-18T04:51:28.944Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/:id, GET} route"}
{"timestamp":"2026-10-18T04:51:28.944Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/:id, PATCH} route"}
{"timestamp":"2026-10-18T04:51:28.944Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/:id, DELETE} route"}
{"timestamp":"2026-10-18T04:51:28.944Z","level":"log","context":"RoutesResolver","message":"DomainController {/domains}:"}
{"timestamp":"2026-10-18T04:51:28.944Z","level":"log","context":"RouterExplorer","message":"Mapped {/domains, GET} route"}
{"timestamp":"2026-10-18T04:51:28.944Z","level":"log","context":"RouterExplorer","message":"Mapped {/domains/:id, GET} route"}
{"timestamp":"2026-10-18T04:51:28.945Z","level":"log","context":"RouterExplorer","message":"Mapped {/domains, POST} route"}
{"timestamp":"2026-10-18T04:51:28.945Z","level":"log","context":"RouterExplorer","message":"Mapped {/domains/:id, PUT} route"}
{"timestamp":"2026-10-18T04:51:28.945Z","level":"log","context":"RouterExplorer","message":"Mapped {/domains/:id, DELETE} route"}
{"timestamp":"2026-10-18T04:51:28.945Z","level":"log","context":"RouterExplorer","message":"Mapped {/domains/seed, POST} route"}
{"timestamp":"2026-10-18T04:51:28.945Z","level":"log","context":"RoutesResolver","message":"MspSubscriptionController {/msp-subscription}:"}
{"timestamp":"2026-10-18T04:51:28.945Z","level":"log","context":"RouterExplorer","message":"Mapped {/msp-subscription/current, GET} route"}
{"timestamp":"2026-10-18T04:51:28.946Z","level":"log","context":"RouterExplorer","message":"Mapped {/msp-subscription/invoices, GET} route"}
{"timestamp":"2026-10-18T04:51:28.946Z","level":"log","context":"RouterExplorer","message":"Mapped {/msp-subscription/invoice/:invoiceId/pdf, GET} route"}
{"timestamp":"2026-10-18T04:51:28.946Z","level":"log","context":"RoutesResolver","message":"MspSubscriptionController {/api/msp-subscription}:"}
{"timestamp":"2026-10-18T04:51:28.946Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/msp-subscription/current, GET} route"}
{"timestamp":"2026-10-18T04:51:28.946Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/msp-subscription/invoices, GET} route"}
{"timestamp":"2026-10-18T04:51:28.946Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/msp-subscription/invoice/:invoiceId/pdf, GET} route"}
{"timestamp":"2026-10-18T04:51:29.021Z","level":"log","context":"NestApplication","message":"Nest application successfully started"}
{"timestamp":"2026-10-18T04:51:29.039Z","level":"log","context":"Bootstrap","message":"Users API successfully started on port 3842"}
{"timestamp":"2026-10-18T04:51:29.039Z","level":"log","context":"SeedService","message":"🌱 Starting database seeding..."}
{"timestamp":"2026-10-18T04:51:29.046Z","level":"log","context":"SeedService","message":"Admin account already exists, skipping seed"}
{"timestamp":"2026-10-18T04:51:29.048Z","level":"log","context":"SeedService","message":"Reseller account already exists, skipping seed"}
{"timestamp":"2026-10-18T04:51:29.050Z","level":"log","context":"SeedService","message":"MSP account already exists, skipping seed"}
{"timestamp":"2026-10-18T04:51:29.050Z","level":"log","context":"SeedService","message":"✅ Database seeding completed successfully"}
{"timestamp":"2026-10-18T04:51:29.091Z","level":"log","context":"UsersApiController","message":"Hello endpoint accessed"}
{"timestamp":"2026-10-18T04:51:50.346Z","level":"log","context":"UsersApiController","message":"Hello endpoint accessed"}
{"timestamp":"2026-10-18T06:01:21.253Z","level":"warn","context":"LegacyRouteConverter","message":"Unsupported route path: \"/lp/*\". In previous versions, the symbols ?, *, and + were used to denote optional or repeating path parameters. The latest version of \"path-to-regexp\" now requires the use of named parameters. For example, instead of using a route like /users/* to capture all routes starting with \"/users\", you should use /users/*path. For more details, refer to the migration guide. Attempting to auto-convert..."}
{"timestamp":"2026-10-18T06:01:21.286Z","level":"log","context":"Bootstrap","message":"Starting Users API on port 3842..."}
{"timestamp":"2026-10-18T06:01:21.289Z","level":"log","context":"RoutesResolver","message":"UsersApiController {/}:"}
{"timestamp":"2026-10-18T06:01:21.292Z","level":"log","context":"RouterExplorer","message":"Mapped {/, GET} route"}
{"timestamp":"2026-10-18T06:01:21.293Z","level":"log","context":"RoutesResolver","message":"AuthController {/auth}:"}
{"timestamp":"2026-10-18T06:01:21.293Z","level":"log","context":"RouterExplorer","message":"Mapped {/auth/login, POST} route"}
{"timestamp":"2026-10-18T06:01:21.294Z","level":"log","context":"RouterExplorer","message":"Mapped {/auth/admin/login, POST} route"}
{"timestamp":"2026-10-18T06:01:21.294Z","level":"log","context":"RouterExplorer","message":"Mapped {/auth/send-otp, POST} route"}
{"timestamp":"2026-10-18T06:01:21.295Z","level":"log","context":"RouterExplorer","message":"Mapped {/auth/verify-otp, POST} route"}
{"timestamp":"2026-10-18T06:01:21.295Z","level":"log","context":"RouterExplorer","message":"Mapped {/auth/signup, POST} route"}
{"timestamp":"2026-10-18T06:01:21.295Z","level":"log","context":"RouterExplorer","message":"Mapped {/auth/subscription-status, GET} route"}
{"timestamp":"2026-10-18T06:01:21.296Z","level":"log","context":"RoutesResolver","message":"AdminMspController {/admin/msp}:"}
{"timestamp":"2026-10-18T06:01:21.296Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/msp, GET} route"}
{"timestamp":"2026-10-18T06:01:21.297Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/msp/:id, GET} route"}
{"timestamp":"2026-10-18T06:01:21.297Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/msp, POST} route"}
{"timestamp":"2026-10-18T06:01:21.297Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/msp/:id, PUT} route"}
{"timestamp":"2026-10-18T06:01:21.298Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/msp/:id, DELETE} route"}
{"timestamp":"2026-10-18T06:01:21.298Z","level":"log","context":"RoutesResolver","message":"AdminLicenseController {/admin/licenses}:"}
{"timestamp":"2026-10-18T06:01:21.298Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/licenses/summary, GET} route"}
{"timestamp":"2026-10-18T06:01:21.298Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/licenses/msp/:mspId, GET} route"}
{"timestamp":"2026-10-18T06:01:21.299Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/licenses/msp/:mspId, PUT} route"}
{"timestamp":"2026-10-18T06:01:21.299Z","level":"log","context":"RoutesResolver","message":"AdminImpersonationController {/admin/impersonation}:"}
{"timestamp":"2026-10-18T06:01:21.299Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/impersonation/msp-users, GET} route"}
{"timestamp":"2026-10-18T06:01:21.302Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/impersonation/impersonate, POST} route"}
{"timestamp":"2026-10-18T06:01:21.302Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/impersonation/stop, POST} route"}
{"timestamp":"2026-10-18T06:01:21.302Z","level":"log","context":"RoutesResolver","message":"AdminAiUsageController {/admin/ai-usage}:"}
{"timestamp":"2026-10-18T06:01:21.303Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-usage, GET} route"}
{"timestamp":"2026-10-18T06:01:21.303Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-usage/business/:businessId, GET} route"}
{"timestamp":"2026-10-18T06:01:21.303Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-usage/report/monthly, GET} route"}
{"timestamp":"2026-10-18T06:01:21.303Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-usage/pricing, GET} route"}
{"timestamp":"2026-10-18T06:01:21.303Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-usage/pricing, POST} route"}
{"timestamp":"2026-10-18T06:01:21.304Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-usage/credit/:businessId, PUT} route"}
{"timestamp":"2026-10-18T06:01:21.304Z","level":"log","context":"RoutesResolver","message":"AdminAiUsageController {/api/admin/ai-usage}:"}
{"timestamp":"2026-10-18T06:01:21.304Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-usage, GET} route"}
{"timestamp":"2026-10-18T06:01:21.304Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-usage/business/:businessId, GET} route"}
{"timestamp":"2026-10-18T06:01:21.304Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-usage/report/monthly, GET} route"}
{"timestamp":"2026-10-18T06:01:21.305Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-usage/pricing, GET} route"}
{"timestamp":"2026-10-18T06:01:21.305Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-usage/pricing, POST} route"}
{"timestamp":"2026-10-18T06:01:21.305Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-usage/credit/:businessId, PUT} route"}
{"timestamp":"2026-10-18T06:01:21.305Z","level":"log","context":"RoutesResolver","message":"AdminAiModelController {/admin/ai-models}:"}
{"timestamp":"2026-10-18T06:01:21.305Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models, POST} route"}
{"timestamp":"2026-10-18T06:01:21.305Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models, GET} route"}
{"timestamp":"2026-10-18T06:01:21.306Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/default, GET} route"}
{"timestamp":"2026-10-18T06:01:21.306Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/:id, GET} route"}
{"timestamp":"2026-10-18T06:01:21.306Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/:id, PUT} route"}
{"timestamp":"2026-10-18T06:01:21.306Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/:id, DELETE} route"}
{"timestamp":"2026-10-18T06:01:21.306Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/:id/set-default, POST} route"}
{"timestamp":"2026-10-18T06:01:21.306Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/assign-to-business, POST} route"}
{"timestamp":"2026-10-18T06:01:21.307Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/business/:businessId, GET} route"}
{"timestamp":"2026-10-18T06:01:21.307Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/:id/businesses, GET} route"}
{"timestamp":"2026-10-18T06:01:21.307Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/initialize-defaults, POST} route"}
{"timestamp":"2026-10-18T06:01:21.307Z","level":"log","context":"RoutesResolver","message":"AdminAiModelController {/api/admin/ai-models}:"}
{"timestamp":"2026-10-18T06:01:21.307Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models, POST} route"}
{"timestamp":"2026-10-18T06:01:21.308Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models, GET} route"}
{"timestamp":"2026-10-18T06:01:21.308Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/default, GET} route"}
{"timestamp":"2026-10-18T06:01:21.308Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/:id, GET} route"}
{"timestamp":"2026-10-18T06:01:21.308Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/:id, PUT} route"}
{"timestamp":"2026-10-18T06:01:21.308Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/:id, DELETE} route"}
{"timestamp":"2026-10-18T06:01:21.308Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/:id/set-default, POST} route"}
{"timestamp":"2026-10-18T06:01:21.309Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/assign-to-business, POST} route"}
{"timestamp":"2026-10-18T06:01:21.309Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/business/:businessId, GET} route"}
{"timestamp":"2026-10-18T06:01:21.309Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/:id/businesses, GET} route"}
{"timestamp":"2026-10-18T06:01:21.309Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/initialize-defaults, POST} route"}
{"timestamp":"2026-10-18T06:01:21.309Z","level":"log","context":"RoutesResolver","message":"AdminBusinessController {/admin/businesses}:"}
{"timestamp":"2026-10-18T06:01:21.310Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/businesses, GET} route"}
{"timestamp":"2026-10-18T06:01:21.310Z","level":"log","context":"RoutesResolver","message":"ResellerManagementController {/admin/resellers}:"}
{"timestamp":"2026-10-18T06:01:21.310Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/resellers, GET} route"}
{"timestamp":"2026-10-18T06:01:21.310Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/resellers/create-default, POST} route"}
{"timestamp":"2026-10-18T06:01:21.310Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/resellers, POST} route"}
{"timestamp":"2026-10-18T06:01:21.310Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/resellers/:id/toggle-status, PUT} route"}
{"timestamp":"2026-10-18T06:01:21.310Z","level":"log","context":"RoutesResolver","message":"SubscriptionController {/subscription}:"}
{"timestamp":"2026-10-18T06:01:21.311Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/plans, GET} route"}
{"timestamp":"2026-10-18T06:01:21.311Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/calculate-price, POST} route"}
{"timestamp":"2026-10-18T06:01:21.311Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/current, GET} route"}
{"timestamp":"2026-10-18T06:01:21.311Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/create, POST} route"}
{"timestamp":"2026-10-18T06:01:21.311Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/:id, PUT} route"}
{"timestamp":"2026-10-18T06:01:21.311Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/:id/cancel, DELETE} route"}
{"timestamp":"2026-10-18T06:01:21.312Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/sync/:stripeSubscriptionId, POST} route"}
{"timestamp":"2026-10-18T06:01:21.312Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/payments, GET} route"}
{"timestamp":"2026-10-18T06:01:21.312Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/payments/stats, GET} route"}
{"timestamp":"2026-10-18T06:01:21.312Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/payment/:id, GET} route"}
{"timestamp":"2026-10-18T06:01:21.312Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/payment-methods/attach, POST} route"}
{"timestamp":"2026-10-18T06:01:21.312Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/payment-methods/:paymentMethodId, DELETE} route"}
{"timestamp":"2026-10-18T06:01:21.313Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/payment-methods, GET} route"}
{"timestamp":"2026-10-18T06:01:21.313Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/setup-intent, POST} route"}
{"timestamp":"2026-10-18T06:01:21.313Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/update-employee-count, POST} route"}
{"timestamp":"2026-10-18T06:01:21.313Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/retry-payment/:subscriptionId, POST} route"}
{"timestamp":"2026-10-18T06:01:21.313Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/invoice/:invoiceId/pdf, GET} route"}
{"timestamp":"2026-10-18T06:01:21.313Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/preview-upgrade, POST} route"}
{"timestamp":"2026-10-18T06:01:21.313Z","level":"log","context":"RoutesResolver","message":"SubscriptionController {/api/subscription}:"}
{"timestamp":"2026-10-18T06:01:21.314Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/plans, GET} route"}
{"timestamp":"2026-10-18T06:01:21.314Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/calculate-price, POST} route"}
{"timestamp":"2026-10-18T06:01:21.314Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/current, GET} route"}
{"timestamp":"2026-10-18T06:01:21.314Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/create, POST} route"}
{"timestamp":"2026-10-18T06:01:21.314Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/:id, PUT} route"}
{"timestamp":"2026-10-18T06:01:21.314Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/:id/cancel, DELETE} route"}
{"timestamp":"2026-10-18T06:01:21.315Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/sync/:stripeSubscriptionId, POST} route"}
{"timestamp":"2026-10-18T06:01:21.315Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/payments, GET} route"}
{"timestamp":"2026-10-18T06:01:21.315Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/payments/stats, GET} route"}
{"timestamp":"2026-10-18T06:01:21.315Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/payment/:id, GET} route"}
{"timestamp":"2026-10-18T06:01:21.315Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/payment-methods/attach, POST} route"}
{"timestamp":"2026-10-18T06:01:21.315Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/payment-methods/:paymentMethodId, DELETE} route"}
{"timestamp":"2026-10-18T06:01:21.316Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/payment-methods, GET} route"}
{"timestamp":"2026-10-18T06:01:21.316Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/setup-intent, POST} route"}
{"timestamp":"2026-10-18T06:01:21.316Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/update-employee-count, POST} route"}
{"timestamp":"2026-10-18T06:01:21.316Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/retry-payment/:subscriptionId, POST} route"}
{"timestamp":"2026-10-18T06:01:21.316Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/invoice/:invoiceId/pdf, GET} route"}
{"timestamp":"2026-10-18T06:01:21.316Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/preview-upgrade, POST} route"}
{"timestamp":"2026-10-18T06:01:21.316Z","level":"log","context":"RoutesResolver","message":"StripeWebhookController {/stripe/webhook}:"}
{"timestamp":"2026-10-18T06:01:21.317Z","level":"log","context":"RouterExplorer","message":"Mapped {/stripe/webhook/test, GET} route"}
{"timestamp":"2026-10-18T06:01:21.317Z","level":"log","context":"RouterExplorer","message":"Mapped {/stripe/webhook, POST} route"}
{"timestamp":"2026-10-18T06:01:21.317Z","level":"log","context":"RoutesResolver","message":"EmailController {/email-templates}:"}
{"timestamp":"2026-10-18T06:01:21.317Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates/test, POST} route"}
{"timestamp":"2026-10-18T06:01:21.317Z","level":"log","context":"RoutesResolver","message":"EmployeeController {/employees}:"}
{"timestamp":"2026-10-18T06:01:21.317Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees, POST} route"}
{"timestamp":"2026-10-18T06:01:21.317Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees, GET} route"}
{"timestamp":"2026-10-18T06:01:21.317Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees/export, GET} route"}
{"timestamp":"2026-10-18T06:01:21.318Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees/risk-stats, GET} route"}
{"timestamp":"2026-10-18T06:01:21.318Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees/:id, GET} route"}
{"timestamp":"2026-10-18T06:01:21.318Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees/:id, PUT} route"}
{"timestamp":"2026-10-18T06:01:21.318Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees/:id, DELETE} route"}
{"timestamp":"2026-10-18T06:01:21.318Z","level":"log","context":"RoutesResolver","message":"GroupController {/groups}:"}
{"timestamp":"2026-10-18T06:01:21.318Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups, POST} route"}
{"timestamp":"2026-10-18T06:01:21.319Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups, GET} route"}
{"timestamp":"2026-10-18T06:01:21.319Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups/standard, GET} route"}
{"timestamp":"2026-10-18T06:01:21.319Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups/:id, GET} route"}
{"timestamp":"2026-10-18T06:01:21.319Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups/:id, PUT} route"}
{"timestamp":"2026-10-18T06:01:21.319Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups/:id, DELETE} route"}
{"timestamp":"2026-10-18T06:01:21.319Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups/:id/info, GET} route"}
{"timestamp":"2026-10-18T06:01:21.320Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups/:id/with-employees, GET} route"}
{"timestamp":"2026-10-18T06:01:21.320Z","level":"log","context":"RoutesResolver","message":"SenderProfileController {/sender-profiles}:"}
{"timestamp":"2026-10-18T06:01:21.320Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles, GET} route"}
{"timestamp":"2026-10-18T06:01:21.320Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles/:id, GET} route"}
{"timestamp":"2026-10-18T06:01:21.320Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles, POST} route"}
{"timestamp":"2026-10-18T06:01:21.320Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles/:id, PUT} route"}
{"timestamp":"2026-10-18T06:01:21.320Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles/:id, DELETE} route"}
{"timestamp":"2026-10-18T06:01:21.321Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles/:id/verify-domain, POST} route"}
{"timestamp":"2026-10-18T06:01:21.321Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles/domain-verification, GET} route"}
{"timestamp":"2026-10-18T06:01:21.321Z","level":"log","context":"RoutesResolver","message":"EmailTemplateController {/email-templates}:"}
{"timestamp":"2026-10-18T06:01:21.321Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates, GET} route"}
{"timestamp":"2026-10-18T06:01:21.321Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates/:id, GET} route"}
{"timestamp":"2026-10-18T06:01:21.321Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates, POST} route"}
{"timestamp":"2026-10-18T06:01:21.322Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates/:id, PUT} route"}
{"timestamp":"2026-10-18T06:01:21.322Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates/:id, DELETE} route"}
{"timestamp":"2026-10-18T06:01:21.322Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates/:id/duplicate, POST} route"}
{"timestamp":"2026-10-18T06:01:21.322Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates/:id/preview, GET} route"}
{"timestamp":"2026-10-18T06:01:21.322Z","level":"log","context":"RoutesResolver","message":"ScenarioController {/scenarios}:"}
{"timestamp":"2026-10-18T06:01:21.322Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios, POST} route"}
{"timestamp":"2026-10-18T06:01:21.323Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios/generate-content, POST} route"}
{"timestamp":"2026-10-18T06:01:21.323Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios, GET} route"}
{"timestamp":"2026-10-18T06:01:21.323Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios/:id, GET} route"}
{"timestamp":"2026-10-18T06:01:21.323Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios/:id, PUT} route"}
{"timestamp":"2026-10-18T06:01:21.323Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios/:id, DELETE} route"}
{"timestamp":"2026-10-18T06:01:21.323Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios/generate-from-json, POST} route"}
{"timestamp":"2026-10-18T06:01:21.324Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios/:id/save-as-custom-scenario, POST} route"}
{"timestamp":"2026-10-18T06:01:21.324Z","level":"log","context":"RoutesResolver","message":"CampaignController {/campaigns}:"}
{"timestamp":"2026-10-18T06:01:21.324Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns, POST} route"}
{"timestamp":"2026-10-18T06:01:21.324Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns, GET} route"}
{"timestamp":"2026-10-18T06:01:21.324Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id, GET} route"}
{"timestamp":"2026-10-18T06:01:21.324Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id/details, GET} route"}
{"timestamp":"2026-10-18T06:01:21.325Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id/employees, GET} route"}
{"timestamp":"2026-10-18T06:01:21.325Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id, PATCH} route"}
{"timestamp":"2026-10-18T06:01:21.325Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id/start, POST} route"}
{"timestamp":"2026-10-18T06:01:21.325Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id/stop, POST} route"}
{"timestamp":"2026-10-18T06:01:21.325Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id/duplicate, POST} route"}
{"timestamp":"2026-10-18T06:01:21.325Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id, DELETE} route"}
{"timestamp":"2026-10-18T06:01:21.326Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/auto-generate-program, POST} route"}
{"timestamp":"2026-10-18T06:01:21.326Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/generate-from-threat-intelligence, POST} route"}
{"timestamp":"2026-10-18T06:01:21.326Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id/risk-score, GET} route"}
{"timestamp":"2026-10-18T06:01:21.326Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/recalculate-risk-scores, POST} route"}
{"timestamp":"2026-10-18T06:01:21.326Z","level":"log","context":"RoutesResolver","message":"CampaignController {/api/campaigns}:"}
{"timestamp":"2026-10-18T06:01:21.326Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns, POST} route"}
{"timestamp":"2026-10-18T06:01:21.327Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns, GET} route"}
{"timestamp":"2026-10-18T06:01:21.327Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id, GET} route"}
{"timestamp":"2026-10-18T06:01:21.327Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id/details, GET} route"}
{"timestamp":"2026-10-18T06:01:21.327Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id/employees, GET} route"}
{"timestamp":"2026-10-18T06:01:21.327Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id, PATCH} route"}
{"timestamp":"2026-10-18T06:01:21.327Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id/start, POST} route"}
{"timestamp":"2026-10-18T06:01:21.328Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id/stop, POST} route"}
{"timestamp":"2026-10-18T06:01:21.328Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id/duplicate, POST} route"}
{"timestamp":"2026-10-18T06:01:21.328Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id, DELETE} route"}
{"timestamp":"2026-10-18T06:01:21.328Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/auto-generate-program, POST} route"}
{"timestamp":"2026-10-18T06:01:21.328Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/generate-from-threat-intelligence, POST} route"}
{"timestamp":"2026-10-18T06:01:21.328Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id/risk-score, GET} route"}
{"timestamp":"2026-10-18T06:01:21.328Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/recalculate-risk-scores, POST} route"}
{"timestamp":"2026-10-18T06:01:21.329Z","level":"log","context":"RoutesResolver","message":"NotificationsController {/notifications}:"}
{"timestamp":"2026-10-18T06:01:21.329Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications, POST} route"}
{"timestamp":"2026-10-18T06:01:21.329Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications, GET} route"}
{"timestamp":"2026-10-18T06:01:21.329Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/unread, GET} route"}
{"timestamp":"2026-10-18T06:01:21.329Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/unread-count, GET} route"}
{"timestamp":"2026-10-18T06:01:21.329Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/:id, GET} route"}
{"timestamp":"2026-10-18T06:01:21.330Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/:id, PATCH} route"}
{"timestamp":"2026-10-18T06:01:21.330Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/:id/read, PATCH} route"}
{"timestamp":"2026-10-18T06:01:21.330Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/mark-all-read, PATCH} route"}
{"timestamp":"2026-10-18T06:01:21.330Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/:id, DELETE} route"}
{"timestamp":"2026-10-18T06:01:21.331Z","level":"log","context":"RoutesResolver","message":"LandingPageController {/lp}:"}
{"timestamp":"2026-10-18T06:01:21.331Z","level":"log","context":"RouterExplorer","message":"Mapped {/lp/image, GET} route"}
{"timestamp":"2026-10-18T06:01:21.331Z","level":"log","context":"RouterExplorer","message":"Mapped {/lp/learning, GET} route"}
{"timestamp":"2026-10-18T06:01:21.331Z","level":"log","context":"RouterExplorer","message":"Mapped {/lp/submit, POST} route"}
{"timestamp":"2026-10-18T06:01:21.331Z","level":"log","context":"RouterExplorer","message":"Mapped {/lp/test, GET} route"}
{"timestamp":"2026-10-18T06:01:21.331Z","level":"warn","context":"LegacyRouteConverter","message":"Unsupported route path: \"/lp/*\". In previous versions, the symbols ?, *, and + were used to denote optional or repeating path parameters. The latest version of \"path-to-regexp\" now requires the use of named parameters. For example, instead of using a route like /users/* to capture all routes starting with \"/users\", you should use /users/*path. For more details, refer to the migration guide. Attempting to auto-convert..."}
{"timestamp":"2026-10-18T06:01:21.332Z","level":"log","context":"RouterExplorer","message":"Mapped {/lp/*, ALL} route"}
{"timestamp":"2026-10-18T06:01:21.332Z","level":"log","context":"RoutesResolver","message":"SupportController {/support}:"}
{"timestamp":"2026-10-18T06:01:21.332Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets, POST} route"}
{"timestamp":"2026-10-18T06:01:21.333Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets, GET} route"}
{"timestamp":"2026-10-18T06:01:21.333Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets/:id, GET} route"}
{"timestamp":"2026-10-18T06:01:21.333Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets/:id, PATCH} route"}
{"timestamp":"2026-10-18T06:01:21.333Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets/:id, DELETE} route"}
{"timestamp":"2026-10-18T06:01:21.333Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets/:id/messages, POST} route"}
{"timestamp":"2026-10-18T06:01:21.333Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets/:id/close, POST} route"}
{"timestamp":"2026-10-18T06:01:21.334Z","level":"log","context":"RoutesResolver","message":"BusninessMetricsController {/business-metrics}:"}
{"timestamp":"2026-10-18T06:01:21.334Z","level":"log","context":"RouterExplorer","message":"Mapped {/business-metrics, GET} route"}
{"timestamp":"2026-10-18T06:01:21.334Z","level":"log","context":"RoutesResolver","message":"UsersController {/users}:"}
{"timestamp":"2026-10-18T06:01:21.334Z","level":"log","context":"RouterExplorer","message":"Mapped {/users/:id, PUT} route"}
{"timestamp":"2026-10-18T06:01:21.334Z","level":"log","context":"RouterExplorer","message":"Mapped {/users/settings, GET} route"}
{"timestamp":"2026-10-18T06:01:21.334Z","level":"log","context":"RouterExplorer","message":"Mapped {/users/settings/general, PUT} route"}
{"timestamp":"2026-10-18T06:01:21.335Z","level":"log","context":"RouterExplorer","message":"Mapped {/users/company/settings, PUT} route"}
{"timestamp":"2026-10-18T06:01:21.335Z","level":"log","context":"RouterExplorer","message":"Mapped {/users/change-password, POST} route"}
{"timestamp":"2026-10-18T06:01:21.335Z","level":"log","context":"RouterExplorer","message":"Mapped {/users/localization/settings, PUT} route"}
{"timestamp":"2026-10-18T06:01:21.335Z","level":"log","context":"RoutesResolver","message":"PartnerController {/partner}:"}
{"timestamp":"2026-10-18T06:01:21.335Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses, POST} route"}
{"timestamp":"2026-10-18T06:01:21.335Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses, GET} route"}
{"timestamp":"2026-10-18T06:01:21.336Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses/:id, GET} route"}
{"timestamp":"2026-10-18T06:01:21.336Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses/:id, PUT} route"}
{"timestamp":"2026-10-18T06:01:21.336Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses/:id, DELETE} route"}
{"timestamp":"2026-10-18T06:01:21.336Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses/:id/impersonate, POST} route"}
{"timestamp":"2026-10-18T06:01:21.336Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses/stop-impersonation, POST} route"}
{"timestamp":"2026-10-18T06:01:21.336Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/license-usage, GET} route"}
{"timestamp":"2026-10-18T06:01:21.337Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/invoices, POST} route"}
{"timestamp":"2026-10-18T06:01:21.337Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/invoices, GET} route"}
{"timestamp":"2026-10-18T06:01:21.337Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/invoices/:id, GET} route"}
{"timestamp":"2026-10-18T06:01:21.337Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/invoices/:id, PUT} route"}
{"timestamp":"2026-10-18T06:01:21.337Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/invoices/:id, DELETE} route"}
{"timestamp":"2026-10-18T06:01:21.337Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/invoices/:id/mark-paid, PUT} route"}
{"timestamp":"2026-10-18T06:01:21.338Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/onboarding/generate-token, POST} route"}
{"timestamp":"2026-10-18T06:01:21.338Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/dashboard, GET} route"}
{"timestamp":"2026-10-18T06:01:21.338Z","level":"log","context":"RoutesResolver","message":"MspSubscriptionController {/partner/msp-subscriptions}:"}
{"timestamp":"2026-10-18T06:01:21.338Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/plans, POST} route"}
{"timestamp":"2026-10-18T06:01:21.338Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/plans, GET} route"}
{"timestamp":"2026-10-18T06:01:21.338Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/plans/:planId, GET} route"}
{"timestamp":"2026-10-18T06:01:21.339Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/plans/:planId, PUT} route"}
{"timestamp":"2026-10-18T06:01:21.339Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/plans/:planId, DELETE} route"}
{"timestamp":"2026-10-18T06:01:21.339Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/businesses/:businessId/subscription, POST} route"}
{"timestamp":"2026-10-18T06:01:21.339Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions, GET} route"}
{"timestamp":"2026-10-18T06:01:21.339Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/businesses/:businessId/subscription, GET} route"}
{"timestamp":"2026-10-18T06:01:21.339Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/businesses/:businessId/subscription, PUT} route"}
{"timestamp":"2026-10-18T06:01:21.340Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/businesses/:businessId/subscription, DELETE} route"}
{"timestamp":"2026-10-18T06:01:21.340Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/businesses/:businessId/subscription/limits, GET} route"}
{"timestamp":"2026-10-18T06:01:21.340Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/businesses/:businessId/subscription/change-plan, PUT} route"}
{"timestamp":"2026-10-18T06:01:21.340Z","level":"log","context":"RoutesResolver","message":"OnboardingController {/onboarding}:"}
{"timestamp":"2026-10-18T06:01:21.340Z","level":"log","context":"RouterExplorer","message":"Mapped {/onboarding/validate/:token, GET} route"}
{"timestamp":"2026-10-18T06:01:21.340Z","level":"log","context":"RouterExplorer","message":"Mapped {/onboarding/complete/:token, POST} route"}
{"timestamp":"2026-10-18T06:01:21.340Z","level":"log","context":"RoutesResolver","message":"ResellerController {/reseller}:"}
{"timestamp":"2026-10-18T06:01:21.341Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/businesses, POST} route"}
{"timestamp":"2026-10-18T06:01:21.341Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/businesses, GET} route"}
{"timestamp":"2026-10-18T06:01:21.341Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/businesses/:id, GET} route"}
{"timestamp":"2026-10-18T06:01:21.341Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/businesses/:id, PUT} route"}
{"timestamp":"2026-10-18T06:01:21.341Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/businesses/:id, DELETE} route"}
{"timestamp":"2026-10-18T06:01:21.342Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/license-usage, GET} route"}
{"timestamp":"2026-10-18T06:01:21.342Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/invoices, POST} route"}
{"timestamp":"2026-10-18T06:01:21.342Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/invoices, GET} route"}
{"timestamp":"2026-10-18T06:01:21.342Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/invoices/:id, GET} route"}
{"timestamp":"2026-10-18T06:01:21.342Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/invoices/:id, PUT} route"}
{"timestamp":"2026-10-18T06:01:21.342Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/invoices/:id, DELETE} route"}
{"timestamp":"2026-10-18T06:01:21.343Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/invoices/:id/mark-paid, PUT} route"}
{"timestamp":"2026-10-18T06:01:21.343Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/onboarding/generate-token, POST} route"}
{"timestamp":"2026-10-18T06:01:21.343Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/dashboard, GET} route"}
{"timestamp":"2026-10-18T06:01:21.343Z","level":"log","context":"RoutesResolver","message":"ResellerSubscriptionController {/reseller}:"}
{"timestamp":"2026-10-18T06:01:21.343Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/plans, POST} route"}
{"timestamp":"2026-10-18T06:01:21.343Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/plans, GET} route"}
{"timestamp":"2026-10-18T06:01:21.343Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/plans/:planId, GET} route"}
{"timestamp":"2026-10-18T06:01:21.344Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/plans/:planId, PUT} route"}
{"timestamp":"2026-10-18T06:01:21.344Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/plans/:planId, DELETE} route"}
{"timestamp":"2026-10-18T06:01:21.344Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/subscriptions/businesses/:businessId/subscription, POST} route"}
{"timestamp":"2026-10-18T06:01:21.344Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/subscriptions, GET} route"}
{"timestamp":"2026-10-18T06:01:21.344Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/subscriptions/businesses/:businessId/subscription, GET} route"}
{"timestamp":"2026-10-18T06:01:21.344Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/subscriptions/businesses/:businessId/subscription, PUT} route"}
{"timestamp":"2026-10-18T06:01:21.345Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/subscriptions/businesses/:businessId/subscription, DELETE} route"}
{"timestamp":"2026-10-18T06:01:21.345Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/subscriptions/businesses/:businessId/subscription/limits, GET} route"}
{"timestamp":"2026-10-18T06:01:21.345Z","level":"log","context":"RoutesResolver","message":"HealthController {/health}:"}
{"timestamp":"2026-10-18T06:01:21.345Z","level":"log","context":"RouterExplorer","message":"Mapped {/health, GET} route"}
{"timestamp":"2026-10-18T06:01:21.345Z","level":"log","context":"RouterExplorer","message":"Mapped {/health/test-logs, GET} route"}
{"timestamp":"2026-10-18T06:01:21.345Z","level":"log","context":"RoutesResolver","message":"AzureAdController {/azure-ad}:"}
{"timestamp":"2026-10-18T06:01:21.345Z","level":"log","context":"RouterExplorer","message":"Mapped {/azure-ad/config, POST} route"}
{"timestamp":"2026-10-18T06:01:21.346Z","level":"log","context":"RouterExplorer","message":"Mapped {/azure-ad/config, GET} route"}
{"timestamp":"2026-10-18T06:01:21.346Z","level":"log","context":"RouterExplorer","message":"Mapped {/azure-ad/test-connection, POST} route"}
{"timestamp":"2026-10-18T06:01:21.346Z","level":"log","context":"RouterExplorer","message":"Mapped {/azure-ad/sync, POST} route"}
{"timestamp":"2026-10-18T06:01:21.346Z","level":"log","context":"RoutesResolver","message":"ThreatsController {/threats}:"}
{"timestamp":"2026-10-18T06:01:21.346Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats, POST} route"}
{"timestamp":"2026-10-18T06:01:21.346Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats, GET} route"}
{"timestamp":"2026-10-18T06:01:21.347Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/chart-data, GET} route"}
{"timestamp":"2026-10-18T06:01:21.347Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/claude-search, POST} route"}
{"timestamp":"2026-10-18T06:01:21.347Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/claude-latest, POST} route"}
{"timestamp":"2026-10-18T06:01:21.347Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/claude-trending, POST} route"}
{"timestamp":"2026-10-18T06:01:21.347Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/claude-categories, POST} route"}
{"timestamp":"2026-10-18T06:01:21.347Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/claude-manual-search, POST} route"}
{"timestamp":"2026-10-18T06:01:21.348Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/claude-quick-search, POST} route"}
{"timestamp":"2026-10-18T06:01:21.348Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/scheduler-status, GET} route"}
{"timestamp":"2026-10-18T06:01:21.348Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/health-check, GET} route"}
{"timestamp":"2026-10-18T06:01:21.348Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/pause-scheduler, POST} route"}
{"timestamp":"2026-10-18T06:01:21.348Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/:id, GET} route"}
{"timestamp":"2026-10-18T06:01:21.348Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/:id, PATCH} route"}
{"timestamp":"2026-10-18T06:01:21.348Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/:id, DELETE} route"}
{"timestamp":"2026-10-18T06:01:21.349Z","level":"log","context":"RoutesResolver","message":"DomainController {/domains}:"}
{"timestamp":"2026-10-18T06:01:21.349Z","level":"log","context":"RouterExplorer","message":"Mapped {/domains, GET} route"}
{"timestamp":"2026-10-18T06:01:21.349Z","level":"log","context":"RouterExplorer","message":"Mapped {/domains/:id, GET} route"}
{"timestamp":"2026-10-18T06:01:21.349Z","level":"log","context":"RouterExplorer","message":"Mapped {/domains, POST} route"}
{"timestamp":"2026-10-18T06:01:21.349Z","level":"log","context":"RouterExplorer","message":"Mapped {/domains/:id, PUT} route"}
{"timestamp":"2026-10-18T06:01:21.349Z","level":"log","context":"RouterExplorer","message":"Mapped {/domains/:id, DELETE} route"}
{"timestamp":"2026-10-18T06:01:21.350Z","level":"log","context":"RouterExplorer","message":"Mapped {/domains/seed, POST} route"}
{"timestamp":"2026-10-18T06:01:21.350Z","level":"log","context":"RoutesResolver","message":"MspSubscriptionController {/msp-subscription}:"}
{"timestamp":"2026-10-18T06:01:21.350Z","level":"log","context":"RouterExplorer","message":"Mapped {/msp-subscription/current, GET} route"}
{"timestamp":"2026-10-18T06:01:21.350Z","level":"log","context":"RouterExplorer","message":"Mapped {/msp-subscription/invoices, GET} route"}
{"timestamp":"2026-10-18T06:01:21.350Z","level":"log","context":"RouterExplorer","message":"Mapped {/msp-subscription/invoice/:invoiceId/pdf, GET} route"}
{"timestamp":"2026-10-18T06:01:21.350Z","level":"log","context":"RoutesResolver","message":"MspSubscriptionController {/api/msp-subscription}:"}
{"timestamp":"2026-10-18T06:01:21.350Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/msp-subscription/current, GET} route"}
{"timestamp":"2026-10-18T06:01:21.351Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/msp-subscription/invoices, GET} route"}
{"timestamp":"2026-10-18T06:01:21.351Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/msp-subscription/invoice/:invoiceId/pdf, GET} route"}
{"timestamp":"2026-10-18T06:01:21.412Z","level":"log","context":"NestApplication","message":"Nest application successfully started"}
{"timestamp":"2026-10-18T06:01:21.425Z","level":"log","context":"Bootstrap","message":"Users API successfully started on port 3842"}
{"timestamp":"2026-10-18T06:01:21.425Z","level":"log","context":"SeedService","message":"🌱 Starting database seeding..."}
{"timestamp":"2026-10-18T06:01:21.431Z","level":"log","context":"SeedService","message":"Admin account already exists, skipping seed"}
{"timestamp":"2026-10-18T06:01:21.433Z","level":"log","context":"SeedService","message":"Reseller account already exists, skipping seed"}
{"timestamp":"2026-10-18T06:01:21.434Z","level":"log","context":"SeedService","message":"MSP account already exists, skipping seed"}
{"timestamp":"2026-10-18T06:01:21.434Z","level":"log","context":"SeedService","message":"✅ Database seeding completed successfully"}
{"timestamp":"2026-10-18T07:35:58.782Z","level":"warn","context":"LegacyRouteConverter","message":"Unsupported route path: \"/lp/*\". In previous versions, the symbols ?, *, and + were used to denote optional or repeating path parameters. The latest version of \"path-to-regexp\" now requires the use of named parameters. For example, instead of using a route like /users/* to capture all routes starting with \"/users\", you should use /users/*path. For more details, refer to the migration guide. Attempting to auto-convert..."}
{"timestamp":"2026-10-18T07:35:58.828Z","level":"log","context":"Bootstrap","message":"Starting Users API on port 3842..."}
{"timestamp":"2026-10-18T07:35:58.831Z","level":"log","context":"RoutesResolver","message":"UsersApiController {/}:"}
{"timestamp":"2026-10-18T07:35:58.835Z","level":"log","context":"RouterExplorer","message":"Mapped {/, GET} route"}
{"timestamp":"2026-10-18T07:35:58.835Z","level":"log","context":"RoutesResolver","message":"AuthController {/auth}:"}
{"timestamp":"2026-10-18T07:35:58.836Z","level":"log","context":"RouterExplorer","message":"Mapped {/auth/login, POST} route"}
{"timestamp":"2026-10-18T07:35:58.836Z","level":"log","context":"RouterExplorer","message":"Mapped {/auth/admin/login, POST} route"}
{"timestamp":"2026-10-18T07:35:58.837Z","level":"log","context":"RouterExplorer","message":"Mapped {/auth/send-otp, POST} route"}
{"timestamp":"2026-10-18T07:35:58.837Z","level":"log","context":"RouterExplorer","message":"Mapped {/auth/verify-otp, POST} route"}
{"timestamp":"2026-10-18T07:35:58.837Z","level":"log","context":"RouterExplorer","message":"Mapped {/auth/signup, POST} route"}
{"timestamp":"2026-10-18T07:35:58.838Z","level":"log","context":"RouterExplorer","message":"Mapped {/auth/subscription-status, GET} route"}
{"timestamp":"2026-10-18T07:35:58.838Z","level":"log","context":"RoutesResolver","message":"AdminMspController {/admin/msp}:"}
{"timestamp":"2026-10-18T07:35:58.839Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/msp, GET} route"}
{"timestamp":"2026-10-18T07:35:58.839Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/msp/:id, GET} route"}
{"timestamp":"2026-10-18T07:35:58.840Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/msp, POST} route"}
{"timestamp":"2026-10-18T07:35:58.840Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/msp/:id, PUT} route"}
{"timestamp":"2026-10-18T07:35:58.840Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/msp/:id, DELETE} route"}
{"timestamp":"2026-10-18T07:35:58.841Z","level":"log","context":"RoutesResolver","message":"AdminLicenseController {/admin/licenses}:"}
{"timestamp":"2026-10-18T07:35:58.841Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/licenses/summary, GET} route"}
{"timestamp":"2026-10-18T07:35:58.841Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/licenses/msp/:mspId, GET} route"}
{"timestamp":"2026-10-18T07:35:58.841Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/licenses/msp/:mspId, PUT} route"}
{"timestamp":"2026-10-18T07:35:58.841Z","level":"log","context":"RoutesResolver","message":"AdminImpersonationController {/admin/impersonation}:"}
{"timestamp":"2026-10-18T07:35:58.842Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/impersonation/msp-users, GET} route"}
{"timestamp":"2026-10-18T07:35:58.842Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/impersonation/impersonate, POST} route"}
{"timestamp":"2026-10-18T07:35:58.844Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/impersonation/stop, POST} route"}
{"timestamp":"2026-10-18T07:35:58.845Z","level":"log","context":"RoutesResolver","message":"AdminAiUsageController {/admin/ai-usage}:"}
{"timestamp":"2026-10-18T07:35:58.845Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-usage, GET} route"}
{"timestamp":"2026-10-18T07:35:58.845Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-usage/business/:businessId, GET} route"}
{"timestamp":"2026-10-18T07:35:58.845Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-usage/report/monthly, GET} route"}
{"timestamp":"2026-10-18T07:35:58.846Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-usage/pricing, GET} route"}
{"timestamp":"2026-10-18T07:35:58.846Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-usage/pricing, POST} route"}
{"timestamp":"2026-10-18T07:35:58.846Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-usage/credit/:businessId, PUT} route"}
{"timestamp":"2026-10-18T07:35:58.846Z","level":"log","context":"RoutesResolver","message":"AdminAiUsageController {/api/admin/ai-usage}:"}
{"timestamp":"2026-10-18T07:35:58.847Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-usage, GET} route"}
{"timestamp":"2026-10-18T07:35:58.847Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-usage/business/:businessId, GET} route"}
{"timestamp":"2026-10-18T07:35:58.847Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-usage/report/monthly, GET} route"}
{"timestamp":"2026-10-18T07:35:58.847Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-usage/pricing, GET} route"}
{"timestamp":"2026-10-18T07:35:58.848Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-usage/pricing, POST} route"}
{"timestamp":"2026-10-18T07:35:58.848Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-usage/credit/:businessId, PUT} route"}
{"timestamp":"2026-10-18T07:35:58.848Z","level":"log","context":"RoutesResolver","message":"AdminAiModelController {/admin/ai-models}:"}
{"timestamp":"2026-10-18T07:35:58.848Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models, POST} route"}
{"timestamp":"2026-10-18T07:35:58.849Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models, GET} route"}
{"timestamp":"2026-10-18T07:35:58.849Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/default, GET} route"}
{"timestamp":"2026-10-18T07:35:58.849Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/:id, GET} route"}
{"timestamp":"2026-10-18T07:35:58.849Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/:id, PUT} route"}
{"timestamp":"2026-10-18T07:35:58.850Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/:id, DELETE} route"}
{"timestamp":"2026-10-18T07:35:58.850Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/:id/set-default, POST} route"}
{"timestamp":"2026-10-18T07:35:58.850Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/assign-to-business, POST} route"}
{"timestamp":"2026-10-18T07:35:58.851Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/business/:businessId, GET} route"}
{"timestamp":"2026-10-18T07:35:58.851Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/:id/businesses, GET} route"}
{"timestamp":"2026-10-18T07:35:58.851Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/initialize-defaults, POST} route"}
{"timestamp":"2026-10-18T07:35:58.851Z","level":"log","context":"RoutesResolver","message":"AdminAiModelController {/api/admin/ai-models}:"}
{"timestamp":"2026-10-18T07:35:58.852Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models, POST} route"}
{"timestamp":"2026-10-18T07:35:58.852Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models, GET} route"}
{"timestamp":"2026-10-18T07:35:58.852Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/default, GET} route"}
{"timestamp":"2026-10-18T07:35:58.852Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/:id, GET} route"}
{"timestamp":"2026-10-18T07:35:58.853Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/:id, PUT} route"}
{"timestamp":"2026-10-18T07:35:58.853Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/:id, DELETE} route"}
{"timestamp":"2026-10-18T07:35:58.853Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/:id/set-default, POST} route"}
{"timestamp":"2026-10-18T07:35:58.853Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/assign-to-business, POST} route"}
{"timestamp":"2026-10-18T07:35:58.854Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/business/:businessId, GET} route"}
{"timestamp":"2026-10-18T07:35:58.854Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/:id/businesses, GET} route"}
{"timestamp":"2026-10-18T07:35:58.854Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/initialize-defaults, POST} route"}
{"timestamp":"2026-10-18T07:35:58.854Z","level":"log","context":"RoutesResolver","message":"AdminBusinessController {/admin/businesses}:"}
{"timestamp":"2026-10-18T07:35:58.854Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/businesses, GET} route"}
{"timestamp":"2026-10-18T07:35:58.854Z","level":"log","context":"RoutesResolver","message":"ResellerManagementController {/admin/resellers}:"}
{"timestamp":"2026-10-18T07:35:58.854Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/resellers, GET} route"}
{"timestamp":"2026-10-18T07:35:58.855Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/resellers/create-default, POST} route"}
{"timestamp":"2026-10-18T07:35:58.855Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/resellers, POST} route"}
{"timestamp":"2026-10-18T07:35:58.855Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/resellers/:id/toggle-status, PUT} route"}
{"timestamp":"2026-10-18T07:35:58.855Z","level":"log","context":"RoutesResolver","message":"SubscriptionController {/subscription}:"}
{"timestamp":"2026-10-18T07:35:58.855Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/plans, GET} route"}
{"timestamp":"2026-10-18T07:35:58.855Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/calculate-price, POST} route"}
{"timestamp":"2026-10-18T07:35:58.856Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/current, GET} route"}
{"timestamp":"2026-10-18T07:35:58.856Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/create, POST} route"}
{"timestamp":"2026-10-18T07:35:58.856Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/:id, PUT} route"}
{"timestamp":"2026-10-18T07:35:58.856Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/:id/cancel, DELETE} route"}
{"timestamp":"2026-10-18T07:35:58.856Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/sync/:stripeSubscriptionId, POST} route"}
{"timestamp":"2026-10-18T07:35:58.856Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/payments, GET} route"}
{"timestamp":"2026-10-18T07:35:58.857Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/payments/stats, GET} route"}
{"timestamp":"2026-10-18T07:35:58.857Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/payment/:id, GET} route"}
{"timestamp":"2026-10-18T07:35:58.857Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/payment-methods/attach, POST} route"}
{"timestamp":"2026-10-18T07:35:58.857Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/payment-methods/:paymentMethodId, DELETE} route"}
{"timestamp":"2026-10-18T07:35:58.857Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/payment-methods, GET} route"}
{"timestamp":"2026-10-18T07:35:58.857Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/setup-intent, POST} route"}
{"timestamp":"2026-10-18T07:35:58.857Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/update-employee-count, POST} route"}
{"timestamp":"2026-10-18T07:35:58.858Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/retry-payment/:subscriptionId, POST} route"}
{"timestamp":"2026-10-18T07:35:58.858Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/invoice/:invoiceId/pdf, GET} route"}
{"timestamp":"2026-10-18T07:35:58.858Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/preview-upgrade, POST} route"}
{"timestamp":"2026-10-18T07:35:58.858Z","level":"log","context":"RoutesResolver","message":"SubscriptionController {/api/subscription}:"}
{"timestamp":"2026-10-18T07:35:58.858Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/plans, GET} route"}
{"timestamp":"2026-10-18T07:35:58.858Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/calculate-price, POST} route"}
{"timestamp":"2026-10-18T07:35:58.858Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/current, GET} route"}
{"timestamp":"2026-10-18T07:35:58.859Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/create, POST} route"}
{"timestamp":"2026-10-18T07:35:58.859Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/:id, PUT} route"}
{"timestamp":"2026-10-18T07:35:58.859Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/:id/cancel, DELETE} route"}
{"timestamp":"2026-10-18T07:35:58.859Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/sync/:stripeSubscriptionId, POST} route"}
{"timestamp":"2026-10-18T07:35:58.859Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/payments, GET} route"}
{"timestamp":"2026-10-18T07:35:58.859Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/payments/stats, GET} route"}
{"timestamp":"2026-10-18T07:35:58.859Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/payment/:id, GET} route"}
{"timestamp":"2026-10-18T07:35:58.860Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/payment-methods/attach, POST} route"}
{"timestamp":"2026-10-18T07:35:58.860Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/payment-methods/:paymentMethodId, DELETE} route"}
{"timestamp":"2026-10-18T07:35:58.860Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/payment-methods, GET} route"}
{"timestamp":"2026-10-18T07:35:58.860Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/setup-intent, POST} route"}
{"timestamp":"2026-10-18T07:35:58.860Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/update-employee-count, POST} route"}
{"timestamp":"2026-10-18T07:35:58.860Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/retry-payment/:subscriptionId, POST} route"}
{"timestamp":"2026-10-18T07:35:58.860Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/invoice/:invoiceId/pdf, GET} route"}
{"timestamp":"2026-10-18T07:35:58.861Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/preview-upgrade, POST} route"}
{"timestamp":"2026-10-18T07:35:58.861Z","level":"log","context":"RoutesResolver","message":"StripeWebhookController {/stripe/webhook}:"}
{"timestamp":"2026-10-18T07:35:58.861Z","level":"log","context":"RouterExplorer","message":"Mapped {/stripe/webhook/test, GET} route"}
{"timestamp":"2026-10-18T07:35:58.861Z","level":"log","context":"RouterExplorer","message":"Mapped {/stripe/webhook, POST} route"}
{"timestamp":"2026-10-18T07:35:58.861Z","level":"log","context":"RoutesResolver","message":"EmailController {/email-templates}:"}
{"timestamp":"2026-10-18T07:35:58.861Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates/test, POST} route"}
{"timestamp":"2026-10-18T07:35:58.861Z","level":"log","context":"RoutesResolver","message":"EmployeeController {/employees}:"}
{"timestamp":"2026-10-18T07:35:58.861Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees, POST} route"}
{"timestamp":"2026-10-18T07:35:58.862Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees, GET} route"}
{"timestamp":"2026-10-18T07:35:58.862Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees/export, GET} route"}
{"timestamp":"2026-10-18T07:35:58.862Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees/risk-stats, GET} route"}
{"timestamp":"2026-10-18T07:35:58.862Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees/:id, GET} route"}
{"timestamp":"2026-10-18T07:35:58.862Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees/:id, PUT} route"}
{"timestamp":"2026-10-18T07:35:58.862Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees/:id, DELETE} route"}
{"timestamp":"2026-10-18T07:35:58.862Z","level":"log","context":"RoutesResolver","message":"GroupController {/groups}:"}
{"timestamp":"2026-10-18T07:35:58.863Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups, POST} route"}
{"timestamp":"2026-10-18T07:35:58.863Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups, GET} route"}
{"timestamp":"2026-10-18T07:35:58.863Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups/standard, GET} route"}
{"timestamp":"2026-10-18T07:35:58.863Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups/:id, GET} route"}
{"timestamp":"2026-10-18T07:35:58.863Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups/:id, PUT} route"}
{"timestamp":"2026-10-18T07:35:58.863Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups/:id, DELETE} route"}
{"timestamp":"2026-10-18T07:35:58.863Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups/:id/info, GET} route"}
{"timestamp":"2026-10-18T07:35:58.864Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups/:id/with-employees, GET} route"}
{"timestamp":"2026-10-18T07:35:58.864Z","level":"log","context":"RoutesResolver","message":"SenderProfileController {/sender-profiles}:"}
{"timestamp":"2026-10-18T07:35:58.864Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles, GET} route"}
{"timestamp":"2026-10-18T07:35:58.864Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles/:id, GET} route"}
{"timestamp":"2026-10-18T07:35:58.864Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles, POST} route"}
{"timestamp":"2026-10-18T07:35:58.864Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles/:id, PUT} route"}
{"timestamp":"2026-10-18T07:35:58.864Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles/:id, DELETE} route"}
{"timestamp":"2026-10-18T07:35:58.865Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles/:id/verify-domain, POST} route"}
{"timestamp":"2026-10-18T07:35:58.865Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles/domain-verification, GET} route"}
{"timestamp":"2026-10-18T07:35:58.865Z","level":"log","context":"RoutesResolver","message":"EmailTemplateController {/email-templates}:"}
{"timestamp":"2026-10-18T07:35:58.865Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates, GET} route"}
{"timestamp":"2026-10-18T07:35:58.865Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates/:id, GET} route"}
{"timestamp":"2026-10-18T07:35:58.865Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates, POST} route"}
{"timestamp":"2026-10-18T07:35:58.865Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates/:id, PUT} route"}
{"timestamp":"2026-10-18T07:35:58.866Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates/:id, DELETE} route"}
{"timestamp":"2026-10-18T07:35:58.866Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates/:id/duplicate, POST} route"}
{"timestamp":"2026-10-18T07:35:58.866Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates/:id/preview, GET} route"}
{"timestamp":"2026-10-18T07:35:58.866Z","level":"log","context":"RoutesResolver","message":"ScenarioController {/scenarios}:"}
{"timestamp":"2026-10-18T07:35:58.866Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios, POST} route"}
{"timestamp":"2026-10-18T07:35:58.866Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios/generate-content, POST} route"}
{"timestamp":"2026-10-18T07:35:58.866Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios, GET} route"}
{"timestamp":"2026-10-18T07:35:58.867Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios/:id, GET} route"}
{"timestamp":"2026-10-18T07:35:58.867Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios/:id, PUT} route"}
{"timestamp":"2026-10-18T07:35:58.867Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios/:id, DELETE} route"}
{"timestamp":"2026-10-18T07:35:58.867Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios/generate-from-json, POST} route"}
{"timestamp":"2026-10-18T07:35:58.867Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios/:id/save-as-custom-scenario, POST} route"}
{"timestamp":"2026-10-18T07:35:58.867Z","level":"log","context":"RoutesResolver","message":"CampaignController {/campaigns}:"}
{"timestamp":"2026-10-18T07:35:58.867Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns, POST} route"}
{"timestamp":"2026-10-18T07:35:58.868Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns, GET} route"}
{"timestamp":"2026-10-18T07:35:58.868Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id, GET} route"}
{"timestamp":"2026-10-18T07:35:58.868Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id/details, GET} route"}
{"timestamp":"2026-10-18T07:35:58.868Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id/employees, GET} route"}
{"timestamp":"2026-10-18T07:35:58.868Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id, PATCH} route"}
{"timestamp":"2026-10-18T07:35:58.868Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id/start, POST} route"}
{"timestamp":"2026-10-18T07:35:58.869Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id/stop, POST} route"}
{"timestamp":"2026-10-18T07:35:58.869Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id/duplicate, POST} route"}
{"timestamp":"2026-10-18T07:35:58.869Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id, DELETE} route"}
{"timestamp":"2026-10-18T07:35:58.869Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/auto-generate-program, POST} route"}
{"timestamp":"2026-10-18T07:35:58.869Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/generate-from-threat-intelligence, POST} route"}
{"timestamp":"2026-10-18T07:35:58.869Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id/risk-score, GET} route"}
{"timestamp":"2026-10-18T07:35:58.869Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/recalculate-risk-scores, POST} route"}
{"timestamp":"2026-10-18T07:35:58.869Z","level":"log","context":"RoutesResolver","message":"CampaignController {/api/campaigns}:"}
{"timestamp":"2026-10-18T07:35:58.870Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns, POST} route"}
{"timestamp":"2026-10-18T07:35:58.870Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns, GET} route"}
{"timestamp":"2026-10-18T07:35:58.870Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id, GET} route"}
{"timestamp":"2026-10-18T07:35:58.870Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id/details, GET} route"}
{"timestamp":"2026-10-18T07:35:58.870Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id/employees, GET} route"}
{"timestamp":"2026-10-18T07:35:58.870Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id, PATCH} route"}
{"timestamp":"2026-10-18T07:35:58.870Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id/start, POST} route"}
{"timestamp":"2026-10-18T07:35:58.871Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id/stop, POST} route"}
{"timestamp":"2026-10-18T07:35:58.871Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id/duplicate, POST} route"}
{"timestamp":"2026-10-18T07:35:58.871Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id, DELETE} route"}
{"timestamp":"2026-10-18T07:35:58.871Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/auto-generate-program, POST} route"}
{"timestamp":"2026-10-18T07:35:58.871Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/generate-from-threat-intelligence, POST} route"}
{"timestamp":"2026-10-18T07:35:58.871Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id/risk-score, GET} route"}
{"timestamp":"2026-10-18T07:35:58.871Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/recalculate-risk-scores, POST} route"}
{"timestamp":"2026-10-18T07:35:58.871Z","level":"log","context":"RoutesResolver","message":"NotificationsController {/notifications}:"}
{"timestamp":"2026-10-18T07:35:58.872Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications, POST} route"}
{"timestamp":"2026-10-18T07:35:58.872Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications, GET} route"}
{"timestamp":"2026-10-18T07:35:58.872Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/unread, GET} route"}
{"timestamp":"2026-10-18T07:35:58.872Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/unread-count, GET} route"}
{"timestamp":"2026-10-18T07:35:58.872Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/:id, GET} route"}
{"timestamp":"2026-10-18T07:35:58.873Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/:id, PATCH} route"}
{"timestamp":"2026-10-18T07:35:58.873Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/:id/read, PATCH} route"}
{"timestamp":"2026-10-18T07:35:58.873Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/mark-all-read, PATCH} route"}
{"timestamp":"2026-10-18T07:35:58.873Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/:id, DELETE} route"}
{"timestamp":"2026-10-18T07:35:58.873Z","level":"log","context":"RoutesResolver","message":"LandingPageController {/lp}:"}
{"timestamp":"2026-10-18T07:35:58.874Z","level":"log","context":"RouterExplorer","message":"Mapped {/lp/image, GET} route"}
{"timestamp":"2026-10-18T07:35:58.874Z","level":"log","context":"RouterExplorer","message":"Mapped {/lp/learning, GET} route"}
{"timestamp":"2026-10-18T07:35:58.874Z","level":"log","context":"RouterExplorer","message":"Mapped {/lp/submit, POST} route"}
{"timestamp":"2026-10-18T07:35:58.874Z","level":"log","context":"RouterExplorer","message":"Mapped {/lp/test, GET} route"}
{"timestamp":"2026-10-18T07:35:58.874Z","level":"warn","context":"LegacyRouteConverter","message":"Unsupported route path: \"/lp/*\". In previous versions, the symbols ?, *, and + were used to denote optional or repeating path parameters. The latest version of \"path-to-regexp\" now requires the use of named parameters. For example, instead of using a route like /users/* to capture all routes starting with \"/users\", you should use /users/*path. For more details, refer to the migration guide. Attempting to auto-convert..."}
{"timestamp":"2026-10-18T07:35:58.875Z","level":"log","context":"RouterExplorer","message":"Mapped {/lp/*, ALL} route"}
{"timestamp":"2026-10-18T07:35:58.875Z","level":"log","context":"RoutesResolver","message":"SupportController {/support}:"}
{"timestamp":"2026-10-18T07:35:58.875Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets, POST} route"}
{"timestamp":"2026-10-18T07:35:58.875Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets, GET} route"}
{"timestamp":"2026-10-18T07:35:58.875Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets/:id, GET} route"}
{"timestamp":"2026-10-18T07:35:58.876Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets/:id, PATCH} route"}
{"timestamp":"2026-10-18T07:35:58.876Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets/:id, DELETE} route"}
{"timestamp":"2026-10-18T07:35:58.876Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets/:id/messages, POST} route"}
{"timestamp":"2026-10-18T07:35:58.876Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets/:id/close, POST} route"}
{"timestamp":"2026-10-18T07:35:58.876Z","level":"log","context":"RoutesResolver","message":"BusninessMetricsController {/business-metrics}:"}
{"timestamp":"2026-10-18T07:35:58.876Z","level":"log","context":"RouterExplorer","message":"Mapped {/business-metrics, GET} route"}
{"timestamp":"2026-10-18T07:35:58.876Z","level":"log","context":"RoutesResolver","message":"UsersController {/users}:"}
{"timestamp":"2026-10-18T07:35:58.877Z","level":"log","context":"RouterExplorer","message":"Mapped {/users/:id, PUT} route"}
{"timestamp":"2026-10-18T07:35:58.877Z","level":"log","context":"RouterExplorer","message":"Mapped {/users/settings, GET} route"}
{"timestamp":"2026-10-18T07:35:58.877Z","level":"log","context":"RouterExplorer","message":"Mapped {/users/settings/general, PUT} route"}
{"timestamp":"2026-10-18T07:35:58.877Z","level":"log","context":"RouterExplorer","message":"Mapped {/users/company/settings, PUT} route"}
{"timestamp":"2026-10-18T07:35:58.877Z","level":"log","context":"RouterExplorer","message":"Mapped {/users/change-password, POST} route"}
{"timestamp":"2026-10-18T07:35:58.877Z","level":"log","context":"RouterExplorer","message":"Mapped {/users/localization/settings, PUT} route"}
{"timestamp":"2026-10-18T07:35:58.877Z","level":"log","context":"RoutesResolver","message":"PartnerController {/partner}:"}
{"timestamp":"2026-10-18T07:35:58.878Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses, POST} route"}
{"timestamp":"2026-10-18T07:35:58.878Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses, GET} route"}
{"timestamp":"2026-10-18T07:35:58.878Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses/:id, GET} route"}
{"timestamp":"2026-10-18T07:35:58.878Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses/:id, PUT} route"}
{"timestamp":"2026-10-18T07:35:58.878Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses/:id, DELETE} route"}
{"timestamp":"2026-10-18T07:35:58.878Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses/:id/impersonate, POST} route"}
{"timestamp":"2026-10-18T07:35:58.879Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses/stop-impersonation, POST} route"}
{"timestamp":"2026-10-18T07:35:58.879Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/license-usage, GET} route"}
{"timestamp":"2026-10-18T07:35:58.879Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/invoices, POST} route"}
{"timestamp":"2026-10-18T07:35:58.879Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/invoices, GET} route"}
{"timestamp":"2026-10-18T07:35:58.879Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/invoices/:id, GET} route"}
{"timestamp":"2026-10-18T07:35:58.879Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/invoices/:id, PUT} route"}
{"timestamp":"2026-10-18T07:35:58.880Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/invoices/:id, DELETE} route"}
{"timestamp":"2026-10-18T07:35:58.880Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/invoices/:id/mark-paid, PUT} route"}
{"timestamp":"2026-10-18T07:35:58.880Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/onboarding/generate-token, POST} route"}
{"timestamp":"2026-10-18T07:35:58.880Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/dashboard, GET} route"}
{"timestamp":"2026-10-18T07:35:58.880Z","level":"log","context":"RoutesResolver","message":"MspSubscriptionController {/partner/msp-subscriptions}:"}
{"timestamp":"2026-10-18T07:35:58.880Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/plans, POST} route"}
{"timestamp":"2026-10-18T07:35:58.880Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/plans, GET} route"}
{"timestamp":"2026-10-18T07:35:58.881Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/plans/:planId, GET} route"}
{"timestamp":"2026-10-18T07:35:58.881Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/plans/:planId, PUT} route"}
{"timestamp":"2026-10-18T07:35:58.881Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/plans/:planId, DELETE} route"}
{"timestamp":"2026-10-18T07:35:58.881Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/businesses/:businessId/subscription, POST} route"}
{"timestamp":"2026-10-18T07:35:58.881Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions, GET} route"}
{"timestamp":"2026-10-18T07:35:58.881Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/businesses/:businessId/subscription, GET} route"}
{"timestamp":"2026-10-18T07:35:58.881Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/businesses/:businessId/subscription, PUT} route"}
{"timestamp":"2026-10-18T07:35:58.882Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/businesses/:businessId/subscription, DELETE} route"}
{"timestamp":"2026-10-18T07:35:58.882Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/businesses/:businessId/subscription/limits, GET} route"}
{"timestamp":"2026-10-18T07:35:58.882Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/businesses/:businessId/subscription/change-plan, PUT} route"}
{"timestamp":"2026-10-18T07:35:58.882Z","level":"log","context":"RoutesResolver","message":"OnboardingController {/onboarding}:"}
{"timestamp":"2026-10-18T07:35:58.882Z","level":"log","context":"RouterExplorer","message":"Mapped {/onboarding/validate/:token, GET} route"}
{"timestamp":"2026-10-18T07:35:58.882Z","level":"log","context":"RouterExplorer","message":"Mapped {/onboarding/complete/:token, POST} route"}
{"timestamp":"2026-10-18T07:35:58.882Z","level":"log","context":"RoutesResolver","message":"ResellerController {/reseller}:"}
{"timestamp":"2026-10-18T07:35:58.883Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/businesses, POST} route"}
{"timestamp":"2026-10-18T07:35:58.883Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/businesses, GET} route"}
{"timestamp":"2026-10-18T07:35:58.883Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/businesses/:id, GET} route"}
{"timestamp":"2026-10-18T07:35:58.883Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/businesses/:id, PUT} route"}
{"timestamp":"2026-10-18T07:35:58.883Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/businesses/:id, DELETE} route"}
{"timestamp":"2026-10-18T07:35:58.883Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/license-usage, GET} route"}
{"timestamp":"2026-10-18T07:35:58.884Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/invoices, POST} route"}
{"timestamp":"2026-10-18T07:35:58.884Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/invoices, GET} route"}
{"timestamp":"2026-10-18T07:35:58.884Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/invoices/:id, GET} route"}
{"timestamp":"2026-10-18T07:35:58.884Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/invoices/:id, PUT} route"}
{"timestamp":"2026-10-18T07:35:58.884Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/invoices/:id, DELETE} route"}
{"timestamp":"2026-10-18T07:35:58.884Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/invoices/:id/mark-paid, PUT} route"}
{"timestamp":"2026-10-18T07:35:58.884Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/onboarding/generate-token, POST} route"}
{"timestamp":"2026-10-18T07:35:58.885Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/dashboard, GET} route"}
{"timestamp":"2026-10-18T07:35:58.885Z","level":"log","context":"RoutesResolver","message":"ResellerSubscriptionController {/reseller}:"}
{"timestamp":"2026-10-18T07:35:58.885Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/plans, POST} route"}
{"timestamp":"2026-10-18T07:35:58.885Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/plans, GET} route"}
{"timestamp":"2026-10-18T07:35:58.885Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/plans/:planId, GET} route"}
{"timestamp":"2026-10-18T07:35:58.885Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/plans/:planId, PUT} route"}
{"timestamp":"2026-10-18T07:35:58.885Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/plans/:planId, DELETE} route"}
{"timestamp":"2026-10-18T07:35:58.885Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/subscriptions/businesses/:businessId/subscription, POST} route"}
{"timestamp":"2026-10-18T07:35:58.886Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/subscriptions, GET} route"}
{"timestamp":"2026-10-18T07:35:58.886Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/subscriptions/businesses/:businessId/subscription, GET} route"}
{"timestamp":"2026-10-18T07:35:58.886Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/subscriptions/businesses/:businessId/subscription, PUT} route"}
{"timestamp":"2026-10-18T07:35:58.886Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/subscriptions/businesses/:businessId/subscription, DELETE} route"}
{"timestamp":"2026-10-18T07:35:58.886Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/subscriptions/businesses/:businessId/subscription/limits, GET} route"}
{"timestamp":"2026-10-18T07:35:58.886Z","level":"log","context":"RoutesResolver","message":"HealthController {/health}:"}
{"timestamp":"2026-10-18T07:35:58.886Z","level":"log","context":"RouterExplorer","message":"Mapped {/health, GET} route"}
{"timestamp":"2026-10-18T07:35:58.887Z","level":"log","context":"RouterExplorer","message":"Mapped {/health/test-logs, GET} route"}
{"timestamp":"2026-10-18T07:35:58.887Z","level":"log","context":"RoutesResolver","message":"AzureAdController {/azure-ad}:"}
{"timestamp":"2026-10-18T07:35:58.887Z","level":"log","context":"RouterExplorer","message":"Mapped {/azure-ad/config, POST} route"}
{"timestamp":"2026-10-18T07:35:58.887Z","level":"log","context":"RouterExplorer","message":"Mapped {/azure-ad/config, GET} route"}
{"timestamp":"2026-10-18T07:35:58.887Z","level":"log","context":"RouterExplorer","message":"Mapped {/azure-ad/test-connection, POST} route"}
{"timestamp":"2026-10-18T07:35:58.887Z","level":"log","context":"RouterExplorer","message":"Mapped {/azure-ad/sync, POST} route"}
{"timestamp":"2026-10-18T07:35:58.887Z","level":"log","context":"RoutesResolver","message":"ThreatsController {/threats}:"}
{"timestamp":"2026-10-18T07:35:58.887Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats, POST} route"}
{"timestamp":"2026-10-18T07:35:58.888Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats, GET} route"}
{"timestamp":"2026-10-18T07:35:58.888Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/chart-data, GET} route"}
{"timestamp":"2026-10-18T07:35:58.888Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/claude-search, POST} route"}
{"timestamp":"2026-10-18T07:35:58.888Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/claude-latest, POST} route"}
{"timestamp":"2026-10-18T07:35:58.888Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/claude-trending, POST} route"}
{"timestamp":"2026-10-18T07:35:58.888Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/claude-categories, POST} route"}
{"timestamp":"2026-10-18T07:35:58.889Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/claude-manual-search, POST} route"}
{"timestamp":"2026-10-18T07:35:58.889Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/claude-quick-search, POST} route"}
{"timestamp":"2026-10-18T07:35:58.889Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/scheduler-status, GET} route"}
{"timestamp":"2026-10-18T07:35:58.889Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/health-check, GET} route"}
{"timestamp":"2026-10-18T07:35:58.889Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/pause-scheduler, POST} route"}
{"timestamp":"2026-10-18T07:35:58.889Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/:id, GET} route"}
{"timestamp":"2026-10-18T07:35:58.889Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/:id, PATCH} route"}
{"timestamp":"2026-10-18T07:35:58.889Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/:id, DELETE} route"}
{"timestamp":"2026-10-18T07:35:58.890Z","level":"log","context":"RoutesResolver","message":"DomainController {/domains}:"}
{"timestamp":"2026-10-18T07:35:58.890Z","level":"log","context":"RouterExplorer","message":"Mapped {/domains, GET} route"}
{"timestamp":"2026-10-18T07:35:58.890Z","level":"log","context":"RouterExplorer","message":"Mapped {/domains/:id, GET} route"}
{"timestamp":"2026-10-18T07:35:58.890Z","level":"log","context":"RouterExplorer","message":"Mapped {/domains, POST} route"}
{"timestamp":"2026-10-18T07:35:58.890Z","level":"log","context":"RouterExplorer","message":"Mapped {/domains/:id, PUT} route"}
{"timestamp":"2026-10-18T07:35:58.890Z","level":"log","context":"RouterExplorer","message":"Mapped {/domains/:id, DELETE} route"}
{"timestamp":"2026-10-18T07:35:58.890Z","level":"log","context":"RouterExplorer","message":"Mapped {/domains/seed, POST} route"}
{"timestamp":"2026-10-18T07:35:58.890Z","level":"log","context":"RoutesResolver","message":"MspSubscriptionController {/msp-subscription}:"}
{"timestamp":"2026-10-18T07:35:58.891Z","level":"log","context":"RouterExplorer","message":"Mapped {/msp-subscription/current, GET} route"}
{"timestamp":"2026-10-18T07:35:58.891Z","level":"log","context":"RouterExplorer","message":"Mapped {/msp-subscription/invoices, GET} route"}
{"timestamp":"2026-10-18T07:35:58.891Z","level":"log","context":"RouterExplorer","message":"Mapped {/msp-subscription/invoice/:invoiceId/pdf, GET} route"}
{"timestamp":"2026-10-18T07:35:58.891Z","level":"log","context":"RoutesResolver","message":"MspSubscriptionController {/api/msp-subscription}:"}
{"timestamp":"2026-10-18T07:35:58.891Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/msp-subscription/current, GET} route"}
{"timestamp":"2026-10-18T07:35:58.891Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/msp-subscription/invoices, GET} route"}
{"timestamp":"2026-10-18T07:35:58.891Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/msp-subscription/invoice/:invoiceId/pdf, GET} route"}
{"timestamp":"2026-10-18T07:35:58.963Z","level":"log","context":"NestApplication","message":"Nest application successfully started"}
{"timestamp":"2026-10-18T07:35:58.970Z","level":"log","context":"Bootstrap","message":"Users API successfully started on port 3842"}
{"timestamp":"2026-10-18T07:35:58.970Z","level":"log","context":"SeedService","message":"🌱 Starting database seeding..."}
{"timestamp":"2026-10-18T07:35:58.976Z","level":"log","context":"SeedService","message":"Admin account already exists, skipping seed"}
{"timestamp":"2026-10-18T07:35:58.978Z","level":"log","context":"SeedService","message":"Reseller account already exists, skipping seed"}
{"timestamp":"2026-10-18T07:35:58.980Z","level":"log","context":"SeedService","message":"MSP account already exists, skipping seed"}
{"timestamp":"2026-10-18T07:35:58.980Z","level":"log","context":"SeedService","message":"✅ Database seeding completed successfully"}
{"timestamp":"2026-10-18T07:51:40.148Z","level":"warn","context":"LegacyRouteConverter","message":"Unsupported route path: \"/lp/*\". In previous versions, the symbols ?, *, and + were used to denote optional or repeating path parameters. The latest version of \"path-to-regexp\" now requires the use of named parameters. For example, instead of using a route like /users/* to capture all routes starting with \"/users\", you should use /users/*path. For more details, refer to the migration guide. Attempting to auto-convert..."}
{"timestamp":"2026-10-18T07:51:40.187Z","level":"log","context":"Bootstrap","message":"Starting Users API on port 3842..."}
{"timestamp":"2026-10-18T07:51:40.191Z","level":"log","context":"RoutesResolver","message":"UsersApiController {/}:"}
{"timestamp":"2026-10-18T07:51:40.195Z","level":"log","context":"RouterExplorer","message":"Mapped {/, GET} route"}
{"timestamp":"2026-10-18T07:51:40.195Z","level":"log","context":"RoutesResolver","message":"AuthController {/auth}:"}
{"timestamp":"2026-10-18T07:51:40.196Z","level":"log","context":"RouterExplorer","message":"Mapped {/auth/login, POST} route"}
{"timestamp":"2026-10-18T07:51:40.196Z","level":"log","context":"RouterExplorer","message":"Mapped {/auth/admin/login, POST} route"}
{"timestamp":"2026-10-18T07:51:40.197Z","level":"log","context":"RouterExplorer","message":"Mapped {/auth/send-otp, POST} route"}
{"timestamp":"2026-10-18T07:51:40.197Z","level":"log","context":"RouterExplorer","message":"Mapped {/auth/verify-otp, POST} route"}
{"timestamp":"2026-10-18T07:51:40.198Z","level":"log","context":"RouterExplorer","message":"Mapped {/auth/signup, POST} route"}
{"timestamp":"2026-10-18T07:51:40.198Z","level":"log","context":"RouterExplorer","message":"Mapped {/auth/subscription-status, GET} route"}
{"timestamp":"2026-10-18T07:51:40.199Z","level":"log","context":"RoutesResolver","message":"AdminMspController {/admin/msp}:"}
{"timestamp":"2026-10-18T07:51:40.199Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/msp, GET} route"}
{"timestamp":"2026-10-18T07:51:40.200Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/msp/:id, GET} route"}
{"timestamp":"2026-10-18T07:51:40.201Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/msp, POST} route"}
{"timestamp":"2026-10-18T07:51:40.201Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/msp/:id, PUT} route"}
{"timestamp":"2026-10-18T07:51:40.201Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/msp/:id, DELETE} route"}
{"timestamp":"2026-10-18T07:51:40.201Z","level":"log","context":"RoutesResolver","message":"AdminLicenseController {/admin/licenses}:"}
{"timestamp":"2026-10-18T07:51:40.202Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/licenses/summary, GET} route"}
{"timestamp":"2026-10-18T07:51:40.202Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/licenses/msp/:mspId, GET} route"}
{"timestamp":"2026-10-18T07:51:40.205Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/licenses/msp/:mspId, PUT} route"}
{"timestamp":"2026-10-18T07:51:40.205Z","level":"log","context":"RoutesResolver","message":"AdminImpersonationController {/admin/impersonation}:"}
{"timestamp":"2026-10-18T07:51:40.205Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/impersonation/msp-users, GET} route"}
{"timestamp":"2026-10-18T07:51:40.205Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/impersonation/impersonate, POST} route"}
{"timestamp":"2026-10-18T07:51:40.206Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/impersonation/stop, POST} route"}
{"timestamp":"2026-10-18T07:51:40.206Z","level":"log","context":"RoutesResolver","message":"AdminAiUsageController {/admin/ai-usage}:"}
{"timestamp":"2026-10-18T07:51:40.206Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-usage, GET} route"}
{"timestamp":"2026-10-18T07:51:40.206Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-usage/business/:businessId, GET} route"}
{"timestamp":"2026-10-18T07:51:40.206Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-usage/report/monthly, GET} route"}
{"timestamp":"2026-10-18T07:51:40.207Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-usage/pricing, GET} route"}
{"timestamp":"2026-10-18T07:51:40.207Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-usage/pricing, POST} route"}
{"timestamp":"2026-10-18T07:51:40.207Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-usage/credit/:businessId, PUT} route"}
{"timestamp":"2026-10-18T07:51:40.207Z","level":"log","context":"RoutesResolver","message":"AdminAiUsageController {/api/admin/ai-usage}:"}
{"timestamp":"2026-10-18T07:51:40.207Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-usage, GET} route"}
{"timestamp":"2026-10-18T07:51:40.208Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-usage/business/:businessId, GET} route"}
{"timestamp":"2026-10-18T07:51:40.208Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-usage/report/monthly, GET} route"}
{"timestamp":"2026-10-18T07:51:40.208Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-usage/pricing, GET} route"}
{"timestamp":"2026-10-18T07:51:40.208Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-usage/pricing, POST} route"}
{"timestamp":"2026-10-18T07:51:40.208Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-usage/credit/:businessId, PUT} route"}
{"timestamp":"2026-10-18T07:51:40.208Z","level":"log","context":"RoutesResolver","message":"AdminAiModelController {/admin/ai-models}:"}
{"timestamp":"2026-10-18T07:51:40.209Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models, POST} route"}
{"timestamp":"2026-10-18T07:51:40.209Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models, GET} route"}
{"timestamp":"2026-10-18T07:51:40.209Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/default, GET} route"}
{"timestamp":"2026-10-18T07:51:40.209Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/:id, GET} route"}
{"timestamp":"2026-10-18T07:51:40.209Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/:id, PUT} route"}
{"timestamp":"2026-10-18T07:51:40.210Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/:id, DELETE} route"}
{"timestamp":"2026-10-18T07:51:40.210Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/:id/set-default, POST} route"}
{"timestamp":"2026-10-18T07:51:40.210Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/assign-to-business, POST} route"}
{"timestamp":"2026-10-18T07:51:40.210Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/business/:businessId, GET} route"}
{"timestamp":"2026-10-18T07:51:40.211Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/:id/businesses, GET} route"}
{"timestamp":"2026-10-18T07:51:40.211Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/initialize-defaults, POST} route"}
{"timestamp":"2026-10-18T07:51:40.211Z","level":"log","context":"RoutesResolver","message":"AdminAiModelController {/api/admin/ai-models}:"}
{"timestamp":"2026-10-18T07:51:40.211Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models, POST} route"}
{"timestamp":"2026-10-18T07:51:40.211Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models, GET} route"}
{"timestamp":"2026-10-18T07:51:40.211Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/default, GET} route"}
{"timestamp":"2026-10-18T07:51:40.212Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/:id, GET} route"}
{"timestamp":"2026-10-18T07:51:40.212Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/:id, PUT} route"}
{"timestamp":"2026-10-18T07:51:40.212Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/:id, DELETE} route"}
{"timestamp":"2026-10-18T07:51:40.212Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/:id/set-default, POST} route"}
{"timestamp":"2026-10-18T07:51:40.213Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/assign-to-business, POST} route"}
{"timestamp":"2026-10-18T07:51:40.213Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/business/:businessId, GET} route"}
{"timestamp":"2026-10-18T07:51:40.213Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/:id/businesses, GET} route"}
{"timestamp":"2026-10-18T07:51:40.213Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/initialize-defaults, POST} route"}
{"timestamp":"2026-10-18T07:51:40.214Z","level":"log","context":"RoutesResolver","message":"AdminBusinessController {/admin/businesses}:"}
{"timestamp":"2026-10-18T07:51:40.214Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/businesses, GET} route"}
{"timestamp":"2026-10-18T07:51:40.214Z","level":"log","context":"RoutesResolver","message":"ResellerManagementController {/admin/resellers}:"}
{"timestamp":"2026-10-18T07:51:40.215Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/resellers, GET} route"}
{"timestamp":"2026-10-18T07:51:40.215Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/resellers/create-default, POST} route"}
{"timestamp":"2026-10-18T07:51:40.215Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/resellers, POST} route"}
{"timestamp":"2026-10-18T07:51:40.216Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/resellers/:id/toggle-status, PUT} route"}
{"timestamp":"2026-10-18T07:51:40.216Z","level":"log","context":"RoutesResolver","message":"SubscriptionController {/subscription}:"}
{"timestamp":"2026-10-18T07:51:40.216Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/plans, GET} route"}
{"timestamp":"2026-10-18T07:51:40.217Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/calculate-price, POST} route"}
{"timestamp":"2026-10-18T07:51:40.217Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/current, GET} route"}
{"timestamp":"2026-10-18T07:51:40.217Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/create, POST} route"}
{"timestamp":"2026-10-18T07:51:40.217Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/:id, PUT} route"}
{"timestamp":"2026-10-18T07:51:40.218Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/:id/cancel, DELETE} route"}
{"timestamp":"2026-10-18T07:51:40.218Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/sync/:stripeSubscriptionId, POST} route"}
{"timestamp":"2026-10-18T07:51:40.218Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/payments, GET} route"}
{"timestamp":"2026-10-18T07:51:40.219Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/payments/stats, GET} route"}
{"timestamp":"2026-10-18T07:51:40.219Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/payment/:id, GET} route"}
{"timestamp":"2026-10-18T07:51:40.219Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/payment-methods/attach, POST} route"}
{"timestamp":"2026-10-18T07:51:40.220Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/payment-methods/:paymentMethodId, DELETE} route"}
{"timestamp":"2026-10-18T07:51:40.220Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/payment-methods, GET} route"}
{"timestamp":"2026-10-18T07:51:40.220Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/setup-intent, POST} route"}
{"timestamp":"2026-10-18T07:51:40.220Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/update-employee-count, POST} route"}
{"timestamp":"2026-10-18T07:51:40.221Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/retry-payment/:subscriptionId, POST} route"}
{"timestamp":"2026-10-18T07:51:40.221Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/invoice/:invoiceId/pdf, GET} route"}
{"timestamp":"2026-10-18T07:51:40.221Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/preview-upgrade, POST} route"}
{"timestamp":"2026-10-18T07:51:40.221Z","level":"log","context":"RoutesResolver","message":"SubscriptionController {/api/subscription}:"}
{"timestamp":"2026-10-18T07:51:40.222Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/plans, GET} route"}
{"timestamp":"2026-10-18T07:51:40.222Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/calculate-price, POST} route"}
{"timestamp":"2026-10-18T07:51:40.222Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/current, GET} route"}
{"timestamp":"2026-10-18T07:51:40.223Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/create, POST} route"}
{"timestamp":"2026-10-18T07:51:40.223Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/:id, PUT} route"}
{"timestamp":"2026-10-18T07:51:40.223Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/:id/cancel, DELETE} route"}
{"timestamp":"2026-10-18T07:51:40.223Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/sync/:stripeSubscriptionId, POST} route"}
{"timestamp":"2026-10-18T07:51:40.224Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/payments, GET} route"}
{"timestamp":"2026-10-18T07:51:40.224Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/payments/stats, GET} route"}
{"timestamp":"2026-10-18T07:51:40.224Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/payment/:id, GET} route"}
{"timestamp":"2026-10-18T07:51:40.224Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/payment-methods/attach, POST} route"}
{"timestamp":"2026-10-18T07:51:40.224Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/payment-methods/:paymentMethodId, DELETE} route"}
{"timestamp":"2026-10-18T07:51:40.224Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/payment-methods, GET} route"}
{"timestamp":"2026-10-18T07:51:40.225Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/setup-intent, POST} route"}
{"timestamp":"2026-10-18T07:51:40.225Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/update-employee-count, POST} route"}
{"timestamp":"2026-10-18T07:51:40.225Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/retry-payment/:subscriptionId, POST} route"}
{"timestamp":"2026-10-18T07:51:40.225Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/invoice/:invoiceId/pdf, GET} route"}
{"timestamp":"2026-10-18T07:51:40.225Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/preview-upgrade, POST} route"}
{"timestamp":"2026-10-18T07:51:40.225Z","level":"log","context":"RoutesResolver","message":"StripeWebhookController {/stripe/webhook}:"}
{"timestamp":"2026-10-18T07:51:40.226Z","level":"log","context":"RouterExplorer","message":"Mapped {/stripe/webhook/test, GET} route"}
{"timestamp":"2026-10-18T07:51:40.226Z","level":"log","context":"RouterExplorer","message":"Mapped {/stripe/webhook, POST} route"}
{"timestamp":"2026-10-18T07:51:40.226Z","level":"log","context":"RoutesResolver","message":"EmailController {/email-templates}:"}
{"timestamp":"2026-10-18T07:51:40.226Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates/test, POST} route"}
{"timestamp":"2026-10-18T07:51:40.226Z","level":"log","context":"RoutesResolver","message":"EmployeeController {/employees}:"}
{"timestamp":"2026-10-18T07:51:40.226Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees, POST} route"}
{"timestamp":"2026-10-18T07:51:40.226Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees, GET} route"}
{"timestamp":"2026-10-18T07:51:40.227Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees/export, GET} route"}
{"timestamp":"2026-10-18T07:51:40.227Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees/risk-stats, GET} route"}
{"timestamp":"2026-10-18T07:51:40.227Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees/:id, GET} route"}
{"timestamp":"2026-10-18T07:51:40.227Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees/:id, PUT} route"}
{"timestamp":"2026-10-18T07:51:40.227Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees/:id, DELETE} route"}
{"timestamp":"2026-10-18T07:51:40.227Z","level":"log","context":"RoutesResolver","message":"GroupController {/groups}:"}
{"timestamp":"2026-10-18T07:51:40.228Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups, POST} route"}
{"timestamp":"2026-10-18T07:51:40.228Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups, GET} route"}
{"timestamp":"2026-10-18T07:51:40.228Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups/standard, GET} route"}
{"timestamp":"2026-10-18T07:51:40.228Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups/:id, GET} route"}
{"timestamp":"2026-10-18T07:51:40.228Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups/:id, PUT} route"}
{"timestamp":"2026-10-18T07:51:40.228Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups/:id, DELETE} route"}
{"timestamp":"2026-10-18T07:51:40.229Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups/:id/info, GET} route"}
{"timestamp":"2026-10-18T07:51:40.229Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups/:id/with-employees, GET} route"}
{"timestamp":"2026-10-18T07:51:40.229Z","level":"log","context":"RoutesResolver","message":"SenderProfileController {/sender-profiles}:"}
{"timestamp":"2026-10-18T07:51:40.229Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles, GET} route"}
{"timestamp":"2026-10-18T07:51:40.229Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles/:id, GET} route"}
{"timestamp":"2026-10-18T07:51:40.229Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles, POST} route"}
{"timestamp":"2026-10-18T07:51:40.230Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles/:id, PUT} route"}
{"timestamp":"2026-10-18T07:51:40.230Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles/:id, DELETE} route"}
{"timestamp":"2026-10-18T07:51:40.230Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles/:id/verify-domain, POST} route"}
{"timestamp":"2026-10-18T07:51:40.230Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles/domain-verification, GET} route"}
{"timestamp":"2026-10-18T07:51:40.230Z","level":"log","context":"RoutesResolver","message":"EmailTemplateController {/email-templates}:"}
{"timestamp":"2026-10-18T07:51:40.230Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates, GET} route"}
{"timestamp":"2026-10-18T07:51:40.231Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates/:id, GET} route"}
{"timestamp":"2026-10-18T07:51:40.231Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates, POST} route"}
{"timestamp":"2026-10-18T07:51:40.231Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates/:id, PUT} route"}
{"timestamp":"2026-10-18T07:51:40.231Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates/:id, DELETE} route"}
{"timestamp":"2026-10-18T07:51:40.231Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates/:id/duplicate, POST} route"}
{"timestamp":"2026-10-18T07:51:40.231Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates/:id/preview, GET} route"}
{"timestamp":"2026-10-18T07:51:40.231Z","level":"log","context":"RoutesResolver","message":"ScenarioController {/scenarios}:"}
{"timestamp":"2026-10-18T07:51:40.232Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios, POST} route"}
{"timestamp":"2026-10-18T07:51:40.232Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios/generate-content, POST} route"}
{"timestamp":"2026-10-18T07:51:40.232Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios, GET} route"}
{"timestamp":"2026-10-18T07:51:40.232Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios/:id, GET} route"}
{"timestamp":"2026-10-18T07:51:40.232Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios/:id, PUT} route"}
{"timestamp":"2026-10-18T07:51:40.232Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios/:id, DELETE} route"}
{"timestamp":"2026-10-18T07:51:40.233Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios/generate-from-json, POST} route"}
{"timestamp":"2026-10-18T07:51:40.233Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios/:id/save-as-custom-scenario, POST} route"}
{"timestamp":"2026-10-18T07:51:40.233Z","level":"log","context":"RoutesResolver","message":"CampaignController {/campaigns}:"}
{"timestamp":"2026-10-18T07:51:40.233Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns, POST} route"}
{"timestamp":"2026-10-18T07:51:40.233Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns, GET} route"}
{"timestamp":"2026-10-18T07:51:40.233Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id, GET} route"}
{"timestamp":"2026-10-18T07:51:40.234Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id/details, GET} route"}
{"timestamp":"2026-10-18T07:51:40.234Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id/employees, GET} route"}
{"timestamp":"2026-10-18T07:51:40.234Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id, PATCH} route"}
{"timestamp":"2026-10-18T07:51:40.234Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id/start, POST} route"}
{"timestamp":"2026-10-18T07:51:40.235Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id/stop, POST} route"}
{"timestamp":"2026-10-18T07:51:40.235Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id/duplicate, POST} route"}
{"timestamp":"2026-10-18T07:51:40.235Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id, DELETE} route"}
{"timestamp":"2026-10-18T07:51:40.235Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/auto-generate-program, POST} route"}
{"timestamp":"2026-10-18T07:51:40.235Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/generate-from-threat-intelligence, POST} route"}
{"timestamp":"2026-10-18T07:51:40.235Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id/risk-score, GET} route"}
{"timestamp":"2026-10-18T07:51:40.236Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/recalculate-risk-scores, POST} route"}
{"timestamp":"2026-10-18T07:51:40.236Z","level":"log","context":"RoutesResolver","message":"CampaignController {/api/campaigns}:"}
{"timestamp":"2026-10-18T07:51:40.236Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns, POST} route"}
{"timestamp":"2026-10-18T07:51:40.236Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns, GET} route"}
{"timestamp":"2026-10-18T07:51:40.236Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id, GET} route"}
{"timestamp":"2026-10-18T07:51:40.236Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id/details, GET} route"}
{"timestamp":"2026-10-18T07:51:40.236Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id/employees, GET} route"}
{"timestamp":"2026-10-18T07:51:40.237Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id, PATCH} route"}
{"timestamp":"2026-10-18T07:51:40.237Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id/start, POST} route"}
{"timestamp":"2026-10-18T07:51:40.237Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id/stop, POST} route"}
{"timestamp":"2026-10-18T07:51:40.237Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id/duplicate, POST} route"}
{"timestamp":"2026-10-18T07:51:40.237Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id, DELETE} route"}
{"timestamp":"2026-10-18T07:51:40.237Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/auto-generate-program, POST} route"}
{"timestamp":"2026-10-18T07:51:40.237Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/generate-from-threat-intelligence, POST} route"}
{"timestamp":"2026-10-18T07:51:40.238Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id/risk-score, GET} route"}
{"timestamp":"2026-10-18T07:51:40.238Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/recalculate-risk-scores, POST} route"}
{"timestamp":"2026-10-18T07:51:40.238Z","level":"log","context":"RoutesResolver","message":"NotificationsController {/notifications}:"}
{"timestamp":"2026-10-18T07:51:40.238Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications, POST} route"}
{"timestamp":"2026-10-18T07:51:40.238Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications, GET} route"}
{"timestamp":"2026-10-18T07:51:40.239Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/unread, GET} route"}
{"timestamp":"2026-10-18T07:51:40.239Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/unread-count, GET} route"}
{"timestamp":"2026-10-18T07:51:40.239Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/:id, GET} route"}
{"timestamp":"2026-10-18T07:51:40.239Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/:id, PATCH} route"}
{"timestamp":"2026-10-18T07:51:40.239Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/:id/read, PATCH} route"}
{"timestamp":"2026-10-18T07:51:40.239Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/mark-all-read, PATCH} route"}
{"timestamp":"2026-10-18T07:51:40.240Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/:id, DELETE} route"}
{"timestamp":"2026-10-18T07:51:40.240Z","level":"log","context":"RoutesResolver","message":"LandingPageController {/lp}:"}
{"timestamp":"2026-10-18T07:51:40.240Z","level":"log","context":"RouterExplorer","message":"Mapped {/lp/image, GET} route"}
{"timestamp":"2026-10-18T07:51:40.240Z","level":"log","context":"RouterExplorer","message":"Mapped {/lp/learning, GET} route"}
{"timestamp":"2026-10-18T07:51:40.241Z","level":"log","context":"RouterExplorer","message":"Mapped {/lp/submit, POST} route"}
{"timestamp":"2026-10-18T07:51:40.241Z","level":"log","context":"RouterExplorer","message":"Mapped {/lp/test, GET} route"}
{"timestamp":"2026-10-18T07:51:40.241Z","level":"warn","context":"LegacyRouteConverter","message":"Unsupported route path: \"/lp/*\". In previous versions, the symbols ?, *, and + were used to denote optional or repeating path parameters. The latest version of \"path-to-regexp\" now requires the use of named parameters. For example, instead of using a route like /users/* to capture all routes starting with \"/users\", you should use /users/*path. For more details, refer to the migration guide. Attempting to auto-convert..."}
{"timestamp":"2026-10-18T07:51:40.242Z","level":"log","context":"RouterExplorer","message":"Mapped {/lp/*, ALL} route"}
{"timestamp":"2026-10-18T07:51:40.242Z","level":"log","context":"RoutesResolver","message":"SupportController {/support}:"}
{"timestamp":"2026-10-18T07:51:40.242Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets, POST} route"}
{"timestamp":"2026-10-18T07:51:40.242Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets, GET} route"}
{"timestamp":"2026-10-18T07:51:40.242Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets/:id, GET} route"}
{"timestamp":"2026-10-18T07:51:40.243Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets/:id, PATCH} route"}
{"timestamp":"2026-10-18T07:51:40.243Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets/:id, DELETE} route"}
{"timestamp":"2026-10-18T07:51:40.243Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets/:id/messages, POST} route"}
{"timestamp":"2026-10-18T07:51:40.243Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets/:id/close, POST} route"}
{"timestamp":"2026-10-18T07:51:40.243Z","level":"log","context":"RoutesResolver","message":"BusninessMetricsController {/business-metrics}:"}
{"timestamp":"2026-10-18T07:51:40.243Z","level":"log","context":"RouterExplorer","message":"Mapped {/business-metrics, GET} route"}
{"timestamp":"2026-10-18T07:51:40.244Z","level":"log","context":"RoutesResolver","message":"UsersController {/users}:"}
{"timestamp":"2026-10-18T07:51:40.244Z","level":"log","context":"RouterExplorer","message":"Mapped {/users/:id, PUT} route"}
{"timestamp":"2026-10-18T07:51:40.244Z","level":"log","context":"RouterExplorer","message":"Mapped {/users/settings, GET} route"}
{"timestamp":"2026-10-18T07:51:40.244Z","level":"log","context":"RouterExplorer","message":"Mapped {/users/settings/general, PUT} route"}
{"timestamp":"2026-10-18T07:51:40.244Z","level":"log","context":"RouterExplorer","message":"Mapped {/users/company/settings, PUT} route"}
{"timestamp":"2026-10-18T07:51:40.244Z","level":"log","context":"RouterExplorer","message":"Mapped {/users/change-password, POST} route"}
{"timestamp":"2026-10-18T07:51:40.245Z","level":"log","context":"RouterExplorer","message":"Mapped {/users/localization/settings, PUT} route"}
{"timestamp":"2026-10-18T07:51:40.245Z","level":"log","context":"RoutesResolver","message":"PartnerController {/partner}:"}
{"timestamp":"2026-10-18T07:51:40.245Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses, POST} route"}
{"timestamp":"2026-10-18T07:51:40.245Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses, GET} route"}
{"timestamp":"2026-10-18T07:51:40.245Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses/:id, GET} route"}
{"timestamp":"2026-10-18T07:51:40.245Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses/:id, PUT} route"}
{"timestamp":"2026-10-18T07:51:40.246Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses/:id, DELETE} route"}
{"timestamp":"2026-10-18T07:51:40.246Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses/:id/impersonate, POST} route"}
{"timestamp":"2026-10-18T07:51:40.246Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses/stop-impersonation, POST} route"}
{"timestamp":"2026-10-18T07:51:40.246Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/license-usage, GET} route"}
{"timestamp":"2026-10-18T07:51:40.246Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/invoices, POST} route"}
{"timestamp":"2026-10-18T07:51:40.246Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/invoices, GET} route"}
{"timestamp":"2026-10-18T07:51:40.247Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/invoices/:id, GET} route"}
{"timestamp":"2026-10-18T07:51:40.247Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/invoices/:id, PUT} route"}
{"timestamp":"2026-10-18T07:51:40.247Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/invoices/:id, DELETE} route"}
{"timestamp":"2026-10-18T07:51:40.247Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/invoices/:id/mark-paid, PUT} route"}
{"timestamp":"2026-10-18T07:51:40.247Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/onboarding/generate-token, POST} route"}
{"timestamp":"2026-10-18T07:51:40.248Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/dashboard, GET} route"}
{"timestamp":"2026-10-18T07:51:40.248Z","level":"log","context":"RoutesResolver","message":"MspSubscriptionController {/partner/msp-subscriptions}:"}
{"timestamp":"2026-10-18T07:51:40.248Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/plans, POST} route"}
{"timestamp":"2026-10-18T07:51:40.248Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/plans, GET} route"}
{"timestamp":"2026-10-18T07:51:40.248Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/plans/:planId, GET} route"}
{"timestamp":"2026-10-18T07:51:40.248Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/plans/:planId, PUT} route"}
{"timestamp":"2026-10-18T07:51:40.248Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/plans/:planId, DELETE} route"}
{"timestamp":"2026-10-18T07:51:40.249Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/businesses/:businessId/subscription, POST} route"}
{"timestamp":"2026-10-18T07:51:40.249Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions, GET} route"}
{"timestamp":"2026-10-18T07:51:40.249Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/businesses/:businessId/subscription, GET} route"}
{"timestamp":"2026-10-18T07:51:40.249Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/businesses/:businessId/subscription, PUT} route"}
{"timestamp":"2026-10-18T07:51:40.249Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/businesses/:businessId/subscription, DELETE} route"}
{"timestamp":"2026-10-18T07:51:40.250Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/businesses/:businessId/subscription/limits, GET} route"}
{"timestamp":"2026-10-18T07:51:40.250Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/businesses/:businessId/subscription/change-plan, PUT} route"}
{"timestamp":"2026-10-18T07:51:40.250Z","level":"log","context":"RoutesResolver","message":"OnboardingController {/onboarding}:"}
{"timestamp":"2026-10-18T07:51:40.250Z","level":"log","context":"RouterExplorer","message":"Mapped {/onboarding/validate/:token, GET} route"}
{"timestamp":"2026-10-18T07:51:40.250Z","level":"log","context":"RouterExplorer","message":"Mapped {/onboarding/complete/:token, POST} route"}
{"timestamp":"2026-10-18T07:51:40.250Z","level":"log","context":"RoutesResolver","message":"ResellerController {/reseller}:"}
{"timestamp":"2026-10-18T07:51:40.250Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/businesses, POST} route"}
{"timestamp":"2026-10-18T07:51:40.251Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/businesses, GET} route"}
{"timestamp":"2026-10-18T07:51:40.251Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/businesses/:id, GET} route"}
{"timestamp":"2026-10-18T07:51:40.251Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/businesses/:id, PUT} route"}
{"timestamp":"2026-10-18T07:51:40.251Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/businesses/:id, DELETE} route"}
{"timestamp":"2026-10-18T07:51:40.251Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/license-usage, GET} route"}
{"timestamp":"2026-10-18T07:51:40.251Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/invoices, POST} route"}
{"timestamp":"2026-10-18T07:51:40.252Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/invoices, GET} route"}
{"timestamp":"2026-10-18T07:51:40.252Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/invoices/:id, GET} route"}
{"timestamp":"2026-10-18T07:51:40.252Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/invoices/:id, PUT} route"}
{"timestamp":"2026-10-18T07:51:40.252Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/invoices/:id, DELETE} route"}
{"timestamp":"2026-10-18T07:51:40.252Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/invoices/:id/mark-paid, PUT} route"}
{"timestamp":"2026-10-18T07:51:40.252Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/onboarding/generate-token, POST} route"}
{"timestamp":"2026-10-18T07:51:40.253Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/dashboard, GET} route"}
{"timestamp":"2026-10-18T07:51:40.253Z","level":"log","context":"RoutesResolver","message":"ResellerSubscriptionController {/reseller}:"}
{"timestamp":"2026-10-18T07:51:40.253Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/plans, POST} route"}
{"timestamp":"2026-10-18T07:51:40.253Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/plans, GET} route"}
{"timestamp":"2026-10-18T07:51:40.253Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/plans/:planId, GET} route"}
{"timestamp":"2026-10-18T07:51:40.253Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/plans/:planId, PUT} route"}
{"timestamp":"2026-10-18T07:51:40.254Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/plans/:planId, DELETE} route"}
{"timestamp":"2026-10-18T07:51:40.254Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/subscriptions/businesses/:businessId/subscription, POST} route"}
{"timestamp":"2026-10-18T07:51:40.254Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/subscriptions, GET} route"}
{"timestamp":"2026-10-18T07:51:40.254Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/subscriptions/businesses/:businessId/subscription, GET} route"}
{"timestamp":"2026-10-18T07:51:40.254Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/subscriptions/businesses/:businessId/subscription, PUT} route"}
{"timestamp":"2026-10-18T07:51:40.254Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/subscriptions/businesses/:businessId/subscription, DELETE} route"}
{"timestamp":"2026-10-18T07:51:40.255Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/subscriptions/businesses/:businessId/subscription/limits, GET} route"}
{"timestamp":"2026-10-18T07:51:40.255Z","level":"log","context":"RoutesResolver","message":"HealthController {/health}:"}
{"timestamp":"2026-10-18T07:51:40.255Z","level":"log","context":"RouterExplorer","message":"Mapped {/health, GET} route"}
{"timestamp":"2026-10-18T07:51:40.255Z","level":"log","context":"RouterExplorer","message":"Mapped {/health/test-logs, GET} route"}
{"timestamp":"2026-10-18T07:51:40.255Z","level":"log","context":"RoutesResolver","message":"AzureAdController {/azure-ad}:"}
{"timestamp":"2026-10-18T07:51:40.255Z","level":"log","context":"RouterExplorer","message":"Mapped {/azure-ad/config, POST} route"}
{"timestamp":"2026-10-18T07:51:40.255Z","level":"log","context":"RouterExplorer","message":"Mapped {/azure-ad/config, GET} route"}
{"timestamp":"2026-10-18T07:51:40.256Z","level":"log","context":"RouterExplorer","message":"Mapped {/azure-ad/test-connection, POST} route"}
{"timestamp":"2026-10-18T07:51:40.256Z","level":"log","context":"RouterExplorer","message":"Mapped {/azure-ad/sync, POST} route"}
{"timestamp":"2026-10-18T07:51:40.256Z","level":"log","context":"RoutesResolver","message":"ThreatsController {/threats}:"}
{"timestamp":"2026-10-18T07:51:40.256Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats, POST} route"}
{"timestamp":"2026-10-18T07:51:40.256Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats, GET} route"}
{"timestamp":"2026-10-18T07:51:40.256Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/chart-data, GET} route"}
{"timestamp":"2026-10-18T07:51:40.256Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/claude-search, POST} route"}
{"timestamp":"2026-10-18T07:51:40.257Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/claude-latest, POST} route"}
{"timestamp":"2026-10-18T07:51:40.257Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/claude-trending, POST} route"}
{"timestamp":"2026-10-18T07:51:40.257Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/claude-categories, POST} route"}
{"timestamp":"2026-10-18T07:51:40.257Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/claude-manual-search, POST} route"}
{"timestamp":"2026-10-18T07:51:40.257Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/claude-quick-search, POST} route"}
{"timestamp":"2026-10-18T07:51:40.257Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/scheduler-status, GET} route"}
{"timestamp":"2026-10-18T07:51:40.258Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/health-check, GET} route"}
{"timestamp":"2026-10-18T07:51:40.258Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/pause-scheduler, POST} route"}
{"timestamp":"2026-10-18T07:51:40.258Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/:id, GET} route"}
{"timestamp":"2026-10-18T07:51:40.258Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/:id, PATCH} route"}
{"timestamp":"2026-10-18T07:51:40.258Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/:id, DELETE} route"}
{"timestamp":"2026-10-18T07:51:40.258Z","level":"log","context":"RoutesResolver","message":"DomainController {/domains}:"}
{"timestamp":"2026-10-18T07:51:40.258Z","level":"log","context":"RouterExplorer","message":"Mapped {/domains, GET} route"}
{"timestamp":"2026-10-18T07:51:40.259Z","level":"log","context":"RouterExplorer","message":"Mapped {/domains/:id, GET} route"}
{"timestamp":"2026-10-18T07:51:40.259Z","level":"log","context":"RouterExplorer","message":"Mapped {/domains, POST} route"}
{"timestamp":"2026-10-18T07:51:40.259Z","level":"log","context":"RouterExplorer","message":"Mapped {/domains/:id, PUT} route"}
{"timestamp":"2026-10-18T07:51:40.259Z","level":"log","context":"RouterExplorer","message":"Mapped {/domains/:id, DELETE} route"}
{"timestamp":"2026-10-18T07:51:40.259Z","level":"log","context":"RouterExplorer","message":"Mapped {/domains/seed, POST} route"}
{"timestamp":"2026-10-18T07:51:40.259Z","level":"log","context":"RoutesResolver","message":"MspSubscriptionController {/msp-subscription}:"}
{"timestamp":"2026-10-18T07:51:40.260Z","level":"log","context":"RouterExplorer","message":"Mapped {/msp-subscription/current, GET} route"}
{"timestamp":"2026-10-18T07:51:40.260Z","level":"log","context":"RouterExplorer","message":"Mapped {/msp-subscription/invoices, GET} route"}
{"timestamp":"2026-10-18T07:51:40.260Z","level":"log","context":"RouterExplorer","message":"Mapped {/msp-subscription/invoice/:invoiceId/pdf, GET} route"}
{"timestamp":"2026-10-18T07:51:40.260Z","level":"log","context":"RoutesResolver","message":"MspSubscriptionController {/api/msp-subscription}:"}
{"timestamp":"2026-10-18T07:51:40.260Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/msp-subscription/current, GET} route"}
{"timestamp":"2026-10-18T07:51:40.260Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/msp-subscription/invoices, GET} route"}
{"timestamp":"2026-10-18T07:51:40.260Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/msp-subscription/invoice/:invoiceId/pdf, GET} route"}
{"timestamp":"2026-10-18T07:51:40.338Z","level":"log","context":"NestApplication","message":"Nest application successfully started"}
{"timestamp":"2026-10-18T07:51:40.347Z","level":"log","context":"Bootstrap","message":"Users API successfully started on port 3842"}
{"timestamp":"2026-10-18T07:51:40.348Z","level":"log","context":"SeedService","message":"🌱 Starting database seeding..."}
{"timestamp":"2026-10-18T07:51:40.355Z","level":"log","context":"SeedService","message":"Admin account already exists, skipping seed"}
{"timestamp":"2026-10-18T07:51:40.357Z","level":"log","context":"SeedService","message":"Reseller account already exists, skipping seed"}
{"timestamp":"2026-10-18T07:51:40.359Z","level":"log","context":"SeedService","message":"MSP account already exists, skipping seed"}
{"timestamp":"2026-10-18T07:51:40.359Z","level":"log","context":"SeedService","message":"✅ Database seeding completed successfully"}
{"timestamp":"2026-10-18T08:40:45.910Z","level":"warn","context":"LegacyRouteConverter","message":"Unsupported route path: \"/lp/*\". In previous versions, the symbols ?, *, and + were used to denote optional or repeating path parameters. The latest version of \"path-to-regexp\" now requires the use of named parameters. For example, instead of using a route like /users/* to capture all routes starting with \"/users\", you should use /users/*path. For more details, refer to the migration guide. Attempting to auto-convert..."}
{"timestamp":"2026-10-18T08:40:45.942Z","level":"log","context":"Bootstrap","message":"Starting Users API on port 3842..."}
{"timestamp":"2026-10-18T08:40:45.945Z","level":"log","context":"RoutesResolver","message":"UsersApiController {/}:"}
{"timestamp":"2026-10-18T08:40:45.948Z","level":"log","context":"RouterExplorer","message":"Mapped {/, GET} route"}
{"timestamp":"2026-10-18T08:40:45.948Z","level":"log","context":"RoutesResolver","message":"AuthController {/auth}:"}
{"timestamp":"2026-10-18T08:40:45.949Z","level":"log","context":"RouterExplorer","message":"Mapped {/auth/login, POST} route"}
{"timestamp":"2026-10-18T08:40:45.949Z","level":"log","context":"RouterExplorer","message":"Mapped {/auth/admin/login, POST} route"}
{"timestamp":"2026-10-18T08:40:45.950Z","level":"log","context":"RouterExplorer","message":"Mapped {/auth/send-otp, POST} route"}
{"timestamp":"2026-10-18T08:40:45.950Z","level":"log","context":"RouterExplorer","message":"Mapped {/auth/verify-otp, POST} route"}
{"timestamp":"2026-10-18T08:40:45.950Z","level":"log","context":"RouterExplorer","message":"Mapped {/auth/signup, POST} route"}
{"timestamp":"2026-10-18T08:40:45.951Z","level":"log","context":"RouterExplorer","message":"Mapped {/auth/subscription-status, GET} route"}
{"timestamp":"2026-10-18T08:40:45.951Z","level":"log","context":"RoutesResolver","message":"AdminMspController {/admin/msp}:"}
{"timestamp":"2026-10-18T08:40:45.952Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/msp, GET} route"}
{"timestamp":"2026-10-18T08:40:45.952Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/msp/:id, GET} route"}
{"timestamp":"2026-10-18T08:40:45.953Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/msp, POST} route"}
{"timestamp":"2026-10-18T08:40:45.953Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/msp/:id, PUT} route"}
{"timestamp":"2026-10-18T08:40:45.953Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/msp/:id, DELETE} route"}
{"timestamp":"2026-10-18T08:40:45.953Z","level":"log","context":"RoutesResolver","message":"AdminLicenseController {/admin/licenses}:"}
{"timestamp":"2026-10-18T08:40:45.954Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/licenses/summary, GET} route"}
{"timestamp":"2026-10-18T08:40:45.954Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/licenses/msp/:mspId, GET} route"}
{"timestamp":"2026-10-18T08:40:45.954Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/licenses/msp/:mspId, PUT} route"}
{"timestamp":"2026-10-18T08:40:45.954Z","level":"log","context":"RoutesResolver","message":"AdminImpersonationController {/admin/impersonation}:"}
{"timestamp":"2026-10-18T08:40:45.955Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/impersonation/msp-users, GET} route"}
{"timestamp":"2026-10-18T08:40:45.955Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/impersonation/impersonate, POST} route"}
{"timestamp":"2026-10-18T08:40:45.957Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/impersonation/stop, POST} route"}
{"timestamp":"2026-10-18T08:40:45.957Z","level":"log","context":"RoutesResolver","message":"AdminAiUsageController {/admin/ai-usage}:"}
{"timestamp":"2026-10-18T08:40:45.958Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-usage, GET} route"}
{"timestamp":"2026-10-18T08:40:45.958Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-usage/business/:businessId, GET} route"}
{"timestamp":"2026-10-18T08:40:45.958Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-usage/report/monthly, GET} route"}
{"timestamp":"2026-10-18T08:40:45.958Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-usage/pricing, GET} route"}
{"timestamp":"2026-10-18T08:40:45.958Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-usage/pricing, POST} route"}
{"timestamp":"2026-10-18T08:40:45.959Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-usage/credit/:businessId, PUT} route"}
{"timestamp":"2026-10-18T08:40:45.959Z","level":"log","context":"RoutesResolver","message":"AdminAiUsageController {/api/admin/ai-usage}:"}
{"timestamp":"2026-10-18T08:40:45.959Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-usage, GET} route"}
{"timestamp":"2026-10-18T08:40:45.959Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-usage/business/:businessId, GET} route"}
{"timestamp":"2026-10-18T08:40:45.959Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-usage/report/monthly, GET} route"}
{"timestamp":"2026-10-18T08:40:45.959Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-usage/pricing, GET} route"}
{"timestamp":"2026-10-18T08:40:45.960Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-usage/pricing, POST} route"}
{"timestamp":"2026-10-18T08:40:45.960Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-usage/credit/:businessId, PUT} route"}
{"timestamp":"2026-10-18T08:40:45.960Z","level":"log","context":"RoutesResolver","message":"AdminAiModelController {/admin/ai-models}:"}
{"timestamp":"2026-10-18T08:40:45.960Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models, POST} route"}
{"timestamp":"2026-10-18T08:40:45.960Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models, GET} route"}
{"timestamp":"2026-10-18T08:40:45.960Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/default, GET} route"}
{"timestamp":"2026-10-18T08:40:45.960Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/:id, GET} route"}
{"timestamp":"2026-10-18T08:40:45.961Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/:id, PUT} route"}
{"timestamp":"2026-10-18T08:40:45.961Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/:id, DELETE} route"}
{"timestamp":"2026-10-18T08:40:45.961Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/:id/set-default, POST} route"}
{"timestamp":"2026-10-18T08:40:45.961Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/assign-to-business, POST} route"}
{"timestamp":"2026-10-18T08:40:45.961Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/business/:businessId, GET} route"}
{"timestamp":"2026-10-18T08:40:45.962Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/:id/businesses, GET} route"}
{"timestamp":"2026-10-18T08:40:45.962Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/initialize-defaults, POST} route"}
{"timestamp":"2026-10-18T08:40:45.962Z","level":"log","context":"RoutesResolver","message":"AdminAiModelController {/api/admin/ai-models}:"}
{"timestamp":"2026-10-18T08:40:45.962Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models, POST} route"}
{"timestamp":"2026-10-18T08:40:45.962Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models, GET} route"}
{"timestamp":"2026-10-18T08:40:45.962Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/default, GET} route"}
{"timestamp":"2026-10-18T08:40:45.963Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/:id, GET} route"}
{"timestamp":"2026-10-18T08:40:45.963Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/:id, PUT} route"}
{"timestamp":"2026-10-18T08:40:45.963Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/:id, DELETE} route"}
{"timestamp":"2026-10-18T08:40:45.963Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/:id/set-default, POST} route"}
{"timestamp":"2026-10-18T08:40:45.963Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/assign-to-business, POST} route"}
{"timestamp":"2026-10-18T08:40:45.963Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/business/:businessId, GET} route"}
{"timestamp":"2026-10-18T08:40:45.963Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/:id/businesses, GET} route"}
{"timestamp":"2026-10-18T08:40:45.964Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/initialize-defaults, POST} route"}
{"timestamp":"2026-10-18T08:40:45.964Z","level":"log","context":"RoutesResolver","message":"AdminBusinessController {/admin/businesses}:"}
{"timestamp":"2026-10-18T08:40:45.964Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/businesses, GET} route"}
{"timestamp":"2026-10-18T08:40:45.964Z","level":"log","context":"RoutesResolver","message":"ResellerManagementController {/admin/resellers}:"}
{"timestamp":"2026-10-18T08:40:45.964Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/resellers, GET} route"}
{"timestamp":"2026-10-18T08:40:45.964Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/resellers/create-default, POST} route"}
{"timestamp":"2026-10-18T08:40:45.965Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/resellers, POST} route"}
{"timestamp":"2026-10-18T08:40:45.965Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/resellers/:id/toggle-status, PUT} route"}
{"timestamp":"2026-10-18T08:40:45.965Z","level":"log","context":"RoutesResolver","message":"SubscriptionController {/subscription}:"}
{"timestamp":"2026-10-18T08:40:45.965Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/plans, GET} route"}
{"timestamp":"2026-10-18T08:40:45.965Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/calculate-price, POST} route"}
{"timestamp":"2026-10-18T08:40:45.965Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/current, GET} route"}
{"timestamp":"2026-10-18T08:40:45.965Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/create, POST} route"}
{"timestamp":"2026-10-18T08:40:45.966Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/:id, PUT} route"}
{"timestamp":"2026-10-18T08:40:45.966Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/:id/cancel, DELETE} route"}
{"timestamp":"2026-10-18T08:40:45.966Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/sync/:stripeSubscriptionId, POST} route"}
{"timestamp":"2026-10-18T08:40:45.966Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/payments, GET} route"}
{"timestamp":"2026-10-18T08:40:45.966Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/payments/stats, GET} route"}
{"timestamp":"2026-10-18T08:40:45.966Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/payment/:id, GET} route"}
{"timestamp":"2026-10-18T08:40:45.966Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/payment-methods/attach, POST} route"}
{"timestamp":"2026-10-18T08:40:45.967Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/payment-methods/:paymentMethodId, DELETE} route"}
{"timestamp":"2026-10-18T08:40:45.967Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/payment-methods, GET} route"}
{"timestamp":"2026-10-18T08:40:45.967Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/setup-intent, POST} route"}
{"timestamp":"2026-10-18T08:40:45.967Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/update-employee-count, POST} route"}
{"timestamp":"2026-10-18T08:40:45.967Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/retry-payment/:subscriptionId, POST} route"}
{"timestamp":"2026-10-18T08:40:45.967Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/invoice/:invoiceId/pdf, GET} route"}
{"timestamp":"2026-10-18T08:40:45.968Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/preview-upgrade, POST} route"}
{"timestamp":"2026-10-18T08:40:45.968Z","level":"log","context":"RoutesResolver","message":"SubscriptionController {/api/subscription}:"}
{"timestamp":"2026-10-18T08:40:45.968Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/plans, GET} route"}
{"timestamp":"2026-10-18T08:40:45.968Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/calculate-price, POST} route"}
{"timestamp":"2026-10-18T08:40:45.968Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/current, GET} route"}
{"timestamp":"2026-10-18T08:40:45.968Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/create, POST} route"}
{"timestamp":"2026-10-18T08:40:45.968Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/:id, PUT} route"}
{"timestamp":"2026-10-18T08:40:45.968Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/:id/cancel, DELETE} route"}
{"timestamp":"2026-10-18T08:40:45.969Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/sync/:stripeSubscriptionId, POST} route"}
{"timestamp":"2026-10-18T08:40:45.969Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/payments, GET} route"}
{"timestamp":"2026-10-18T08:40:45.969Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/payments/stats, GET} route"}
{"timestamp":"2026-10-18T08:40:45.969Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/payment/:id, GET} route"}
{"timestamp":"2026-10-18T08:40:45.969Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/payment-methods/attach, POST} route"}
{"timestamp":"2026-10-18T08:40:45.969Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/payment-methods/:paymentMethodId, DELETE} route"}
{"timestamp":"2026-10-18T08:40:45.969Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/payment-methods, GET} route"}
{"timestamp":"2026-10-18T08:40:45.970Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/setup-intent, POST} route"}
{"timestamp":"2026-10-18T08:40:45.970Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/update-employee-count, POST} route"}
{"timestamp":"2026-10-18T08:40:45.970Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/retry-payment/:subscriptionId, POST} route"}
{"timestamp":"2026-10-18T08:40:45.970Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/invoice/:invoiceId/pdf, GET} route"}
{"timestamp":"2026-10-18T08:40:45.970Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/preview-upgrade, POST} route"}
{"timestamp":"2026-10-18T08:40:45.970Z","level":"log","context":"RoutesResolver","message":"StripeWebhookController {/stripe/webhook}:"}
{"timestamp":"2026-10-18T08:40:45.970Z","level":"log","context":"RouterExplorer","message":"Mapped {/stripe/webhook/test, GET} route"}
{"timestamp":"2026-10-18T08:40:45.971Z","level":"log","context":"RouterExplorer","message":"Mapped {/stripe/webhook, POST} route"}
{"timestamp":"2026-10-18T08:40:45.971Z","level":"log","context":"RoutesResolver","message":"EmailController {/email-templates}:"}
{"timestamp":"2026-10-18T08:40:45.971Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates/test, POST} route"}
{"timestamp":"2026-10-18T08:40:45.971Z","level":"log","context":"RoutesResolver","message":"EmployeeController {/employees}:"}
{"timestamp":"2026-10-18T08:40:45.971Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees, POST} route"}
{"timestamp":"2026-10-18T08:40:45.971Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees, GET} route"}
{"timestamp":"2026-10-18T08:40:45.971Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees/export, GET} route"}
{"timestamp":"2026-10-18T08:40:45.971Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees/risk-stats, GET} route"}
{"timestamp":"2026-10-18T08:40:45.972Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees/:id, GET} route"}
{"timestamp":"2026-10-18T08:40:45.972Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees/:id, PUT} route"}
{"timestamp":"2026-10-18T08:40:45.972Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees/:id, DELETE} route"}
{"timestamp":"2026-10-18T08:40:45.972Z","level":"log","context":"RoutesResolver","message":"GroupController {/groups}:"}
{"timestamp":"2026-10-18T08:40:45.972Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups, POST} route"}
{"timestamp":"2026-10-18T08:40:45.972Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups, GET} route"}
{"timestamp":"2026-10-18T08:40:45.972Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups/standard, GET} route"}
{"timestamp":"2026-10-18T08:40:45.973Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups/:id, GET} route"}
{"timestamp":"2026-10-18T08:40:45.973Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups/:id, PUT} route"}
{"timestamp":"2026-10-18T08:40:45.973Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups/:id, DELETE} route"}
{"timestamp":"2026-10-18T08:40:45.973Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups/:id/info, GET} route"}
{"timestamp":"2026-10-18T08:40:45.973Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups/:id/with-employees, GET} route"}
{"timestamp":"2026-10-18T08:40:45.973Z","level":"log","context":"RoutesResolver","message":"SenderProfileController {/sender-profiles}:"}
{"timestamp":"2026-10-18T08:40:45.973Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles, GET} route"}
{"timestamp":"2026-10-18T08:40:45.974Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles/:id, GET} route"}
{"timestamp":"2026-10-18T08:40:45.974Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles, POST} route"}
{"timestamp":"2026-10-18T08:40:45.974Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles/:id, PUT} route"}
{"timestamp":"2026-10-18T08:40:45.974Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles/:id, DELETE} route"}
{"timestamp":"2026-10-18T08:40:45.974Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles/:id/verify-domain, POST} route"}
{"timestamp":"2026-10-18T08:40:45.974Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles/domain-verification, GET} route"}
{"timestamp":"2026-10-18T08:40:45.974Z","level":"log","context":"RoutesResolver","message":"EmailTemplateController {/email-templates}:"}
{"timestamp":"2026-10-18T08:40:45.975Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates, GET} route"}
{"timestamp":"2026-10-18T08:40:45.975Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates/:id, GET} route"}
{"timestamp":"2026-10-18T08:40:45.975Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates, POST} route"}
{"timestamp":"2026-10-18T08:40:45.975Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates/:id, PUT} route"}
{"timestamp":"2026-10-18T08:40:45.975Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates/:id, DELETE} route"}
{"timestamp":"2026-10-18T08:40:45.975Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates/:id/duplicate, POST} route"}
{"timestamp":"2026-10-18T08:40:45.975Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates/:id/preview, GET} route"}
{"timestamp":"2026-10-18T08:40:45.975Z","level":"log","context":"RoutesResolver","message":"ScenarioController {/scenarios}:"}
{"timestamp":"2026-10-18T08:40:45.976Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios, POST} route"}
{"timestamp":"2026-10-18T08:40:45.976Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios/generate-content, POST} route"}
{"timestamp":"2026-10-18T08:40:45.976Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios, GET} route"}
{"timestamp":"2026-10-18T08:40:45.976Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios/:id, GET} route"}
{"timestamp":"2026-10-18T08:40:45.976Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios/:id, PUT} route"}
{"timestamp":"2026-10-18T08:40:45.976Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios/:id, DELETE} route"}
{"timestamp":"2026-10-18T08:40:45.977Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios/generate-from-json, POST} route"}
{"timestamp":"2026-10-18T08:40:45.977Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios/:id/save-as-custom-scenario, POST} route"}
{"timestamp":"2026-10-18T08:40:45.977Z","level":"log","context":"RoutesResolver","message":"CampaignController {/campaigns}:"}
{"timestamp":"2026-10-18T08:40:45.977Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns, POST} route"}
{"timestamp":"2026-10-18T08:40:45.977Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns, GET} route"}
{"timestamp":"2026-10-18T08:40:45.977Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id, GET} route"}
{"timestamp":"2026-10-18T08:40:45.977Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id/details, GET} route"}
{"timestamp":"2026-10-18T08:40:45.978Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id/employees, GET} route"}
{"timestamp":"2026-10-18T08:40:45.978Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id, PATCH} route"}
{"timestamp":"2026-10-18T08:40:45.978Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id/start, POST} route"}
{"timestamp":"2026-10-18T08:40:45.978Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id/stop, POST} route"}
{"timestamp":"2026-10-18T08:40:45.978Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id/duplicate, POST} route"}
{"timestamp":"2026-10-18T08:40:45.978Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id, DELETE} route"}
{"timestamp":"2026-10-18T08:40:45.979Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/auto-generate-program, POST} route"}
{"timestamp":"2026-10-18T08:40:45.979Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/generate-from-threat-intelligence, POST} route"}
{"timestamp":"2026-10-18T08:40:45.979Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id/risk-score, GET} route"}
{"timestamp":"2026-10-18T08:40:45.979Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/recalculate-risk-scores, POST} route"}
{"timestamp":"2026-10-18T08:40:45.979Z","level":"log","context":"RoutesResolver","message":"CampaignController {/api/campaigns}:"}
{"timestamp":"2026-10-18T08:40:45.979Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns, POST} route"}
{"timestamp":"2026-10-18T08:40:45.979Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns, GET} route"}
{"timestamp":"2026-10-18T08:40:45.979Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id, GET} route"}
{"timestamp":"2026-10-18T08:40:45.980Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id/details, GET} route"}
{"timestamp":"2026-10-18T08:40:45.980Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id/employees, GET} route"}
{"timestamp":"2026-10-18T08:40:45.980Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id, PATCH} route"}
{"timestamp":"2026-10-18T08:40:45.980Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id/start, POST} route"}
{"timestamp":"2026-10-18T08:40:45.980Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id/stop, POST} route"}
{"timestamp":"2026-10-18T08:40:45.980Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id/duplicate, POST} route"}
{"timestamp":"2026-10-18T08:40:45.980Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id, DELETE} route"}
{"timestamp":"2026-10-18T08:40:45.981Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/auto-generate-program, POST} route"}
{"timestamp":"2026-10-18T08:40:45.981Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/generate-from-threat-intelligence, POST} route"}
{"timestamp":"2026-10-18T08:40:45.981Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id/risk-score, GET} route"}
{"timestamp":"2026-10-18T08:40:45.981Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/recalculate-risk-scores, POST} route"}
{"timestamp":"2026-10-18T08:40:45.981Z","level":"log","context":"RoutesResolver","message":"NotificationsController {/notifications}:"}
{"timestamp":"2026-10-18T08:40:45.981Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications, POST} route"}
{"timestamp":"2026-10-18T08:40:45.982Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications, GET} route"}
{"timestamp":"2026-10-18T08:40:45.982Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/unread, GET} route"}
{"timestamp":"2026-10-18T08:40:45.982Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/unread-count, GET} route"}
{"timestamp":"2026-10-18T08:40:45.982Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/:id, GET} route"}
{"timestamp":"2026-10-18T08:40:45.982Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/:id, PATCH} route"}
{"timestamp":"2026-10-18T08:40:45.982Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/:id/read, PATCH} route"}
{"timestamp":"2026-10-18T08:40:45.982Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/mark-all-read, PATCH} route"}
{"timestamp":"2026-10-18T08:40:45.983Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/:id, DELETE} route"}
{"timestamp":"2026-10-18T08:40:45.983Z","level":"log","context":"RoutesResolver","message":"LandingPageController {/lp}:"}
{"timestamp":"2026-10-18T08:40:45.983Z","level":"log","context":"RouterExplorer","message":"Mapped {/lp/image, GET} route"}
{"timestamp":"2026-10-18T08:40:45.983Z","level":"log","context":"RouterExplorer","message":"Mapped {/lp/learning, GET} route"}
{"timestamp":"2026-10-18T08:40:45.983Z","level":"log","context":"RouterExplorer","message":"Mapped {/lp/submit, POST} route"}
{"timestamp":"2026-10-18T08:40:45.983Z","level":"log","context":"RouterExplorer","message":"Mapped {/lp/test, GET} route"}
{"timestamp":"2026-10-18T08:40:45.984Z","level":"warn","context":"LegacyRouteConverter","message":"Unsupported route path: \"/lp/*\". In previous versions, the symbols ?, *, and + were used to denote optional or repeating path parameters. The latest version of \"path-to-regexp\" now requires the use of named parameters. For example, instead of using a route like /users/* to capture all routes starting with \"/users\", you should use /users/*path. For more details, refer to the migration guide. Attempting to auto-convert..."}
{"timestamp":"2026-10-18T08:40:45.984Z","level":"log","context":"RouterExplorer","message":"Mapped {/lp/*, ALL} route"}
{"timestamp":"2026-10-18T08:40:45.984Z","level":"log","context":"RoutesResolver","message":"SupportController {/support}:"}
{"timestamp":"2026-10-18T08:40:45.985Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets, POST} route"}
{"timestamp":"2026-10-18T08:40:45.985Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets, GET} route"}
{"timestamp":"2026-10-18T08:40:45.985Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets/:id, GET} route"}
{"timestamp":"2026-10-18T08:40:45.985Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets/:id, PATCH} route"}
{"timestamp":"2026-10-18T08:40:45.985Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets/:id, DELETE} route"}
{"timestamp":"2026-10-18T08:40:45.985Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets/:id/messages, POST} route"}
{"timestamp":"2026-10-18T08:40:45.986Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets/:id/close, POST} route"}
{"timestamp":"2026-10-18T08:40:45.986Z","level":"log","context":"RoutesResolver","message":"BusninessMetricsController {/business-metrics}:"}
{"timestamp":"2026-10-18T08:40:45.986Z","level":"log","context":"RouterExplorer","message":"Mapped {/business-metrics, GET} route"}
{"timestamp":"2026-10-18T08:40:45.986Z","level":"log","context":"RoutesResolver","message":"UsersController {/users}:"}
{"timestamp":"2026-10-18T08:40:45.986Z","level":"log","context":"RouterExplorer","message":"Mapped {/users/:id, PUT} route"}
{"timestamp":"2026-10-18T08:40:45.986Z","level":"log","context":"RouterExplorer","message":"Mapped {/users/settings, GET} route"}
{"timestamp":"2026-10-18T08:40:45.986Z","level":"log","context":"RouterExplorer","message":"Mapped {/users/settings/general, PUT} route"}
{"timestamp":"2026-10-18T08:40:45.987Z","level":"log","context":"RouterExplorer","message":"Mapped {/users/company/settings, PUT} route"}
{"timestamp":"2026-10-18T08:40:45.987Z","level":"log","context":"RouterExplorer","message":"Mapped {/users/change-password, POST} route"}
{"timestamp":"2026-10-18T08:40:45.987Z","level":"log","context":"RouterExplorer","message":"Mapped {/users/localization/settings, PUT} route"}
{"timestamp":"2026-10-18T08:40:45.987Z","level":"log","context":"RoutesResolver","message":"PartnerController {/partner}:"}
{"timestamp":"2026-10-18T08:40:45.987Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses, POST} route"}
{"timestamp":"2026-10-18T08:40:45.987Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses, GET} route"}
{"timestamp":"2026-10-18T08:40:45.987Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses/:id, GET} route"}
{"timestamp":"2026-10-18T08:40:45.988Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses/:id, PUT} route"}
{"timestamp":"2026-10-18T08:40:45.988Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses/:id, DELETE} route"}
{"timestamp":"2026-10-18T08:40:45.988Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses/:id/impersonate, POST} route"}
{"timestamp":"2026-10-18T08:40:45.988Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses/stop-impersonation, POST} route"}
{"timestamp":"2026-10-18T08:40:45.988Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/license-usage, GET} route"}
{"timestamp":"2026-10-18T08:40:45.988Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/invoices, POST} route"}
{"timestamp":"2026-10-18T08:40:45.988Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/invoices, GET} route"}
{"timestamp":"2026-10-18T08:40:45.989Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/invoices/:id, GET} route"}
{"timestamp":"2026-10-18T08:40:45.989Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/invoices/:id, PUT} route"}
{"timestamp":"2026-10-18T08:40:45.989Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/invoices/:id, DELETE} route"}
{"timestamp":"2026-10-18T08:40:45.989Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/invoices/:id/mark-paid, PUT} route"}
{"timestamp":"2026-10-18T08:40:45.989Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/onboarding/generate-token, POST} route"}
{"timestamp":"2026-10-18T08:40:45.989Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/dashboard, GET} route"}
{"timestamp":"2026-10-18T08:40:45.989Z","level":"log","context":"RoutesResolver","message":"MspSubscriptionController {/partner/msp-subscriptions}:"}
{"timestamp":"2026-10-18T08:40:45.989Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/plans, POST} route"}
{"timestamp":"2026-10-18T08:40:45.990Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/plans, GET} route"}
{"timestamp":"2026-10-18T08:40:45.990Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/plans/:planId, GET} route"}
{"timestamp":"2026-10-18T08:40:45.990Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/plans/:planId, PUT} route"}
{"timestamp":"2026-10-18T08:40:45.990Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/plans/:planId, DELETE} route"}
{"timestamp":"2026-10-18T08:40:45.990Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/businesses/:businessId/subscription, POST} route"}
{"timestamp":"2026-10-18T08:40:45.990Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions, GET} route"}
{"timestamp":"2026-10-18T08:40:45.991Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/businesses/:businessId/subscription, GET} route"}
{"timestamp":"2026-10-18T08:40:45.991Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/businesses/:businessId/subscription, PUT} route"}
{"timestamp":"2026-10-18T08:40:45.991Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/businesses/:businessId/subscription, DELETE} route"}
{"timestamp":"2026-10-18T08:40:45.991Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/businesses/:businessId/subscription/limits, GET} route"}
{"timestamp":"2026-10-18T08:40:45.991Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/businesses/:businessId/subscription/change-plan, PUT} route"}
{"timestamp":"2026-10-18T08:40:45.991Z","level":"log","context":"RoutesResolver","message":"OnboardingController {/onboarding}:"}
{"timestamp":"2026-10-18T08:40:45.991Z","level":"log","context":"RouterExplorer","message":"Mapped {/onboarding/validate/:token, GET} route"}
{"timestamp":"2026-10-18T08:40:45.992Z","level":"log","context":"RouterExplorer","message":"Mapped {/onboarding/complete/:token, POST} route"}
{"timestamp":"2026-10-18T08:40:45.992Z","level":"log","context":"RoutesResolver","message":"ResellerController {/reseller}:"}
{"timestamp":"2026-10-18T08:40:45.992Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/businesses, POST} route"}
{"timestamp":"2026-10-18T08:40:45.992Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/businesses, GET} route"}
{"timestamp":"2026-10-18T08:40:45.992Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/businesses/:id, GET} route"}
{"timestamp":"2026-10-18T08:40:45.992Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/businesses/:id, PUT} route"}
{"timestamp":"2026-10-18T08:40:45.992Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/businesses/:id, DELETE} route"}
{"timestamp":"2026-10-18T08:40:45.992Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/license-usage, GET} route"}
{"timestamp":"2026-10-18T08:40:45.993Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/invoices, POST} route"}
{"timestamp":"2026-10-18T08:40:45.993Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/invoices, GET} route"}
{"timestamp":"2026-10-18T08:40:45.993Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/invoices/:id, GET} route"}
{"timestamp":"2026-10-18T08:40:45.993Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/invoices/:id, PUT} route"}
{"timestamp":"2026-10-18T08:40:45.993Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/invoices/:id, DELETE} route"}
{"timestamp":"2026-10-18T08:40:45.993Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/invoices/:id/mark-paid, PUT} route"}
{"timestamp":"2026-10-18T08:40:45.993Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/onboarding/generate-token, POST} route"}
{"timestamp":"2026-10-18T08:40:45.994Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/dashboard, GET} route"}
{"timestamp":"2026-10-18T08:40:45.994Z","level":"log","context":"RoutesResolver","message":"ResellerSubscriptionController {/reseller}:"}
{"timestamp":"2026-10-18T08:40:45.994Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/plans, POST} route"}
{"timestamp":"2026-10-18T08:40:45.994Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/plans, GET} route"}
{"timestamp":"2026-10-18T08:40:45.994Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/plans/:planId, GET} route"}
{"timestamp":"2026-10-18T08:40:45.994Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/plans/:planId, PUT} route"}
{"timestamp":"2026-10-18T08:40:45.994Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/plans/:planId, DELETE} route"}
{"timestamp":"2026-10-18T08:40:45.995Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/subscriptions/businesses/:businessId/subscription, POST} route"}
{"timestamp":"2026-10-18T08:40:45.995Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/subscriptions, GET} route"}
{"timestamp":"2026-10-18T08:40:45.995Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/subscriptions/businesses/:businessId/subscription, GET} route"}
{"timestamp":"2026-10-18T08:40:45.995Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/subscriptions/businesses/:businessId/subscription, PUT} route"}
{"timestamp":"2026-10-18T08:40:45.995Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/subscriptions/businesses/:businessId/subscription, DELETE} route"}
{"timestamp":"2026-10-18T08:40:45.995Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/subscriptions/businesses/:businessId/subscription/limits, GET} route"}
{"timestamp":"2026-10-18T08:40:45.995Z","level":"log","context":"RoutesResolver","message":"HealthController {/health}:"}
{"timestamp":"2026-10-18T08:40:45.995Z","level":"log","context":"RouterExplorer","message":"Mapped {/health, GET} route"}
{"timestamp":"2026-10-18T08:40:45.996Z","level":"log","context":"RouterExplorer","message":"Mapped {/health/test-logs, GET} route"}
{"timestamp":"2026-10-18T08:40:45.996Z","level":"log","context":"RoutesResolver","message":"AzureAdController {/azure-ad}:"}
{"timestamp":"2026-10-18T08:40:45.996Z","level":"log","context":"RouterExplorer","message":"Mapped {/azure-ad/config, POST} route"}
{"timestamp":"2026-10-18T08:40:45.996Z","level":"log","context":"RouterExplorer","message":"Mapped {/azure-ad/config, GET} route"}
{"timestamp":"2026-10-18T08:40:45.996Z","level":"log","context":"RouterExplorer","message":"Mapped {/azure-ad/test-connection, POST} route"}
{"timestamp":"2026-10-18T08:40:45.996Z","level":"log","context":"RouterExplorer","message":"Mapped {/azure-ad/sync, POST} route"}
{"timestamp":"2026-10-18T08:40:45.996Z","level":"log","context":"RoutesResolver","message":"ThreatsController {/threats}:"}
{"timestamp":"2026-10-18T08:40:45.996Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats, POST} route"}
{"timestamp":"2026-10-18T08:40:45.997Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats, GET} route"}
{"timestamp":"2026-10-18T08:40:45.997Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/chart-data, GET} route"}
{"timestamp":"2026-10-18T08:40:45.997Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/claude-search, POST} route"}
{"timestamp":"2026-10-18T08:40:45.997Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/claude-latest, POST} route"}
{"timestamp":"2026-10-18T08:40:45.997Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/claude-trending, POST} route"}
{"timestamp":"2026-10-18T08:40:45.997Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/claude-categories, POST} route"}
{"timestamp":"2026-10-18T08:40:45.997Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/claude-manual-search, POST} route"}
{"timestamp":"2026-10-18T08:40:45.998Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/claude-quick-search, POST} route"}
{"timestamp":"2026-10-18T08:40:45.998Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/scheduler-status, GET} route"}
{"timestamp":"2026-10-18T08:40:45.998Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/health-check, GET} route"}
{"timestamp":"2026-10-18T08:40:45.998Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/pause-scheduler, POST} route"}
{"timestamp":"2026-10-18T08:40:45.998Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/:id, GET} route"}
{"timestamp":"2026-10-18T08:40:45.998Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/:id, PATCH} route"}
{"timestamp":"2026-10-18T08:40:45.998Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/:id, DELETE} route"}
{"timestamp":"2026-10-18T08:40:45.998Z","level":"log","context":"RoutesResolver","message":"DomainController {/domains}:"}
{"timestamp":"2026-10-18T08:40:45.999Z","level":"log","context":"RouterExplorer","message":"Mapped {/domains, GET} route"}
{"timestamp":"2026-10-18T08:40:45.999Z","level":"log","context":"RouterExplorer","message":"Mapped {/domains/:id, GET} route"}
{"timestamp":"2026-10-18T08:40:45.999Z","level":"log","context":"RouterExplorer","message":"Mapped {/domains, POST} route"}
{"timestamp":"2026-10-18T08:40:45.999Z","level":"log","context":"RouterExplorer","message":"Mapped {/domains/:id, PUT} route"}
{"timestamp":"2026-10-18T08:40:45.999Z","level":"log","context":"RouterExplorer","message":"Mapped {/domains/:id, DELETE} route"}
{"timestamp":"2026-10-18T08:40:45.999Z","level":"log","context":"RouterExplorer","message":"Mapped {/domains/seed, POST} route"}
{"timestamp":"2026-10-18T08:40:45.999Z","level":"log","context":"RoutesResolver","message":"MspSubscriptionController {/msp-subscription}:"}
{"timestamp":"2026-10-18T08:40:46.000Z","level":"log","context":"RouterExplorer","message":"Mapped {/msp-subscription/current, GET} route"}
{"timestamp":"2026-10-18T08:40:46.000Z","level":"log","context":"RouterExplorer","message":"Mapped {/msp-subscription/invoices, GET} route"}
{"timestamp":"2026-10-18T08:40:46.000Z","level":"log","context":"RouterExplorer","message":"Mapped {/msp-subscription/invoice/:invoiceId/pdf, GET} route"}
{"timestamp":"2026-10-18T08:40:46.000Z","level":"log","context":"RoutesResolver","message":"MspSubscriptionController {/api/msp-subscription}:"}
{"timestamp":"2026-10-18T08:40:46.000Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/msp-subscription/current, GET} route"}
{"timestamp":"2026-10-18T08:40:46.000Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/msp-subscription/invoices, GET} route"}
{"timestamp":"2026-10-18T08:40:46.000Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/msp-subscription/invoice/:invoiceId/pdf, GET} route"}
{"timestamp":"2026-10-18T08:40:46.067Z","level":"log","context":"NestApplication","message":"Nest application successfully started"}
{"timestamp":"2026-10-18T08:40:46.081Z","level":"log","context":"Bootstrap","message":"Users API successfully started on port 3842"}
{"timestamp":"2026-10-18T08:40:46.081Z","level":"log","context":"SeedService","message":"🌱 Starting database seeding..."}
{"timestamp":"2026-10-18T08:40:46.083Z","level":"log","context":"SeedService","message":"Admin account already exists, skipping seed"}
{"timestamp":"2026-10-18T08:40:46.085Z","level":"log","context":"SeedService","message":"Reseller account already exists, skipping seed"}
{"timestamp":"2026-10-18T08:40:46.087Z","level":"log","context":"SeedService","message":"MSP account already exists, skipping seed"}
{"timestamp":"2026-10-18T08:40:46.087Z","level":"log","context":"SeedService","message":"✅ Database seeding completed successfully"}
{"timestamp":"2026-10-18T09:50:03.183Z","level":"warn","context":"LegacyRouteConverter","message":"Unsupported route path: \"/lp/*\". In previous versions, the symbols ?, *, and + were used to denote optional or repeating path parameters. The latest version of \"path-to-regexp\" now requires the use of named parameters. For example, instead of using a route like /users/* to capture all routes starting with \"/users\", you should use /users/*path. For more details, refer to the migration guide. Attempting to auto-convert..."}
{"timestamp":"2026-10-18T09:50:03.227Z","level":"log","context":"Bootstrap","message":"Starting Users API on port 3842..."}
{"timestamp":"2026-10-18T09:50:03.231Z","level":"log","context":"RoutesResolver","message":"UsersApiController {/}:"}
{"timestamp":"2026-10-18T09:50:03.235Z","level":"log","context":"RouterExplorer","message":"Mapped {/, GET} route"}
{"timestamp":"2026-10-18T09:50:03.235Z","level":"log","context":"RoutesResolver","message":"AuthController {/auth}:"}
{"timestamp":"2026-10-18T09:50:03.236Z","level":"log","context":"RouterExplorer","message":"Mapped {/auth/login, POST} route"}
{"timestamp":"2026-10-18T09:50:03.237Z","level":"log","context":"RouterExplorer","message":"Mapped {/auth/admin/login, POST} route"}
{"timestamp":"2026-10-18T09:50:03.237Z","level":"log","context":"RouterExplorer","message":"Mapped {/auth/send-otp, POST} route"}
{"timestamp":"2026-10-18T09:50:03.238Z","level":"log","context":"RouterExplorer","message":"Mapped {/auth/verify-otp, POST} route"}
{"timestamp":"2026-10-18T09:50:03.238Z","level":"log","context":"RouterExplorer","message":"Mapped {/auth/signup, POST} route"}
{"timestamp":"2026-10-18T09:50:03.239Z","level":"log","context":"RouterExplorer","message":"Mapped {/auth/subscription-status, GET} route"}
{"timestamp":"2026-10-18T09:50:03.239Z","level":"log","context":"RoutesResolver","message":"AdminMspController {/admin/msp}:"}
{"timestamp":"2026-10-18T09:50:03.239Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/msp, GET} route"}
{"timestamp":"2026-10-18T09:50:03.240Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/msp/:id, GET} route"}
{"timestamp":"2026-10-18T09:50:03.241Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/msp, POST} route"}
{"timestamp":"2026-10-18T09:50:03.241Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/msp/:id, PUT} route"}
{"timestamp":"2026-10-18T09:50:03.242Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/msp/:id, DELETE} route"}
{"timestamp":"2026-10-18T09:50:03.242Z","level":"log","context":"RoutesResolver","message":"AdminLicenseController {/admin/licenses}:"}
{"timestamp":"2026-10-18T09:50:03.242Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/licenses/summary, GET} route"}
{"timestamp":"2026-10-18T09:50:03.242Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/licenses/msp/:mspId, GET} route"}
{"timestamp":"2026-10-18T09:50:03.243Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/licenses/msp/:mspId, PUT} route"}
{"timestamp":"2026-10-18T09:50:03.243Z","level":"log","context":"RoutesResolver","message":"AdminImpersonationController {/admin/impersonation}:"}
{"timestamp":"2026-10-18T09:50:03.243Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/impersonation/msp-users, GET} route"}
{"timestamp":"2026-10-18T09:50:03.243Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/impersonation/impersonate, POST} route"}
{"timestamp":"2026-10-18T09:50:03.247Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/impersonation/stop, POST} route"}
{"timestamp":"2026-10-18T09:50:03.247Z","level":"log","context":"RoutesResolver","message":"AdminAiUsageController {/admin/ai-usage}:"}
{"timestamp":"2026-10-18T09:50:03.247Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-usage, GET} route"}
{"timestamp":"2026-10-18T09:50:03.247Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-usage/business/:businessId, GET} route"}
{"timestamp":"2026-10-18T09:50:03.247Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-usage/report/monthly, GET} route"}
{"timestamp":"2026-10-18T09:50:03.248Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-usage/pricing, GET} route"}
{"timestamp":"2026-10-18T09:50:03.248Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-usage/pricing, POST} route"}
{"timestamp":"2026-10-18T09:50:03.248Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-usage/credit/:businessId, PUT} route"}
{"timestamp":"2026-10-18T09:50:03.248Z","level":"log","context":"RoutesResolver","message":"AdminAiUsageController {/api/admin/ai-usage}:"}
{"timestamp":"2026-10-18T09:50:03.248Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-usage, GET} route"}
{"timestamp":"2026-10-18T09:50:03.249Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-usage/business/:businessId, GET} route"}
{"timestamp":"2026-10-18T09:50:03.249Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-usage/report/monthly, GET} route"}
{"timestamp":"2026-10-18T09:50:03.249Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-usage/pricing, GET} route"}
{"timestamp":"2026-10-18T09:50:03.249Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-usage/pricing, POST} route"}
{"timestamp":"2026-10-18T09:50:03.249Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-usage/credit/:businessId, PUT} route"}
{"timestamp":"2026-10-18T09:50:03.249Z","level":"log","context":"RoutesResolver","message":"AdminAiModelController {/admin/ai-models}:"}
{"timestamp":"2026-10-18T09:50:03.250Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models, POST} route"}
{"timestamp":"2026-10-18T09:50:03.250Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models, GET} route"}
{"timestamp":"2026-10-18T09:50:03.250Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/default, GET} route"}
{"timestamp":"2026-10-18T09:50:03.250Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/:id, GET} route"}
{"timestamp":"2026-10-18T09:50:03.250Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/:id, PUT} route"}
{"timestamp":"2026-10-18T09:50:03.251Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/:id, DELETE} route"}
{"timestamp":"2026-10-18T09:50:03.251Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/:id/set-default, POST} route"}
{"timestamp":"2026-10-18T09:50:03.251Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/assign-to-business, POST} route"}
{"timestamp":"2026-10-18T09:50:03.251Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/business/:businessId, GET} route"}
{"timestamp":"2026-10-18T09:50:03.252Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/:id/businesses, GET} route"}
{"timestamp":"2026-10-18T09:50:03.252Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/initialize-defaults, POST} route"}
{"timestamp":"2026-10-18T09:50:03.252Z","level":"log","context":"RoutesResolver","message":"AdminAiModelController {/api/admin/ai-models}:"}
{"timestamp":"2026-10-18T09:50:03.252Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models, POST} route"}
{"timestamp":"2026-10-18T09:50:03.252Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models, GET} route"}
{"timestamp":"2026-10-18T09:50:03.252Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/default, GET} route"}
{"timestamp":"2026-10-18T09:50:03.252Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/:id, GET} route"}
{"timestamp":"2026-10-18T09:50:03.253Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/:id, PUT} route"}
{"timestamp":"2026-10-18T09:50:03.253Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/:id, DELETE} route"}
{"timestamp":"2026-10-18T09:50:03.253Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/:id/set-default, POST} route"}
{"timestamp":"2026-10-18T09:50:03.253Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/assign-to-business, POST} route"}
{"timestamp":"2026-10-18T09:50:03.253Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/business/:businessId, GET} route"}
{"timestamp":"2026-10-18T09:50:03.253Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/:id/businesses, GET} route"}
{"timestamp":"2026-10-18T09:50:03.254Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/initialize-defaults, POST} route"}
{"timestamp":"2026-10-18T09:50:03.254Z","level":"log","context":"RoutesResolver","message":"AdminBusinessController {/admin/businesses}:"}
{"timestamp":"2026-10-18T09:50:03.254Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/businesses, GET} route"}
{"timestamp":"2026-10-18T09:50:03.254Z","level":"log","context":"RoutesResolver","message":"ResellerManagementController {/admin/resellers}:"}
{"timestamp":"2026-10-18T09:50:03.254Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/resellers, GET} route"}
{"timestamp":"2026-10-18T09:50:03.255Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/resellers/create-default, POST} route"}
{"timestamp":"2026-10-18T09:50:03.255Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/resellers, POST} route"}
{"timestamp":"2026-10-18T09:50:03.255Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/resellers/:id/toggle-status, PUT} route"}
{"timestamp":"2026-10-18T09:50:03.255Z","level":"log","context":"RoutesResolver","message":"SubscriptionController {/subscription}:"}
{"timestamp":"2026-10-18T09:50:03.255Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/plans, GET} route"}
{"timestamp":"2026-10-18T09:50:03.255Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/calculate-price, POST} route"}
{"timestamp":"2026-10-18T09:50:03.256Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/current, GET} route"}
{"timestamp":"2026-10-18T09:50:03.256Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/create, POST} route"}
{"timestamp":"2026-10-18T09:50:03.256Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/:id, PUT} route"}
{"timestamp":"2026-10-18T09:50:03.256Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/:id/cancel, DELETE} route"}
{"timestamp":"2026-10-18T09:50:03.256Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/sync/:stripeSubscriptionId, POST} route"}
{"timestamp":"2026-10-18T09:50:03.257Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/payments, GET} route"}
{"timestamp":"2026-10-18T09:50:03.257Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/payments/stats, GET} route"}
{"timestamp":"2026-10-18T09:50:03.257Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/payment/:id, GET} route"}
{"timestamp":"2026-10-18T09:50:03.257Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/payment-methods/attach, POST} route"}
{"timestamp":"2026-10-18T09:50:03.257Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/payment-methods/:paymentMethodId, DELETE} route"}
{"timestamp":"2026-10-18T09:50:03.257Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/payment-methods, GET} route"}
{"timestamp":"2026-10-18T09:50:03.258Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/setup-intent, POST} route"}
{"timestamp":"2026-10-18T09:50:03.258Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/update-employee-count, POST} route"}
{"timestamp":"2026-10-18T09:50:03.258Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/retry-payment/:subscriptionId, POST} route"}
{"timestamp":"2026-10-18T09:50:03.258Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/invoice/:invoiceId/pdf, GET} route"}
{"timestamp":"2026-10-18T09:50:03.258Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/preview-upgrade, POST} route"}
{"timestamp":"2026-10-18T09:50:03.258Z","level":"log","context":"RoutesResolver","message":"SubscriptionController {/api/subscription}:"}
{"timestamp":"2026-10-18T09:50:03.259Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/plans, GET} route"}
{"timestamp":"2026-10-18T09:50:03.259Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/calculate-price, POST} route"}
{"timestamp":"2026-10-18T09:50:03.259Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/current, GET} route"}
{"timestamp":"2026-10-18T09:50:03.259Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/create, POST} route"}
{"timestamp":"2026-10-18T09:50:03.259Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/:id, PUT} route"}
{"timestamp":"2026-10-18T09:50:03.259Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/:id/cancel, DELETE} route"}
{"timestamp":"2026-10-18T09:50:03.260Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/sync/:stripeSubscriptionId, POST} route"}
{"timestamp":"2026-10-18T09:50:03.260Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/payments, GET} route"}
{"timestamp":"2026-10-18T09:50:03.260Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/payments/stats, GET} route"}
{"timestamp":"2026-10-18T09:50:03.260Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/payment/:id, GET} route"}
{"timestamp":"2026-10-18T09:50:03.260Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/payment-methods/attach, POST} route"}
{"timestamp":"2026-10-18T09:50:03.260Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/payment-methods/:paymentMethodId, DELETE} route"}
{"timestamp":"2026-10-18T09:50:03.261Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/payment-methods, GET} route"}
{"timestamp":"2026-10-18T09:50:03.261Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/setup-intent, POST} route"}
{"timestamp":"2026-10-18T09:50:03.261Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/update-employee-count, POST} route"}
{"timestamp":"2026-10-18T09:50:03.261Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/retry-payment/:subscriptionId, POST} route"}
{"timestamp":"2026-10-18T09:50:03.261Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/invoice/:invoiceId/pdf, GET} route"}
{"timestamp":"2026-10-18T09:50:03.261Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/preview-upgrade, POST} route"}
{"timestamp":"2026-10-18T09:50:03.262Z","level":"log","context":"RoutesResolver","message":"StripeWebhookController {/stripe/webhook}:"}
{"timestamp":"2026-10-18T09:50:03.262Z","level":"log","context":"RouterExplorer","message":"Mapped {/stripe/webhook/test, GET} route"}
{"timestamp":"2026-10-18T09:50:03.262Z","level":"log","context":"RouterExplorer","message":"Mapped {/stripe/webhook, POST} route"}
{"timestamp":"2026-10-18T09:50:03.262Z","level":"log","context":"RoutesResolver","message":"EmailController {/email-templates}:"}
{"timestamp":"2026-10-18T09:50:03.262Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates/test, POST} route"}
{"timestamp":"2026-10-18T09:50:03.262Z","level":"log","context":"RoutesResolver","message":"EmployeeController {/employees}:"}
{"timestamp":"2026-10-18T09:50:03.263Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees, POST} route"}
{"timestamp":"2026-10-18T09:50:03.263Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees, GET} route"}
{"timestamp":"2026-10-18T09:50:03.263Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees/export, GET} route"}
{"timestamp":"2026-10-18T09:50:03.263Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees/risk-stats, GET} route"}
{"timestamp":"2026-10-18T09:50:03.263Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees/:id, GET} route"}
{"timestamp":"2026-10-18T09:50:03.263Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees/:id, PUT} route"}
{"timestamp":"2026-10-18T09:50:03.264Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees/:id, DELETE} route"}
{"timestamp":"2026-10-18T09:50:03.264Z","level":"log","context":"RoutesResolver","message":"GroupController {/groups}:"}
{"timestamp":"2026-10-18T09:50:03.264Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups, POST} route"}
{"timestamp":"2026-10-18T09:50:03.264Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups, GET} route"}
{"timestamp":"2026-10-18T09:50:03.264Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups/standard, GET} route"}
{"timestamp":"2026-10-18T09:50:03.264Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups/:id, GET} route"}
{"timestamp":"2026-10-18T09:50:03.265Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups/:id, PUT} route"}
{"timestamp":"2026-10-18T09:50:03.265Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups/:id, DELETE} route"}
{"timestamp":"2026-10-18T09:50:03.265Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups/:id/info, GET} route"}
{"timestamp":"2026-10-18T09:50:03.265Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups/:id/with-employees, GET} route"}
{"timestamp":"2026-10-18T09:50:03.265Z","level":"log","context":"RoutesResolver","message":"SenderProfileController {/sender-profiles}:"}
{"timestamp":"2026-10-18T09:50:03.265Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles, GET} route"}
{"timestamp":"2026-10-18T09:50:03.266Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles/:id, GET} route"}
{"timestamp":"2026-10-18T09:50:03.266Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles, POST} route"}
{"timestamp":"2026-10-18T09:50:03.266Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles/:id, PUT} route"}
{"timestamp":"2026-10-18T09:50:03.266Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles/:id, DELETE} route"}
{"timestamp":"2026-10-18T09:50:03.266Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles/:id/verify-domain, POST} route"}
{"timestamp":"2026-10-18T09:50:03.266Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles/domain-verification, GET} route"}
{"timestamp":"2026-10-18T09:50:03.267Z","level":"log","context":"RoutesResolver","message":"EmailTemplateController {/email-templates}:"}
{"timestamp":"2026-10-18T09:50:03.267Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates, GET} route"}
{"timestamp":"2026-10-18T09:50:03.267Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates/:id, GET} route"}
{"timestamp":"2026-10-18T09:50:03.267Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates, POST} route"}
{"timestamp":"2026-10-18T09:50:03.267Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates/:id, PUT} route"}
{"timestamp":"2026-10-18T09:50:03.267Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates/:id, DELETE} route"}
{"timestamp":"2026-10-18T09:50:03.268Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates/:id/duplicate, POST} route"}
{"timestamp":"2026-10-18T09:50:03.268Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates/:id/preview, GET} route"}
{"timestamp":"2026-10-18T09:50:03.268Z","level":"log","context":"RoutesResolver","message":"ScenarioController {/scenarios}:"}
{"timestamp":"2026-10-18T09:50:03.268Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios, POST} route"}
{"timestamp":"2026-10-18T09:50:03.268Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios/generate-content, POST} route"}
{"timestamp":"2026-10-18T09:50:03.268Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios, GET} route"}
{"timestamp":"2026-10-18T09:50:03.269Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios/:id, GET} route"}
{"timestamp":"2026-10-18T09:50:03.269Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios/:id, PUT} route"}
{"timestamp":"2026-10-18T09:50:03.269Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios/:id, DELETE} route"}
{"timestamp":"2026-10-18T09:50:03.269Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios/generate-from-json, POST} route"}
{"timestamp":"2026-10-18T09:50:03.269Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios/:id/save-as-custom-scenario, POST} route"}
{"timestamp":"2026-10-18T09:50:03.269Z","level":"log","context":"RoutesResolver","message":"CampaignController {/campaigns}:"}
{"timestamp":"2026-10-18T09:50:03.270Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns, POST} route"}
{"timestamp":"2026-10-18T09:50:03.270Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns, GET} route"}
{"timestamp":"2026-10-18T09:50:03.270Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id, GET} route"}
{"timestamp":"2026-10-18T09:50:03.270Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id/details, GET} route"}
{"timestamp":"2026-10-18T09:50:03.270Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id/employees, GET} route"}
{"timestamp":"2026-10-18T09:50:03.271Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id, PATCH} route"}
{"timestamp":"2026-10-18T09:50:03.271Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id/start, POST} route"}
{"timestamp":"2026-10-18T09:50:03.271Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id/stop, POST} route"}
{"timestamp":"2026-10-18T09:50:03.271Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id/duplicate, POST} route"}
{"timestamp":"2026-10-18T09:50:03.271Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id, DELETE} route"}
{"timestamp":"2026-10-18T09:50:03.272Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/auto-generate-program, POST} route"}
{"timestamp":"2026-10-18T09:50:03.272Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/generate-from-threat-intelligence, POST} route"}
{"timestamp":"2026-10-18T09:50:03.272Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id/risk-score, GET} route"}
{"timestamp":"2026-10-18T09:50:03.272Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/recalculate-risk-scores, POST} route"}
{"timestamp":"2026-10-18T09:50:03.272Z","level":"log","context":"RoutesResolver","message":"CampaignController {/api/campaigns}:"}
{"timestamp":"2026-10-18T09:50:03.273Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns, POST} route"}
{"timestamp":"2026-10-18T09:50:03.273Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns, GET} route"}
{"timestamp":"2026-10-18T09:50:03.273Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id, GET} route"}
{"timestamp":"2026-10-18T09:50:03.273Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id/details, GET} route"}
{"timestamp":"2026-10-18T09:50:03.273Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id/employees, GET} route"}
{"timestamp":"2026-10-18T09:50:03.273Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id, PATCH} route"}
{"timestamp":"2026-10-18T09:50:03.274Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id/start, POST} route"}
{"timestamp":"2026-10-18T09:50:03.274Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id/stop, POST} route"}
{"timestamp":"2026-10-18T09:50:03.274Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id/duplicate, POST} route"}
{"timestamp":"2026-10-18T09:50:03.274Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id, DELETE} route"}
{"timestamp":"2026-10-18T09:50:03.274Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/auto-generate-program, POST} route"}
{"timestamp":"2026-10-18T09:50:03.274Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/generate-from-threat-intelligence, POST} route"}
{"timestamp":"2026-10-18T09:50:03.275Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id/risk-score, GET} route"}
{"timestamp":"2026-10-18T09:50:03.275Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/recalculate-risk-scores, POST} route"}
{"timestamp":"2026-10-18T09:50:03.275Z","level":"log","context":"RoutesResolver","message":"NotificationsController {/notifications}:"}
{"timestamp":"2026-10-18T09:50:03.275Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications, POST} route"}
{"timestamp":"2026-10-18T09:50:03.275Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications, GET} route"}
{"timestamp":"2026-10-18T09:50:03.276Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/unread, GET} route"}
{"timestamp":"2026-10-18T09:50:03.276Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/unread-count, GET} route"}
{"timestamp":"2026-10-18T09:50:03.276Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/:id, GET} route"}
{"timestamp":"2026-10-18T09:50:03.276Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/:id, PATCH} route"}
{"timestamp":"2026-10-18T09:50:03.276Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/:id/read, PATCH} route"}
{"timestamp":"2026-10-18T09:50:03.276Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/mark-all-read, PATCH} route"}
{"timestamp":"2026-10-18T09:50:03.277Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/:id, DELETE} route"}
{"timestamp":"2026-10-18T09:50:03.277Z","level":"log","context":"RoutesResolver","message":"LandingPageController {/lp}:"}
{"timestamp":"2026-10-18T09:50:03.277Z","level":"log","context":"RouterExplorer","message":"Mapped {/lp/image, GET} route"}
{"timestamp":"2026-10-18T09:50:03.277Z","level":"log","context":"RouterExplorer","message":"Mapped {/lp/learning, GET} route"}
{"timestamp":"2026-10-18T09:50:03.278Z","level":"log","context":"RouterExplorer","message":"Mapped {/lp/submit, POST} route"}
{"timestamp":"2026-10-18T09:50:03.278Z","level":"log","context":"RouterExplorer","message":"Mapped {/lp/test, GET} route"}
{"timestamp":"2026-10-18T09:50:03.278Z","level":"warn","context":"LegacyRouteConverter","message":"Unsupported route path: \"/lp/*\". In previous versions, the symbols ?, *, and + were used to denote optional or repeating path parameters. The latest version of \"path-to-regexp\" now requires the use of named parameters. For example, instead of using a route like /users/* to capture all routes starting with \"/users\", you should use /users/*path. For more details, refer to the migration guide. Attempting to auto-convert..."}
{"timestamp":"2026-10-18T09:50:03.279Z","level":"log","context":"RouterExplorer","message":"Mapped {/lp/*, ALL} route"}
{"timestamp":"2026-10-18T09:50:03.279Z","level":"log","context":"RoutesResolver","message":"SupportController {/support}:"}
{"timestamp":"2026-10-18T09:50:03.279Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets, POST} route"}
{"timestamp":"2026-10-18T09:50:03.279Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets, GET} route"}
{"timestamp":"2026-10-18T09:50:03.280Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets/:id, GET} route"}
{"timestamp":"2026-10-18T09:50:03.280Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets/:id, PATCH} route"}
{"timestamp":"2026-10-18T09:50:03.280Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets/:id, DELETE} route"}
{"timestamp":"2026-10-18T09:50:03.280Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets/:id/messages, POST} route"}
{"timestamp":"2026-10-18T09:50:03.280Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets/:id/close, POST} route"}
{"timestamp":"2026-10-18T09:50:03.281Z","level":"log","context":"RoutesResolver","message":"BusninessMetricsController {/business-metrics}:"}
{"timestamp":"2026-10-18T09:50:03.281Z","level":"log","context":"RouterExplorer","message":"Mapped {/business-metrics, GET} route"}
{"timestamp":"2026-10-18T09:50:03.281Z","level":"log","context":"RoutesResolver","message":"UsersController {/users}:"}
{"timestamp":"2026-10-18T09:50:03.281Z","level":"log","context":"RouterExplorer","message":"Mapped {/users/:id, PUT} route"}
{"timestamp":"2026-10-18T09:50:03.281Z","level":"log","context":"RouterExplorer","message":"Mapped {/users/settings, GET} route"}
{"timestamp":"2026-10-18T09:50:03.281Z","level":"log","context":"RouterExplorer","message":"Mapped {/users/settings/general, PUT} route"}
{"timestamp":"2026-10-18T09:50:03.282Z","level":"log","context":"RouterExplorer","message":"Mapped {/users/company/settings, PUT} route"}
{"timestamp":"2026-10-18T09:50:03.282Z","level":"log","context":"RouterExplorer","message":"Mapped {/users/change-password, POST} route"}
{"timestamp":"2026-10-18T09:50:03.282Z","level":"log","context":"RouterExplorer","message":"Mapped {/users/localization/settings, PUT} route"}
{"timestamp":"2026-10-18T09:50:03.282Z","level":"log","context":"RoutesResolver","message":"PartnerController {/partner}:"}
{"timestamp":"2026-10-18T09:50:03.282Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses, POST} route"}
{"timestamp":"2026-10-18T09:50:03.283Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses, GET} route"}
{"timestamp":"2026-10-18T09:50:03.283Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses/:id, GET} route"}
{"timestamp":"2026-10-18T09:50:03.283Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses/:id, PUT} route"}
{"timestamp":"2026-10-18T09:50:03.283Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses/:id, DELETE} route"}
{"timestamp":"2026-10-18T09:50:03.283Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses/:id/impersonate, POST} route"}
{"timestamp":"2026-10-18T09:50:03.284Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses/stop-impersonation, POST} route"}
{"timestamp":"2026-10-18T09:50:03.284Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/license-usage, GET} route"}
{"timestamp":"2026-10-18T09:50:03.284Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/invoices, POST} route"}
{"timestamp":"2026-10-18T09:50:03.284Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/invoices, GET} route"}
{"timestamp":"2026-10-18T09:50:03.284Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/invoices/:id, GET} route"}
{"timestamp":"2026-10-18T09:50:03.284Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/invoices/:id, PUT} route"}
{"timestamp":"2026-10-18T09:50:03.285Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/invoices/:id, DELETE} route"}
{"timestamp":"2026-10-18T09:50:03.285Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/invoices/:id/mark-paid, PUT} route"}
{"timestamp":"2026-10-18T09:50:03.285Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/onboarding/generate-token, POST} route"}
{"timestamp":"2026-10-18T09:50:03.285Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/dashboard, GET} route"}
{"timestamp":"2026-10-18T09:50:03.285Z","level":"log","context":"RoutesResolver","message":"MspSubscriptionController {/partner/msp-subscriptions}:"}
{"timestamp":"2026-10-18T09:50:03.285Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/plans, POST} route"}
{"timestamp":"2026-10-18T09:50:03.286Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/plans, GET} route"}
{"timestamp":"2026-10-18T09:50:03.286Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/plans/:planId, GET} route"}
{"timestamp":"2026-10-18T09:50:03.286Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/plans/:planId, PUT} route"}
{"timestamp":"2026-10-18T09:50:03.286Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/plans/:planId, DELETE} route"}
{"timestamp":"2026-10-18T09:50:03.286Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/businesses/:businessId/subscription, POST} route"}
{"timestamp":"2026-10-18T09:50:03.287Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions, GET} route"}
{"timestamp":"2026-10-18T09:50:03.287Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/businesses/:businessId/subscription, GET} route"}
{"timestamp":"2026-10-18T09:50:03.287Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/businesses/:businessId/subscription, PUT} route"}
{"timestamp":"2026-10-18T09:50:03.287Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/businesses/:businessId/subscription, DELETE} route"}
{"timestamp":"2026-10-18T09:50:03.288Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/businesses/:businessId/subscription/limits, GET} route"}
{"timestamp":"2026-10-18T09:50:03.288Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/businesses/:businessId/subscription/change-plan, PUT} route"}
{"timestamp":"2026-10-18T09:50:03.288Z","level":"log","context":"RoutesResolver","message":"OnboardingController {/onboarding}:"}
{"timestamp":"2026-10-18T09:50:03.288Z","level":"log","context":"RouterExplorer","message":"Mapped {/onboarding/validate/:token, GET} route"}
{"timestamp":"2026-10-18T09:50:03.288Z","level":"log","context":"RouterExplorer","message":"Mapped {/onboarding/complete/:token, POST} route"}
{"timestamp":"2026-10-18T09:50:03.288Z","level":"log","context":"RoutesResolver","message":"ResellerController {/reseller}:"}
{"timestamp":"2026-10-18T09:50:03.289Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/businesses, POST} route"}
{"timestamp":"2026-10-18T09:50:03.289Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/businesses, GET} route"}
{"timestamp":"2026-10-18T09:50:03.289Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/businesses/:id, GET} route"}
{"timestamp":"2026-10-18T09:50:03.289Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/businesses/:id, PUT} route"}
{"timestamp":"2026-10-18T09:50:03.289Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/businesses/:id, DELETE} route"}
{"timestamp":"2026-10-18T09:50:03.289Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/license-usage, GET} route"}
{"timestamp":"2026-10-18T09:50:03.290Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/invoices, POST} route"}
{"timestamp":"2026-10-18T09:50:03.290Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/invoices, GET} route"}
{"timestamp":"2026-10-18T09:50:03.290Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/invoices/:id, GET} route"}
{"timestamp":"2026-10-18T09:50:03.290Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/invoices/:id, PUT} route"}
{"timestamp":"2026-10-18T09:50:03.290Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/invoices/:id, DELETE} route"}
{"timestamp":"2026-10-18T09:50:03.291Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/invoices/:id/mark-paid, PUT} route"}
{"timestamp":"2026-10-18T09:50:03.291Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/onboarding/generate-token, POST} route"}
{"timestamp":"2026-10-18T09:50:03.291Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/dashboard, GET} route"}
{"timestamp":"2026-10-18T09:50:03.291Z","level":"log","context":"RoutesResolver","message":"ResellerSubscriptionController {/reseller}:"}
{"timestamp":"2026-10-18T09:50:03.291Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/plans, POST} route"}
{"timestamp":"2026-10-18T09:50:03.291Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/plans, GET} route"}
{"timestamp":"2026-10-18T09:50:03.292Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/plans/:planId, GET} route"}
{"timestamp":"2026-10-18T09:50:03.292Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/plans/:planId, PUT} route"}
{"timestamp":"2026-10-18T09:50:03.292Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/plans/:planId, DELETE} route"}
{"timestamp":"2026-10-18T09:50:03.292Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/subscriptions/businesses/:businessId/subscription, POST} route"}
{"timestamp":"2026-10-18T09:50:03.292Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/subscriptions, GET} route"}
{"timestamp":"2026-10-18T09:50:03.293Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/subscriptions/businesses/:businessId/subscription, GET} route"}
{"timestamp":"2026-10-18T09:50:03.293Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/subscriptions/businesses/:businessId/subscription, PUT} route"}
{"timestamp":"2026-10-18T09:50:03.293Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/subscriptions/businesses/:businessId/subscription, DELETE} route"}
{"timestamp":"2026-10-18T09:50:03.293Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/subscriptions/businesses/:businessId/subscription/limits, GET} route"}
{"timestamp":"2026-10-18T09:50:03.293Z","level":"log","context":"RoutesResolver","message":"HealthController {/health}:"}
{"timestamp":"2026-10-18T09:50:03.293Z","level":"log","context":"RouterExplorer","message":"Mapped {/health, GET} route"}
{"timestamp":"2026-10-18T09:50:03.294Z","level":"log","context":"RouterExplorer","message":"Mapped {/health/test-logs, GET} route"}
{"timestamp":"2026-10-18T09:50:03.294Z","level":"log","context":"RoutesResolver","message":"AzureAdController {/azure-ad}:"}
{"timestamp":"2026-10-18T09:50:03.294Z","level":"log","context":"RouterExplorer","message":"Mapped {/azure-ad/config, POST} route"}
{"timestamp":"2026-10-18T09:50:03.294Z","level":"log","context":"RouterExplorer","message":"Mapped {/azure-ad/config, GET} route"}
{"timestamp":"2026-10-18T09:50:03.294Z","level":"log","context":"RouterExplorer","message":"Mapped {/azure-ad/test-connection, POST} route"}
{"timestamp":"2026-10-18T09:50:03.294Z","level":"log","context":"RouterExplorer","message":"Mapped {/azure-ad/sync, POST} route"}
{"timestamp":"2026-10-18T09:50:03.294Z","level":"log","context":"RoutesResolver","message":"ThreatsController {/threats}:"}
{"timestamp":"2026-10-18T09:50:03.295Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats, POST} route"}
{"timestamp":"2026-10-18T09:50:03.295Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats, GET} route"}
{"timestamp":"2026-10-18T09:50:03.295Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/chart-data, GET} route"}
{"timestamp":"2026-10-18T09:50:03.295Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/claude-search, POST} route"}
{"timestamp":"2026-10-18T09:50:03.295Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/claude-latest, POST} route"}
{"timestamp":"2026-10-18T09:50:03.296Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/claude-trending, POST} route"}
{"timestamp":"2026-10-18T09:50:03.296Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/claude-categories, POST} route"}
{"timestamp":"2026-10-18T09:50:03.296Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/claude-manual-search, POST} route"}
{"timestamp":"2026-10-18T09:50:03.296Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/claude-quick-search, POST} route"}
{"timestamp":"2026-10-18T09:50:03.296Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/scheduler-status, GET} route"}
{"timestamp":"2026-10-18T09:50:03.297Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/health-check, GET} route"}
{"timestamp":"2026-10-18T09:50:03.297Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/pause-scheduler, POST} route"}
{"timestamp":"2026-10-18T09:50:03.297Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/:id, GET} route"}
{"timestamp":"2026-10-18T09:50:03.297Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/:id, PATCH} route"}
{"timestamp":"2026-10-18T09:50:03.297Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/:id, DELETE} route"}
{"timestamp":"2026-10-18T09:50:03.297Z","level":"log","context":"RoutesResolver","message":"DomainController {/domains}:"}
{"timestamp":"2026-10-18T09:50:03.298Z","level":"log","context":"RouterExplorer","message":"Mapped {/domains, GET} route"}
{"timestamp":"2026-10-18T09:50:03.298Z","level":"log","context":"RouterExplorer","message":"Mapped {/domains/:id, GET} route"}
{"timestamp":"2026-10-18T09:50:03.298Z","level":"log","context":"RouterExplorer","message":"Mapped {/domains, POST} route"}
{"timestamp":"2026-10-18T09:50:03.298Z","level":"log","context":"RouterExplorer","message":"Mapped {/domains/:id, PUT} route"}
{"timestamp":"2026-10-18T09:50:03.298Z","level":"log","context":"RouterExplorer","message":"Mapped {/domains/:id, DELETE} route"}
{"timestamp":"2026-10-18T09:50:03.298Z","level":"log","context":"RouterExplorer","message":"Mapped {/domains/seed, POST} route"}
{"timestamp":"2026-10-18T09:50:03.299Z","level":"log","context":"RoutesResolver","message":"MspSubscriptionController {/msp-subscription}:"}
{"timestamp":"2026-10-18T09:50:03.299Z","level":"log","context":"RouterExplorer","message":"Mapped {/msp-subscription/current, GET} route"}
{"timestamp":"2026-10-18T09:50:03.299Z","level":"log","context":"RouterExplorer","message":"Mapped {/msp-subscription/invoices, GET} route"}
{"timestamp":"2026-10-18T09:50:03.299Z","level":"log","context":"RouterExplorer","message":"Mapped {/msp-subscription/invoice/:invoiceId/pdf, GET} route"}
{"timestamp":"2026-10-18T09:50:03.299Z","level":"log","context":"RoutesResolver","message":"MspSubscriptionController {/api/msp-subscription}:"}
{"timestamp":"2026-10-18T09:50:03.299Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/msp-subscription/current, GET} route"}
{"timestamp":"2026-10-18T09:50:03.299Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/msp-subscription/invoices, GET} route"}
{"timestamp":"2026-10-18T09:50:03.300Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/msp-subscription/invoice/:invoiceId/pdf, GET} route"}
{"timestamp":"2026-10-18T09:50:03.376Z","level":"log","context":"NestApplication","message":"Nest application successfully started"}
{"timestamp":"2026-10-18T09:50:03.394Z","level":"log","context":"Bootstrap","message":"Users API successfully started on port 3842"}
{"timestamp":"2026-10-18T09:50:03.394Z","level":"log","context":"SeedService","message":"🌱 Starting database seeding..."}
{"timestamp":"2026-10-18T09:50:03.400Z","level":"log","context":"SeedService","message":"Admin account already exists, skipping seed"}
{"timestamp":"2026-10-18T09:50:03.403Z","level":"log","context":"SeedService","message":"Reseller account already exists, skipping seed"}
{"timestamp":"2026-10-18T09:50:03.404Z","level":"log","context":"SeedService","message":"MSP account already exists, skipping seed"}
{"timestamp":"2026-10-18T09:50:03.404Z","level":"log","context":"SeedService","message":"✅ Database seeding completed successfully"}
{"timestamp":"2026-10-18T10:18:54.109Z","level":"warn","context":"LegacyRouteConverter","message":"Unsupported route path: \"/lp/*\". In previous versions, the symbols ?, *, and + were used to denote optional or repeating path parameters. The latest version of \"path-to-regexp\" now requires the use of named parameters. For example, instead of using a route like /users/* to capture all routes starting with \"/users\", you should use /users/*path. For more details, refer to the migration guide. Attempting to auto-convert..."}
{"timestamp":"2026-10-18T10:18:54.146Z","level":"log","context":"Bootstrap","message":"Starting Users API on port 3842..."}
{"timestamp":"2026-10-18T10:18:54.150Z","level":"log","context":"RoutesResolver","message":"UsersApiController {/}:"}
{"timestamp":"2026-10-18T10:18:54.153Z","level":"log","context":"RouterExplorer","message":"Mapped {/, GET} route"}
{"timestamp":"2026-10-18T10:18:54.154Z","level":"log","context":"RoutesResolver","message":"AuthController {/auth}:"}
{"timestamp":"2026-10-18T10:18:54.154Z","level":"log","context":"RouterExplorer","message":"Mapped {/auth/login, POST} route"}
{"timestamp":"2026-10-18T10:18:54.155Z","level":"log","context":"RouterExplorer","message":"Mapped {/auth/admin/login, POST} route"}
{"timestamp":"2026-10-18T10:18:54.155Z","level":"log","context":"RouterExplorer","message":"Mapped {/auth/send-otp, POST} route"}
{"timestamp":"2026-10-18T10:18:54.156Z","level":"log","context":"RouterExplorer","message":"Mapped {/auth/verify-otp, POST} route"}
{"timestamp":"2026-10-18T10:18:54.156Z","level":"log","context":"RouterExplorer","message":"Mapped {/auth/signup, POST} route"}
{"timestamp":"2026-10-18T10:18:54.157Z","level":"log","context":"RouterExplorer","message":"Mapped {/auth/subscription-status, GET} route"}
{"timestamp":"2026-10-18T10:18:54.157Z","level":"log","context":"RoutesResolver","message":"AdminMspController {/admin/msp}:"}
{"timestamp":"2026-10-18T10:18:54.157Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/msp, GET} route"}
{"timestamp":"2026-10-18T10:18:54.158Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/msp/:id, GET} route"}
{"timestamp":"2026-10-18T10:18:54.158Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/msp, POST} route"}
{"timestamp":"2026-10-18T10:18:54.159Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/msp/:id, PUT} route"}
{"timestamp":"2026-10-18T10:18:54.159Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/msp/:id, DELETE} route"}
{"timestamp":"2026-10-18T10:18:54.159Z","level":"log","context":"RoutesResolver","message":"AdminLicenseController {/admin/licenses}:"}
{"timestamp":"2026-10-18T10:18:54.159Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/licenses/summary, GET} route"}
{"timestamp":"2026-10-18T10:18:54.160Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/licenses/msp/:mspId, GET} route"}
{"timestamp":"2026-10-18T10:18:54.162Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/licenses/msp/:mspId, PUT} route"}
{"timestamp":"2026-10-18T10:18:54.162Z","level":"log","context":"RoutesResolver","message":"AdminImpersonationController {/admin/impersonation}:"}
{"timestamp":"2026-10-18T10:18:54.163Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/impersonation/msp-users, GET} route"}
{"timestamp":"2026-10-18T10:18:54.163Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/impersonation/impersonate, POST} route"}
{"timestamp":"2026-10-18T10:18:54.163Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/impersonation/stop, POST} route"}
{"timestamp":"2026-10-18T10:18:54.163Z","level":"log","context":"RoutesResolver","message":"AdminAiUsageController {/admin/ai-usage}:"}
{"timestamp":"2026-10-18T10:18:54.164Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-usage, GET} route"}
{"timestamp":"2026-10-18T10:18:54.164Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-usage/business/:businessId, GET} route"}
{"timestamp":"2026-10-18T10:18:54.164Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-usage/report/monthly, GET} route"}
{"timestamp":"2026-10-18T10:18:54.164Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-usage/pricing, GET} route"}
{"timestamp":"2026-10-18T10:18:54.164Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-usage/pricing, POST} route"}
{"timestamp":"2026-10-18T10:18:54.165Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-usage/credit/:businessId, PUT} route"}
{"timestamp":"2026-10-18T10:18:54.165Z","level":"log","context":"RoutesResolver","message":"AdminAiUsageController {/api/admin/ai-usage}:"}
{"timestamp":"2026-10-18T10:18:54.165Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-usage, GET} route"}
{"timestamp":"2026-10-18T10:18:54.165Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-usage/business/:businessId, GET} route"}
{"timestamp":"2026-10-18T10:18:54.165Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-usage/report/monthly, GET} route"}
{"timestamp":"2026-10-18T10:18:54.165Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-usage/pricing, GET} route"}
{"timestamp":"2026-10-18T10:18:54.166Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-usage/pricing, POST} route"}
{"timestamp":"2026-10-18T10:18:54.166Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-usage/credit/:businessId, PUT} route"}
{"timestamp":"2026-10-18T10:18:54.166Z","level":"log","context":"RoutesResolver","message":"AdminAiModelController {/admin/ai-models}:"}
{"timestamp":"2026-10-18T10:18:54.166Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models, POST} route"}
{"timestamp":"2026-10-18T10:18:54.166Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models, GET} route"}
{"timestamp":"2026-10-18T10:18:54.166Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/default, GET} route"}
{"timestamp":"2026-10-18T10:18:54.167Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/:id, GET} route"}
{"timestamp":"2026-10-18T10:18:54.167Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/:id, PUT} route"}
{"timestamp":"2026-10-18T10:18:54.167Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/:id, DELETE} route"}
{"timestamp":"2026-10-18T10:18:54.167Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/:id/set-default, POST} route"}
{"timestamp":"2026-10-18T10:18:54.167Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/assign-to-business, POST} route"}
{"timestamp":"2026-10-18T10:18:54.167Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/business/:businessId, GET} route"}
{"timestamp":"2026-10-18T10:18:54.168Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/:id/businesses, GET} route"}
{"timestamp":"2026-10-18T10:18:54.168Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/initialize-defaults, POST} route"}
{"timestamp":"2026-10-18T10:18:54.168Z","level":"log","context":"RoutesResolver","message":"AdminAiModelController {/api/admin/ai-models}:"}
{"timestamp":"2026-10-18T10:18:54.168Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models, POST} route"}
{"timestamp":"2026-10-18T10:18:54.168Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models, GET} route"}
{"timestamp":"2026-10-18T10:18:54.168Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/default, GET} route"}
{"timestamp":"2026-10-18T10:18:54.169Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/:id, GET} route"}
{"timestamp":"2026-10-18T10:18:54.169Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/:id, PUT} route"}
{"timestamp":"2026-10-18T10:18:54.169Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/:id, DELETE} route"}
{"timestamp":"2026-10-18T10:18:54.169Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/:id/set-default, POST} route"}
{"timestamp":"2026-10-18T10:18:54.169Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/assign-to-business, POST} route"}
{"timestamp":"2026-10-18T10:18:54.169Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/business/:businessId, GET} route"}
{"timestamp":"2026-10-18T10:18:54.169Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/:id/businesses, GET} route"}
{"timestamp":"2026-10-18T10:18:54.170Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/initialize-defaults, POST} route"}
{"timestamp":"2026-10-18T10:18:54.170Z","level":"log","context":"RoutesResolver","message":"AdminBusinessController {/admin/businesses}:"}
{"timestamp":"2026-10-18T10:18:54.170Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/businesses, GET} route"}
{"timestamp":"2026-10-18T10:18:54.170Z","level":"log","context":"RoutesResolver","message":"ResellerManagementController {/admin/resellers}:"}
{"timestamp":"2026-10-18T10:18:54.170Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/resellers, GET} route"}
{"timestamp":"2026-10-18T10:18:54.170Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/resellers/create-default, POST} route"}
{"timestamp":"2026-10-18T10:18:54.171Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/resellers, POST} route"}
{"timestamp":"2026-10-18T10:18:54.171Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/resellers/:id/toggle-status, PUT} route"}
{"timestamp":"2026-10-18T10:18:54.171Z","level":"log","context":"RoutesResolver","message":"SubscriptionController {/subscription}:"}
{"timestamp":"2026-10-18T10:18:54.171Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/plans, GET} route"}
{"timestamp":"2026-10-18T10:18:54.171Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/calculate-price, POST} route"}
{"timestamp":"2026-10-18T10:18:54.171Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/current, GET} route"}
{"timestamp":"2026-10-18T10:18:54.172Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/create, POST} route"}
{"timestamp":"2026-10-18T10:18:54.172Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/:id, PUT} route"}
{"timestamp":"2026-10-18T10:18:54.172Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/:id/cancel, DELETE} route"}
{"timestamp":"2026-10-18T10:18:54.172Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/sync/:stripeSubscriptionId, POST} route"}
{"timestamp":"2026-10-18T10:18:54.172Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/payments, GET} route"}
{"timestamp":"2026-10-18T10:18:54.172Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/payments/stats, GET} route"}
{"timestamp":"2026-10-18T10:18:54.173Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/payment/:id, GET} route"}
{"timestamp":"2026-10-18T10:18:54.173Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/payment-methods/attach, POST} route"}
{"timestamp":"2026-10-18T10:18:54.173Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/payment-methods/:paymentMethodId, DELETE} route"}
{"timestamp":"2026-10-18T10:18:54.173Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/payment-methods, GET} route"}
{"timestamp":"2026-10-18T10:18:54.173Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/setup-intent, POST} route"}
{"timestamp":"2026-10-18T10:18:54.173Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/update-employee-count, POST} route"}
{"timestamp":"2026-10-18T10:18:54.173Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/retry-payment/:subscriptionId, POST} route"}
{"timestamp":"2026-10-18T10:18:54.174Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/invoice/:invoiceId/pdf, GET} route"}
{"timestamp":"2026-10-18T10:18:54.174Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/preview-upgrade, POST} route"}
{"timestamp":"2026-10-18T10:18:54.174Z","level":"log","context":"RoutesResolver","message":"SubscriptionController {/api/subscription}:"}
{"timestamp":"2026-10-18T10:18:54.174Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/plans, GET} route"}
{"timestamp":"2026-10-18T10:18:54.174Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/calculate-price, POST} route"}
{"timestamp":"2026-10-18T10:18:54.174Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/current, GET} route"}
{"timestamp":"2026-10-18T10:18:54.174Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/create, POST} route"}
{"timestamp":"2026-10-18T10:18:54.175Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/:id, PUT} route"}
{"timestamp":"2026-10-18T10:18:54.175Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/:id/cancel, DELETE} route"}
{"timestamp":"2026-10-18T10:18:54.175Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/sync/:stripeSubscriptionId, POST} route"}
{"timestamp":"2026-10-18T10:18:54.175Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/payments, GET} route"}
{"timestamp":"2026-10-18T10:18:54.175Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/payments/stats, GET} route"}
{"timestamp":"2026-10-18T10:18:54.175Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/payment/:id, GET} route"}
{"timestamp":"2026-10-18T10:18:54.175Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/payment-methods/attach, POST} route"}
{"timestamp":"2026-10-18T10:18:54.176Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/payment-methods/:paymentMethodId, DELETE} route"}
{"timestamp":"2026-10-18T10:18:54.176Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/payment-methods, GET} route"}
{"timestamp":"2026-10-18T10:18:54.176Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/setup-intent, POST} route"}
{"timestamp":"2026-10-18T10:18:54.176Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/update-employee-count, POST} route"}
{"timestamp":"2026-10-18T10:18:54.176Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/retry-payment/:subscriptionId, POST} route"}
{"timestamp":"2026-10-18T10:18:54.176Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/invoice/:invoiceId/pdf, GET} route"}
{"timestamp":"2026-10-18T10:18:54.176Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/preview-upgrade, POST} route"}
{"timestamp":"2026-10-18T10:18:54.176Z","level":"log","context":"RoutesResolver","message":"StripeWebhookController {/stripe/webhook}:"}
{"timestamp":"2026-10-18T10:18:54.177Z","level":"log","context":"RouterExplorer","message":"Mapped {/stripe/webhook/test, GET} route"}
{"timestamp":"2026-10-18T10:18:54.177Z","level":"log","context":"RouterExplorer","message":"Mapped {/stripe/webhook, POST} route"}
{"timestamp":"2026-10-18T10:18:54.177Z","level":"log","context":"RoutesResolver","message":"EmailController {/email-templates}:"}
{"timestamp":"2026-10-18T10:18:54.177Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates/test, POST} route"}
{"timestamp":"2026-10-18T10:18:54.177Z","level":"log","context":"RoutesResolver","message":"EmployeeController {/employees}:"}
{"timestamp":"2026-10-18T10:18:54.177Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees, POST} route"}
{"timestamp":"2026-10-18T10:18:54.177Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees, GET} route"}
{"timestamp":"2026-10-18T10:18:54.178Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees/export, GET} route"}
{"timestamp":"2026-10-18T10:18:54.178Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees/risk-stats, GET} route"}
{"timestamp":"2026-10-18T10:18:54.178Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees/:id, GET} route"}
{"timestamp":"2026-10-18T10:18:54.178Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees/:id, PUT} route"}
{"timestamp":"2026-10-18T10:18:54.178Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees/:id, DELETE} route"}
{"timestamp":"2026-10-18T10:18:54.178Z","level":"log","context":"RoutesResolver","message":"GroupController {/groups}:"}
{"timestamp":"2026-10-18T10:18:54.178Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups, POST} route"}
{"timestamp":"2026-10-18T10:18:54.179Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups, GET} route"}
{"timestamp":"2026-10-18T10:18:54.179Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups/standard, GET} route"}
{"timestamp":"2026-10-18T10:18:54.179Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups/:id, GET} route"}
{"timestamp":"2026-10-18T10:18:54.179Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups/:id, PUT} route"}
{"timestamp":"2026-10-18T10:18:54.179Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups/:id, DELETE} route"}
{"timestamp":"2026-10-18T10:18:54.179Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups/:id/info, GET} route"}
{"timestamp":"2026-10-18T10:18:54.180Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups/:id/with-employees, GET} route"}
{"timestamp":"2026-10-18T10:18:54.180Z","level":"log","context":"RoutesResolver","message":"SenderProfileController {/sender-profiles}:"}
{"timestamp":"2026-10-18T10:18:54.180Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles, GET} route"}
{"timestamp":"2026-10-18T10:18:54.180Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles/:id, GET} route"}
{"timestamp":"2026-10-18T10:18:54.180Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles, POST} route"}
{"timestamp":"2026-10-18T10:18:54.180Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles/:id, PUT} route"}
{"timestamp":"2026-10-18T10:18:54.180Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles/:id, DELETE} route"}
{"timestamp":"2026-10-18T10:18:54.181Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles/:id/verify-domain, POST} route"}
{"timestamp":"2026-10-18T10:18:54.181Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles/domain-verification, GET} route"}
{"timestamp":"2026-10-18T10:18:54.181Z","level":"log","context":"RoutesResolver","message":"EmailTemplateController {/email-templates}:"}
{"timestamp":"2026-10-18T10:18:54.181Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates, GET} route"}
{"timestamp":"2026-10-18T10:18:54.181Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates/:id, GET} route"}
{"timestamp":"2026-10-18T10:18:54.181Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates, POST} route"}
{"timestamp":"2026-10-18T10:18:54.181Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates/:id, PUT} route"}
{"timestamp":"2026-10-18T10:18:54.182Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates/:id, DELETE} route"}
{"timestamp":"2026-10-18T10:18:54.182Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates/:id/duplicate, POST} route"}
{"timestamp":"2026-10-18T10:18:54.182Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates/:id/preview, GET} route"}
{"timestamp":"2026-10-18T10:18:54.182Z","level":"log","context":"RoutesResolver","message":"ScenarioController {/scenarios}:"}
{"timestamp":"2026-10-18T10:18:54.182Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios, POST} route"}
{"timestamp":"2026-10-18T10:18:54.182Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios/generate-content, POST} route"}
{"timestamp":"2026-10-18T10:18:54.182Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios, GET} route"}
{"timestamp":"2026-10-18T10:18:54.183Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios/:id, GET} route"}
{"timestamp":"2026-10-18T10:18:54.183Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios/:id, PUT} route"}
{"timestamp":"2026-10-18T10:18:54.183Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios/:id, DELETE} route"}
{"timestamp":"2026-10-18T10:18:54.183Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios/generate-from-json, POST} route"}
{"timestamp":"2026-10-18T10:18:54.183Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios/:id/save-as-custom-scenario, POST} route"}
{"timestamp":"2026-10-18T10:18:54.183Z","level":"log","context":"RoutesResolver","message":"CampaignController {/campaigns}:"}
{"timestamp":"2026-10-18T10:18:54.183Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns, POST} route"}
{"timestamp":"2026-10-18T10:18:54.184Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns, GET} route"}
{"timestamp":"2026-10-18T10:18:54.184Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id, GET} route"}
{"timestamp":"2026-10-18T10:18:54.184Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id/details, GET} route"}
{"timestamp":"2026-10-18T10:18:54.184Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id/employees, GET} route"}
{"timestamp":"2026-10-18T10:18:54.184Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id, PATCH} route"}
{"timestamp":"2026-10-18T10:18:54.185Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id/start, POST} route"}
{"timestamp":"2026-10-18T10:18:54.185Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id/stop, POST} route"}
{"timestamp":"2026-10-18T10:18:54.185Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id/duplicate, POST} route"}
{"timestamp":"2026-10-18T10:18:54.185Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id, DELETE} route"}
{"timestamp":"2026-10-18T10:18:54.185Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/auto-generate-program, POST} route"}
{"timestamp":"2026-10-18T10:18:54.185Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/generate-from-threat-intelligence, POST} route"}
{"timestamp":"2026-10-18T10:18:54.185Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id/risk-score, GET} route"}
{"timestamp":"2026-10-18T10:18:54.186Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/recalculate-risk-scores, POST} route"}
{"timestamp":"2026-10-18T10:18:54.186Z","level":"log","context":"RoutesResolver","message":"CampaignController {/api/campaigns}:"}
{"timestamp":"2026-10-18T10:18:54.186Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns, POST} route"}
{"timestamp":"2026-10-18T10:18:54.186Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns, GET} route"}
{"timestamp":"2026-10-18T10:18:54.186Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id, GET} route"}
{"timestamp":"2026-10-18T10:18:54.186Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id/details, GET} route"}
{"timestamp":"2026-10-18T10:18:54.186Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id/employees, GET} route"}
{"timestamp":"2026-10-18T10:18:54.187Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id, PATCH} route"}
{"timestamp":"2026-10-18T10:18:54.187Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id/start, POST} route"}
{"timestamp":"2026-10-18T10:18:54.187Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id/stop, POST} route"}
{"timestamp":"2026-10-18T10:18:54.187Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id/duplicate, POST} route"}
{"timestamp":"2026-10-18T10:18:54.187Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id, DELETE} route"}
{"timestamp":"2026-10-18T10:18:54.187Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/auto-generate-program, POST} route"}
{"timestamp":"2026-10-18T10:18:54.187Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/generate-from-threat-intelligence, POST} route"}
{"timestamp":"2026-10-18T10:18:54.188Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id/risk-score, GET} route"}
{"timestamp":"2026-10-18T10:18:54.188Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/recalculate-risk-scores, POST} route"}
{"timestamp":"2026-10-18T10:18:54.188Z","level":"log","context":"RoutesResolver","message":"NotificationsController {/notifications}:"}
{"timestamp":"2026-10-18T10:18:54.188Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications, POST} route"}
{"timestamp":"2026-10-18T10:18:54.188Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications, GET} route"}
{"timestamp":"2026-10-18T10:18:54.188Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/unread, GET} route"}
{"timestamp":"2026-10-18T10:18:54.189Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/unread-count, GET} route"}
{"timestamp":"2026-10-18T10:18:54.189Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/:id, GET} route"}
{"timestamp":"2026-10-18T10:18:54.189Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/:id, PATCH} route"}
{"timestamp":"2026-10-18T10:18:54.189Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/:id/read, PATCH} route"}
{"timestamp":"2026-10-18T10:18:54.189Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/mark-all-read, PATCH} route"}
{"timestamp":"2026-10-18T10:18:54.190Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/:id, DELETE} route"}
{"timestamp":"2026-10-18T10:18:54.190Z","level":"log","context":"RoutesResolver","message":"LandingPageController {/lp}:"}
{"timestamp":"2026-10-18T10:18:54.190Z","level":"log","context":"RouterExplorer","message":"Mapped {/lp/image, GET} route"}
{"timestamp":"2026-10-18T10:18:54.190Z","level":"log","context":"RouterExplorer","message":"Mapped {/lp/learning, GET} route"}
{"timestamp":"2026-10-18T10:18:54.190Z","level":"log","context":"RouterExplorer","message":"Mapped {/lp/submit, POST} route"}
{"timestamp":"2026-10-18T10:18:54.190Z","level":"log","context":"RouterExplorer","message":"Mapped {/lp/test, GET} route"}
{"timestamp":"2026-10-18T10:18:54.191Z","level":"warn","context":"LegacyRouteConverter","message":"Unsupported route path: \"/lp/*\". In previous versions, the symbols ?, *, and + were used to denote optional or repeating path parameters. The latest version of \"path-to-regexp\" now requires the use of named parameters. For example, instead of using a route like /users/* to capture all routes starting with \"/users\", you should use /users/*path. For more details, refer to the migration guide. Attempting to auto-convert..."}
{"timestamp":"2026-10-18T10:18:54.191Z","level":"log","context":"RouterExplorer","message":"Mapped {/lp/*, ALL} route"}
{"timestamp":"2026-10-18T10:18:54.191Z","level":"log","context":"RoutesResolver","message":"SupportController {/support}:"}
{"timestamp":"2026-10-18T10:18:54.192Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets, POST} route"}
{"timestamp":"2026-10-18T10:18:54.192Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets, GET} route"}
{"timestamp":"2026-10-18T10:18:54.192Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets/:id, GET} route"}
{"timestamp":"2026-10-18T10:18:54.192Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets/:id, PATCH} route"}
{"timestamp":"2026-10-18T10:18:54.192Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets/:id, DELETE} route"}
{"timestamp":"2026-10-18T10:18:54.192Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets/:id/messages, POST} route"}
{"timestamp":"2026-10-18T10:18:54.193Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets/:id/close, POST} route"}
{"timestamp":"2026-10-18T10:18:54.193Z","level":"log","context":"RoutesResolver","message":"BusninessMetricsController {/business-metrics}:"}
{"timestamp":"2026-10-18T10:18:54.193Z","level":"log","context":"RouterExplorer","message":"Mapped {/business-metrics, GET} route"}
{"timestamp":"2026-10-18T10:18:54.193Z","level":"log","context":"RoutesResolver","message":"UsersController {/users}:"}
{"timestamp":"2026-10-18T10:18:54.193Z","level":"log","context":"RouterExplorer","message":"Mapped {/users/:id, PUT} route"}
{"timestamp":"2026-10-18T10:18:54.193Z","level":"log","context":"RouterExplorer","message":"Mapped {/users/settings, GET} route"}
{"timestamp":"2026-10-18T10:18:54.193Z","level":"log","context":"RouterExplorer","message":"Mapped {/users/settings/general, PUT} route"}
{"timestamp":"2026-10-18T10:18:54.194Z","level":"log","context":"RouterExplorer","message":"Mapped {/users/company/settings, PUT} route"}
{"timestamp":"2026-10-18T10:18:54.194Z","level":"log","context":"RouterExplorer","message":"Mapped {/users/change-password, POST} route"}
{"timestamp":"2026-10-18T10:18:54.194Z","level":"log","context":"RouterExplorer","message":"Mapped {/users/localization/settings, PUT} route"}
{"timestamp":"2026-10-18T10:18:54.194Z","level":"log","context":"RoutesResolver","message":"PartnerController {/partner}:"}
{"timestamp":"2026-10-18T10:18:54.194Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses, POST} route"}
{"timestamp":"2026-10-18T10:18:54.194Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses, GET} route"}
{"timestamp":"2026-10-18T10:18:54.195Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses/:id, GET} route"}
{"timestamp":"2026-10-18T10:18:54.195Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses/:id, PUT} route"}
{"timestamp":"2026-10-18T10:18:54.195Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses/:id, DELETE} route"}
{"timestamp":"2026-10-18T10:18:54.195Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses/:id/impersonate, POST} route"}
{"timestamp":"2026-10-18T10:18:54.195Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses/stop-impersonation, POST} route"}
{"timestamp":"2026-10-18T10:18:54.195Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/license-usage, GET} route"}
{"timestamp":"2026-10-18T10:18:54.195Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/invoices, POST} route"}
{"timestamp":"2026-10-18T10:18:54.196Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/invoices, GET} route"}
{"timestamp":"2026-10-18T10:18:54.196Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/invoices/:id, GET} route"}
{"timestamp":"2026-10-18T10:18:54.196Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/invoices/:id, PUT} route"}
{"timestamp":"2026-10-18T10:18:54.196Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/invoices/:id, DELETE} route"}
{"timestamp":"2026-10-18T10:18:54.196Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/invoices/:id/mark-paid, PUT} route"}
{"timestamp":"2026-10-18T10:18:54.196Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/onboarding/generate-token, POST} route"}
{"timestamp":"2026-10-18T10:18:54.197Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/dashboard, GET} route"}
{"timestamp":"2026-10-18T10:18:54.197Z","level":"log","context":"RoutesResolver","message":"MspSubscriptionController {/partner/msp-subscriptions}:"}
{"timestamp":"2026-10-18T10:18:54.197Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/plans, POST} route"}
{"timestamp":"2026-10-18T10:18:54.197Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/plans, GET} route"}
{"timestamp":"2026-10-18T10:18:54.197Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/plans/:planId, GET} route"}
{"timestamp":"2026-10-18T10:18:54.197Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/plans/:planId, PUT} route"}
{"timestamp":"2026-10-18T10:18:54.198Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/plans/:planId, DELETE} route"}
{"timestamp":"2026-10-18T10:18:54.198Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/businesses/:businessId/subscription, POST} route"}
{"timestamp":"2026-10-18T10:18:54.198Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions, GET} route"}
{"timestamp":"2026-10-18T10:18:54.198Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/businesses/:businessId/subscription, GET} route"}
{"timestamp":"2026-10-18T10:18:54.198Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/businesses/:businessId/subscription, PUT} route"}
{"timestamp":"2026-10-18T10:18:54.198Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/businesses/:businessId/subscription, DELETE} route"}
{"timestamp":"2026-10-18T10:18:54.199Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/businesses/:businessId/subscription/limits, GET} route"}
{"timestamp":"2026-10-18T10:18:54.199Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/businesses/:businessId/subscription/change-plan, PUT} route"}
{"timestamp":"2026-10-18T10:18:54.199Z","level":"log","context":"RoutesResolver","message":"OnboardingController {/onboarding}:"}
{"timestamp":"2026-10-18T10:18:54.199Z","level":"log","context":"RouterExplorer","message":"Mapped {/onboarding/validate/:token, GET} route"}
{"timestamp":"2026-10-18T10:18:54.199Z","level":"log","context":"RouterExplorer","message":"Mapped {/onboarding/complete/:token, POST} route"}
{"timestamp":"2026-10-18T10:18:54.199Z","level":"log","context":"RoutesResolver","message":"ResellerController {/reseller}:"}
{"timestamp":"2026-10-18T10:18:54.199Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/businesses, POST} route"}
{"timestamp":"2026-10-18T10:18:54.200Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/businesses, GET} route"}
{"timestamp":"2026-10-18T10:18:54.200Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/businesses/:id, GET} route"}
{"timestamp":"2026-10-18T10:18:54.200Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/businesses/:id, PUT} route"}
{"timestamp":"2026-10-18T10:18:54.200Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/businesses/:id, DELETE} route"}
{"timestamp":"2026-10-18T10:18:54.200Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/license-usage, GET} route"}
{"timestamp":"2026-10-18T10:18:54.200Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/invoices, POST} route"}
{"timestamp":"2026-10-18T10:18:54.200Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/invoices, GET} route"}
{"timestamp":"2026-10-18T10:18:54.201Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/invoices/:id, GET} route"}
{"timestamp":"2026-10-18T10:18:54.201Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/invoices/:id, PUT} route"}
{"timestamp":"2026-10-18T10:18:54.201Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/invoices/:id, DELETE} route"}
{"timestamp":"2026-10-18T10:18:54.201Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/invoices/:id/mark-paid, PUT} route"}
{"timestamp":"2026-10-18T10:18:54.201Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/onboarding/generate-token, POST} route"}
{"timestamp":"2026-10-18T10:18:54.201Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/dashboard, GET} route"}
{"timestamp":"2026-10-18T10:18:54.201Z","level":"log","context":"RoutesResolver","message":"ResellerSubscriptionController {/reseller}:"}
{"timestamp":"2026-10-18T10:18:54.202Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/plans, POST} route"}
{"timestamp":"2026-10-18T10:18:54.202Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/plans, GET} route"}
{"timestamp":"2026-10-18T10:18:54.202Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/plans/:planId, GET} route"}
{"timestamp":"2026-10-18T10:18:54.202Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/plans/:planId, PUT} route"}
{"timestamp":"2026-10-18T10:18:54.202Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/plans/:planId, DELETE} route"}
{"timestamp":"2026-10-18T10:18:54.202Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/subscriptions/businesses/:businessId/subscription, POST} route"}
{"timestamp":"2026-10-18T10:18:54.203Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/subscriptions, GET} route"}
{"timestamp":"2026-10-18T10:18:54.203Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/subscriptions/businesses/:businessId/subscription, GET} route"}
{"timestamp":"2026-10-18T10:18:54.203Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/subscriptions/businesses/:businessId/subscription, PUT} route"}
{"timestamp":"2026-10-18T10:18:54.203Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/subscriptions/businesses/:businessId/subscription, DELETE} route"}
{"timestamp":"2026-10-18T10:18:54.203Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/subscriptions/businesses/:businessId/subscription/limits, GET} route"}
{"timestamp":"2026-10-18T10:18:54.203Z","level":"log","context":"RoutesResolver","message":"HealthController {/health}:"}
{"timestamp":"2026-10-18T10:18:54.203Z","level":"log","context":"RouterExplorer","message":"Mapped {/health, GET} route"}
{"timestamp":"2026-10-18T10:18:54.204Z","level":"log","context":"RouterExplorer","message":"Mapped {/health/test-logs, GET} route"}
{"timestamp":"2026-10-18T10:18:54.204Z","level":"log","context":"RoutesResolver","message":"AzureAdController {/azure-ad}:"}
{"timestamp":"2026-10-18T10:18:54.204Z","level":"log","context":"RouterExplorer","message":"Mapped {/azure-ad/config, POST} route"}
{"timestamp":"2026-10-18T10:18:54.204Z","level":"log","context":"RouterExplorer","message":"Mapped {/azure-ad/config, GET} route"}
{"timestamp":"2026-10-18T10:18:54.204Z","level":"log","context":"RouterExplorer","message":"Mapped {/azure-ad/test-connection, POST} route"}
{"timestamp":"2026-10-18T10:18:54.204Z","level":"log","context":"RouterExplorer","message":"Mapped {/azure-ad/sync, POST} route"}
{"timestamp":"2026-10-18T10:18:54.204Z","level":"log","context":"RoutesResolver","message":"ThreatsController {/threats}:"}
{"timestamp":"2026-10-18T10:18:54.204Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats, POST} route"}
{"timestamp":"2026-10-18T10:18:54.205Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats, GET} route"}
{"timestamp":"2026-10-18T10:18:54.205Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/chart-data, GET} route"}
{"timestamp":"2026-10-18T10:18:54.205Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/claude-search, POST} route"}
{"timestamp":"2026-10-18T10:18:54.205Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/claude-latest, POST} route"}
{"timestamp":"2026-10-18T10:18:54.205Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/claude-trending, POST} route"}
{"timestamp":"2026-10-18T10:18:54.205Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/claude-categories, POST} route"}
{"timestamp":"2026-10-18T10:18:54.206Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/claude-manual-search, POST} route"}
{"timestamp":"2026-10-18T10:18:54.206Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/claude-quick-search, POST} route"}
{"timestamp":"2026-10-18T10:18:54.206Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/scheduler-status, GET} route"}
{"timestamp":"2026-10-18T10:18:54.206Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/health-check, GET} route"}
{"timestamp":"2026-10-18T10:18:54.206Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/pause-scheduler, POST} route"}
{"timestamp":"2026-10-18T10:18:54.206Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/:id, GET} route"}
{"timestamp":"2026-10-18T10:18:54.206Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/:id, PATCH} route"}
{"timestamp":"2026-10-18T10:18:54.207Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/:id, DELETE} route"}
{"timestamp":"2026-10-18T10:18:54.207Z","level":"log","context":"RoutesResolver","message":"DomainController {/domains}:"}
{"timestamp":"2026-10-18T10:18:54.207Z","level":"log","context":"RouterExplorer","message":"Mapped {/domains, GET} route"}
{"timestamp":"2026-10-18T10:18:54.207Z","level":"log","context":"RouterExplorer","message":"Mapped {/domains/:id, GET} route"}
{"timestamp":"2026-10-18T10:18:54.207Z","level":"log","context":"RouterExplorer","message":"Mapped {/domains, POST} route"}
{"timestamp":"2026-10-18T10:18:54.207Z","level":"log","context":"RouterExplorer","message":"Mapped {/domains/:id, PUT} route"}
{"timestamp":"2026-10-18T10:18:54.207Z","level":"log","context":"RouterExplorer","message":"Mapped {/domains/:id, DELETE} route"}
{"timestamp":"2026-10-18T10:18:54.208Z","level":"log","context":"RouterExplorer","message":"Mapped {/domains/seed, POST} route"}
{"timestamp":"2026-10-18T10:18:54.208Z","level":"log","context":"RoutesResolver","message":"MspSubscriptionController {/msp-subscription}:"}
{"timestamp":"2026-10-18T10:18:54.208Z","level":"log","context":"RouterExplorer","message":"Mapped {/msp-subscription/current, GET} route"}
{"timestamp":"2026-10-18T10:18:54.208Z","level":"log","context":"RouterExplorer","message":"Mapped {/msp-subscription/invoices, GET} route"}
{"timestamp":"2026-10-18T10:18:54.208Z","level":"log","context":"RouterExplorer","message":"Mapped {/msp-subscription/invoice/:invoiceId/pdf, GET} route"}
{"timestamp":"2026-10-18T10:18:54.208Z","level":"log","context":"RoutesResolver","message":"MspSubscriptionController {/api/msp-subscription}:"}
{"timestamp":"2026-10-18T10:18:54.208Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/msp-subscription/current, GET} route"}
{"timestamp":"2026-10-18T10:18:54.208Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/msp-subscription/invoices, GET} route"}
{"timestamp":"2026-10-18T10:18:54.209Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/msp-subscription/invoice/:invoiceId/pdf, GET} route"}
{"timestamp":"2026-10-18T10:18:54.271Z","level":"log","context":"NestApplication","message":"Nest application successfully started"}
{"timestamp":"2026-10-18T10:18:54.286Z","level":"log","context":"Bootstrap","message":"Users API successfully started on port 3842"}
{"timestamp":"2026-10-18T10:18:54.286Z","level":"log","context":"SeedService","message":"🌱 Starting database seeding..."}
{"timestamp":"2026-10-18T10:18:54.291Z","level":"log","context":"SeedService","message":"Admin account already exists, skipping seed"}
{"timestamp":"2026-10-18T10:18:54.293Z","level":"log","context":"SeedService","message":"Reseller account already exists, skipping seed"}
{"timestamp":"2026-10-18T10:18:54.294Z","level":"log","context":"SeedService","message":"MSP account already exists, skipping seed"}
{"timestamp":"2026-10-18T10:18:54.294Z","level":"log","context":"SeedService","message":"✅ Database seeding completed successfully"}
{"timestamp":"2026-10-18T10:18:54.334Z","level":"log","context":"UsersApiController","message":"Hello endpoint accessed"}
{"timestamp":"2026-10-18T15:33:07.008Z","level":"warn","context":"LegacyRouteConverter","message":"Unsupported route path: \"/lp/*\". In previous versions, the symbols ?, *, and + were used to denote optional or repeating path parameters. The latest version of \"path-to-regexp\" now requires the use of named parameters. For example, instead of using a route like /users/* to capture all routes starting with \"/users\", you should use /users/*path. For more details, refer to the migration guide. Attempting to auto-convert..."}
{"timestamp":"2026-10-18T15:33:07.058Z","level":"log","context":"Bootstrap","message":"Starting Users API on port 3842..."}
{"timestamp":"2026-10-18T15:33:07.063Z","level":"log","context":"RoutesResolver","message":"UsersApiController {/}:"}
{"timestamp":"2026-10-18T15:33:07.068Z","level":"log","context":"RouterExplorer","message":"Mapped {/, GET} route"}
{"timestamp":"2026-10-18T15:33:07.068Z","level":"log","context":"RoutesResolver","message":"AuthController {/auth}:"}
{"timestamp":"2026-10-18T15:33:07.069Z","level":"log","context":"RouterExplorer","message":"Mapped {/auth/login, POST} route"}
{"timestamp":"2026-10-18T15:33:07.069Z","level":"log","context":"RouterExplorer","message":"Mapped {/auth/admin/login, POST} route"}
{"timestamp":"2026-10-18T15:33:07.070Z","level":"log","context":"RouterExplorer","message":"Mapped {/auth/send-otp, POST} route"}
{"timestamp":"2026-10-18T15:33:07.071Z","level":"log","context":"RouterExplorer","message":"Mapped {/auth/verify-otp, POST} route"}
{"timestamp":"2026-10-18T15:33:07.071Z","level":"log","context":"RouterExplorer","message":"Mapped {/auth/signup, POST} route"}
{"timestamp":"2026-10-18T15:33:07.072Z","level":"log","context":"RouterExplorer","message":"Mapped {/auth/subscription-status, GET} route"}
{"timestamp":"2026-10-18T15:33:07.072Z","level":"log","context":"RoutesResolver","message":"AdminMspController {/admin/msp}:"}
{"timestamp":"2026-10-18T15:33:07.072Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/msp, GET} route"}
{"timestamp":"2026-10-18T15:33:07.074Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/msp/:id, GET} route"}
{"timestamp":"2026-10-18T15:33:07.074Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/msp, POST} route"}
{"timestamp":"2026-10-18T15:33:07.074Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/msp/:id, PUT} route"}
{"timestamp":"2026-10-18T15:33:07.075Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/msp/:id, DELETE} route"}
{"timestamp":"2026-10-18T15:33:07.075Z","level":"log","context":"RoutesResolver","message":"AdminLicenseController {/admin/licenses}:"}
{"timestamp":"2026-10-18T15:33:07.075Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/licenses/summary, GET} route"}
{"timestamp":"2026-10-18T15:33:07.076Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/licenses/msp/:mspId, GET} route"}
{"timestamp":"2026-10-18T15:33:07.076Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/licenses/msp/:mspId, PUT} route"}
{"timestamp":"2026-10-18T15:33:07.076Z","level":"log","context":"RoutesResolver","message":"AdminImpersonationController {/admin/impersonation}:"}
{"timestamp":"2026-10-18T15:33:07.076Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/impersonation/msp-users, GET} route"}
{"timestamp":"2026-10-18T15:33:07.077Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/impersonation/impersonate, POST} route"}
{"timestamp":"2026-10-18T15:33:07.080Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/impersonation/stop, POST} route"}
{"timestamp":"2026-10-18T15:33:07.080Z","level":"log","context":"RoutesResolver","message":"AdminAiUsageController {/admin/ai-usage}:"}
{"timestamp":"2026-10-18T15:33:07.081Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-usage, GET} route"}
{"timestamp":"2026-10-18T15:33:07.081Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-usage/business/:businessId, GET} route"}
{"timestamp":"2026-10-18T15:33:07.081Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-usage/report/monthly, GET} route"}
{"timestamp":"2026-10-18T15:33:07.081Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-usage/pricing, GET} route"}
{"timestamp":"2026-10-18T15:33:07.081Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-usage/pricing, POST} route"}
{"timestamp":"2026-10-18T15:33:07.082Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-usage/credit/:businessId, PUT} route"}
{"timestamp":"2026-10-18T15:33:07.082Z","level":"log","context":"RoutesResolver","message":"AdminAiUsageController {/api/admin/ai-usage}:"}
{"timestamp":"2026-10-18T15:33:07.082Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-usage, GET} route"}
{"timestamp":"2026-10-18T15:33:07.082Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-usage/business/:businessId, GET} route"}
{"timestamp":"2026-10-18T15:33:07.082Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-usage/report/monthly, GET} route"}
{"timestamp":"2026-10-18T15:33:07.082Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-usage/pricing, GET} route"}
{"timestamp":"2026-10-18T15:33:07.083Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-usage/pricing, POST} route"}
{"timestamp":"2026-10-18T15:33:07.083Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-usage/credit/:businessId, PUT} route"}
{"timestamp":"2026-10-18T15:33:07.083Z","level":"log","context":"RoutesResolver","message":"AdminAiModelController {/admin/ai-models}:"}
{"timestamp":"2026-10-18T15:33:07.083Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models, POST} route"}
{"timestamp":"2026-10-18T15:33:07.083Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models, GET} route"}
{"timestamp":"2026-10-18T15:33:07.084Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/default, GET} route"}
{"timestamp":"2026-10-18T15:33:07.084Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/:id, GET} route"}
{"timestamp":"2026-10-18T15:33:07.084Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/:id, PUT} route"}
{"timestamp":"2026-10-18T15:33:07.084Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/:id, DELETE} route"}
{"timestamp":"2026-10-18T15:33:07.084Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/:id/set-default, POST} route"}
{"timestamp":"2026-10-18T15:33:07.085Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/assign-to-business, POST} route"}
{"timestamp":"2026-10-18T15:33:07.085Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/business/:businessId, GET} route"}
{"timestamp":"2026-10-18T15:33:07.085Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/:id/businesses, GET} route"}
{"timestamp":"2026-10-18T15:33:07.085Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/initialize-defaults, POST} route"}
{"timestamp":"2026-10-18T15:33:07.085Z","level":"log","context":"RoutesResolver","message":"AdminAiModelController {/api/admin/ai-models}:"}
{"timestamp":"2026-10-18T15:33:07.086Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models, POST} route"}
{"timestamp":"2026-10-18T15:33:07.086Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models, GET} route"}
{"timestamp":"2026-10-18T15:33:07.086Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/default, GET} route"}
{"timestamp":"2026-10-18T15:33:07.086Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/:id, GET} route"}
{"timestamp":"2026-10-18T15:33:07.086Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/:id, PUT} route"}
{"timestamp":"2026-10-18T15:33:07.087Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/:id, DELETE} route"}
{"timestamp":"2026-10-18T15:33:07.087Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/:id/set-default, POST} route"}
{"timestamp":"2026-10-18T15:33:07.087Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/assign-to-business, POST} route"}
{"timestamp":"2026-10-18T15:33:07.087Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/business/:businessId, GET} route"}
{"timestamp":"2026-10-18T15:33:07.087Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/:id/businesses, GET} route"}
{"timestamp":"2026-10-18T15:33:07.087Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/initialize-defaults, POST} route"}
{"timestamp":"2026-10-18T15:33:07.088Z","level":"log","context":"RoutesResolver","message":"AdminBusinessController {/admin/businesses}:"}
{"timestamp":"2026-10-18T15:33:07.088Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/businesses, GET} route"}
{"timestamp":"2026-10-18T15:33:07.088Z","level":"log","context":"RoutesResolver","message":"ResellerManagementController {/admin/resellers}:"}
{"timestamp":"2026-10-18T15:33:07.088Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/resellers, GET} route"}
{"timestamp":"2026-10-18T15:33:07.088Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/resellers/create-default, POST} route"}
{"timestamp":"2026-10-18T15:33:07.088Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/resellers, POST} route"}
{"timestamp":"2026-10-18T15:33:07.089Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/resellers/:id/toggle-status, PUT} route"}
{"timestamp":"2026-10-18T15:33:07.089Z","level":"log","context":"RoutesResolver","message":"SubscriptionController {/subscription}:"}
{"timestamp":"2026-10-18T15:33:07.089Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/plans, GET} route"}
{"timestamp":"2026-10-18T15:33:07.089Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/calculate-price, POST} route"}
{"timestamp":"2026-10-18T15:33:07.089Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/current, GET} route"}
{"timestamp":"2026-10-18T15:33:07.090Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/create, POST} route"}
{"timestamp":"2026-10-18T15:33:07.090Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/:id, PUT} route"}
{"timestamp":"2026-10-18T15:33:07.090Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/:id/cancel, DELETE} route"}
{"timestamp":"2026-10-18T15:33:07.090Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/sync/:stripeSubscriptionId, POST} route"}
{"timestamp":"2026-10-18T15:33:07.090Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/payments, GET} route"}
{"timestamp":"2026-10-18T15:33:07.090Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/payments/stats, GET} route"}
{"timestamp":"2026-10-18T15:33:07.091Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/payment/:id, GET} route"}
{"timestamp":"2026-10-18T15:33:07.091Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/payment-methods/attach, POST} route"}
{"timestamp":"2026-10-18T15:33:07.091Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/payment-methods/:paymentMethodId, DELETE} route"}
{"timestamp":"2026-10-18T15:33:07.091Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/payment-methods, GET} route"}
{"timestamp":"2026-10-18T15:33:07.091Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/setup-intent, POST} route"}
{"timestamp":"2026-10-18T15:33:07.091Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/update-employee-count, POST} route"}
{"timestamp":"2026-10-18T15:33:07.092Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/retry-payment/:subscriptionId, POST} route"}
{"timestamp":"2026-10-18T15:33:07.092Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/invoice/:invoiceId/pdf, GET} route"}
{"timestamp":"2026-10-18T15:33:07.092Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/preview-upgrade, POST} route"}
{"timestamp":"2026-10-18T15:33:07.092Z","level":"log","context":"RoutesResolver","message":"SubscriptionController {/api/subscription}:"}
{"timestamp":"2026-10-18T15:33:07.092Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/plans, GET} route"}
{"timestamp":"2026-10-18T15:33:07.092Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/calculate-price, POST} route"}
{"timestamp":"2026-10-18T15:33:07.093Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/current, GET} route"}
{"timestamp":"2026-10-18T15:33:07.093Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/create, POST} route"}
{"timestamp":"2026-10-18T15:33:07.093Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/:id, PUT} route"}
{"timestamp":"2026-10-18T15:33:07.093Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/:id/cancel, DELETE} route"}
{"timestamp":"2026-10-18T15:33:07.093Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/sync/:stripeSubscriptionId, POST} route"}
{"timestamp":"2026-10-18T15:33:07.093Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/payments, GET} route"}
{"timestamp":"2026-10-18T15:33:07.094Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/payments/stats, GET} route"}
{"timestamp":"2026-10-18T15:33:07.094Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/payment/:id, GET} route"}
{"timestamp":"2026-10-18T15:33:07.094Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/payment-methods/attach, POST} route"}
{"timestamp":"2026-10-18T15:33:07.094Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/payment-methods/:paymentMethodId, DELETE} route"}
{"timestamp":"2026-10-18T15:33:07.094Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/payment-methods, GET} route"}
{"timestamp":"2026-10-18T15:33:07.094Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/setup-intent, POST} route"}
{"timestamp":"2026-10-18T15:33:07.095Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/update-employee-count, POST} route"}
{"timestamp":"2026-10-18T15:33:07.095Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/retry-payment/:subscriptionId, POST} route"}
{"timestamp":"2026-10-18T15:33:07.095Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/invoice/:invoiceId/pdf, GET} route"}
{"timestamp":"2026-10-18T15:33:07.095Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/preview-upgrade, POST} route"}
{"timestamp":"2026-10-18T15:33:07.095Z","level":"log","context":"RoutesResolver","message":"StripeWebhookController {/stripe/webhook}:"}
{"timestamp":"2026-10-18T15:33:07.095Z","level":"log","context":"RouterExplorer","message":"Mapped {/stripe/webhook/test, GET} route"}
{"timestamp":"2026-10-18T15:33:07.095Z","level":"log","context":"RouterExplorer","message":"Mapped {/stripe/webhook, POST} route"}
{"timestamp":"2026-10-18T15:33:07.096Z","level":"log","context":"RoutesResolver","message":"EmailController {/email-templates}:"}
{"timestamp":"2026-10-18T15:33:07.096Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates/test, POST} route"}
{"timestamp":"2026-10-18T15:33:07.096Z","level":"log","context":"RoutesResolver","message":"EmployeeController {/employees}:"}
{"timestamp":"2026-10-18T15:33:07.096Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees, POST} route"}
{"timestamp":"2026-10-18T15:33:07.096Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees, GET} route"}
{"timestamp":"2026-10-18T15:33:07.096Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees/export, GET} route"}
{"timestamp":"2026-10-18T15:33:07.097Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees/risk-stats, GET} route"}
{"timestamp":"2026-10-18T15:33:07.097Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees/:id, GET} route"}
{"timestamp":"2026-10-18T15:33:07.097Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees/:id, PUT} route"}
{"timestamp":"2026-10-18T15:33:07.097Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees/:id, DELETE} route"}
{"timestamp":"2026-10-18T15:33:07.097Z","level":"log","context":"RoutesResolver","message":"GroupController {/groups}:"}
{"timestamp":"2026-10-18T15:33:07.097Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups, POST} route"}
{"timestamp":"2026-10-18T15:33:07.098Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups, GET} route"}
{"timestamp":"2026-10-18T15:33:07.098Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups/standard, GET} route"}
{"timestamp":"2026-10-18T15:33:07.098Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups/:id, GET} route"}
{"timestamp":"2026-10-18T15:33:07.098Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups/:id, PUT} route"}
{"timestamp":"2026-10-18T15:33:07.098Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups/:id, DELETE} route"}
{"timestamp":"2026-10-18T15:33:07.099Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups/:id/info, GET} route"}
{"timestamp":"2026-10-18T15:33:07.099Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups/:id/with-employees, GET} route"}
{"timestamp":"2026-10-18T15:33:07.099Z","level":"log","context":"RoutesResolver","message":"SenderProfileController {/sender-profiles}:"}
{"timestamp":"2026-10-18T15:33:07.099Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles, GET} route"}
{"timestamp":"2026-10-18T15:33:07.099Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles/:id, GET} route"}
{"timestamp":"2026-10-18T15:33:07.099Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles, POST} route"}
{"timestamp":"2026-10-18T15:33:07.099Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles/:id, PUT} route"}
{"timestamp":"2026-10-18T15:33:07.100Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles/:id, DELETE} route"}
{"timestamp":"2026-10-18T15:33:07.100Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles/:id/verify-domain, POST} route"}
{"timestamp":"2026-10-18T15:33:07.100Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles/domain-verification, GET} route"}
{"timestamp":"2026-10-18T15:33:07.100Z","level":"log","context":"RoutesResolver","message":"EmailTemplateController {/email-templates}:"}
{"timestamp":"2026-10-18T15:33:07.100Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates, GET} route"}
{"timestamp":"2026-10-18T15:33:07.100Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates/:id, GET} route"}
{"timestamp":"2026-10-18T15:33:07.101Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates, POST} route"}
{"timestamp":"2026-10-18T15:33:07.101Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates/:id, PUT} route"}
{"timestamp":"2026-10-18T15:33:07.101Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates/:id, DELETE} route"}
{"timestamp":"2026-10-18T15:33:07.101Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates/:id/duplicate, POST} route"}
{"timestamp":"2026-10-18T15:33:07.101Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates/:id/preview, GET} route"}
{"timestamp":"2026-10-18T15:33:07.101Z","level":"log","context":"RoutesResolver","message":"ScenarioController {/scenarios}:"}
{"timestamp":"2026-10-18T15:33:07.102Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios, POST} route"}
{"timestamp":"2026-10-18T15:33:07.102Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios/generate-content, POST} route"}
{"timestamp":"2026-10-18T15:33:07.102Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios, GET} route"}
{"timestamp":"2026-10-18T15:33:07.102Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios/:id, GET} route"}
{"timestamp":"2026-10-18T15:33:07.102Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios/:id, PUT} route"}
{"timestamp":"2026-10-18T15:33:07.102Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios/:id, DELETE} route"}
{"timestamp":"2026-10-18T15:33:07.103Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios/generate-from-json, POST} route"}
{"timestamp":"2026-10-18T15:33:07.103Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios/:id/save-as-custom-scenario, POST} route"}
{"timestamp":"2026-10-18T15:33:07.103Z","level":"log","context":"RoutesResolver","message":"CampaignController {/campaigns}:"}
{"timestamp":"2026-10-18T15:33:07.103Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns, POST} route"}
{"timestamp":"2026-10-18T15:33:07.103Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns, GET} route"}
{"timestamp":"2026-10-18T15:33:07.103Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id, GET} route"}
{"timestamp":"2026-10-18T15:33:07.104Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id/details, GET} route"}
{"timestamp":"2026-10-18T15:33:07.104Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id/employees, GET} route"}
{"timestamp":"2026-10-18T15:33:07.104Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id, PATCH} route"}
{"timestamp":"2026-10-18T15:33:07.104Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id/start, POST} route"}
{"timestamp":"2026-10-18T15:33:07.105Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id/stop, POST} route"}
{"timestamp":"2026-10-18T15:33:07.105Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id/duplicate, POST} route"}
{"timestamp":"2026-10-18T15:33:07.105Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id, DELETE} route"}
{"timestamp":"2026-10-18T15:33:07.105Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/auto-generate-program, POST} route"}
{"timestamp":"2026-10-18T15:33:07.105Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/generate-from-threat-intelligence, POST} route"}
{"timestamp":"2026-10-18T15:33:07.106Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id/risk-score, GET} route"}
{"timestamp":"2026-10-18T15:33:07.106Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/recalculate-risk-scores, POST} route"}
{"timestamp":"2026-10-18T15:33:07.106Z","level":"log","context":"RoutesResolver","message":"CampaignController {/api/campaigns}:"}
{"timestamp":"2026-10-18T15:33:07.106Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns, POST} route"}
{"timestamp":"2026-10-18T15:33:07.106Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns, GET} route"}
{"timestamp":"2026-10-18T15:33:07.106Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id, GET} route"}
{"timestamp":"2026-10-18T15:33:07.106Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id/details, GET} route"}
{"timestamp":"2026-10-18T15:33:07.107Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id/employees, GET} route"}
{"timestamp":"2026-10-18T15:33:07.107Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id, PATCH} route"}
{"timestamp":"2026-10-18T15:33:07.107Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id/start, POST} route"}
{"timestamp":"2026-10-18T15:33:07.107Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id/stop, POST} route"}
{"timestamp":"2026-10-18T15:33:07.107Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id/duplicate, POST} route"}
{"timestamp":"2026-10-18T15:33:07.107Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id, DELETE} route"}
{"timestamp":"2026-10-18T15:33:07.108Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/auto-generate-program, POST} route"}
{"timestamp":"2026-10-18T15:33:07.108Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/generate-from-threat-intelligence, POST} route"}
{"timestamp":"2026-10-18T15:33:07.108Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id/risk-score, GET} route"}
{"timestamp":"2026-10-18T15:33:07.108Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/recalculate-risk-scores, POST} route"}
{"timestamp":"2026-10-18T15:33:07.109Z","level":"log","context":"RoutesResolver","message":"NotificationsController {/notifications}:"}
{"timestamp":"2026-10-18T15:33:07.109Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications, POST} route"}
{"timestamp":"2026-10-18T15:33:07.109Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications, GET} route"}
{"timestamp":"2026-10-18T15:33:07.109Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/unread, GET} route"}
{"timestamp":"2026-10-18T15:33:07.109Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/unread-count, GET} route"}
{"timestamp":"2026-10-18T15:33:07.110Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/:id, GET} route"}
{"timestamp":"2026-10-18T15:33:07.110Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/:id, PATCH} route"}
{"timestamp":"2026-10-18T15:33:07.110Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/:id/read, PATCH} route"}
{"timestamp":"2026-10-18T15:33:07.110Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/mark-all-read, PATCH} route"}
{"timestamp":"2026-10-18T15:33:07.111Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/:id, DELETE} route"}
{"timestamp":"2026-10-18T15:33:07.111Z","level":"log","context":"RoutesResolver","message":"LandingPageController {/lp}:"}
{"timestamp":"2026-10-18T15:33:07.111Z","level":"log","context":"RouterExplorer","message":"Mapped {/lp/image, GET} route"}
{"timestamp":"2026-10-18T15:33:07.111Z","level":"log","context":"RouterExplorer","message":"Mapped {/lp/learning, GET} route"}
{"timestamp":"2026-10-18T15:33:07.112Z","level":"log","context":"RouterExplorer","message":"Mapped {/lp/submit, POST} route"}
{"timestamp":"2026-10-18T15:33:07.112Z","level":"log","context":"RouterExplorer","message":"Mapped {/lp/test, GET} route"}
{"timestamp":"2026-10-18T15:33:07.112Z","level":"warn","context":"LegacyRouteConverter","message":"Unsupported route path: \"/lp/*\". In previous versions, the symbols ?, *, and + were used to denote optional or repeating path parameters. The latest version of \"path-to-regexp\" now requires the use of named parameters. For example, instead of using a route like /users/* to capture all routes starting with \"/users\", you should use /users/*path. For more details, refer to the migration guide. Attempting to auto-convert..."}
{"timestamp":"2026-10-18T15:33:07.113Z","level":"log","context":"RouterExplorer","message":"Mapped {/lp/*, ALL} route"}
{"timestamp":"2026-10-18T15:33:07.113Z","level":"log","context":"RoutesResolver","message":"SupportController {/support}:"}
{"timestamp":"2026-10-18T15:33:07.113Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets, POST} route"}
{"timestamp":"2026-10-18T15:33:07.113Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets, GET} route"}
{"timestamp":"2026-10-18T15:33:07.114Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets/:id, GET} route"}
{"timestamp":"2026-10-18T15:33:07.114Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets/:id, PATCH} route"}
{"timestamp":"2026-10-18T15:33:07.114Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets/:id, DELETE} route"}
{"timestamp":"2026-10-18T15:33:07.114Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets/:id/messages, POST} route"}
{"timestamp":"2026-10-18T15:33:07.115Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets/:id/close, POST} route"}
{"timestamp":"2026-10-18T15:33:07.115Z","level":"log","context":"RoutesResolver","message":"BusninessMetricsController {/business-metrics}:"}
{"timestamp":"2026-10-18T15:33:07.115Z","level":"log","context":"RouterExplorer","message":"Mapped {/business-metrics, GET} route"}
{"timestamp":"2026-10-18T15:33:07.115Z","level":"log","context":"RoutesResolver","message":"UsersController {/users}:"}
{"timestamp":"2026-10-18T15:33:07.115Z","level":"log","context":"RouterExplorer","message":"Mapped {/users/:id, PUT} route"}
{"timestamp":"2026-10-18T15:33:07.116Z","level":"log","context":"RouterExplorer","message":"Mapped {/users/settings, GET} route"}
{"timestamp":"2026-10-18T15:33:07.116Z","level":"log","context":"RouterExplorer","message":"Mapped {/users/settings/general, PUT} route"}
{"timestamp":"2026-10-18T15:33:07.116Z","level":"log","context":"RouterExplorer","message":"Mapped {/users/company/settings, PUT} route"}
{"timestamp":"2026-10-18T15:33:07.116Z","level":"log","context":"RouterExplorer","message":"Mapped {/users/change-password, POST} route"}
{"timestamp":"2026-10-18T15:33:07.116Z","level":"log","context":"RouterExplorer","message":"Mapped {/users/localization/settings, PUT} route"}
{"timestamp":"2026-10-18T15:33:07.116Z","level":"log","context":"RoutesResolver","message":"PartnerController {/partner}:"}
{"timestamp":"2026-10-18T15:33:07.117Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses, POST} route"}
{"timestamp":"2026-10-18T15:33:07.117Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses, GET} route"}
{"timestamp":"2026-10-18T15:33:07.117Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses/:id, GET} route"}
{"timestamp":"2026-10-18T15:33:07.117Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses/:id, PUT} route"}
{"timestamp":"2026-10-18T15:33:07.117Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses/:id, DELETE} route"}
{"timestamp":"2026-10-18T15:33:07.118Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses/:id/impersonate, POST} route"}
{"timestamp":"2026-10-18T15:33:07.118Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses/stop-impersonation, POST} route"}
{"timestamp":"2026-10-18T15:33:07.118Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/license-usage, GET} route"}
{"timestamp":"2026-10-18T15:33:07.118Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/invoices, POST} route"}
{"timestamp":"2026-10-18T15:33:07.119Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/invoices, GET} route"}
{"timestamp":"2026-10-18T15:33:07.119Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/invoices/:id, GET} route"}
{"timestamp":"2026-10-18T15:33:07.119Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/invoices/:id, PUT} route"}
{"timestamp":"2026-10-18T15:33:07.119Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/invoices/:id, DELETE} route"}
{"timestamp":"2026-10-18T15:33:07.119Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/invoices/:id/mark-paid, PUT} route"}
{"timestamp":"2026-10-18T15:33:07.119Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/onboarding/generate-token, POST} route"}
{"timestamp":"2026-10-18T15:33:07.120Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/dashboard, GET} route"}
{"timestamp":"2026-10-18T15:33:07.120Z","level":"log","context":"RoutesResolver","message":"MspSubscriptionController {/partner/msp-subscriptions}:"}
{"timestamp":"2026-10-18T15:33:07.120Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/plans, POST} route"}
{"timestamp":"2026-10-18T15:33:07.120Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/plans, GET} route"}
{"timestamp":"2026-10-18T15:33:07.120Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/plans/:planId, GET} route"}
{"timestamp":"2026-10-18T15:33:07.121Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/plans/:planId, PUT} route"}
{"timestamp":"2026-10-18T15:33:07.121Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/plans/:planId, DELETE} route"}
{"timestamp":"2026-10-18T15:33:07.121Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/businesses/:businessId/subscription, POST} route"}
{"timestamp":"2026-10-18T15:33:07.121Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions, GET} route"}
{"timestamp":"2026-10-18T15:33:07.122Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/businesses/:businessId/subscription, GET} route"}
{"timestamp":"2026-10-18T15:33:07.122Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/businesses/:businessId/subscription, PUT} route"}
{"timestamp":"2026-10-18T15:33:07.122Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/businesses/:businessId/subscription, DELETE} route"}
{"timestamp":"2026-10-18T15:33:07.122Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/businesses/:businessId/subscription/limits, GET} route"}
{"timestamp":"2026-10-18T15:33:07.122Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/businesses/:businessId/subscription/change-plan, PUT} route"}
{"timestamp":"2026-10-18T15:33:07.123Z","level":"log","context":"RoutesResolver","message":"OnboardingController {/onboarding}:"}
{"timestamp":"2026-10-18T15:33:07.123Z","level":"log","context":"RouterExplorer","message":"Mapped {/onboarding/validate/:token, GET} route"}
{"timestamp":"2026-10-18T15:33:07.123Z","level":"log","context":"RouterExplorer","message":"Mapped {/onboarding/complete/:token, POST} route"}
{"timestamp":"2026-10-18T15:33:07.123Z","level":"log","context":"RoutesResolver","message":"ResellerController {/reseller}:"}
{"timestamp":"2026-10-18T15:33:07.123Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/businesses, POST} route"}
{"timestamp":"2026-10-18T15:33:07.123Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/businesses, GET} route"}
{"timestamp":"2026-10-18T15:33:07.124Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/businesses/:id, GET} route"}
{"timestamp":"2026-10-18T15:33:07.124Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/businesses/:id, PUT} route"}
{"timestamp":"2026-10-18T15:33:07.124Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/businesses/:id, DELETE} route"}
{"timestamp":"2026-10-18T15:33:07.124Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/license-usage, GET} route"}
{"timestamp":"2026-10-18T15:33:07.124Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/invoices, POST} route"}
{"timestamp":"2026-10-18T15:33:07.124Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/invoices, GET} route"}
{"timestamp":"2026-10-18T15:33:07.125Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/invoices/:id, GET} route"}
{"timestamp":"2026-10-18T15:33:07.125Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/invoices/:id, PUT} route"}
{"timestamp":"2026-10-18T15:33:07.125Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/invoices/:id, DELETE} route"}
{"timestamp":"2026-10-18T15:33:07.125Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/invoices/:id/mark-paid, PUT} route"}
{"timestamp":"2026-10-18T15:33:07.125Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/onboarding/generate-token, POST} route"}
{"timestamp":"2026-10-18T15:33:07.125Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/dashboard, GET} route"}
{"timestamp":"2026-10-18T15:33:07.125Z","level":"log","context":"RoutesResolver","message":"ResellerSubscriptionController {/reseller}:"}
{"timestamp":"2026-10-18T15:33:07.126Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/plans, POST} route"}
{"timestamp":"2026-10-18T15:33:07.126Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/plans, GET} route"}
{"timestamp":"2026-10-18T15:33:07.126Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/plans/:planId, GET} route"}
{"timestamp":"2026-10-18T15:33:07.126Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/plans/:planId, PUT} route"}
{"timestamp":"2026-10-18T15:33:07.126Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/plans/:planId, DELETE} route"}
{"timestamp":"2026-10-18T15:33:07.127Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/subscriptions/businesses/:businessId/subscription, POST} route"}
{"timestamp":"2026-10-18T15:33:07.127Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/subscriptions, GET} route"}
{"timestamp":"2026-10-18T15:33:07.127Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/subscriptions/businesses/:businessId/subscription, GET} route"}
{"timestamp":"2026-10-18T15:33:07.127Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/subscriptions/businesses/:businessId/subscription, PUT} route"}
{"timestamp":"2026-10-18T15:33:07.128Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/subscriptions/businesses/:businessId/subscription, DELETE} route"}
{"timestamp":"2026-10-18T15:33:07.128Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/subscriptions/businesses/:businessId/subscription/limits, GET} route"}
{"timestamp":"2026-10-18T15:33:07.128Z","level":"log","context":"RoutesResolver","message":"HealthController {/health}:"}
{"timestamp":"2026-10-18T15:33:07.128Z","level":"log","context":"RouterExplorer","message":"Mapped {/health, GET} route"}
{"timestamp":"2026-10-18T15:33:07.128Z","level":"log","context":"RouterExplorer","message":"Mapped {/health/test-logs, GET} route"}
{"timestamp":"2026-10-18T15:33:07.128Z","level":"log","context":"RoutesResolver","message":"AzureAdController {/azure-ad}:"}
{"timestamp":"2026-10-18T15:33:07.128Z","level":"log","context":"RouterExplorer","message":"Mapped {/azure-ad/config, POST} route"}
{"timestamp":"2026-10-18T15:33:07.129Z","level":"log","context":"RouterExplorer","message":"Mapped {/azure-ad/config, GET} route"}
{"timestamp":"2026-10-18T15:33:07.129Z","level":"log","context":"RouterExplorer","message":"Mapped {/azure-ad/test-connection, POST} route"}
{"timestamp":"2026-10-18T15:33:07.129Z","level":"log","context":"RouterExplorer","message":"Mapped {/azure-ad/sync, POST} route"}
{"timestamp":"2026-10-18T15:33:07.129Z","level":"log","context":"RoutesResolver","message":"ThreatsController {/threats}:"}
{"timestamp":"2026-10-18T15:33:07.129Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats, POST} route"}
{"timestamp":"2026-10-18T15:33:07.130Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats, GET} route"}
{"timestamp":"2026-10-18T15:33:07.130Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/chart-data, GET} route"}
{"timestamp":"2026-10-18T15:33:07.130Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/claude-search, POST} route"}
{"timestamp":"2026-10-18T15:33:07.130Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/claude-latest, POST} route"}
{"timestamp":"2026-10-18T15:33:07.130Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/claude-trending, POST} route"}
{"timestamp":"2026-10-18T15:33:07.131Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/claude-categories, POST} route"}
{"timestamp":"2026-10-18T15:33:07.131Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/claude-manual-search, POST} route"}
{"timestamp":"2026-10-18T15:33:07.131Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/claude-quick-search, POST} route"}
{"timestamp":"2026-10-18T15:33:07.131Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/scheduler-status, GET} route"}
{"timestamp":"2026-10-18T15:33:07.131Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/health-check, GET} route"}
{"timestamp":"2026-10-18T15:33:07.132Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/pause-scheduler, POST} route"}
{"timestamp":"2026-10-18T15:33:07.132Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/:id, GET} route"}
{"timestamp":"2026-10-18T15:33:07.132Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/:id, PATCH} route"}
{"timestamp":"2026-10-18T15:33:07.132Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/:id, DELETE} route"}
{"timestamp":"2026-10-18T15:33:07.132Z","level":"log","context":"RoutesResolver","message":"DomainController {/domains}:"}
{"timestamp":"2026-10-18T15:33:07.132Z","level":"log","context":"RouterExplorer","message":"Mapped {/domains, GET} route"}
{"timestamp":"2026-10-18T15:33:07.133Z","level":"log","context":"RouterExplorer","message":"Mapped {/domains/:id, GET} route"}
{"timestamp":"2026-10-18T15:33:07.133Z","level":"log","context":"RouterExplorer","message":"Mapped {/domains, POST} route"}
{"timestamp":"2026-10-18T15:33:07.133Z","level":"log","context":"RouterExplorer","message":"Mapped {/domains/:id, PUT} route"}
{"timestamp":"2026-10-18T15:33:07.133Z","level":"log","context":"RouterExplorer","message":"Mapped {/domains/:id, DELETE} route"}
{"timestamp":"2026-10-18T15:33:07.133Z","level":"log","context":"RouterExplorer","message":"Mapped {/domains/seed, POST} route"}
{"timestamp":"2026-10-18T15:33:07.133Z","level":"log","context":"RoutesResolver","message":"MspSubscriptionController {/msp-subscription}:"}
{"timestamp":"2026-10-18T15:33:07.134Z","level":"log","context":"RouterExplorer","message":"Mapped {/msp-subscription/current, GET} route"}
{"timestamp":"2026-10-18T15:33:07.134Z","level":"log","context":"RouterExplorer","message":"Mapped {/msp-subscription/invoices, GET} route"}
{"timestamp":"2026-10-18T15:33:07.134Z","level":"log","context":"RouterExplorer","message":"Mapped {/msp-subscription/invoice/:invoiceId/pdf, GET} route"}
{"timestamp":"2026-10-18T15:33:07.134Z","level":"log","context":"RoutesResolver","message":"MspSubscriptionController {/api/msp-subscription}:"}
{"timestamp":"2026-10-18T15:33:07.134Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/msp-subscription/current, GET} route"}
{"timestamp":"2026-10-18T15:33:07.134Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/msp-subscription/invoices, GET} route"}
{"timestamp":"2026-10-18T15:33:07.135Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/msp-subscription/invoice/:invoiceId/pdf, GET} route"}
{"timestamp":"2026-10-18T15:33:07.223Z","level":"log","context":"NestApplication","message":"Nest application successfully started"}
{"timestamp":"2026-10-18T15:33:07.235Z","level":"log","context":"Bootstrap","message":"Users API successfully started on port 3842"}
{"timestamp":"2026-10-18T15:33:07.235Z","level":"log","context":"SeedService","message":"🌱 Starting database seeding..."}
{"timestamp":"2026-10-18T15:33:07.243Z","level":"log","context":"SeedService","message":"Admin account already exists, skipping seed"}
{"timestamp":"2026-10-18T15:33:07.245Z","level":"log","context":"SeedService","message":"Reseller account already exists, skipping seed"}
{"timestamp":"2026-10-18T15:33:07.247Z","level":"log","context":"SeedService","message":"MSP account already exists, skipping seed"}
{"timestamp":"2026-10-18T15:33:07.247Z","level":"log","context":"SeedService","message":"✅ Database seeding completed successfully"}
{"timestamp":"2026-10-18T15:33:07.293Z","level":"log","context":"UsersApiController","message":"Hello endpoint accessed"}
{"timestamp":"2026-10-18T16:51:09.766Z","level":"warn","context":"LegacyRouteConverter","message":"Unsupported route path: \"/lp/*\". In previous versions, the symbols ?, *, and + were used to denote optional or repeating path parameters. The latest version of \"path-to-regexp\" now requires the use of named parameters. For example, instead of using a route like /users/* to capture all routes starting with \"/users\", you should use /users/*path. For more details, refer to the migration guide. Attempting to auto-convert..."}
{"timestamp":"2026-10-18T16:51:09.803Z","level":"log","context":"Bootstrap","message":"Starting Users API on port 3842..."}
{"timestamp":"2026-10-18T16:51:09.807Z","level":"log","context":"RoutesResolver","message":"UsersApiController {/}:"}
{"timestamp":"2026-10-18T16:51:09.810Z","level":"log","context":"RouterExplorer","message":"Mapped {/, GET} route"}
{"timestamp":"2026-10-18T16:51:09.810Z","level":"log","context":"RoutesResolver","message":"AuthController {/auth}:"}
{"timestamp":"2026-10-18T16:51:09.811Z","level":"log","context":"RouterExplorer","message":"Mapped {/auth/login, POST} route"}
{"timestamp":"2026-10-18T16:51:09.812Z","level":"log","context":"RouterExplorer","message":"Mapped {/auth/admin/login, POST} route"}
{"timestamp":"2026-10-18T16:51:09.812Z","level":"log","context":"RouterExplorer","message":"Mapped {/auth/send-otp, POST} route"}
{"timestamp":"2026-10-18T16:51:09.812Z","level":"log","context":"RouterExplorer","message":"Mapped {/auth/verify-otp, POST} route"}
{"timestamp":"2026-10-18T16:51:09.813Z","level":"log","context":"RouterExplorer","message":"Mapped {/auth/signup, POST} route"}
{"timestamp":"2026-10-18T16:51:09.813Z","level":"log","context":"RouterExplorer","message":"Mapped {/auth/subscription-status, GET} route"}
{"timestamp":"2026-10-18T16:51:09.813Z","level":"log","context":"RoutesResolver","message":"AdminMspController {/admin/msp}:"}
{"timestamp":"2026-10-18T16:51:09.814Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/msp, GET} route"}
{"timestamp":"2026-10-18T16:51:09.815Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/msp/:id, GET} route"}
{"timestamp":"2026-10-18T16:51:09.815Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/msp, POST} route"}
{"timestamp":"2026-10-18T16:51:09.816Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/msp/:id, PUT} route"}
{"timestamp":"2026-10-18T16:51:09.816Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/msp/:id, DELETE} route"}
{"timestamp":"2026-10-18T16:51:09.816Z","level":"log","context":"RoutesResolver","message":"AdminLicenseController {/admin/licenses}:"}
{"timestamp":"2026-10-18T16:51:09.816Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/licenses/summary, GET} route"}
{"timestamp":"2026-10-18T16:51:09.816Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/licenses/msp/:mspId, GET} route"}
{"timestamp":"2026-10-18T16:51:09.817Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/licenses/msp/:mspId, PUT} route"}
{"timestamp":"2026-10-18T16:51:09.817Z","level":"log","context":"RoutesResolver","message":"AdminImpersonationController {/admin/impersonation}:"}
{"timestamp":"2026-10-18T16:51:09.817Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/impersonation/msp-users, GET} route"}
{"timestamp":"2026-10-18T16:51:09.820Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/impersonation/impersonate, POST} route"}
{"timestamp":"2026-10-18T16:51:09.820Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/impersonation/stop, POST} route"}
{"timestamp":"2026-10-18T16:51:09.821Z","level":"log","context":"RoutesResolver","message":"AdminAiUsageController {/admin/ai-usage}:"}
{"timestamp":"2026-10-18T16:51:09.821Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-usage, GET} route"}
{"timestamp":"2026-10-18T16:51:09.821Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-usage/business/:businessId, GET} route"}
{"timestamp":"2026-10-18T16:51:09.821Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-usage/report/monthly, GET} route"}
{"timestamp":"2026-10-18T16:51:09.822Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-usage/pricing, GET} route"}
{"timestamp":"2026-10-18T16:51:09.822Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-usage/pricing, POST} route"}
{"timestamp":"2026-10-18T16:51:09.822Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-usage/credit/:businessId, PUT} route"}
{"timestamp":"2026-10-18T16:51:09.822Z","level":"log","context":"RoutesResolver","message":"AdminAiUsageController {/api/admin/ai-usage}:"}
{"timestamp":"2026-10-18T16:51:09.822Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-usage, GET} route"}
{"timestamp":"2026-10-18T16:51:09.823Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-usage/business/:businessId, GET} route"}
{"timestamp":"2026-10-18T16:51:09.823Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-usage/report/monthly, GET} route"}
{"timestamp":"2026-10-18T16:51:09.823Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-usage/pricing, GET} route"}
{"timestamp":"2026-10-18T16:51:09.823Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-usage/pricing, POST} route"}
{"timestamp":"2026-10-18T16:51:09.823Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-usage/credit/:businessId, PUT} route"}
{"timestamp":"2026-10-18T16:51:09.823Z","level":"log","context":"RoutesResolver","message":"AdminAiModelController {/admin/ai-models}:"}
{"timestamp":"2026-10-18T16:51:09.824Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models, POST} route"}
{"timestamp":"2026-10-18T16:51:09.824Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models, GET} route"}
{"timestamp":"2026-10-18T16:51:09.824Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/default, GET} route"}
{"timestamp":"2026-10-18T16:51:09.824Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/:id, GET} route"}
{"timestamp":"2026-10-18T16:51:09.824Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/:id, PUT} route"}
{"timestamp":"2026-10-18T16:51:09.824Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/:id, DELETE} route"}
{"timestamp":"2026-10-18T16:51:09.825Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/:id/set-default, POST} route"}
{"timestamp":"2026-10-18T16:51:09.825Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/assign-to-business, POST} route"}
{"timestamp":"2026-10-18T16:51:09.825Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/business/:businessId, GET} route"}
{"timestamp":"2026-10-18T16:51:09.825Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/:id/businesses, GET} route"}
{"timestamp":"2026-10-18T16:51:09.826Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/initialize-defaults, POST} route"}
{"timestamp":"2026-10-18T16:51:09.826Z","level":"log","context":"RoutesResolver","message":"AdminAiModelController {/api/admin/ai-models}:"}
{"timestamp":"2026-10-18T16:51:09.826Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models, POST} route"}
{"timestamp":"2026-10-18T16:51:09.826Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models, GET} route"}
{"timestamp":"2026-10-18T16:51:09.826Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/default, GET} route"}
{"timestamp":"2026-10-18T16:51:09.826Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/:id, GET} route"}
{"timestamp":"2026-10-18T16:51:09.826Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/:id, PUT} route"}
{"timestamp":"2026-10-18T16:51:09.827Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/:id, DELETE} route"}
{"timestamp":"2026-10-18T16:51:09.827Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/:id/set-default, POST} route"}
{"timestamp":"2026-10-18T16:51:09.827Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/assign-to-business, POST} route"}
{"timestamp":"2026-10-18T16:51:09.827Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/business/:businessId, GET} route"}
{"timestamp":"2026-10-18T16:51:09.827Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/:id/businesses, GET} route"}
{"timestamp":"2026-10-18T16:51:09.827Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/initialize-defaults, POST} route"}
{"timestamp":"2026-10-18T16:51:09.828Z","level":"log","context":"RoutesResolver","message":"AdminBusinessController {/admin/businesses}:"}
{"timestamp":"2026-10-18T16:51:09.828Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/businesses, GET} route"}
{"timestamp":"2026-10-18T16:51:09.828Z","level":"log","context":"RoutesResolver","message":"ResellerManagementController {/admin/resellers}:"}
{"timestamp":"2026-10-18T16:51:09.828Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/resellers, GET} route"}
{"timestamp":"2026-10-18T16:51:09.828Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/resellers/create-default, POST} route"}
{"timestamp":"2026-10-18T16:51:09.828Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/resellers, POST} route"}
{"timestamp":"2026-10-18T16:51:09.829Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/resellers/:id/toggle-status, PUT} route"}
{"timestamp":"2026-10-18T16:51:09.829Z","level":"log","context":"RoutesResolver","message":"SubscriptionController {/subscription}:"}
{"timestamp":"2026-10-18T16:51:09.829Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/plans, GET} route"}
{"timestamp":"2026-10-18T16:51:09.829Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/calculate-price, POST} route"}
{"timestamp":"2026-10-18T16:51:09.829Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/current, GET} route"}
{"timestamp":"2026-10-18T16:51:09.830Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/create, POST} route"}
{"timestamp":"2026-10-18T16:51:09.830Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/:id, PUT} route"}
{"timestamp":"2026-10-18T16:51:09.830Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/:id/cancel, DELETE} route"}
{"timestamp":"2026-10-18T16:51:09.830Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/sync/:stripeSubscriptionId, POST} route"}
{"timestamp":"2026-10-18T16:51:09.830Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/payments, GET} route"}
{"timestamp":"2026-10-18T16:51:09.830Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/payments/stats, GET} route"}
{"timestamp":"2026-10-18T16:51:09.831Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/payment/:id, GET} route"}
{"timestamp":"2026-10-18T16:51:09.831Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/payment-methods/attach, POST} route"}
{"timestamp":"2026-10-18T16:51:09.831Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/payment-methods/:paymentMethodId, DELETE} route"}
{"timestamp":"2026-10-18T16:51:09.831Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/payment-methods, GET} route"}
{"timestamp":"2026-10-18T16:51:09.831Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/setup-intent, POST} route"}
{"timestamp":"2026-10-18T16:51:09.831Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/update-employee-count, POST} route"}
{"timestamp":"2026-10-18T16:51:09.832Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/retry-payment/:subscriptionId, POST} route"}
{"timestamp":"2026-10-18T16:51:09.832Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/invoice/:invoiceId/pdf, GET} route"}
{"timestamp":"2026-10-18T16:51:09.832Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/preview-upgrade, POST} route"}
{"timestamp":"2026-10-18T16:51:09.832Z","level":"log","context":"RoutesResolver","message":"SubscriptionController {/api/subscription}:"}
{"timestamp":"2026-10-18T16:51:09.832Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/plans, GET} route"}
{"timestamp":"2026-10-18T16:51:09.832Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/calculate-price, POST} route"}
{"timestamp":"2026-10-18T16:51:09.832Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/current, GET} route"}
{"timestamp":"2026-10-18T16:51:09.833Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/create, POST} route"}
{"timestamp":"2026-10-18T16:51:09.833Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/:id, PUT} route"}
{"timestamp":"2026-10-18T16:51:09.833Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/:id/cancel, DELETE} route"}
{"timestamp":"2026-10-18T16:51:09.833Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/sync/:stripeSubscriptionId, POST} route"}
{"timestamp":"2026-10-18T16:51:09.833Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/payments, GET} route"}
{"timestamp":"2026-10-18T16:51:09.833Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/payments/stats, GET} route"}
{"timestamp":"2026-10-18T16:51:09.834Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/payment/:id, GET} route"}
{"timestamp":"2026-10-18T16:51:09.834Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/payment-methods/attach, POST} route"}
{"timestamp":"2026-10-18T16:51:09.834Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/payment-methods/:paymentMethodId, DELETE} route"}
{"timestamp":"2026-10-18T16:51:09.834Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/payment-methods, GET} route"}
{"timestamp":"2026-10-18T16:51:09.834Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/setup-intent, POST} route"}
{"timestamp":"2026-10-18T16:51:09.834Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/update-employee-count, POST} route"}
{"timestamp":"2026-10-18T16:51:09.834Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/retry-payment/:subscriptionId, POST} route"}
{"timestamp":"2026-10-18T16:51:09.835Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/invoice/:invoiceId/pdf, GET} route"}
{"timestamp":"2026-10-18T16:51:09.835Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/preview-upgrade, POST} route"}
{"timestamp":"2026-10-18T16:51:09.835Z","level":"log","context":"RoutesResolver","message":"StripeWebhookController {/stripe/webhook}:"}
{"timestamp":"2026-10-18T16:51:09.835Z","level":"log","context":"RouterExplorer","message":"Mapped {/stripe/webhook/test, GET} route"}
{"timestamp":"2026-10-18T16:51:09.835Z","level":"log","context":"RouterExplorer","message":"Mapped {/stripe/webhook, POST} route"}
{"timestamp":"2026-10-18T16:51:09.835Z","level":"log","context":"RoutesResolver","message":"EmailController {/email-templates}:"}
{"timestamp":"2026-10-18T16:51:09.835Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates/test, POST} route"}
{"timestamp":"2026-10-18T16:51:09.836Z","level":"log","context":"RoutesResolver","message":"EmployeeController {/employees}:"}
{"timestamp":"2026-10-18T16:51:09.836Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees, POST} route"}
{"timestamp":"2026-10-18T16:51:09.836Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees, GET} route"}
{"timestamp":"2026-10-18T16:51:09.836Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees/export, GET} route"}
{"timestamp":"2026-10-18T16:51:09.836Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees/risk-stats, GET} route"}
{"timestamp":"2026-10-18T16:51:09.836Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees/:id, GET} route"}
{"timestamp":"2026-10-18T16:51:09.837Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees/:id, PUT} route"}
{"timestamp":"2026-10-18T16:51:09.837Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees/:id, DELETE} route"}
{"timestamp":"2026-10-18T16:51:09.837Z","level":"log","context":"RoutesResolver","message":"GroupController {/groups}:"}
{"timestamp":"2026-10-18T16:51:09.837Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups, POST} route"}
{"timestamp":"2026-10-18T16:51:09.837Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups, GET} route"}
{"timestamp":"2026-10-18T16:51:09.837Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups/standard, GET} route"}
{"timestamp":"2026-10-18T16:51:09.838Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups/:id, GET} route"}
{"timestamp":"2026-10-18T16:51:09.838Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups/:id, PUT} route"}
{"timestamp":"2026-10-18T16:51:09.838Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups/:id, DELETE} route"}
{"timestamp":"2026-10-18T16:51:09.838Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups/:id/info, GET} route"}
{"timestamp":"2026-10-18T16:51:09.838Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups/:id/with-employees, GET} route"}
{"timestamp":"2026-10-18T16:51:09.838Z","level":"log","context":"RoutesResolver","message":"SenderProfileController {/sender-profiles}:"}
{"timestamp":"2026-10-18T16:51:09.838Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles, GET} route"}
{"timestamp":"2026-10-18T16:51:09.839Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles/:id, GET} route"}
{"timestamp":"2026-10-18T16:51:09.839Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles, POST} route"}
{"timestamp":"2026-10-18T16:51:09.839Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles/:id, PUT} route"}
{"timestamp":"2026-10-18T16:51:09.839Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles/:id, DELETE} route"}
{"timestamp":"2026-10-18T16:51:09.839Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles/:id/verify-domain, POST} route"}
{"timestamp":"2026-10-18T16:51:09.840Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles/domain-verification, GET} route"}
{"timestamp":"2026-10-18T16:51:09.840Z","level":"log","context":"RoutesResolver","message":"EmailTemplateController {/email-templates}:"}
{"timestamp":"2026-10-18T16:51:09.840Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates, GET} route"}
{"timestamp":"2026-10-18T16:51:09.840Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates/:id, GET} route"}
{"timestamp":"2026-10-18T16:51:09.840Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates, POST} route"}
{"timestamp":"2026-10-18T16:51:09.840Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates/:id, PUT} route"}
{"timestamp":"2026-10-18T16:51:09.840Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates/:id, DELETE} route"}
{"timestamp":"2026-10-18T16:51:09.841Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates/:id/duplicate, POST} route"}
{"timestamp":"2026-10-18T16:51:09.841Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates/:id/preview, GET} route"}
{"timestamp":"2026-10-18T16:51:09.841Z","level":"log","context":"RoutesResolver","message":"ScenarioController {/scenarios}:"}
{"timestamp":"2026-10-18T16:51:09.841Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios, POST} route"}
{"timestamp":"2026-10-18T16:51:09.841Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios/generate-content, POST} route"}
{"timestamp":"2026-10-18T16:51:09.841Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios, GET} route"}
{"timestamp":"2026-10-18T16:51:09.842Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios/:id, GET} route"}
{"timestamp":"2026-10-18T16:51:09.842Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios/:id, PUT} route"}
{"timestamp":"2026-10-18T16:51:09.842Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios/:id, DELETE} route"}
{"timestamp":"2026-10-18T16:51:09.842Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios/generate-from-json, POST} route"}
{"timestamp":"2026-10-18T16:51:09.842Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios/:id/save-as-custom-scenario, POST} route"}
{"timestamp":"2026-10-18T16:51:09.842Z","level":"log","context":"RoutesResolver","message":"CampaignController {/campaigns}:"}
{"timestamp":"2026-10-18T16:51:09.843Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns, POST} route"}
{"timestamp":"2026-10-18T16:51:09.843Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns, GET} route"}
{"timestamp":"2026-10-18T16:51:09.843Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id, GET} route"}
{"timestamp":"2026-10-18T16:51:09.843Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id/details, GET} route"}
{"timestamp":"2026-10-18T16:51:09.843Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id/employees, GET} route"}
{"timestamp":"2026-10-18T16:51:09.844Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id, PATCH} route"}
{"timestamp":"2026-10-18T16:51:09.844Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id/start, POST} route"}
{"timestamp":"2026-10-18T16:51:09.844Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id/stop, POST} route"}
{"timestamp":"2026-10-18T16:51:09.844Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id/duplicate, POST} route"}
{"timestamp":"2026-10-18T16:51:09.844Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id, DELETE} route"}
{"timestamp":"2026-10-18T16:51:09.844Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/auto-generate-program, POST} route"}
{"timestamp":"2026-10-18T16:51:09.845Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/generate-from-threat-intelligence, POST} route"}
{"timestamp":"2026-10-18T16:51:09.845Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id/risk-score, GET} route"}
{"timestamp":"2026-10-18T16:51:09.845Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/recalculate-risk-scores, POST} route"}
{"timestamp":"2026-10-18T16:51:09.845Z","level":"log","context":"RoutesResolver","message":"CampaignController {/api/campaigns}:"}
{"timestamp":"2026-10-18T16:51:09.845Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns, POST} route"}
{"timestamp":"2026-10-18T16:51:09.845Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns, GET} route"}
{"timestamp":"2026-10-18T16:51:09.846Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id, GET} route"}
{"timestamp":"2026-10-18T16:51:09.846Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id/details, GET} route"}
{"timestamp":"2026-10-18T16:51:09.846Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id/employees, GET} route"}
{"timestamp":"2026-10-18T16:51:09.846Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id, PATCH} route"}
{"timestamp":"2026-10-18T16:51:09.846Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id/start, POST} route"}
{"timestamp":"2026-10-18T16:51:09.846Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id/stop, POST} route"}
{"timestamp":"2026-10-18T16:51:09.847Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id/duplicate, POST} route"}
{"timestamp":"2026-10-18T16:51:09.847Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id, DELETE} route"}
{"timestamp":"2026-10-18T16:51:09.847Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/auto-generate-program, POST} route"}
{"timestamp":"2026-10-18T16:51:09.847Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/generate-from-threat-intelligence, POST} route"}
{"timestamp":"2026-10-18T16:51:09.847Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id/risk-score, GET} route"}
{"timestamp":"2026-10-18T16:51:09.847Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/recalculate-risk-scores, POST} route"}
{"timestamp":"2026-10-18T16:51:09.847Z","level":"log","context":"RoutesResolver","message":"NotificationsController {/notifications}:"}
{"timestamp":"2026-10-18T16:51:09.848Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications, POST} route"}
{"timestamp":"2026-10-18T16:51:09.848Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications, GET} route"}
{"timestamp":"2026-10-18T16:51:09.848Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/unread, GET} route"}
{"timestamp":"2026-10-18T16:51:09.848Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/unread-count, GET} route"}
{"timestamp":"2026-10-18T16:51:09.848Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/:id, GET} route"}
{"timestamp":"2026-10-18T16:51:09.849Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/:id, PATCH} route"}
{"timestamp":"2026-10-18T16:51:09.849Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/:id/read, PATCH} route"}
{"timestamp":"2026-10-18T16:51:09.849Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/mark-all-read, PATCH} route"}
{"timestamp":"2026-10-18T16:51:09.850Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/:id, DELETE} route"}
{"timestamp":"2026-10-18T16:51:09.850Z","level":"log","context":"RoutesResolver","message":"LandingPageController {/lp}:"}
{"timestamp":"2026-10-18T16:51:09.850Z","level":"log","context":"RouterExplorer","message":"Mapped {/lp/image, GET} route"}
{"timestamp":"2026-10-18T16:51:09.850Z","level":"log","context":"RouterExplorer","message":"Mapped {/lp/learning, GET} route"}
{"timestamp":"2026-10-18T16:51:09.850Z","level":"log","context":"RouterExplorer","message":"Mapped {/lp/submit, POST} route"}
{"timestamp":"2026-10-18T16:51:09.850Z","level":"log","context":"RouterExplorer","message":"Mapped {/lp/test, GET} route"}
{"timestamp":"2026-10-18T16:51:09.850Z","level":"warn","context":"LegacyRouteConverter","message":"Unsupported route path: \"/lp/*\". In previous versions, the symbols ?, *, and + were used to denote optional or repeating path parameters. The latest version of \"path-to-regexp\" now requires the use of named parameters. For example, instead of using a route like /users/* to capture all routes starting with \"/users\", you should use /users/*path. For more details, refer to the migration guide. Attempting to auto-convert..."}
{"timestamp":"2026-10-18T16:51:09.851Z","level":"log","context":"RouterExplorer","message":"Mapped {/lp/*, ALL} route"}
{"timestamp":"2026-10-18T16:51:09.851Z","level":"log","context":"RoutesResolver","message":"SupportController {/support}:"}
{"timestamp":"2026-10-18T16:51:09.852Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets, POST} route"}
{"timestamp":"2026-10-18T16:51:09.852Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets, GET} route"}
{"timestamp":"2026-10-18T16:51:09.852Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets/:id, GET} route"}
{"timestamp":"2026-10-18T16:51:09.852Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets/:id, PATCH} route"}
{"timestamp":"2026-10-18T16:51:09.852Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets/:id, DELETE} route"}
{"timestamp":"2026-10-18T16:51:09.853Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets/:id/messages, POST} route"}
{"timestamp":"2026-10-18T16:51:09.853Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets/:id/close, POST} route"}
{"timestamp":"2026-10-18T16:51:09.853Z","level":"log","context":"RoutesResolver","message":"BusninessMetricsController {/business-metrics}:"}
{"timestamp":"2026-10-18T16:51:09.853Z","level":"log","context":"RouterExplorer","message":"Mapped {/business-metrics, GET} route"}
{"timestamp":"2026-10-18T16:51:09.853Z","level":"log","context":"RoutesResolver","message":"UsersController {/users}:"}
{"timestamp":"2026-10-18T16:51:09.853Z","level":"log","context":"RouterExplorer","message":"Mapped {/users/:id, PUT} route"}
{"timestamp":"2026-10-18T16:51:09.854Z","level":"log","context":"RouterExplorer","message":"Mapped {/users/settings, GET} route"}
{"timestamp":"2026-10-18T16:51:09.854Z","level":"log","context":"RouterExplorer","message":"Mapped {/users/settings/general, PUT} route"}
{"timestamp":"2026-10-18T16:51:09.854Z","level":"log","context":"RouterExplorer","message":"Mapped {/users/company/settings, PUT} route"}
{"timestamp":"2026-10-18T16:51:09.854Z","level":"log","context":"RouterExplorer","message":"Mapped {/users/change-password, POST} route"}
{"timestamp":"2026-10-18T16:51:09.854Z","level":"log","context":"RouterExplorer","message":"Mapped {/users/localization/settings, PUT} route"}
{"timestamp":"2026-10-18T16:51:09.854Z","level":"log","context":"RoutesResolver","message":"PartnerController {/partner}:"}
{"timestamp":"2026-10-18T16:51:09.855Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses, POST} route"}
{"timestamp":"2026-10-18T16:51:09.855Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses, GET} route"}
{"timestamp":"2026-10-18T16:51:09.855Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses/:id, GET} route"}
{"timestamp":"2026-10-18T16:51:09.855Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses/:id, PUT} route"}
{"timestamp":"2026-10-18T16:51:09.855Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses/:id, DELETE} route"}
{"timestamp":"2026-10-18T16:51:09.855Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses/:id/impersonate, POST} route"}
{"timestamp":"2026-10-18T16:51:09.856Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses/stop-impersonation, POST} route"}
{"timestamp":"2026-10-18T16:51:09.856Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/license-usage, GET} route"}
{"timestamp":"2026-10-18T16:51:09.856Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/invoices, POST} route"}
{"timestamp":"2026-10-18T16:51:09.856Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/invoices, GET} route"}
{"timestamp":"2026-10-18T16:51:09.856Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/invoices/:id, GET} route"}
{"timestamp":"2026-10-18T16:51:09.856Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/invoices/:id, PUT} route"}
{"timestamp":"2026-10-18T16:51:09.857Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/invoices/:id, DELETE} route"}
{"timestamp":"2026-10-18T16:51:09.857Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/invoices/:id/mark-paid, PUT} route"}
{"timestamp":"2026-10-18T16:51:09.857Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/onboarding/generate-token, POST} route"}
{"timestamp":"2026-10-18T16:51:09.857Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/dashboard, GET} route"}
{"timestamp":"2026-10-18T16:51:09.857Z","level":"log","context":"RoutesResolver","message":"MspSubscriptionController {/partner/msp-subscriptions}:"}
{"timestamp":"2026-10-18T16:51:09.857Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/plans, POST} route"}
{"timestamp":"2026-10-18T16:51:09.858Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/plans, GET} route"}
{"timestamp":"2026-10-18T16:51:09.858Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/plans/:planId, GET} route"}
{"timestamp":"2026-10-18T16:51:09.858Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/plans/:planId, PUT} route"}
{"timestamp":"2026-10-18T16:51:09.858Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/plans/:planId, DELETE} route"}
{"timestamp":"2026-10-18T16:51:09.858Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/businesses/:businessId/subscription, POST} route"}
{"timestamp":"2026-10-18T16:51:09.859Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions, GET} route"}
{"timestamp":"2026-10-18T16:51:09.859Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/businesses/:businessId/subscription, GET} route"}
{"timestamp":"2026-10-18T16:51:09.859Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/businesses/:businessId/subscription, PUT} route"}
{"timestamp":"2026-10-18T16:51:09.859Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/businesses/:businessId/subscription, DELETE} route"}
{"timestamp":"2026-10-18T16:51:09.859Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/businesses/:businessId/subscription/limits, GET} route"}
{"timestamp":"2026-10-18T16:51:09.860Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/businesses/:businessId/subscription/change-plan, PUT} route"}
{"timestamp":"2026-10-18T16:51:09.860Z","level":"log","context":"RoutesResolver","message":"OnboardingController {/onboarding}:"}
{"timestamp":"2026-10-18T16:51:09.860Z","level":"log","context":"RouterExplorer","message":"Mapped {/onboarding/validate/:token, GET} route"}
{"timestamp":"2026-10-18T16:51:09.860Z","level":"log","context":"RouterExplorer","message":"Mapped {/onboarding/complete/:token, POST} route"}
{"timestamp":"2026-10-18T16:51:09.860Z","level":"log","context":"RoutesResolver","message":"ResellerController {/reseller}:"}
{"timestamp":"2026-10-18T16:51:09.860Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/businesses, POST} route"}
{"timestamp":"2026-10-18T16:51:09.861Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/businesses, GET} route"}
{"timestamp":"2026-10-18T16:51:09.861Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/businesses/:id, GET} route"}
{"timestamp":"2026-10-18T16:51:09.861Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/businesses/:id, PUT} route"}
{"timestamp":"2026-10-18T16:51:09.861Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/businesses/:id, DELETE} route"}
{"timestamp":"2026-10-18T16:51:09.861Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/license-usage, GET} route"}
{"timestamp":"2026-10-18T16:51:09.861Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/invoices, POST} route"}
{"timestamp":"2026-10-18T16:51:09.862Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/invoices, GET} route"}
{"timestamp":"2026-10-18T16:51:09.862Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/invoices/:id, GET} route"}
{"timestamp":"2026-10-18T16:51:09.862Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/invoices/:id, PUT} route"}
{"timestamp":"2026-10-18T16:51:09.862Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/invoices/:id, DELETE} route"}
{"timestamp":"2026-10-18T16:51:09.862Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/invoices/:id/mark-paid, PUT} route"}
{"timestamp":"2026-10-18T16:51:09.862Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/onboarding/generate-token, POST} route"}
{"timestamp":"2026-10-18T16:51:09.863Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/dashboard, GET} route"}
{"timestamp":"2026-10-18T16:51:09.863Z","level":"log","context":"RoutesResolver","message":"ResellerSubscriptionController {/reseller}:"}
{"timestamp":"2026-10-18T16:51:09.863Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/plans, POST} route"}
{"timestamp":"2026-10-18T16:51:09.863Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/plans, GET} route"}
{"timestamp":"2026-10-18T16:51:09.863Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/plans/:planId, GET} route"}
{"timestamp":"2026-10-18T16:51:09.863Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/plans/:planId, PUT} route"}
{"timestamp":"2026-10-18T16:51:09.864Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/plans/:planId, DELETE} route"}
{"timestamp":"2026-10-18T16:51:09.864Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/subscriptions/businesses/:businessId/subscription, POST} route"}
{"timestamp":"2026-10-18T16:51:09.864Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/subscriptions, GET} route"}
{"timestamp":"2026-10-18T16:51:09.864Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/subscriptions/businesses/:businessId/subscription, GET} route"}
{"timestamp":"2026-10-18T16:51:09.864Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/subscriptions/businesses/:businessId/subscription, PUT} route"}
{"timestamp":"2026-10-18T16:51:09.865Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/subscriptions/businesses/:businessId/subscription, DELETE} route"}
{"timestamp":"2026-10-18T16:51:09.865Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/subscriptions/businesses/:businessId/subscription/limits, GET} route"}
{"timestamp":"2026-10-18T16:51:09.865Z","level":"log","context":"RoutesResolver","message":"HealthController {/health}:"}
{"timestamp":"2026-10-18T16:51:09.865Z","level":"log","context":"RouterExplorer","message":"Mapped {/health, GET} route"}
{"timestamp":"2026-10-18T16:51:09.865Z","level":"log","context":"RouterExplorer","message":"Mapped {/health/test-logs, GET} route"}
{"timestamp":"2026-10-18T16:51:09.865Z","level":"log","context":"RoutesResolver","message":"AzureAdController {/azure-ad}:"}
{"timestamp":"2026-10-18T16:51:09.865Z","level":"log","context":"RouterExplorer","message":"Mapped {/azure-ad/config, POST} route"}
{"timestamp":"2026-10-18T16:51:09.866Z","level":"log","context":"RouterExplorer","message":"Mapped {/azure-ad/config, GET} route"}
{"timestamp":"2026-10-18T16:51:09.866Z","level":"log","context":"RouterExplorer","message":"Mapped {/azure-ad/test-connection, POST} route"}
{"timestamp":"2026-10-18T16:51:09.866Z","level":"log","context":"RouterExplorer","message":"Mapped {/azure-ad/sync, POST} route"}
{"timestamp":"2026-10-18T16:51:09.866Z","level":"log","context":"RoutesResolver","message":"ThreatsController {/threats}:"}
{"timestamp":"2026-10-18T16:51:09.866Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats, POST} route"}
{"timestamp":"2026-10-18T16:51:09.866Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats, GET} route"}
{"timestamp":"2026-10-18T16:51:09.867Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/chart-data, GET} route"}
{"timestamp":"2026-10-18T16:51:09.867Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/claude-search, POST} route"}
{"timestamp":"2026-10-18T16:51:09.867Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/claude-latest, POST} route"}
{"timestamp":"2026-10-18T16:51:09.867Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/claude-trending, POST} route"}
{"timestamp":"2026-10-18T16:51:09.867Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/claude-categories, POST} route"}
{"timestamp":"2026-10-18T16:51:09.867Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/claude-manual-search, POST} route"}
{"timestamp":"2026-10-18T16:51:09.868Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/claude-quick-search, POST} route"}
{"timestamp":"2026-10-18T16:51:09.868Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/scheduler-status, GET} route"}
{"timestamp":"2026-10-18T16:51:09.868Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/health-check, GET} route"}
{"timestamp":"2026-10-18T16:51:09.868Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/pause-scheduler, POST} route"}
{"timestamp":"2026-10-18T16:51:09.868Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/:id, GET} route"}
{"timestamp":"2026-10-18T16:51:09.868Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/:id, PATCH} route"}
{"timestamp":"2026-10-18T16:51:09.869Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/:id, DELETE} route"}
{"timestamp":"2026-10-18T16:51:09.869Z","level":"log","context":"RoutesResolver","message":"DomainController {/domains}:"}
{"timestamp":"2026-10-18T16:51:09.869Z","level":"log","context":"RouterExplorer","message":"Mapped {/domains, GET} route"}
{"timestamp":"2026-10-18T16:51:09.869Z","level":"log","context":"RouterExplorer","message":"Mapped {/domains/:id, GET} route"}
{"timestamp":"2026-10-18T16:51:09.869Z","level":"log","context":"RouterExplorer","message":"Mapped {/domains, POST} route"}
{"timestamp":"2026-10-18T16:51:09.869Z","level":"log","context":"RouterExplorer","message":"Mapped {/domains/:id, PUT} route"}
{"timestamp":"2026-10-18T16:51:09.870Z","level":"log","context":"RouterExplorer","message":"Mapped {/domains/:id, DELETE} route"}
{"timestamp":"2026-10-18T16:51:09.870Z","level":"log","context":"RouterExplorer","message":"Mapped {/domains/seed, POST} route"}
{"timestamp":"2026-10-18T16:51:09.870Z","level":"log","context":"RoutesResolver","message":"MspSubscriptionController {/msp-subscription}:"}
{"timestamp":"2026-10-18T16:51:09.870Z","level":"log","context":"RouterExplorer","message":"Mapped {/msp-subscription/current, GET} route"}
{"timestamp":"2026-10-18T16:51:09.870Z","level":"log","context":"RouterExplorer","message":"Mapped {/msp-subscription/invoices, GET} route"}
{"timestamp":"2026-10-18T16:51:09.870Z","level":"log","context":"RouterExplorer","message":"Mapped {/msp-subscription/invoice/:invoiceId/pdf, GET} route"}
{"timestamp":"2026-10-18T16:51:09.870Z","level":"log","context":"RoutesResolver","message":"MspSubscriptionController {/api/msp-subscription}:"}
{"timestamp":"2026-10-18T16:51:09.871Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/msp-subscription/current, GET} route"}
{"timestamp":"2026-10-18T16:51:09.871Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/msp-subscription/invoices, GET} route"}
{"timestamp":"2026-10-18T16:51:09.871Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/msp-subscription/invoice/:invoiceId/pdf, GET} route"}
{"timestamp":"2026-10-18T16:51:09.950Z","level":"log","context":"NestApplication","message":"Nest application successfully started"}
{"timestamp":"2026-10-18T16:51:09.962Z","level":"log","context":"Bootstrap","message":"Users API successfully started on port 3842"}
{"timestamp":"2026-10-18T16:51:09.962Z","level":"log","context":"SeedService","message":"🌱 Starting database seeding..."}
{"timestamp":"2026-10-18T16:51:09.969Z","level":"log","context":"SeedService","message":"Admin account already exists, skipping seed"}
{"timestamp":"2026-10-18T16:51:09.971Z","level":"log","context":"SeedService","message":"Reseller account already exists, skipping seed"}
{"timestamp":"2026-10-18T16:51:09.973Z","level":"log","context":"SeedService","message":"MSP account already exists, skipping seed"}
{"timestamp":"2026-10-18T16:51:09.973Z","level":"log","context":"SeedService","message":"✅ Database seeding completed successfully"}
{"timestamp":"2026-10-18T16:51:10.014Z","level":"log","context":"UsersApiController","message":"Hello endpoint accessed"}
{"timestamp":"2026-10-18T19:09:00.038Z","level":"warn","context":"LegacyRouteConverter","message":"Unsupported route path: \"/lp/*\". In previous versions, the symbols ?, *, and + were used to denote optional or repeating path parameters. The latest version of \"path-to-regexp\" now requires the use of named parameters. For example, instead of using a route like /users/* to capture all routes starting with \"/users\", you should use /users/*path. For more details, refer to the migration guide. Attempting to auto-convert..."}
{"timestamp":"2026-10-18T19:09:00.076Z","level":"log","context":"Bootstrap","message":"Starting Users API on port 3842..."}
{"timestamp":"2026-10-18T19:09:00.079Z","level":"log","context":"RoutesResolver","message":"UsersApiController {/}:"}
{"timestamp":"2026-10-18T19:09:00.082Z","level":"log","context":"RouterExplorer","message":"Mapped {/, GET} route"}
{"timestamp":"2026-10-18T19:09:00.082Z","level":"log","context":"RoutesResolver","message":"AuthController {/auth}:"}
{"timestamp":"2026-10-18T19:09:00.083Z","level":"log","context":"RouterExplorer","message":"Mapped {/auth/login, POST} route"}
{"timestamp":"2026-10-18T19:09:00.083Z","level":"log","context":"RouterExplorer","message":"Mapped {/auth/admin/login, POST} route"}
{"timestamp":"2026-10-18T19:09:00.084Z","level":"log","context":"RouterExplorer","message":"Mapped {/auth/send-otp, POST} route"}
{"timestamp":"2026-10-18T19:09:00.084Z","level":"log","context":"RouterExplorer","message":"Mapped {/auth/verify-otp, POST} route"}
{"timestamp":"2026-10-18T19:09:00.084Z","level":"log","context":"RouterExplorer","message":"Mapped {/auth/signup, POST} route"}
{"timestamp":"2026-10-18T19:09:00.085Z","level":"log","context":"RouterExplorer","message":"Mapped {/auth/subscription-status, GET} route"}
{"timestamp":"2026-10-18T19:09:00.085Z","level":"log","context":"RoutesResolver","message":"AdminMspController {/admin/msp}:"}
{"timestamp":"2026-10-18T19:09:00.086Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/msp, GET} route"}
{"timestamp":"2026-10-18T19:09:00.086Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/msp/:id, GET} route"}
{"timestamp":"2026-10-18T19:09:00.087Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/msp, POST} route"}
{"timestamp":"2026-10-18T19:09:00.087Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/msp/:id, PUT} route"}
{"timestamp":"2026-10-18T19:09:00.087Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/msp/:id, DELETE} route"}
{"timestamp":"2026-10-18T19:09:00.087Z","level":"log","context":"RoutesResolver","message":"AdminLicenseController {/admin/licenses}:"}
{"timestamp":"2026-10-18T19:09:00.088Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/licenses/summary, GET} route"}
{"timestamp":"2026-10-18T19:09:00.088Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/licenses/msp/:mspId, GET} route"}
{"timestamp":"2026-10-18T19:09:00.088Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/licenses/msp/:mspId, PUT} route"}
{"timestamp":"2026-10-18T19:09:00.088Z","level":"log","context":"RoutesResolver","message":"AdminImpersonationController {/admin/impersonation}:"}
{"timestamp":"2026-10-18T19:09:00.089Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/impersonation/msp-users, GET} route"}
{"timestamp":"2026-10-18T19:09:00.089Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/impersonation/impersonate, POST} route"}
{"timestamp":"2026-10-18T19:09:00.089Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/impersonation/stop, POST} route"}
{"timestamp":"2026-10-18T19:09:00.089Z","level":"log","context":"RoutesResolver","message":"AdminAiUsageController {/admin/ai-usage}:"}
{"timestamp":"2026-10-18T19:09:00.089Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-usage, GET} route"}
{"timestamp":"2026-10-18T19:09:00.090Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-usage/business/:businessId, GET} route"}
{"timestamp":"2026-10-18T19:09:00.093Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-usage/report/monthly, GET} route"}
{"timestamp":"2026-10-18T19:09:00.093Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-usage/pricing, GET} route"}
{"timestamp":"2026-10-18T19:09:00.094Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-usage/pricing, POST} route"}
{"timestamp":"2026-10-18T19:09:00.094Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-usage/credit/:businessId, PUT} route"}
{"timestamp":"2026-10-18T19:09:00.094Z","level":"log","context":"RoutesResolver","message":"AdminAiUsageController {/api/admin/ai-usage}:"}
{"timestamp":"2026-10-18T19:09:00.094Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-usage, GET} route"}
{"timestamp":"2026-10-18T19:09:00.095Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-usage/business/:businessId, GET} route"}
{"timestamp":"2026-10-18T19:09:00.095Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-usage/report/monthly, GET} route"}
{"timestamp":"2026-10-18T19:09:00.095Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-usage/pricing, GET} route"}
{"timestamp":"2026-10-18T19:09:00.095Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-usage/pricing, POST} route"}
{"timestamp":"2026-10-18T19:09:00.095Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-usage/credit/:businessId, PUT} route"}
{"timestamp":"2026-10-18T19:09:00.096Z","level":"log","context":"RoutesResolver","message":"AdminAiModelController {/admin/ai-models}:"}
{"timestamp":"2026-10-18T19:09:00.096Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models, POST} route"}
{"timestamp":"2026-10-18T19:09:00.096Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models, GET} route"}
{"timestamp":"2026-10-18T19:09:00.096Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/default, GET} route"}
{"timestamp":"2026-10-18T19:09:00.096Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/:id, GET} route"}
{"timestamp":"2026-10-18T19:09:00.096Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/:id, PUT} route"}
{"timestamp":"2026-10-18T19:09:00.097Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/:id, DELETE} route"}
{"timestamp":"2026-10-18T19:09:00.097Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/:id/set-default, POST} route"}
{"timestamp":"2026-10-18T19:09:00.097Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/assign-to-business, POST} route"}
{"timestamp":"2026-10-18T19:09:00.097Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/business/:businessId, GET} route"}
{"timestamp":"2026-10-18T19:09:00.097Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/:id/businesses, GET} route"}
{"timestamp":"2026-10-18T19:09:00.097Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/initialize-defaults, POST} route"}
{"timestamp":"2026-10-18T19:09:00.098Z","level":"log","context":"RoutesResolver","message":"AdminAiModelController {/api/admin/ai-models}:"}
{"timestamp":"2026-10-18T19:09:00.098Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models, POST} route"}
{"timestamp":"2026-10-18T19:09:00.098Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models, GET} route"}
{"timestamp":"2026-10-18T19:09:00.098Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/default, GET} route"}
{"timestamp":"2026-10-18T19:09:00.098Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/:id, GET} route"}
{"timestamp":"2026-10-18T19:09:00.098Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/:id, PUT} route"}
{"timestamp":"2026-10-18T19:09:00.098Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/:id, DELETE} route"}
{"timestamp":"2026-10-18T19:09:00.099Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/:id/set-default, POST} route"}
{"timestamp":"2026-10-18T19:09:00.099Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/assign-to-business, POST} route"}
{"timestamp":"2026-10-18T19:09:00.099Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/business/:businessId, GET} route"}
{"timestamp":"2026-10-18T19:09:00.099Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/:id/businesses, GET} route"}
{"timestamp":"2026-10-18T19:09:00.099Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/initialize-defaults, POST} route"}
{"timestamp":"2026-10-18T19:09:00.099Z","level":"log","context":"RoutesResolver","message":"AdminBusinessController {/admin/businesses}:"}
{"timestamp":"2026-10-18T19:09:00.100Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/businesses, GET} route"}
{"timestamp":"2026-10-18T19:09:00.100Z","level":"log","context":"RoutesResolver","message":"ResellerManagementController {/admin/resellers}:"}
{"timestamp":"2026-10-18T19:09:00.100Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/resellers, GET} route"}
{"timestamp":"2026-10-18T19:09:00.100Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/resellers/create-default, POST} route"}
{"timestamp":"2026-10-18T19:09:00.100Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/resellers, POST} route"}
{"timestamp":"2026-10-18T19:09:00.100Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/resellers/:id/toggle-status, PUT} route"}
{"timestamp":"2026-10-18T19:09:00.100Z","level":"log","context":"RoutesResolver","message":"SubscriptionController {/subscription}:"}
{"timestamp":"2026-10-18T19:09:00.101Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/plans, GET} route"}
{"timestamp":"2026-10-18T19:09:00.101Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/calculate-price, POST} route"}
{"timestamp":"2026-10-18T19:09:00.101Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/current, GET} route"}
{"timestamp":"2026-10-18T19:09:00.101Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/create, POST} route"}
{"timestamp":"2026-10-18T19:09:00.101Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/:id, PUT} route"}
{"timestamp":"2026-10-18T19:09:00.101Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/:id/cancel, DELETE} route"}
{"timestamp":"2026-10-18T19:09:00.102Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/sync/:stripeSubscriptionId, POST} route"}
{"timestamp":"2026-10-18T19:09:00.102Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/payments, GET} route"}
{"timestamp":"2026-10-18T19:09:00.102Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/payments/stats, GET} route"}
{"timestamp":"2026-10-18T19:09:00.102Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/payment/:id, GET} route"}
{"timestamp":"2026-10-18T19:09:00.102Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/payment-methods/attach, POST} route"}
{"timestamp":"2026-10-18T19:09:00.102Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/payment-methods/:paymentMethodId, DELETE} route"}
{"timestamp":"2026-10-18T19:09:00.102Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/payment-methods, GET} route"}
{"timestamp":"2026-10-18T19:09:00.103Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/setup-intent, POST} route"}
{"timestamp":"2026-10-18T19:09:00.103Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/update-employee-count, POST} route"}
{"timestamp":"2026-10-18T19:09:00.103Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/retry-payment/:subscriptionId, POST} route"}
{"timestamp":"2026-10-18T19:09:00.103Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/invoice/:invoiceId/pdf, GET} route"}
{"timestamp":"2026-10-18T19:09:00.103Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/preview-upgrade, POST} route"}
{"timestamp":"2026-10-18T19:09:00.103Z","level":"log","context":"RoutesResolver","message":"SubscriptionController {/api/subscription}:"}
{"timestamp":"2026-10-18T19:09:00.103Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/plans, GET} route"}
{"timestamp":"2026-10-18T19:09:00.104Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/calculate-price, POST} route"}
{"timestamp":"2026-10-18T19:09:00.104Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/current, GET} route"}
{"timestamp":"2026-10-18T19:09:00.104Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/create, POST} route"}
{"timestamp":"2026-10-18T19:09:00.104Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/:id, PUT} route"}
{"timestamp":"2026-10-18T19:09:00.104Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/:id/cancel, DELETE} route"}
{"timestamp":"2026-10-18T19:09:00.104Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/sync/:stripeSubscriptionId, POST} route"}
{"timestamp":"2026-10-18T19:09:00.104Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/payments, GET} route"}
{"timestamp":"2026-10-18T19:09:00.105Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/payments/stats, GET} route"}
{"timestamp":"2026-10-18T19:09:00.105Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/payment/:id, GET} route"}
{"timestamp":"2026-10-18T19:09:00.105Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/payment-methods/attach, POST} route"}
{"timestamp":"2026-10-18T19:09:00.105Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/payment-methods/:paymentMethodId, DELETE} route"}
{"timestamp":"2026-10-18T19:09:00.105Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/payment-methods, GET} route"}
{"timestamp":"2026-10-18T19:09:00.105Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/setup-intent, POST} route"}
{"timestamp":"2026-10-18T19:09:00.105Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/update-employee-count, POST} route"}
{"timestamp":"2026-10-18T19:09:00.106Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/retry-payment/:subscriptionId, POST} route"}
{"timestamp":"2026-10-18T19:09:00.106Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/invoice/:invoiceId/pdf, GET} route"}
{"timestamp":"2026-10-18T19:09:00.106Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/preview-upgrade, POST} route"}
{"timestamp":"2026-10-18T19:09:00.106Z","level":"log","context":"RoutesResolver","message":"StripeWebhookController {/stripe/webhook}:"}
{"timestamp":"2026-10-18T19:09:00.106Z","level":"log","context":"RouterExplorer","message":"Mapped {/stripe/webhook/test, GET} route"}
{"timestamp":"2026-10-18T19:09:00.106Z","level":"log","context":"RouterExplorer","message":"Mapped {/stripe/webhook, POST} route"}
{"timestamp":"2026-10-18T19:09:00.106Z","level":"log","context":"RoutesResolver","message":"EmailController {/email-templates}:"}
{"timestamp":"2026-10-18T19:09:00.107Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates/test, POST} route"}
{"timestamp":"2026-10-18T19:09:00.107Z","level":"log","context":"RoutesResolver","message":"EmployeeController {/employees}:"}
{"timestamp":"2026-10-18T19:09:00.107Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees, POST} route"}
{"timestamp":"2026-10-18T19:09:00.107Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees, GET} route"}
{"timestamp":"2026-10-18T19:09:00.107Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees/export, GET} route"}
{"timestamp":"2026-10-18T19:09:00.107Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees/risk-stats, GET} route"}
{"timestamp":"2026-10-18T19:09:00.107Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees/:id, GET} route"}
{"timestamp":"2026-10-18T19:09:00.107Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees/:id, PUT} route"}
{"timestamp":"2026-10-18T19:09:00.108Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees/:id, DELETE} route"}
{"timestamp":"2026-10-18T19:09:00.108Z","level":"log","context":"RoutesResolver","message":"GroupController {/groups}:"}
{"timestamp":"2026-10-18T19:09:00.108Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups, POST} route"}
{"timestamp":"2026-10-18T19:09:00.108Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups, GET} route"}
{"timestamp":"2026-10-18T19:09:00.108Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups/standard, GET} route"}
{"timestamp":"2026-10-18T19:09:00.108Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups/:id, GET} route"}
{"timestamp":"2026-10-18T19:09:00.108Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups/:id, PUT} route"}
{"timestamp":"2026-10-18T19:09:00.109Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups/:id, DELETE} route"}
{"timestamp":"2026-10-18T19:09:00.109Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups/:id/info, GET} route"}
{"timestamp":"2026-10-18T19:09:00.109Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups/:id/with-employees, GET} route"}
{"timestamp":"2026-10-18T19:09:00.109Z","level":"log","context":"RoutesResolver","message":"SenderProfileController {/sender-profiles}:"}
{"timestamp":"2026-10-18T19:09:00.109Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles, GET} route"}
{"timestamp":"2026-10-18T19:09:00.109Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles/:id, GET} route"}
{"timestamp":"2026-10-18T19:09:00.109Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles, POST} route"}
{"timestamp":"2026-10-18T19:09:00.110Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles/:id, PUT} route"}
{"timestamp":"2026-10-18T19:09:00.110Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles/:id, DELETE} route"}
{"timestamp":"2026-10-18T19:09:00.110Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles/:id/verify-domain, POST} route"}
{"timestamp":"2026-10-18T19:09:00.110Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles/domain-verification, GET} route"}
{"timestamp":"2026-10-18T19:09:00.110Z","level":"log","context":"RoutesResolver","message":"EmailTemplateController {/email-templates}:"}
{"timestamp":"2026-10-18T19:09:00.110Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates, GET} route"}
{"timestamp":"2026-10-18T19:09:00.110Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates/:id, GET} route"}
{"timestamp":"2026-10-18T19:09:00.111Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates, POST} route"}
{"timestamp":"2026-10-18T19:09:00.111Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates/:id, PUT} route"}
{"timestamp":"2026-10-18T19:09:00.111Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates/:id, DELETE} route"}
{"timestamp":"2026-10-18T19:09:00.111Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates/:id/duplicate, POST} route"}
{"timestamp":"2026-10-18T19:09:00.111Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates/:id/preview, GET} route"}
{"timestamp":"2026-10-18T19:09:00.111Z","level":"log","context":"RoutesResolver","message":"ScenarioController {/scenarios}:"}
{"timestamp":"2026-10-18T19:09:00.111Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios, POST} route"}
{"timestamp":"2026-10-18T19:09:00.112Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios/generate-content, POST} route"}
{"timestamp":"2026-10-18T19:09:00.112Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios, GET} route"}
{"timestamp":"2026-10-18T19:09:00.112Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios/:id, GET} route"}
{"timestamp":"2026-10-18T19:09:00.112Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios/:id, PUT} route"}
{"timestamp":"2026-10-18T19:09:00.112Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios/:id, DELETE} route"}
{"timestamp":"2026-10-18T19:09:00.112Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios/generate-from-json, POST} route"}
{"timestamp":"2026-10-18T19:09:00.112Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios/:id/save-as-custom-scenario, POST} route"}
{"timestamp":"2026-10-18T19:09:00.112Z","level":"log","context":"RoutesResolver","message":"CampaignController {/campaigns}:"}
{"timestamp":"2026-10-18T19:09:00.113Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns, POST} route"}
{"timestamp":"2026-10-18T19:09:00.113Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns, GET} route"}
{"timestamp":"2026-10-18T19:09:00.113Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id, GET} route"}
{"timestamp":"2026-10-18T19:09:00.113Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id/details, GET} route"}
{"timestamp":"2026-10-18T19:09:00.113Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id/employees, GET} route"}
{"timestamp":"2026-10-18T19:09:00.113Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id, PATCH} route"}
{"timestamp":"2026-10-18T19:09:00.114Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id/start, POST} route"}
{"timestamp":"2026-10-18T19:09:00.114Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id/stop, POST} route"}
{"timestamp":"2026-10-18T19:09:00.114Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id/duplicate, POST} route"}
{"timestamp":"2026-10-18T19:09:00.114Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id, DELETE} route"}
{"timestamp":"2026-10-18T19:09:00.114Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/auto-generate-program, POST} route"}
{"timestamp":"2026-10-18T19:09:00.114Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/generate-from-threat-intelligence, POST} route"}
{"timestamp":"2026-10-18T19:09:00.115Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id/risk-score, GET} route"}
{"timestamp":"2026-10-18T19:09:00.115Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/recalculate-risk-scores, POST} route"}
{"timestamp":"2026-10-18T19:09:00.115Z","level":"log","context":"RoutesResolver","message":"CampaignController {/api/campaigns}:"}
{"timestamp":"2026-10-18T19:09:00.115Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns, POST} route"}
{"timestamp":"2026-10-18T19:09:00.115Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns, GET} route"}
{"timestamp":"2026-10-18T19:09:00.115Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id, GET} route"}
{"timestamp":"2026-10-18T19:09:00.115Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id/details, GET} route"}
{"timestamp":"2026-10-18T19:09:00.115Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id/employees, GET} route"}
{"timestamp":"2026-10-18T19:09:00.116Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id, PATCH} route"}
{"timestamp":"2026-10-18T19:09:00.116Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id/start, POST} route"}
{"timestamp":"2026-10-18T19:09:00.116Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id/stop, POST} route"}
{"timestamp":"2026-10-18T19:09:00.116Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id/duplicate, POST} route"}
{"timestamp":"2026-10-18T19:09:00.116Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id, DELETE} route"}
{"timestamp":"2026-10-18T19:09:00.116Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/auto-generate-program, POST} route"}
{"timestamp":"2026-10-18T19:09:00.116Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/generate-from-threat-intelligence, POST} route"}
{"timestamp":"2026-10-18T19:09:00.117Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id/risk-score, GET} route"}
{"timestamp":"2026-10-18T19:09:00.117Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/recalculate-risk-scores, POST} route"}
{"timestamp":"2026-10-18T19:09:00.117Z","level":"log","context":"RoutesResolver","message":"NotificationsController {/notifications}:"}
{"timestamp":"2026-10-18T19:09:00.117Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications, POST} route"}
{"timestamp":"2026-10-18T19:09:00.117Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications, GET} route"}
{"timestamp":"2026-10-18T19:09:00.117Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/unread, GET} route"}
{"timestamp":"2026-10-18T19:09:00.117Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/unread-count, GET} route"}
{"timestamp":"2026-10-18T19:09:00.118Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/:id, GET} route"}
{"timestamp":"2026-10-18T19:09:00.118Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/:id, PATCH} route"}
{"timestamp":"2026-10-18T19:09:00.118Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/:id/read, PATCH} route"}
{"timestamp":"2026-10-18T19:09:00.118Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/mark-all-read, PATCH} route"}
{"timestamp":"2026-10-18T19:09:00.118Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/:id, DELETE} route"}
{"timestamp":"2026-10-18T19:09:00.119Z","level":"log","context":"RoutesResolver","message":"LandingPageController {/lp}:"}
{"timestamp":"2026-10-18T19:09:00.119Z","level":"log","context":"RouterExplorer","message":"Mapped {/lp/image, GET} route"}
{"timestamp":"2026-10-18T19:09:00.119Z","level":"log","context":"RouterExplorer","message":"Mapped {/lp/learning, GET} route"}
{"timestamp":"2026-10-18T19:09:00.119Z","level":"log","context":"RouterExplorer","message":"Mapped {/lp/submit, POST} route"}
{"timestamp":"2026-10-18T19:09:00.119Z","level":"log","context":"RouterExplorer","message":"Mapped {/lp/test, GET} route"}
{"timestamp":"2026-10-18T19:09:00.119Z","level":"warn","context":"LegacyRouteConverter","message":"Unsupported route path: \"/lp/*\". In previous versions, the symbols ?, *, and + were used to denote optional or repeating path parameters. The latest version of \"path-to-regexp\" now requires the use of named parameters. For example, instead of using a route like /users/* to capture all routes starting with \"/users\", you should use /users/*path. For more details, refer to the migration guide. Attempting to auto-convert..."}
{"timestamp":"2026-10-18T19:09:00.120Z","level":"log","context":"RouterExplorer","message":"Mapped {/lp/*, ALL} route"}
{"timestamp":"2026-10-18T19:09:00.120Z","level":"log","context":"RoutesResolver","message":"SupportController {/support}:"}
{"timestamp":"2026-10-18T19:09:00.120Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets, POST} route"}
{"timestamp":"2026-10-18T19:09:00.120Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets, GET} route"}
{"timestamp":"2026-10-18T19:09:00.121Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets/:id, GET} route"}
{"timestamp":"2026-10-18T19:09:00.121Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets/:id, PATCH} route"}
{"timestamp":"2026-10-18T19:09:00.121Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets/:id, DELETE} route"}
{"timestamp":"2026-10-18T19:09:00.121Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets/:id/messages, POST} route"}
{"timestamp":"2026-10-18T19:09:00.121Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets/:id/close, POST} route"}
{"timestamp":"2026-10-18T19:09:00.121Z","level":"log","context":"RoutesResolver","message":"BusninessMetricsController {/business-metrics}:"}
{"timestamp":"2026-10-18T19:09:00.121Z","level":"log","context":"RouterExplorer","message":"Mapped {/business-metrics, GET} route"}
{"timestamp":"2026-10-18T19:09:00.122Z","level":"log","context":"RoutesResolver","message":"UsersController {/users}:"}
{"timestamp":"2026-10-18T19:09:00.122Z","level":"log","context":"RouterExplorer","message":"Mapped {/users/:id, PUT} route"}
{"timestamp":"2026-10-18T19:09:00.122Z","level":"log","context":"RouterExplorer","message":"Mapped {/users/settings, GET} route"}
{"timestamp":"2026-10-18T19:09:00.122Z","level":"log","context":"RouterExplorer","message":"Mapped {/users/settings/general, PUT} route"}
{"timestamp":"2026-10-18T19:09:00.122Z","level":"log","context":"RouterExplorer","message":"Mapped {/users/company/settings, PUT} route"}
{"timestamp":"2026-10-18T19:09:00.122Z","level":"log","context":"RouterExplorer","message":"Mapped {/users/change-password, POST} route"}
{"timestamp":"2026-10-18T19:09:00.122Z","level":"log","context":"RouterExplorer","message":"Mapped {/users/localization/settings, PUT} route"}
{"timestamp":"2026-10-18T19:09:00.123Z","level":"log","context":"RoutesResolver","message":"PartnerController {/partner}:"}
{"timestamp":"2026-10-18T19:09:00.123Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses, POST} route"}
{"timestamp":"2026-10-18T19:09:00.123Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses, GET} route"}
{"timestamp":"2026-10-18T19:09:00.123Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses/:id, GET} route"}
{"timestamp":"2026-10-18T19:09:00.123Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses/:id, PUT} route"}
{"timestamp":"2026-10-18T19:09:00.123Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses/:id, DELETE} route"}
{"timestamp":"2026-10-18T19:09:00.124Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses/:id/impersonate, POST} route"}
{"timestamp":"2026-10-18T19:09:00.124Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses/stop-impersonation, POST} route"}
{"timestamp":"2026-10-18T19:09:00.124Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/license-usage, GET} route"}
{"timestamp":"2026-10-18T19:09:00.124Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/invoices, POST} route"}
{"timestamp":"2026-10-18T19:09:00.124Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/invoices, GET} route"}
{"timestamp":"2026-10-18T19:09:00.124Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/invoices/:id, GET} route"}
{"timestamp":"2026-10-18T19:09:00.124Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/invoices/:id, PUT} route"}
{"timestamp":"2026-10-18T19:09:00.125Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/invoices/:id, DELETE} route"}
{"timestamp":"2026-10-18T19:09:00.125Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/invoices/:id/mark-paid, PUT} route"}
{"timestamp":"2026-10-18T19:09:00.125Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/onboarding/generate-token, POST} route"}
{"timestamp":"2026-10-18T19:09:00.125Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/dashboard, GET} route"}
{"timestamp":"2026-10-18T19:09:00.125Z","level":"log","context":"RoutesResolver","message":"MspSubscriptionController {/partner/msp-subscriptions}:"}
{"timestamp":"2026-10-18T19:09:00.125Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/plans, POST} route"}
{"timestamp":"2026-10-18T19:09:00.125Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/plans, GET} route"}
{"timestamp":"2026-10-18T19:09:00.126Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/plans/:planId, GET} route"}
{"timestamp":"2026-10-18T19:09:00.126Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/plans/:planId, PUT} route"}
{"timestamp":"2026-10-18T19:09:00.126Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/plans/:planId, DELETE} route"}
{"timestamp":"2026-10-18T19:09:00.126Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/businesses/:businessId/subscription, POST} route"}
{"timestamp":"2026-10-18T19:09:00.126Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions, GET} route"}
{"timestamp":"2026-10-18T19:09:00.126Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/businesses/:businessId/subscription, GET} route"}
{"timestamp":"2026-10-18T19:09:00.126Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/businesses/:businessId/subscription, PUT} route"}
{"timestamp":"2026-10-18T19:09:00.127Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/businesses/:businessId/subscription, DELETE} route"}
{"timestamp":"2026-10-18T19:09:00.127Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/businesses/:businessId/subscription/limits, GET} route"}
{"timestamp":"2026-10-18T19:09:00.127Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/businesses/:businessId/subscription/change-plan, PUT} route"}
{"timestamp":"2026-10-18T19:09:00.127Z","level":"log","context":"RoutesResolver","message":"OnboardingController {/onboarding}:"}
{"timestamp":"2026-10-18T19:09:00.127Z","level":"log","context":"RouterExplorer","message":"Mapped {/onboarding/validate/:token, GET} route"}
{"timestamp":"2026-10-18T19:09:00.127Z","level":"log","context":"RouterExplorer","message":"Mapped {/onboarding/complete/:token, POST} route"}
{"timestamp":"2026-10-18T19:09:00.127Z","level":"log","context":"RoutesResolver","message":"ResellerController {/reseller}:"}
{"timestamp":"2026-10-18T19:09:00.128Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/businesses, POST} route"}
{"timestamp":"2026-10-18T19:09:00.128Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/businesses, GET} route"}
{"timestamp":"2026-10-18T19:09:00.128Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/businesses/:id, GET} route"}
{"timestamp":"2026-10-18T19:09:00.128Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/businesses/:id, PUT} route"}
{"timestamp":"2026-10-18T19:09:00.128Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/businesses/:id, DELETE} route"}
{"timestamp":"2026-10-18T19:09:00.128Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/license-usage, GET} route"}
{"timestamp":"2026-10-18T19:09:00.128Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/invoices, POST} route"}
{"timestamp":"2026-10-18T19:09:00.129Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/invoices, GET} route"}
{"timestamp":"2026-10-18T19:09:00.129Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/invoices/:id, GET} route"}
{"timestamp":"2026-10-18T19:09:00.129Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/invoices/:id, PUT} route"}
{"timestamp":"2026-10-18T19:09:00.129Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/invoices/:id, DELETE} route"}
{"timestamp":"2026-10-18T19:09:00.129Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/invoices/:id/mark-paid, PUT} route"}
{"timestamp":"2026-10-18T19:09:00.129Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/onboarding/generate-token, POST} route"}
{"timestamp":"2026-10-18T19:09:00.129Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/dashboard, GET} route"}
{"timestamp":"2026-10-18T19:09:00.129Z","level":"log","context":"RoutesResolver","message":"ResellerSubscriptionController {/reseller}:"}
{"timestamp":"2026-10-18T19:09:00.130Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/plans, POST} route"}
{"timestamp":"2026-10-18T19:09:00.130Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/plans, GET} route"}
{"timestamp":"2026-10-18T19:09:00.130Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/plans/:planId, GET} route"}
{"timestamp":"2026-10-18T19:09:00.130Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/plans/:planId, PUT} route"}
{"timestamp":"2026-10-18T19:09:00.130Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/plans/:planId, DELETE} route"}
{"timestamp":"2026-10-18T19:09:00.130Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/subscriptions/businesses/:businessId/subscription, POST} route"}
{"timestamp":"2026-10-18T19:09:00.131Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/subscriptions, GET} route"}
{"timestamp":"2026-10-18T19:09:00.131Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/subscriptions/businesses/:businessId/subscription, GET} route"}
{"timestamp":"2026-10-18T19:09:00.131Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/subscriptions/businesses/:businessId/subscription, PUT} route"}
{"timestamp":"2026-10-18T19:09:00.131Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/subscriptions/businesses/:businessId/subscription, DELETE} route"}
{"timestamp":"2026-10-18T19:09:00.131Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/subscriptions/businesses/:businessId/subscription/limits, GET} route"}
{"timestamp":"2026-10-18T19:09:00.131Z","level":"log","context":"RoutesResolver","message":"HealthController {/health}:"}
{"timestamp":"2026-10-18T19:09:00.131Z","level":"log","context":"RouterExplorer","message":"Mapped {/health, GET} route"}
{"timestamp":"2026-10-18T19:09:00.132Z","level":"log","context":"RouterExplorer","message":"Mapped {/health/test-logs, GET} route"}
{"timestamp":"2026-10-18T19:09:00.132Z","level":"log","context":"RoutesResolver","message":"AzureAdController {/azure-ad}:"}
{"timestamp":"2026-10-18T19:09:00.132Z","level":"log","context":"RouterExplorer","message":"Mapped {/azure-ad/config, POST} route"}
{"timestamp":"2026-10-18T19:09:00.132Z","level":"log","context":"RouterExplorer","message":"Mapped {/azure-ad/config, GET} route"}
{"timestamp":"2026-10-18T19:09:00.132Z","level":"log","context":"RouterExplorer","message":"Mapped {/azure-ad/test-connection, POST} route"}
{"timestamp":"2026-10-18T19:09:00.132Z","level":"log","context":"RouterExplorer","message":"Mapped {/azure-ad/sync, POST} route"}
{"timestamp":"2026-10-18T19:09:00.132Z","level":"log","context":"RoutesResolver","message":"ThreatsController {/threats}:"}
{"timestamp":"2026-10-18T19:09:00.132Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats, POST} route"}
{"timestamp":"2026-10-18T19:09:00.133Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats, GET} route"}
{"timestamp":"2026-10-18T19:09:00.133Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/chart-data, GET} route"}
{"timestamp":"2026-10-18T19:09:00.133Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/claude-search, POST} route"}
{"timestamp":"2026-10-18T19:09:00.133Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/claude-latest, POST} route"}
{"timestamp":"2026-10-18T19:09:00.133Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/claude-trending, POST} route"}
{"timestamp":"2026-10-18T19:09:00.133Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/claude-categories, POST} route"}
{"timestamp":"2026-10-18T19:09:00.133Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/claude-manual-search, POST} route"}
{"timestamp":"2026-10-18T19:09:00.134Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/claude-quick-search, POST} route"}
{"timestamp":"2026-10-18T19:09:00.134Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/scheduler-status, GET} route"}
{"timestamp":"2026-10-18T19:09:00.134Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/health-check, GET} route"}
{"timestamp":"2026-10-18T19:09:00.134Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/pause-scheduler, POST} route"}
{"timestamp":"2026-10-18T19:09:00.134Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/:id, GET} route"}
{"timestamp":"2026-10-18T19:09:00.134Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/:id, PATCH} route"}
{"timestamp":"2026-10-18T19:09:00.134Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/:id, DELETE} route"}
{"timestamp":"2026-10-18T19:09:00.134Z","level":"log","context":"RoutesResolver","message":"DomainController {/domains}:"}
{"timestamp":"2026-10-18T19:09:00.135Z","level":"log","context":"RouterExplorer","message":"Mapped {/domains, GET} route"}
{"timestamp":"2026-10-18T19:09:00.135Z","level":"log","context":"RouterExplorer","message":"Mapped {/domains/:id, GET} route"}
{"timestamp":"2026-10-18T19:09:00.135Z","level":"log","context":"RouterExplorer","message":"Mapped {/domains, POST} route"}
{"timestamp":"2026-10-18T19:09:00.135Z","level":"log","context":"RouterExplorer","message":"Mapped {/domains/:id, PUT} route"}
{"timestamp":"2026-10-18T19:09:00.135Z","level":"log","context":"RouterExplorer","message":"Mapped {/domains/:id, DELETE} route"}
{"timestamp":"2026-10-18T19:09:00.135Z","level":"log","context":"RouterExplorer","message":"Mapped {/domains/seed, POST} route"}
{"timestamp":"2026-10-18T19:09:00.135Z","level":"log","context":"RoutesResolver","message":"MspSubscriptionController {/msp-subscription}:"}
{"timestamp":"2026-10-18T19:09:00.136Z","level":"log","context":"RouterExplorer","message":"Mapped {/msp-subscription/current, GET} route"}
{"timestamp":"2026-10-18T19:09:00.136Z","level":"log","context":"RouterExplorer","message":"Mapped {/msp-subscription/invoices, GET} route"}
{"timestamp":"2026-10-18T19:09:00.136Z","level":"log","context":"RouterExplorer","message":"Mapped {/msp-subscription/invoice/:invoiceId/pdf, GET} route"}
{"timestamp":"2026-10-18T19:09:00.136Z","level":"log","context":"RoutesResolver","message":"MspSubscriptionController {/api/msp-subscription}:"}
{"timestamp":"2026-10-18T19:09:00.136Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/msp-subscription/current, GET} route"}
{"timestamp":"2026-10-18T19:09:00.136Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/msp-subscription/invoices, GET} route"}
{"timestamp":"2026-10-18T19:09:00.136Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/msp-subscription/invoice/:invoiceId/pdf, GET} route"}
{"timestamp":"2026-10-18T19:09:00.199Z","level":"log","context":"NestApplication","message":"Nest application successfully started"}
{"timestamp":"2026-10-18T19:09:00.216Z","level":"log","context":"Bootstrap","message":"Users API successfully started on port 3842"}
{"timestamp":"2026-10-18T19:09:00.217Z","level":"log","context":"SeedService","message":"🌱 Starting database seeding..."}
{"timestamp":"2026-10-18T19:09:00.222Z","level":"log","context":"SeedService","message":"Admin account already exists, skipping seed"}
{"timestamp":"2026-10-18T19:09:00.224Z","level":"log","context":"SeedService","message":"Reseller account already exists, skipping seed"}
{"timestamp":"2026-10-18T19:09:00.225Z","level":"log","context":"SeedService","message":"MSP account already exists, skipping seed"}
{"timestamp":"2026-10-18T19:09:00.225Z","level":"log","context":"SeedService","message":"✅ Database seeding completed successfully"}
{"timestamp":"2026-10-18T19:09:00.261Z","level":"log","context":"UsersApiController","message":"Hello endpoint accessed"}
{"timestamp":"2026-10-18T20:11:31.218Z","level":"warn","context":"LegacyRouteConverter","message":"Unsupported route path: \"/lp/*\". In previous versions, the symbols ?, *, and + were used to denote optional or repeating path parameters. The latest version of \"path-to-regexp\" now requires the use of named parameters. For example, instead of using a route like /users/* to capture all routes starting with \"/users\", you should use /users/*path. For more details, refer to the migration guide. Attempting to auto-convert..."}
{"timestamp":"2026-10-18T20:11:31.253Z","level":"log","context":"Bootstrap","message":"Starting Users API on port 3842..."}
{"timestamp":"2026-10-18T20:11:31.256Z","level":"log","context":"RoutesResolver","message":"UsersApiController {/}:"}
{"timestamp":"2026-10-18T20:11:31.260Z","level":"log","context":"RouterExplorer","message":"Mapped {/, GET} route"}
{"timestamp":"2026-10-18T20:11:31.260Z","level":"log","context":"RoutesResolver","message":"AuthController {/auth}:"}
{"timestamp":"2026-10-18T20:11:31.261Z","level":"log","context":"RouterExplorer","message":"Mapped {/auth/login, POST} route"}
{"timestamp":"2026-10-18T20:11:31.262Z","level":"log","context":"RouterExplorer","message":"Mapped {/auth/admin/login, POST} route"}
{"timestamp":"2026-10-18T20:11:31.262Z","level":"log","context":"RouterExplorer","message":"Mapped {/auth/send-otp, POST} route"}
{"timestamp":"2026-10-18T20:11:31.262Z","level":"log","context":"RouterExplorer","message":"Mapped {/auth/verify-otp, POST} route"}
{"timestamp":"2026-10-18T20:11:31.263Z","level":"log","context":"RouterExplorer","message":"Mapped {/auth/signup, POST} route"}
{"timestamp":"2026-10-18T20:11:31.263Z","level":"log","context":"RouterExplorer","message":"Mapped {/auth/subscription-status, GET} route"}
{"timestamp":"2026-10-18T20:11:31.264Z","level":"log","context":"RoutesResolver","message":"AdminMspController {/admin/msp}:"}
{"timestamp":"2026-10-18T20:11:31.264Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/msp, GET} route"}
{"timestamp":"2026-10-18T20:11:31.265Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/msp/:id, GET} route"}
{"timestamp":"2026-10-18T20:11:31.265Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/msp, POST} route"}
{"timestamp":"2026-10-18T20:11:31.266Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/msp/:id, PUT} route"}
{"timestamp":"2026-10-18T20:11:31.266Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/msp/:id, DELETE} route"}
{"timestamp":"2026-10-18T20:11:31.266Z","level":"log","context":"RoutesResolver","message":"AdminLicenseController {/admin/licenses}:"}
{"timestamp":"2026-10-18T20:11:31.266Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/licenses/summary, GET} route"}
{"timestamp":"2026-10-18T20:11:31.267Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/licenses/msp/:mspId, GET} route"}
{"timestamp":"2026-10-18T20:11:31.267Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/licenses/msp/:mspId, PUT} route"}
{"timestamp":"2026-10-18T20:11:31.267Z","level":"log","context":"RoutesResolver","message":"AdminImpersonationController {/admin/impersonation}:"}
{"timestamp":"2026-10-18T20:11:31.267Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/impersonation/msp-users, GET} route"}
{"timestamp":"2026-10-18T20:11:31.271Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/impersonation/impersonate, POST} route"}
{"timestamp":"2026-10-18T20:11:31.271Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/impersonation/stop, POST} route"}
{"timestamp":"2026-10-18T20:11:31.271Z","level":"log","context":"RoutesResolver","message":"AdminAiUsageController {/admin/ai-usage}:"}
{"timestamp":"2026-10-18T20:11:31.271Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-usage, GET} route"}
{"timestamp":"2026-10-18T20:11:31.272Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-usage/business/:businessId, GET} route"}
{"timestamp":"2026-10-18T20:11:31.272Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-usage/report/monthly, GET} route"}
{"timestamp":"2026-10-18T20:11:31.272Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-usage/pricing, GET} route"}
{"timestamp":"2026-10-18T20:11:31.272Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-usage/pricing, POST} route"}
{"timestamp":"2026-10-18T20:11:31.272Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-usage/credit/:businessId, PUT} route"}
{"timestamp":"2026-10-18T20:11:31.272Z","level":"log","context":"RoutesResolver","message":"AdminAiUsageController {/api/admin/ai-usage}:"}
{"timestamp":"2026-10-18T20:11:31.273Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-usage, GET} route"}
{"timestamp":"2026-10-18T20:11:31.273Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-usage/business/:businessId, GET} route"}
{"timestamp":"2026-10-18T20:11:31.273Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-usage/report/monthly, GET} route"}
{"timestamp":"2026-10-18T20:11:31.273Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-usage/pricing, GET} route"}
{"timestamp":"2026-10-18T20:11:31.273Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-usage/pricing, POST} route"}
{"timestamp":"2026-10-18T20:11:31.274Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-usage/credit/:businessId, PUT} route"}
{"timestamp":"2026-10-18T20:11:31.274Z","level":"log","context":"RoutesResolver","message":"AdminAiModelController {/admin/ai-models}:"}
{"timestamp":"2026-10-18T20:11:31.274Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models, POST} route"}
{"timestamp":"2026-10-18T20:11:31.274Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models, GET} route"}
{"timestamp":"2026-10-18T20:11:31.274Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/default, GET} route"}
{"timestamp":"2026-10-18T20:11:31.274Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/:id, GET} route"}
{"timestamp":"2026-10-18T20:11:31.275Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/:id, PUT} route"}
{"timestamp":"2026-10-18T20:11:31.275Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/:id, DELETE} route"}
{"timestamp":"2026-10-18T20:11:31.275Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/:id/set-default, POST} route"}
{"timestamp":"2026-10-18T20:11:31.275Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/assign-to-business, POST} route"}
{"timestamp":"2026-10-18T20:11:31.275Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/business/:businessId, GET} route"}
{"timestamp":"2026-10-18T20:11:31.276Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/:id/businesses, GET} route"}
{"timestamp":"2026-10-18T20:11:31.276Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/initialize-defaults, POST} route"}
{"timestamp":"2026-10-18T20:11:31.276Z","level":"log","context":"RoutesResolver","message":"AdminAiModelController {/api/admin/ai-models}:"}
{"timestamp":"2026-10-18T20:11:31.276Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models, POST} route"}
{"timestamp":"2026-10-18T20:11:31.276Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models, GET} route"}
{"timestamp":"2026-10-18T20:11:31.276Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/default, GET} route"}
{"timestamp":"2026-10-18T20:11:31.276Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/:id, GET} route"}
{"timestamp":"2026-10-18T20:11:31.277Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/:id, PUT} route"}
{"timestamp":"2026-10-18T20:11:31.277Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/:id, DELETE} route"}
{"timestamp":"2026-10-18T20:11:31.277Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/:id/set-default, POST} route"}
{"timestamp":"2026-10-18T20:11:31.277Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/assign-to-business, POST} route"}
{"timestamp":"2026-10-18T20:11:31.277Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/business/:businessId, GET} route"}
{"timestamp":"2026-10-18T20:11:31.278Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/:id/businesses, GET} route"}
{"timestamp":"2026-10-18T20:11:31.278Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/initialize-defaults, POST} route"}
{"timestamp":"2026-10-18T20:11:31.278Z","level":"log","context":"RoutesResolver","message":"AdminBusinessController {/admin/businesses}:"}
{"timestamp":"2026-10-18T20:11:31.278Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/businesses, GET} route"}
{"timestamp":"2026-10-18T20:11:31.278Z","level":"log","context":"RoutesResolver","message":"ResellerManagementController {/admin/resellers}:"}
{"timestamp":"2026-10-18T20:11:31.278Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/resellers, GET} route"}
{"timestamp":"2026-10-18T20:11:31.279Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/resellers/create-default, POST} route"}
{"timestamp":"2026-10-18T20:11:31.279Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/resellers, POST} route"}
{"timestamp":"2026-10-18T20:11:31.279Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/resellers/:id/toggle-status, PUT} route"}
{"timestamp":"2026-10-18T20:11:31.279Z","level":"log","context":"RoutesResolver","message":"SubscriptionController {/subscription}:"}
{"timestamp":"2026-10-18T20:11:31.279Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/plans, GET} route"}
{"timestamp":"2026-10-18T20:11:31.279Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/calculate-price, POST} route"}
{"timestamp":"2026-10-18T20:11:31.280Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/current, GET} route"}
{"timestamp":"2026-10-18T20:11:31.280Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/create, POST} route"}
{"timestamp":"2026-10-18T20:11:31.280Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/:id, PUT} route"}
{"timestamp":"2026-10-18T20:11:31.280Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/:id/cancel, DELETE} route"}
{"timestamp":"2026-10-18T20:11:31.280Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/sync/:stripeSubscriptionId, POST} route"}
{"timestamp":"2026-10-18T20:11:31.280Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/payments, GET} route"}
{"timestamp":"2026-10-18T20:11:31.281Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/payments/stats, GET} route"}
{"timestamp":"2026-10-18T20:11:31.281Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/payment/:id, GET} route"}
{"timestamp":"2026-10-18T20:11:31.281Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/payment-methods/attach, POST} route"}
{"timestamp":"2026-10-18T20:11:31.281Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/payment-methods/:paymentMethodId, DELETE} route"}
{"timestamp":"2026-10-18T20:11:31.281Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/payment-methods, GET} route"}
{"timestamp":"2026-10-18T20:11:31.281Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/setup-intent, POST} route"}
{"timestamp":"2026-10-18T20:11:31.281Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/update-employee-count, POST} route"}
{"timestamp":"2026-10-18T20:11:31.282Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/retry-payment/:subscriptionId, POST} route"}
{"timestamp":"2026-10-18T20:11:31.282Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/invoice/:invoiceId/pdf, GET} route"}
{"timestamp":"2026-10-18T20:11:31.282Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/preview-upgrade, POST} route"}
{"timestamp":"2026-10-18T20:11:31.282Z","level":"log","context":"RoutesResolver","message":"SubscriptionController {/api/subscription}:"}
{"timestamp":"2026-10-18T20:11:31.282Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/plans, GET} route"}
{"timestamp":"2026-10-18T20:11:31.282Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/calculate-price, POST} route"}
{"timestamp":"2026-10-18T20:11:31.282Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/current, GET} route"}
{"timestamp":"2026-10-18T20:11:31.283Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/create, POST} route"}
{"timestamp":"2026-10-18T20:11:31.283Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/:id, PUT} route"}
{"timestamp":"2026-10-18T20:11:31.283Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/:id/cancel, DELETE} route"}
{"timestamp":"2026-10-18T20:11:31.283Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/sync/:stripeSubscriptionId, POST} route"}
{"timestamp":"2026-10-18T20:11:31.283Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/payments, GET} route"}
{"timestamp":"2026-10-18T20:11:31.283Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/payments/stats, GET} route"}
{"timestamp":"2026-10-18T20:11:31.284Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/payment/:id, GET} route"}
{"timestamp":"2026-10-18T20:11:31.284Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/payment-methods/attach, POST} route"}
{"timestamp":"2026-10-18T20:11:31.284Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/payment-methods/:paymentMethodId, DELETE} route"}
{"timestamp":"2026-10-18T20:11:31.284Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/payment-methods, GET} route"}
{"timestamp":"2026-10-18T20:11:31.284Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/setup-intent, POST} route"}
{"timestamp":"2026-10-18T20:11:31.284Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/update-employee-count, POST} route"}
{"timestamp":"2026-10-18T20:11:31.284Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/retry-payment/:subscriptionId, POST} route"}
{"timestamp":"2026-10-18T20:11:31.285Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/invoice/:invoiceId/pdf, GET} route"}
{"timestamp":"2026-10-18T20:11:31.285Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/preview-upgrade, POST} route"}
{"timestamp":"2026-10-18T20:11:31.285Z","level":"log","context":"RoutesResolver","message":"StripeWebhookController {/stripe/webhook}:"}
{"timestamp":"2026-10-18T20:11:31.285Z","level":"log","context":"RouterExplorer","message":"Mapped {/stripe/webhook/test, GET} route"}
{"timestamp":"2026-10-18T20:11:31.285Z","level":"log","context":"RouterExplorer","message":"Mapped {/stripe/webhook, POST} route"}
{"timestamp":"2026-10-18T20:11:31.285Z","level":"log","context":"RoutesResolver","message":"EmailController {/email-templates}:"}
{"timestamp":"2026-10-18T20:11:31.285Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates/test, POST} route"}
{"timestamp":"2026-10-18T20:11:31.285Z","level":"log","context":"RoutesResolver","message":"EmployeeController {/employees}:"}
{"timestamp":"2026-10-18T20:11:31.286Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees, POST} route"}
{"timestamp":"2026-10-18T20:11:31.286Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees, GET} route"}
{"timestamp":"2026-10-18T20:11:31.286Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees/export, GET} route"}
{"timestamp":"2026-10-18T20:11:31.286Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees/risk-stats, GET} route"}
{"timestamp":"2026-10-18T20:11:31.286Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees/:id, GET} route"}
{"timestamp":"2026-10-18T20:11:31.286Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees/:id, PUT} route"}
{"timestamp":"2026-10-18T20:11:31.287Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees/:id, DELETE} route"}
{"timestamp":"2026-10-18T20:11:31.287Z","level":"log","context":"RoutesResolver","message":"GroupController {/groups}:"}
{"timestamp":"2026-10-18T20:11:31.287Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups, POST} route"}
{"timestamp":"2026-10-18T20:11:31.287Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups, GET} route"}
{"timestamp":"2026-10-18T20:11:31.287Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups/standard, GET} route"}
{"timestamp":"2026-10-18T20:11:31.287Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups/:id, GET} route"}
{"timestamp":"2026-10-18T20:11:31.287Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups/:id, PUT} route"}
{"timestamp":"2026-10-18T20:11:31.288Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups/:id, DELETE} route"}
{"timestamp":"2026-10-18T20:11:31.288Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups/:id/info, GET} route"}
{"timestamp":"2026-10-18T20:11:31.288Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups/:id/with-employees, GET} route"}
{"timestamp":"2026-10-18T20:11:31.288Z","level":"log","context":"RoutesResolver","message":"SenderProfileController {/sender-profiles}:"}
{"timestamp":"2026-10-18T20:11:31.288Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles, GET} route"}
{"timestamp":"2026-10-18T20:11:31.288Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles/:id, GET} route"}
{"timestamp":"2026-10-18T20:11:31.288Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles, POST} route"}
{"timestamp":"2026-10-18T20:11:31.289Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles/:id, PUT} route"}
{"timestamp":"2026-10-18T20:11:31.289Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles/:id, DELETE} route"}
{"timestamp":"2026-10-18T20:11:31.289Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles/:id/verify-domain, POST} route"}
{"timestamp":"2026-10-18T20:11:31.289Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles/domain-verification, GET} route"}
{"timestamp":"2026-10-18T20:11:31.289Z","level":"log","context":"RoutesResolver","message":"EmailTemplateController {/email-templates}:"}
{"timestamp":"2026-10-18T20:11:31.289Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates, GET} route"}
{"timestamp":"2026-10-18T20:11:31.290Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates/:id, GET} route"}
{"timestamp":"2026-10-18T20:11:31.290Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates, POST} route"}
{"timestamp":"2026-10-18T20:11:31.290Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates/:id, PUT} route"}
{"timestamp":"2026-10-18T20:11:31.290Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates/:id, DELETE} route"}
{"timestamp":"2026-10-18T20:11:31.290Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates/:id/duplicate, POST} route"}
{"timestamp":"2026-10-18T20:11:31.290Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates/:id/preview, GET} route"}
{"timestamp":"2026-10-18T20:11:31.290Z","level":"log","context":"RoutesResolver","message":"ScenarioController {/scenarios}:"}
{"timestamp":"2026-10-18T20:11:31.291Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios, POST} route"}
{"timestamp":"2026-10-18T20:11:31.291Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios/generate-content, POST} route"}
{"timestamp":"2026-10-18T20:11:31.291Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios, GET} route"}
{"timestamp":"2026-10-18T20:11:31.291Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios/:id, GET} route"}
{"timestamp":"2026-10-18T20:11:31.291Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios/:id, PUT} route"}
{"timestamp":"2026-10-18T20:11:31.291Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios/:id, DELETE} route"}
{"timestamp":"2026-10-18T20:11:31.291Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios/generate-from-json, POST} route"}
{"timestamp":"2026-10-18T20:11:31.292Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios/:id/save-as-custom-scenario, POST} route"}
{"timestamp":"2026-10-18T20:11:31.292Z","level":"log","context":"RoutesResolver","message":"CampaignController {/campaigns}:"}
{"timestamp":"2026-10-18T20:11:31.292Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns, POST} route"}
{"timestamp":"2026-10-18T20:11:31.292Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns, GET} route"}
{"timestamp":"2026-10-18T20:11:31.292Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id, GET} route"}
{"timestamp":"2026-10-18T20:11:31.292Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id/details, GET} route"}
{"timestamp":"2026-10-18T20:11:31.293Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id/employees, GET} route"}
{"timestamp":"2026-10-18T20:11:31.293Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id, PATCH} route"}
{"timestamp":"2026-10-18T20:11:31.293Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id/start, POST} route"}
{"timestamp":"2026-10-18T20:11:31.293Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id/stop, POST} route"}
{"timestamp":"2026-10-18T20:11:31.293Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id/duplicate, POST} route"}
{"timestamp":"2026-10-18T20:11:31.293Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id, DELETE} route"}
{"timestamp":"2026-10-18T20:11:31.294Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/auto-generate-program, POST} route"}
{"timestamp":"2026-10-18T20:11:31.294Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/generate-from-threat-intelligence, POST} route"}
{"timestamp":"2026-10-18T20:11:31.294Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id/risk-score, GET} route"}
{"timestamp":"2026-10-18T20:11:31.294Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/recalculate-risk-scores, POST} route"}
{"timestamp":"2026-10-18T20:11:31.294Z","level":"log","context":"RoutesResolver","message":"CampaignController {/api/campaigns}:"}
{"timestamp":"2026-10-18T20:11:31.294Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns, POST} route"}
{"timestamp":"2026-10-18T20:11:31.294Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns, GET} route"}
{"timestamp":"2026-10-18T20:11:31.295Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id, GET} route"}
{"timestamp":"2026-10-18T20:11:31.295Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id/details, GET} route"}
{"timestamp":"2026-10-18T20:11:31.295Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id/employees, GET} route"}
{"timestamp":"2026-10-18T20:11:31.295Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id, PATCH} route"}
{"timestamp":"2026-10-18T20:11:31.295Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id/start, POST} route"}
{"timestamp":"2026-10-18T20:11:31.295Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id/stop, POST} route"}
{"timestamp":"2026-10-18T20:11:31.295Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id/duplicate, POST} route"}
{"timestamp":"2026-10-18T20:11:31.296Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id, DELETE} route"}
{"timestamp":"2026-10-18T20:11:31.296Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/auto-generate-program, POST} route"}
{"timestamp":"2026-10-18T20:11:31.296Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/generate-from-threat-intelligence, POST} route"}
{"timestamp":"2026-10-18T20:11:31.296Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id/risk-score, GET} route"}
{"timestamp":"2026-10-18T20:11:31.296Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/recalculate-risk-scores, POST} route"}
{"timestamp":"2026-10-18T20:11:31.296Z","level":"log","context":"RoutesResolver","message":"NotificationsController {/notifications}:"}
{"timestamp":"2026-10-18T20:11:31.297Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications, POST} route"}
{"timestamp":"2026-10-18T20:11:31.297Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications, GET} route"}
{"timestamp":"2026-10-18T20:11:31.297Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/unread, GET} route"}
{"timestamp":"2026-10-18T20:11:31.297Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/unread-count, GET} route"}
{"timestamp":"2026-10-18T20:11:31.297Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/:id, GET} route"}
{"timestamp":"2026-10-18T20:11:31.297Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/:id, PATCH} route"}
{"timestamp":"2026-10-18T20:11:31.298Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/:id/read, PATCH} route"}
{"timestamp":"2026-10-18T20:11:31.298Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/mark-all-read, PATCH} route"}
{"timestamp":"2026-10-18T20:11:31.298Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/:id, DELETE} route"}
{"timestamp":"2026-10-18T20:11:31.298Z","level":"log","context":"RoutesResolver","message":"LandingPageController {/lp}:"}
{"timestamp":"2026-10-18T20:11:31.299Z","level":"log","context":"RouterExplorer","message":"Mapped {/lp/image, GET} route"}
{"timestamp":"2026-10-18T20:11:31.299Z","level":"log","context":"RouterExplorer","message":"Mapped {/lp/learning, GET} route"}
{"timestamp":"2026-10-18T20:11:31.299Z","level":"log","context":"RouterExplorer","message":"Mapped {/lp/submit, POST} route"}
{"timestamp":"2026-10-18T20:11:31.299Z","level":"log","context":"RouterExplorer","message":"Mapped {/lp/test, GET} route"}
{"timestamp":"2026-10-18T20:11:31.299Z","level":"warn","context":"LegacyRouteConverter","message":"Unsupported route path: \"/lp/*\". In previous versions, the symbols ?, *, and + were used to denote optional or repeating path parameters. The latest version of \"path-to-regexp\" now requires the use of named parameters. For example, instead of using a route like /users/* to capture all routes starting with \"/users\", you should use /users/*path. For more details, refer to the migration guide. Attempting to auto-convert..."}
{"timestamp":"2026-10-18T20:11:31.300Z","level":"log","context":"RouterExplorer","message":"Mapped {/lp/*, ALL} route"}
{"timestamp":"2026-10-18T20:11:31.300Z","level":"log","context":"RoutesResolver","message":"SupportController {/support}:"}
{"timestamp":"2026-10-18T20:11:31.300Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets, POST} route"}
{"timestamp":"2026-10-18T20:11:31.300Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets, GET} route"}
{"timestamp":"2026-10-18T20:11:31.301Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets/:id, GET} route"}
{"timestamp":"2026-10-18T20:11:31.301Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets/:id, PATCH} route"}
{"timestamp":"2026-10-18T20:11:31.301Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets/:id, DELETE} route"}
{"timestamp":"2026-10-18T20:11:31.301Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets/:id/messages, POST} route"}
{"timestamp":"2026-10-18T20:11:31.301Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets/:id/close, POST} route"}
{"timestamp":"2026-10-18T20:11:31.301Z","level":"log","context":"RoutesResolver","message":"BusninessMetricsController {/business-metrics}:"}
{"timestamp":"2026-10-18T20:11:31.302Z","level":"log","context":"RouterExplorer","message":"Mapped {/business-metrics, GET} route"}
{"timestamp":"2026-10-18T20:11:31.302Z","level":"log","context":"RoutesResolver","message":"UsersController {/users}:"}
{"timestamp":"2026-10-18T20:11:31.302Z","level":"log","context":"RouterExplorer","message":"Mapped {/users/:id, PUT} route"}
{"timestamp":"2026-10-18T20:11:31.302Z","level":"log","context":"RouterExplorer","message":"Mapped {/users/settings, GET} route"}
{"timestamp":"2026-10-18T20:11:31.302Z","level":"log","context":"RouterExplorer","message":"Mapped {/users/settings/general, PUT} route"}
{"timestamp":"2026-10-18T20:11:31.302Z","level":"log","context":"RouterExplorer","message":"Mapped {/users/company/settings, PUT} route"}
{"timestamp":"2026-10-18T20:11:31.303Z","level":"log","context":"RouterExplorer","message":"Mapped {/users/change-password, POST} route"}
{"timestamp":"2026-10-18T20:11:31.303Z","level":"log","context":"RouterExplorer","message":"Mapped {/users/localization/settings, PUT} route"}
{"timestamp":"2026-10-18T20:11:31.303Z","level":"log","context":"RoutesResolver","message":"PartnerController {/partner}:"}
{"timestamp":"2026-10-18T20:11:31.303Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses, POST} route"}
{"timestamp":"2026-10-18T20:11:31.303Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses, GET} route"}
{"timestamp":"2026-10-18T20:11:31.303Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses/:id, GET} route"}
{"timestamp":"2026-10-18T20:11:31.304Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses/:id, PUT} route"}
{"timestamp":"2026-10-18T20:11:31.304Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses/:id, DELETE} route"}
{"timestamp":"2026-10-18T20:11:31.304Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses/:id/impersonate, POST} route"}
{"timestamp":"2026-10-18T20:11:31.304Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses/stop-impersonation, POST} route"}
{"timestamp":"2026-10-18T20:11:31.304Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/license-usage, GET} route"}
{"timestamp":"2026-10-18T20:11:31.304Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/invoices, POST} route"}
{"timestamp":"2026-10-18T20:11:31.305Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/invoices, GET} route"}
{"timestamp":"2026-10-18T20:11:31.305Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/invoices/:id, GET} route"}
{"timestamp":"2026-10-18T20:11:31.305Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/invoices/:id, PUT} route"}
{"timestamp":"2026-10-18T20:11:31.305Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/invoices/:id, DELETE} route"}
{"timestamp":"2026-10-18T20:11:31.305Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/invoices/:id/mark-paid, PUT} route"}
{"timestamp":"2026-10-18T20:11:31.305Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/onboarding/generate-token, POST} route"}
{"timestamp":"2026-10-18T20:11:31.306Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/dashboard, GET} route"}
{"timestamp":"2026-10-18T20:11:31.306Z","level":"log","context":"RoutesResolver","message":"MspSubscriptionController {/partner/msp-subscriptions}:"}
{"timestamp":"2026-10-18T20:11:31.306Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/plans, POST} route"}
{"timestamp":"2026-10-18T20:11:31.306Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/plans, GET} route"}
{"timestamp":"2026-10-18T20:11:31.306Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/plans/:planId, GET} route"}
{"timestamp":"2026-10-18T20:11:31.306Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/plans/:planId, PUT} route"}
{"timestamp":"2026-10-18T20:11:31.307Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/plans/:planId, DELETE} route"}
{"timestamp":"2026-10-18T20:11:31.307Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/businesses/:businessId/subscription, POST} route"}
{"timestamp":"2026-10-18T20:11:31.307Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions, GET} route"}
{"timestamp":"2026-10-18T20:11:31.307Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/businesses/:businessId/subscription, GET} route"}
{"timestamp":"2026-10-18T20:11:31.307Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/businesses/:businessId/subscription, PUT} route"}
{"timestamp":"2026-10-18T20:11:31.307Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/businesses/:businessId/subscription, DELETE} route"}
{"timestamp":"2026-10-18T20:11:31.308Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/businesses/:businessId/subscription/limits, GET} route"}
{"timestamp":"2026-10-18T20:11:31.308Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/businesses/:businessId/subscription/change-plan, PUT} route"}
{"timestamp":"2026-10-18T20:11:31.308Z","level":"log","context":"RoutesResolver","message":"OnboardingController {/onboarding}:"}
{"timestamp":"2026-10-18T20:11:31.308Z","level":"log","context":"RouterExplorer","message":"Mapped {/onboarding/validate/:token, GET} route"}
{"timestamp":"2026-10-18T20:11:31.308Z","level":"log","context":"RouterExplorer","message":"Mapped {/onboarding/complete/:token, POST} route"}
{"timestamp":"2026-10-18T20:11:31.308Z","level":"log","context":"RoutesResolver","message":"ResellerController {/reseller}:"}
{"timestamp":"2026-10-18T20:11:31.309Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/businesses, POST} route"}
{"timestamp":"2026-10-18T20:11:31.309Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/businesses, GET} route"}
{"timestamp":"2026-10-18T20:11:31.309Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/businesses/:id, GET} route"}
{"timestamp":"2026-10-18T20:11:31.309Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/businesses/:id, PUT} route"}
{"timestamp":"2026-10-18T20:11:31.309Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/businesses/:id, DELETE} route"}
{"timestamp":"2026-10-18T20:11:31.309Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/license-usage, GET} route"}
{"timestamp":"2026-10-18T20:11:31.310Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/invoices, POST} route"}
{"timestamp":"2026-10-18T20:11:31.310Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/invoices, GET} route"}
{"timestamp":"2026-10-18T20:11:31.310Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/invoices/:id, GET} route"}
{"timestamp":"2026-10-18T20:11:31.310Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/invoices/:id, PUT} route"}
{"timestamp":"2026-10-18T20:11:31.310Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/invoices/:id, DELETE} route"}
{"timestamp":"2026-10-18T20:11:31.310Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/invoices/:id/mark-paid, PUT} route"}
{"timestamp":"2026-10-18T20:11:31.311Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/onboarding/generate-token, POST} route"}
{"timestamp":"2026-10-18T20:11:31.311Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/dashboard, GET} route"}
{"timestamp":"2026-10-18T20:11:31.311Z","level":"log","context":"RoutesResolver","message":"ResellerSubscriptionController {/reseller}:"}
{"timestamp":"2026-10-18T20:11:31.311Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/plans, POST} route"}
{"timestamp":"2026-10-18T20:11:31.311Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/plans, GET} route"}
{"timestamp":"2026-10-18T20:11:31.311Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/plans/:planId, GET} route"}
{"timestamp":"2026-10-18T20:11:31.311Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/plans/:planId, PUT} route"}
{"timestamp":"2026-10-18T20:11:31.312Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/plans/:planId, DELETE} route"}
{"timestamp":"2026-10-18T20:11:31.312Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/subscriptions/businesses/:businessId/subscription, POST} route"}
{"timestamp":"2026-10-18T20:11:31.312Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/subscriptions, GET} route"}
{"timestamp":"2026-10-18T20:11:31.312Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/subscriptions/businesses/:businessId/subscription, GET} route"}
{"timestamp":"2026-10-18T20:11:31.312Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/subscriptions/businesses/:businessId/subscription, PUT} route"}
{"timestamp":"2026-10-18T20:11:31.312Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/subscriptions/businesses/:businessId/subscription, DELETE} route"}
{"timestamp":"2026-10-18T20:11:31.313Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/subscriptions/businesses/:businessId/subscription/limits, GET} route"}
{"timestamp":"2026-10-18T20:11:31.313Z","level":"log","context":"RoutesResolver","message":"HealthController {/health}:"}
{"timestamp":"2026-10-18T20:11:31.313Z","level":"log","context":"RouterExplorer","message":"Mapped {/health, GET} route"}
{"timestamp":"2026-10-18T20:11:31.313Z","level":"log","context":"RouterExplorer","message":"Mapped {/health/test-logs, GET} route"}
{"timestamp":"2026-10-18T20:11:31.313Z","level":"log","context":"RoutesResolver","message":"AzureAdController {/azure-ad}:"}
{"timestamp":"2026-10-18T20:11:31.313Z","level":"log","context":"RouterExplorer","message":"Mapped {/azure-ad/config, POST} route"}
{"timestamp":"2026-10-18T20:11:31.313Z","level":"log","context":"RouterExplorer","message":"Mapped {/azure-ad/config, GET} route"}
{"timestamp":"2026-10-18T20:11:31.314Z","level":"log","context":"RouterExplorer","message":"Mapped {/azure-ad/test-connection, POST} route"}
{"timestamp":"2026-10-18T20:11:31.314Z","level":"log","context":"RouterExplorer","message":"Mapped {/azure-ad/sync, POST} route"}
{"timestamp":"2026-10-18T20:11:31.314Z","level":"log","context":"RoutesResolver","message":"ThreatsController {/threats}:"}
{"timestamp":"2026-10-18T20:11:31.314Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats, POST} route"}
{"timestamp":"2026-10-18T20:11:31.314Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats, GET} route"}
{"timestamp":"2026-10-18T20:11:31.314Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/chart-data, GET} route"}
{"timestamp":"2026-10-18T20:11:31.314Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/claude-search, POST} route"}
{"timestamp":"2026-10-18T20:11:31.315Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/claude-latest, POST} route"}
{"timestamp":"2026-10-18T20:11:31.315Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/claude-trending, POST} route"}
{"timestamp":"2026-10-18T20:11:31.315Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/claude-categories, POST} route"}
{"timestamp":"2026-10-18T20:11:31.315Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/claude-manual-search, POST} route"}
{"timestamp":"2026-10-18T20:11:31.315Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/claude-quick-search, POST} route"}
{"timestamp":"2026-10-18T20:11:31.315Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/scheduler-status, GET} route"}
{"timestamp":"2026-10-18T20:11:31.316Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/health-check, GET} route"}
{"timestamp":"2026-10-18T20:11:31.316Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/pause-scheduler, POST} route"}
{"timestamp":"2026-10-18T20:11:31.316Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/:id, GET} route"}
{"timestamp":"2026-10-18T20:11:31.316Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/:id, PATCH} route"}
{"timestamp":"2026-10-18T20:11:31.316Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/:id, DELETE} route"}
{"timestamp":"2026-10-18T20:11:31.316Z","level":"log","context":"RoutesResolver","message":"DomainController {/domains}:"}
{"timestamp":"2026-10-18T20:11:31.317Z","level":"log","context":"RouterExplorer","message":"Mapped {/domains, GET} route"}
{"timestamp":"2026-10-18T20:11:31.317Z","level":"log","context":"RouterExplorer","message":"Mapped {/domains/:id, GET} route"}
{"timestamp":"2026-10-18T20:11:31.317Z","level":"log","context":"RouterExplorer","message":"Mapped {/domains, POST} route"}
{"timestamp":"2026-10-18T20:11:31.317Z","level":"log","context":"RouterExplorer","message":"Mapped {/domains/:id, PUT} route"}
{"timestamp":"2026-10-18T20:11:31.317Z","level":"log","context":"RouterExplorer","message":"Mapped {/domains/:id, DELETE} route"}
{"timestamp":"2026-10-18T20:11:31.317Z","level":"log","context":"RouterExplorer","message":"Mapped {/domains/seed, POST} route"}
{"timestamp":"2026-10-18T20:11:31.317Z","level":"log","context":"RoutesResolver","message":"MspSubscriptionController {/msp-subscription}:"}
{"timestamp":"2026-10-18T20:11:31.318Z","level":"log","context":"RouterExplorer","message":"Mapped {/msp-subscription/current, GET} route"}
{"timestamp":"2026-10-18T20:11:31.318Z","level":"log","context":"RouterExplorer","message":"Mapped {/msp-subscription/invoices, GET} route"}
{"timestamp":"2026-10-18T20:11:31.318Z","level":"log","context":"RouterExplorer","message":"Mapped {/msp-subscription/invoice/:invoiceId/pdf, GET} route"}
{"timestamp":"2026-10-18T20:11:31.318Z","level":"log","context":"RoutesResolver","message":"MspSubscriptionController {/api/msp-subscription}:"}
{"timestamp":"2026-10-18T20:11:31.318Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/msp-subscription/current, GET} route"}
{"timestamp":"2026-10-18T20:11:31.318Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/msp-subscription/invoices, GET} route"}
{"timestamp":"2026-10-18T20:11:31.318Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/msp-subscription/invoice/:invoiceId/pdf, GET} route"}
{"timestamp":"2026-10-18T20:11:31.386Z","level":"log","context":"NestApplication","message":"Nest application successfully started"}
{"timestamp":"2026-10-18T20:11:31.409Z","level":"log","context":"Bootstrap","message":"Users API successfully started on port 3842"}
{"timestamp":"2026-10-18T20:11:31.409Z","level":"log","context":"SeedService","message":"🌱 Starting database seeding..."}
{"timestamp":"2026-10-18T20:11:31.415Z","level":"log","context":"SeedService","message":"Admin account already exists, skipping seed"}
{"timestamp":"2026-10-18T20:11:31.417Z","level":"log","context":"SeedService","message":"Reseller account already exists, skipping seed"}
{"timestamp":"2026-10-18T20:11:31.418Z","level":"log","context":"SeedService","message":"MSP account already exists, skipping seed"}
{"timestamp":"2026-10-18T20:11:31.418Z","level":"log","context":"SeedService","message":"✅ Database seeding completed successfully"}
{"timestamp":"2026-10-18T23:22:16.561Z","level":"warn","context":"LegacyRouteConverter","message":"Unsupported route path: \"/lp/*\". In previous versions, the symbols ?, *, and + were used to denote optional or repeating path parameters. The latest version of \"path-to-regexp\" now requires the use of named parameters. For example, instead of using a route like /users/* to capture all routes starting with \"/users\", you should use /users/*path. For more details, refer to the migration guide. Attempting to auto-convert..."}
{"timestamp":"2026-10-18T23:22:16.604Z","level":"log","context":"Bootstrap","message":"Starting Users API on port 3842..."}
{"timestamp":"2026-10-18T23:22:16.608Z","level":"log","context":"RoutesResolver","message":"UsersApiController {/}:"}
{"timestamp":"2026-10-18T23:22:16.612Z","level":"log","context":"RouterExplorer","message":"Mapped {/, GET} route"}
{"timestamp":"2026-10-18T23:22:16.612Z","level":"log","context":"RoutesResolver","message":"AuthController {/auth}:"}
{"timestamp":"2026-10-18T23:22:16.613Z","level":"log","context":"RouterExplorer","message":"Mapped {/auth/login, POST} route"}
{"timestamp":"2026-10-18T23:22:16.613Z","level":"log","context":"RouterExplorer","message":"Mapped {/auth/admin/login, POST} route"}
{"timestamp":"2026-10-18T23:22:16.614Z","level":"log","context":"RouterExplorer","message":"Mapped {/auth/send-otp, POST} route"}
{"timestamp":"2026-10-18T23:22:16.614Z","level":"log","context":"RouterExplorer","message":"Mapped {/auth/verify-otp, POST} route"}
{"timestamp":"2026-10-18T23:22:16.615Z","level":"log","context":"RouterExplorer","message":"Mapped {/auth/signup, POST} route"}
{"timestamp":"2026-10-18T23:22:16.616Z","level":"log","context":"RouterExplorer","message":"Mapped {/auth/subscription-status, GET} route"}
{"timestamp":"2026-10-18T23:22:16.616Z","level":"log","context":"RoutesResolver","message":"AdminMspController {/admin/msp}:"}
{"timestamp":"2026-10-18T23:22:16.616Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/msp, GET} route"}
{"timestamp":"2026-10-18T23:22:16.617Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/msp/:id, GET} route"}
{"timestamp":"2026-10-18T23:22:16.618Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/msp, POST} route"}
{"timestamp":"2026-10-18T23:22:16.618Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/msp/:id, PUT} route"}
{"timestamp":"2026-10-18T23:22:16.618Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/msp/:id, DELETE} route"}
{"timestamp":"2026-10-18T23:22:16.619Z","level":"log","context":"RoutesResolver","message":"AdminLicenseController {/admin/licenses}:"}
{"timestamp":"2026-10-18T23:22:16.619Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/licenses/summary, GET} route"}
{"timestamp":"2026-10-18T23:22:16.619Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/licenses/msp/:mspId, GET} route"}
{"timestamp":"2026-10-18T23:22:16.619Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/licenses/msp/:mspId, PUT} route"}
{"timestamp":"2026-10-18T23:22:16.620Z","level":"log","context":"RoutesResolver","message":"AdminImpersonationController {/admin/impersonation}:"}
{"timestamp":"2026-10-18T23:22:16.620Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/impersonation/msp-users, GET} route"}
{"timestamp":"2026-10-18T23:22:16.620Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/impersonation/impersonate, POST} route"}
{"timestamp":"2026-10-18T23:22:16.620Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/impersonation/stop, POST} route"}
{"timestamp":"2026-10-18T23:22:16.621Z","level":"log","context":"RoutesResolver","message":"AdminAiUsageController {/admin/ai-usage}:"}
{"timestamp":"2026-10-18T23:22:16.621Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-usage, GET} route"}
{"timestamp":"2026-10-18T23:22:16.621Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-usage/business/:businessId, GET} route"}
{"timestamp":"2026-10-18T23:22:16.624Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-usage/report/monthly, GET} route"}
{"timestamp":"2026-10-18T23:22:16.625Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-usage/pricing, GET} route"}
{"timestamp":"2026-10-18T23:22:16.625Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-usage/pricing, POST} route"}
{"timestamp":"2026-10-18T23:22:16.625Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-usage/credit/:businessId, PUT} route"}
{"timestamp":"2026-10-18T23:22:16.625Z","level":"log","context":"RoutesResolver","message":"AdminAiUsageController {/api/admin/ai-usage}:"}
{"timestamp":"2026-10-18T23:22:16.625Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-usage, GET} route"}
{"timestamp":"2026-10-18T23:22:16.626Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-usage/business/:businessId, GET} route"}
{"timestamp":"2026-10-18T23:22:16.626Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-usage/report/monthly, GET} route"}
{"timestamp":"2026-10-18T23:22:16.626Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-usage/pricing, GET} route"}
{"timestamp":"2026-10-18T23:22:16.626Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-usage/pricing, POST} route"}
{"timestamp":"2026-10-18T23:22:16.626Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-usage/credit/:businessId, PUT} route"}
{"timestamp":"2026-10-18T23:22:16.626Z","level":"log","context":"RoutesResolver","message":"AdminAiModelController {/admin/ai-models}:"}
{"timestamp":"2026-10-18T23:22:16.627Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models, POST} route"}
{"timestamp":"2026-10-18T23:22:16.627Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models, GET} route"}
{"timestamp":"2026-10-18T23:22:16.627Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/default, GET} route"}
{"timestamp":"2026-10-18T23:22:16.627Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/:id, GET} route"}
{"timestamp":"2026-10-18T23:22:16.627Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/:id, PUT} route"}
{"timestamp":"2026-10-18T23:22:16.628Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/:id, DELETE} route"}
{"timestamp":"2026-10-18T23:22:16.628Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/:id/set-default, POST} route"}
{"timestamp":"2026-10-18T23:22:16.628Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/assign-to-business, POST} route"}
{"timestamp":"2026-10-18T23:22:16.628Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/business/:businessId, GET} route"}
{"timestamp":"2026-10-18T23:22:16.629Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/:id/businesses, GET} route"}
{"timestamp":"2026-10-18T23:22:16.629Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/initialize-defaults, POST} route"}
{"timestamp":"2026-10-18T23:22:16.629Z","level":"log","context":"RoutesResolver","message":"AdminAiModelController {/api/admin/ai-models}:"}
{"timestamp":"2026-10-18T23:22:16.629Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models, POST} route"}
{"timestamp":"2026-10-18T23:22:16.629Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models, GET} route"}
{"timestamp":"2026-10-18T23:22:16.629Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/default, GET} route"}
{"timestamp":"2026-10-18T23:22:16.630Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/:id, GET} route"}
{"timestamp":"2026-10-18T23:22:16.630Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/:id, PUT} route"}
{"timestamp":"2026-10-18T23:22:16.630Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/:id, DELETE} route"}
{"timestamp":"2026-10-18T23:22:16.630Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/:id/set-default, POST} route"}
{"timestamp":"2026-10-18T23:22:16.630Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/assign-to-business, POST} route"}
{"timestamp":"2026-10-18T23:22:16.630Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/business/:businessId, GET} route"}
{"timestamp":"2026-10-18T23:22:16.631Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/:id/businesses, GET} route"}
{"timestamp":"2026-10-18T23:22:16.631Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/initialize-defaults, POST} route"}
{"timestamp":"2026-10-18T23:22:16.631Z","level":"log","context":"RoutesResolver","message":"AdminBusinessController {/admin/businesses}:"}
{"timestamp":"2026-10-18T23:22:16.631Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/businesses, GET} route"}
{"timestamp":"2026-10-18T23:22:16.631Z","level":"log","context":"RoutesResolver","message":"ResellerManagementController {/admin/resellers}:"}
{"timestamp":"2026-10-18T23:22:16.632Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/resellers, GET} route"}
{"timestamp":"2026-10-18T23:22:16.632Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/resellers/create-default, POST} route"}
{"timestamp":"2026-10-18T23:22:16.632Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/resellers, POST} route"}
{"timestamp":"2026-10-18T23:22:16.632Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/resellers/:id/toggle-status, PUT} route"}
{"timestamp":"2026-10-18T23:22:16.632Z","level":"log","context":"RoutesResolver","message":"SubscriptionController {/subscription}:"}
{"timestamp":"2026-10-18T23:22:16.632Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/plans, GET} route"}
{"timestamp":"2026-10-18T23:22:16.633Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/calculate-price, POST} route"}
{"timestamp":"2026-10-18T23:22:16.633Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/current, GET} route"}
{"timestamp":"2026-10-18T23:22:16.633Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/create, POST} route"}
{"timestamp":"2026-10-18T23:22:16.633Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/:id, PUT} route"}
{"timestamp":"2026-10-18T23:22:16.633Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/:id/cancel, DELETE} route"}
{"timestamp":"2026-10-18T23:22:16.634Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/sync/:stripeSubscriptionId, POST} route"}
{"timestamp":"2026-10-18T23:22:16.634Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/payments, GET} route"}
{"timestamp":"2026-10-18T23:22:16.634Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/payments/stats, GET} route"}
{"timestamp":"2026-10-18T23:22:16.634Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/payment/:id, GET} route"}
{"timestamp":"2026-10-18T23:22:16.634Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/payment-methods/attach, POST} route"}
{"timestamp":"2026-10-18T23:22:16.634Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/payment-methods/:paymentMethodId, DELETE} route"}
{"timestamp":"2026-10-18T23:22:16.635Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/payment-methods, GET} route"}
{"timestamp":"2026-10-18T23:22:16.635Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/setup-intent, POST} route"}
{"timestamp":"2026-10-18T23:22:16.635Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/update-employee-count, POST} route"}
{"timestamp":"2026-10-18T23:22:16.635Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/retry-payment/:subscriptionId, POST} route"}
{"timestamp":"2026-10-18T23:22:16.635Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/invoice/:invoiceId/pdf, GET} route"}
{"timestamp":"2026-10-18T23:22:16.636Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/preview-upgrade, POST} route"}
{"timestamp":"2026-10-18T23:22:16.636Z","level":"log","context":"RoutesResolver","message":"SubscriptionController {/api/subscription}:"}
{"timestamp":"2026-10-18T23:22:16.636Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/plans, GET} route"}
{"timestamp":"2026-10-18T23:22:16.636Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/calculate-price, POST} route"}
{"timestamp":"2026-10-18T23:22:16.636Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/current, GET} route"}
{"timestamp":"2026-10-18T23:22:16.636Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/create, POST} route"}
{"timestamp":"2026-10-18T23:22:16.636Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/:id, PUT} route"}
{"timestamp":"2026-10-18T23:22:16.637Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/:id/cancel, DELETE} route"}
{"timestamp":"2026-10-18T23:22:16.637Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/sync/:stripeSubscriptionId, POST} route"}
{"timestamp":"2026-10-18T23:22:16.637Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/payments, GET} route"}
{"timestamp":"2026-10-18T23:22:16.637Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/payments/stats, GET} route"}
{"timestamp":"2026-10-18T23:22:16.637Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/payment/:id, GET} route"}
{"timestamp":"2026-10-18T23:22:16.637Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/payment-methods/attach, POST} route"}
{"timestamp":"2026-10-18T23:22:16.638Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/payment-methods/:paymentMethodId, DELETE} route"}
{"timestamp":"2026-10-18T23:22:16.638Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/payment-methods, GET} route"}
{"timestamp":"2026-10-18T23:22:16.638Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/setup-intent, POST} route"}
{"timestamp":"2026-10-18T23:22:16.638Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/update-employee-count, POST} route"}
{"timestamp":"2026-10-18T23:22:16.638Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/retry-payment/:subscriptionId, POST} route"}
{"timestamp":"2026-10-18T23:22:16.639Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/invoice/:invoiceId/pdf, GET} route"}
{"timestamp":"2026-10-18T23:22:16.639Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/preview-upgrade, POST} route"}
{"timestamp":"2026-10-18T23:22:16.639Z","level":"log","context":"RoutesResolver","message":"StripeWebhookController {/stripe/webhook}:"}
{"timestamp":"2026-10-18T23:22:16.639Z","level":"log","context":"RouterExplorer","message":"Mapped {/stripe/webhook/test, GET} route"}
{"timestamp":"2026-10-18T23:22:16.639Z","level":"log","context":"RouterExplorer","message":"Mapped {/stripe/webhook, POST} route"}
{"timestamp":"2026-10-18T23:22:16.639Z","level":"log","context":"RoutesResolver","message":"EmailController {/email-templates}:"}
{"timestamp":"2026-10-18T23:22:16.640Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates/test, POST} route"}
{"timestamp":"2026-10-18T23:22:16.640Z","level":"log","context":"RoutesResolver","message":"EmployeeController {/employees}:"}
{"timestamp":"2026-10-18T23:22:16.640Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees, POST} route"}
{"timestamp":"2026-10-18T23:22:16.640Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees, GET} route"}
{"timestamp":"2026-10-18T23:22:16.640Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees/export, GET} route"}
{"timestamp":"2026-10-18T23:22:16.641Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees/risk-stats, GET} route"}
{"timestamp":"2026-10-18T23:22:16.641Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees/:id, GET} route"}
{"timestamp":"2026-10-18T23:22:16.641Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees/:id, PUT} route"}
{"timestamp":"2026-10-18T23:22:16.641Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees/:id, DELETE} route"}
{"timestamp":"2026-10-18T23:22:16.641Z","level":"log","context":"RoutesResolver","message":"GroupController {/groups}:"}
{"timestamp":"2026-10-18T23:22:16.642Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups, POST} route"}
{"timestamp":"2026-10-18T23:22:16.642Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups, GET} route"}
{"timestamp":"2026-10-18T23:22:16.642Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups/standard, GET} route"}
{"timestamp":"2026-10-18T23:22:16.642Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups/:id, GET} route"}
{"timestamp":"2026-10-18T23:22:16.642Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups/:id, PUT} route"}
{"timestamp":"2026-10-18T23:22:16.643Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups/:id, DELETE} route"}
{"timestamp":"2026-10-18T23:22:16.643Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups/:id/info, GET} route"}
{"timestamp":"2026-10-18T23:22:16.643Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups/:id/with-employees, GET} route"}
{"timestamp":"2026-10-18T23:22:16.643Z","level":"log","context":"RoutesResolver","message":"SenderProfileController {/sender-profiles}:"}
{"timestamp":"2026-10-18T23:22:16.643Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles, GET} route"}
{"timestamp":"2026-10-18T23:22:16.644Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles/:id, GET} route"}
{"timestamp":"2026-10-18T23:22:16.644Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles, POST} route"}
{"timestamp":"2026-10-18T23:22:16.644Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles/:id, PUT} route"}
{"timestamp":"2026-10-18T23:22:16.644Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles/:id, DELETE} route"}
{"timestamp":"2026-10-18T23:22:16.644Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles/:id/verify-domain, POST} route"}
{"timestamp":"2026-10-18T23:22:16.645Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles/domain-verification, GET} route"}
{"timestamp":"2026-10-18T23:22:16.645Z","level":"log","context":"RoutesResolver","message":"EmailTemplateController {/email-templates}:"}
{"timestamp":"2026-10-18T23:22:16.645Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates, GET} route"}
{"timestamp":"2026-10-18T23:22:16.645Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates/:id, GET} route"}
{"timestamp":"2026-10-18T23:22:16.645Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates, POST} route"}
{"timestamp":"2026-10-18T23:22:16.646Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates/:id, PUT} route"}
{"timestamp":"2026-10-18T23:22:16.646Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates/:id, DELETE} route"}
{"timestamp":"2026-10-18T23:22:16.646Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates/:id/duplicate, POST} route"}
{"timestamp":"2026-10-18T23:22:16.646Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates/:id/preview, GET} route"}
{"timestamp":"2026-10-18T23:22:16.646Z","level":"log","context":"RoutesResolver","message":"ScenarioController {/scenarios}:"}
{"timestamp":"2026-10-18T23:22:16.646Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios, POST} route"}
{"timestamp":"2026-10-18T23:22:16.647Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios/generate-content, POST} route"}
{"timestamp":"2026-10-18T23:22:16.647Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios, GET} route"}
{"timestamp":"2026-10-18T23:22:16.647Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios/:id, GET} route"}
{"timestamp":"2026-10-18T23:22:16.647Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios/:id, PUT} route"}
{"timestamp":"2026-10-18T23:22:16.647Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios/:id, DELETE} route"}
{"timestamp":"2026-10-18T23:22:16.648Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios/generate-from-json, POST} route"}
{"timestamp":"2026-10-18T23:22:16.648Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios/:id/save-as-custom-scenario, POST} route"}
{"timestamp":"2026-10-18T23:22:16.648Z","level":"log","context":"RoutesResolver","message":"CampaignController {/campaigns}:"}
{"timestamp":"2026-10-18T23:22:16.648Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns, POST} route"}
{"timestamp":"2026-10-18T23:22:16.648Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns, GET} route"}
{"timestamp":"2026-10-18T23:22:16.648Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id, GET} route"}
{"timestamp":"2026-10-18T23:22:16.649Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id/details, GET} route"}
{"timestamp":"2026-10-18T23:22:16.649Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id/employees, GET} route"}
{"timestamp":"2026-10-18T23:22:16.649Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id, PATCH} route"}
{"timestamp":"2026-10-18T23:22:16.649Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id/start, POST} route"}
{"timestamp":"2026-10-18T23:22:16.650Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id/stop, POST} route"}
{"timestamp":"2026-10-18T23:22:16.650Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id/duplicate, POST} route"}
{"timestamp":"2026-10-18T23:22:16.650Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id, DELETE} route"}
{"timestamp":"2026-10-18T23:22:16.650Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/auto-generate-program, POST} route"}
{"timestamp":"2026-10-18T23:22:16.650Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/generate-from-threat-intelligence, POST} route"}
{"timestamp":"2026-10-18T23:22:16.651Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id/risk-score, GET} route"}
{"timestamp":"2026-10-18T23:22:16.651Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/recalculate-risk-scores, POST} route"}
{"timestamp":"2026-10-18T23:22:16.651Z","level":"log","context":"RoutesResolver","message":"CampaignController {/api/campaigns}:"}
{"timestamp":"2026-10-18T23:22:16.651Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns, POST} route"}
{"timestamp":"2026-10-18T23:22:16.651Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns, GET} route"}
{"timestamp":"2026-10-18T23:22:16.651Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id, GET} route"}
{"timestamp":"2026-10-18T23:22:16.652Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id/details, GET} route"}
{"timestamp":"2026-10-18T23:22:16.652Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id/employees, GET} route"}
{"timestamp":"2026-10-18T23:22:16.652Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id, PATCH} route"}
{"timestamp":"2026-10-18T23:22:16.652Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id/start, POST} route"}
{"timestamp":"2026-10-18T23:22:16.652Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id/stop, POST} route"}
{"timestamp":"2026-10-18T23:22:16.653Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id/duplicate, POST} route"}
{"timestamp":"2026-10-18T23:22:16.653Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id, DELETE} route"}
{"timestamp":"2026-10-18T23:22:16.653Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/auto-generate-program, POST} route"}
{"timestamp":"2026-10-18T23:22:16.653Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/generate-from-threat-intelligence, POST} route"}
{"timestamp":"2026-10-18T23:22:16.653Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id/risk-score, GET} route"}
{"timestamp":"2026-10-18T23:22:16.653Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/recalculate-risk-scores, POST} route"}
{"timestamp":"2026-10-18T23:22:16.654Z","level":"log","context":"RoutesResolver","message":"NotificationsController {/notifications}:"}
{"timestamp":"2026-10-18T23:22:16.654Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications, POST} route"}
{"timestamp":"2026-10-18T23:22:16.654Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications, GET} route"}
{"timestamp":"2026-10-18T23:22:16.654Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/unread, GET} route"}
{"timestamp":"2026-10-18T23:22:16.655Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/unread-count, GET} route"}
{"timestamp":"2026-10-18T23:22:16.655Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/:id, GET} route"}
{"timestamp":"2026-10-18T23:22:16.655Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/:id, PATCH} route"}
{"timestamp":"2026-10-18T23:22:16.655Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/:id/read, PATCH} route"}
{"timestamp":"2026-10-18T23:22:16.655Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/mark-all-read, PATCH} route"}
{"timestamp":"2026-10-18T23:22:16.656Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/:id, DELETE} route"}
{"timestamp":"2026-10-18T23:22:16.656Z","level":"log","context":"RoutesResolver","message":"LandingPageController {/lp}:"}
{"timestamp":"2026-10-18T23:22:16.656Z","level":"log","context":"RouterExplorer","message":"Mapped {/lp/image, GET} route"}
{"timestamp":"2026-10-18T23:22:16.656Z","level":"log","context":"RouterExplorer","message":"Mapped {/lp/learning, GET} route"}
{"timestamp":"2026-10-18T23:22:16.657Z","level":"log","context":"RouterExplorer","message":"Mapped {/lp/submit, POST} route"}
{"timestamp":"2026-10-18T23:22:16.657Z","level":"log","context":"RouterExplorer","message":"Mapped {/lp/test, GET} route"}
{"timestamp":"2026-10-18T23:22:16.657Z","level":"warn","context":"LegacyRouteConverter","message":"Unsupported route path: \"/lp/*\". In previous versions, the symbols ?, *, and + were used to denote optional or repeating path parameters. The latest version of \"path-to-regexp\" now requires the use of named parameters. For example, instead of using a route like /users/* to capture all routes starting with \"/users\", you should use /users/*path. For more details, refer to the migration guide. Attempting to auto-convert..."}
{"timestamp":"2026-10-18T23:22:16.658Z","level":"log","context":"RouterExplorer","message":"Mapped {/lp/*, ALL} route"}
{"timestamp":"2026-10-18T23:22:16.658Z","level":"log","context":"RoutesResolver","message":"SupportController {/support}:"}
{"timestamp":"2026-10-18T23:22:16.658Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets, POST} route"}
{"timestamp":"2026-10-18T23:22:16.658Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets, GET} route"}
{"timestamp":"2026-10-18T23:22:16.659Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets/:id, GET} route"}
{"timestamp":"2026-10-18T23:22:16.659Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets/:id, PATCH} route"}
{"timestamp":"2026-10-18T23:22:16.659Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets/:id, DELETE} route"}
{"timestamp":"2026-10-18T23:22:16.659Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets/:id/messages, POST} route"}
{"timestamp":"2026-10-18T23:22:16.660Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets/:id/close, POST} route"}
{"timestamp":"2026-10-18T23:22:16.660Z","level":"log","context":"RoutesResolver","message":"BusninessMetricsController {/business-metrics}:"}
{"timestamp":"2026-10-18T23:22:16.660Z","level":"log","context":"RouterExplorer","message":"Mapped {/business-metrics, GET} route"}
{"timestamp":"2026-10-18T23:22:16.660Z","level":"log","context":"RoutesResolver","message":"UsersController {/users}:"}
{"timestamp":"2026-10-18T23:22:16.660Z","level":"log","context":"RouterExplorer","message":"Mapped {/users/:id, PUT} route"}
{"timestamp":"2026-10-18T23:22:16.660Z","level":"log","context":"RouterExplorer","message":"Mapped {/users/settings, GET} route"}
{"timestamp":"2026-10-18T23:22:16.660Z","level":"log","context":"RouterExplorer","message":"Mapped {/users/settings/general, PUT} route"}
{"timestamp":"2026-10-18T23:22:16.661Z","level":"log","context":"RouterExplorer","message":"Mapped {/users/company/settings, PUT} route"}
{"timestamp":"2026-10-18T23:22:16.661Z","level":"log","context":"RouterExplorer","message":"Mapped {/users/change-password, POST} route"}
{"timestamp":"2026-10-18T23:22:16.661Z","level":"log","context":"RouterExplorer","message":"Mapped {/users/localization/settings, PUT} route"}
{"timestamp":"2026-10-18T23:22:16.661Z","level":"log","context":"RoutesResolver","message":"PartnerController {/partner}:"}
{"timestamp":"2026-10-18T23:22:16.661Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses, POST} route"}
{"timestamp":"2026-10-18T23:22:16.662Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses, GET} route"}
{"timestamp":"2026-10-18T23:22:16.662Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses/:id, GET} route"}
{"timestamp":"2026-10-18T23:22:16.662Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses/:id, PUT} route"}
{"timestamp":"2026-10-18T23:22:16.662Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses/:id, DELETE} route"}
{"timestamp":"2026-10-18T23:22:16.662Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses/:id/impersonate, POST} route"}
{"timestamp":"2026-10-18T23:22:16.662Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses/stop-impersonation, POST} route"}
{"timestamp":"2026-10-18T23:22:16.663Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/license-usage, GET} route"}
{"timestamp":"2026-10-18T23:22:16.663Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/invoices, POST} route"}
{"timestamp":"2026-10-18T23:22:16.663Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/invoices, GET} route"}
{"timestamp":"2026-10-18T23:22:16.663Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/invoices/:id, GET} route"}
{"timestamp":"2026-10-18T23:22:16.663Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/invoices/:id, PUT} route"}
{"timestamp":"2026-10-18T23:22:16.664Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/invoices/:id, DELETE} route"}
{"timestamp":"2026-10-18T23:22:16.664Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/invoices/:id/mark-paid, PUT} route"}
{"timestamp":"2026-10-18T23:22:16.664Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/onboarding/generate-token, POST} route"}
{"timestamp":"2026-10-18T23:22:16.664Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/dashboard, GET} route"}
{"timestamp":"2026-10-18T23:22:16.664Z","level":"log","context":"RoutesResolver","message":"MspSubscriptionController {/partner/msp-subscriptions}:"}
{"timestamp":"2026-10-18T23:22:16.664Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/plans, POST} route"}
{"timestamp":"2026-10-18T23:22:16.665Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/plans, GET} route"}
{"timestamp":"2026-10-18T23:22:16.665Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/plans/:planId, GET} route"}
{"timestamp":"2026-10-18T23:22:16.665Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/plans/:planId, PUT} route"}
{"timestamp":"2026-10-18T23:22:16.665Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/plans/:planId, DELETE} route"}
{"timestamp":"2026-10-18T23:22:16.665Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/businesses/:businessId/subscription, POST} route"}
{"timestamp":"2026-10-18T23:22:16.666Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions, GET} route"}
{"timestamp":"2026-10-18T23:22:16.666Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/businesses/:businessId/subscription, GET} route"}
{"timestamp":"2026-10-18T23:22:16.666Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/businesses/:businessId/subscription, PUT} route"}
{"timestamp":"2026-10-18T23:22:16.666Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/businesses/:businessId/subscription, DELETE} route"}
{"timestamp":"2026-10-18T23:22:16.666Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/businesses/:businessId/subscription/limits, GET} route"}
{"timestamp":"2026-10-18T23:22:16.667Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/businesses/:businessId/subscription/change-plan, PUT} route"}
{"timestamp":"2026-10-18T23:22:16.667Z","level":"log","context":"RoutesResolver","message":"OnboardingController {/onboarding}:"}
{"timestamp":"2026-10-18T23:22:16.667Z","level":"log","context":"RouterExplorer","message":"Mapped {/onboarding/validate/:token, GET} route"}
{"timestamp":"2026-10-18T23:22:16.667Z","level":"log","context":"RouterExplorer","message":"Mapped {/onboarding/complete/:token, POST} route"}
{"timestamp":"2026-10-18T23:22:16.667Z","level":"log","context":"RoutesResolver","message":"ResellerController {/reseller}:"}
{"timestamp":"2026-10-18T23:22:16.667Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/businesses, POST} route"}
{"timestamp":"2026-10-18T23:22:16.668Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/businesses, GET} route"}
{"timestamp":"2026-10-18T23:22:16.668Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/businesses/:id, GET} route"}
{"timestamp":"2026-10-18T23:22:16.668Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/businesses/:id, PUT} route"}
{"timestamp":"2026-10-18T23:22:16.668Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/businesses/:id, DELETE} route"}
{"timestamp":"2026-10-18T23:22:16.668Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/license-usage, GET} route"}
{"timestamp":"2026-10-18T23:22:16.668Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/invoices, POST} route"}
{"timestamp":"2026-10-18T23:22:16.669Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/invoices, GET} route"}
{"timestamp":"2026-10-18T23:22:16.669Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/invoices/:id, GET} route"}
{"timestamp":"2026-10-18T23:22:16.669Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/invoices/:id, PUT} route"}
{"timestamp":"2026-10-18T23:22:16.669Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/invoices/:id, DELETE} route"}
{"timestamp":"2026-10-18T23:22:16.669Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/invoices/:id/mark-paid, PUT} route"}
{"timestamp":"2026-10-18T23:22:16.670Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/onboarding/generate-token, POST} route"}
{"timestamp":"2026-10-18T23:22:16.670Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/dashboard, GET} route"}
{"timestamp":"2026-10-18T23:22:16.670Z","level":"log","context":"RoutesResolver","message":"ResellerSubscriptionController {/reseller}:"}
{"timestamp":"2026-10-18T23:22:16.670Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/plans, POST} route"}
{"timestamp":"2026-10-18T23:22:16.670Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/plans, GET} route"}
{"timestamp":"2026-10-18T23:22:16.670Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/plans/:planId, GET} route"}
{"timestamp":"2026-10-18T23:22:16.670Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/plans/:planId, PUT} route"}
{"timestamp":"2026-10-18T23:22:16.671Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/plans/:planId, DELETE} route"}
{"timestamp":"2026-10-18T23:22:16.671Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/subscriptions/businesses/:businessId/subscription, POST} route"}
{"timestamp":"2026-10-18T23:22:16.671Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/subscriptions, GET} route"}
{"timestamp":"2026-10-18T23:22:16.671Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/subscriptions/businesses/:businessId/subscription, GET} route"}
{"timestamp":"2026-10-18T23:22:16.671Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/subscriptions/businesses/:businessId/subscription, PUT} route"}
{"timestamp":"2026-10-18T23:22:16.672Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/subscriptions/businesses/:businessId/subscription, DELETE} route"}
{"timestamp":"2026-10-18T23:22:16.672Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/subscriptions/businesses/:businessId/subscription/limits, GET} route"}
{"timestamp":"2026-10-18T23:22:16.672Z","level":"log","context":"RoutesResolver","message":"HealthController {/health}:"}
{"timestamp":"2026-10-18T23:22:16.672Z","level":"log","context":"RouterExplorer","message":"Mapped {/health, GET} route"}
{"timestamp":"2026-10-18T23:22:16.672Z","level":"log","context":"RouterExplorer","message":"Mapped {/health/test-logs, GET} route"}
{"timestamp":"2026-10-18T23:22:16.672Z","level":"log","context":"RoutesResolver","message":"AzureAdController {/azure-ad}:"}
{"timestamp":"2026-10-18T23:22:16.673Z","level":"log","context":"RouterExplorer","message":"Mapped {/azure-ad/config, POST} route"}
{"timestamp":"2026-10-18T23:22:16.673Z","level":"log","context":"RouterExplorer","message":"Mapped {/azure-ad/config, GET} route"}
{"timestamp":"2026-10-18T23:22:16.673Z","level":"log","context":"RouterExplorer","message":"Mapped {/azure-ad/test-connection, POST} route"}
{"timestamp":"2026-10-18T23:22:16.673Z","level":"log","context":"RouterExplorer","message":"Mapped {/azure-ad/sync, POST} route"}
{"timestamp":"2026-10-18T23:22:16.673Z","level":"log","context":"RoutesResolver","message":"ThreatsController {/threats}:"}
{"timestamp":"2026-10-18T23:22:16.673Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats, POST} route"}
{"timestamp":"2026-10-18T23:22:16.674Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats, GET} route"}
{"timestamp":"2026-10-18T23:22:16.674Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/chart-data, GET} route"}
{"timestamp":"2026-10-18T23:22:16.674Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/claude-search, POST} route"}
{"timestamp":"2026-10-18T23:22:16.674Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/claude-latest, POST} route"}
{"timestamp":"2026-10-18T23:22:16.674Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/claude-trending, POST} route"}
{"timestamp":"2026-10-18T23:22:16.675Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/claude-categories, POST} route"}
{"timestamp":"2026-10-18T23:22:16.675Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/claude-manual-search, POST} route"}
{"timestamp":"2026-10-18T23:22:16.675Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/claude-quick-search, POST} route"}
{"timestamp":"2026-10-18T23:22:16.675Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/scheduler-status, GET} route"}
{"timestamp":"2026-10-18T23:22:16.675Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/health-check, GET} route"}
{"timestamp":"2026-10-18T23:22:16.675Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/pause-scheduler, POST} route"}
{"timestamp":"2026-10-18T23:22:16.676Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/:id, GET} route"}
{"timestamp":"2026-10-18T23:22:16.676Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/:id, PATCH} route"}
{"timestamp":"2026-10-18T23:22:16.676Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/:id, DELETE} route"}
{"timestamp":"2026-10-18T23:22:16.676Z","level":"log","context":"RoutesResolver","message":"DomainController {/domains}:"}
{"timestamp":"2026-10-18T23:22:16.676Z","level":"log","context":"RouterExplorer","message":"Mapped {/domains, GET} route"}
{"timestamp":"2026-10-18T23:22:16.676Z","level":"log","context":"RouterExplorer","message":"Mapped {/domains/:id, GET} route"}
{"timestamp":"2026-10-18T23:22:16.677Z","level":"log","context":"RouterExplorer","message":"Mapped {/domains, POST} route"}
{"timestamp":"2026-10-18T23:22:16.677Z","level":"log","context":"RouterExplorer","message":"Mapped {/domains/:id, PUT} route"}
{"timestamp":"2026-10-18T23:22:16.677Z","level":"log","context":"RouterExplorer","message":"Mapped {/domains/:id, DELETE} route"}
{"timestamp":"2026-10-18T23:22:16.677Z","level":"log","context":"RouterExplorer","message":"Mapped {/domains/seed, POST} route"}
{"timestamp":"2026-10-18T23:22:16.677Z","level":"log","context":"RoutesResolver","message":"MspSubscriptionController {/msp-subscription}:"}
{"timestamp":"2026-10-18T23:22:16.677Z","level":"log","context":"RouterExplorer","message":"Mapped {/msp-subscription/current, GET} route"}
{"timestamp":"2026-10-18T23:22:16.678Z","level":"log","context":"RouterExplorer","message":"Mapped {/msp-subscription/invoices, GET} route"}
{"timestamp":"2026-10-18T23:22:16.678Z","level":"log","context":"RouterExplorer","message":"Mapped {/msp-subscription/invoice/:invoiceId/pdf, GET} route"}
{"timestamp":"2026-10-18T23:22:16.678Z","level":"log","context":"RoutesResolver","message":"MspSubscriptionController {/api/msp-subscription}:"}
{"timestamp":"2026-10-18T23:22:16.678Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/msp-subscription/current, GET} route"}
{"timestamp":"2026-10-18T23:22:16.678Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/msp-subscription/invoices, GET} route"}
{"timestamp":"2026-10-18T23:22:16.678Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/msp-subscription/invoice/:invoiceId/pdf, GET} route"}
{"timestamp":"2026-10-18T23:22:16.764Z","level":"log","context":"NestApplication","message":"Nest application successfully started"}
{"timestamp":"2026-10-18T23:22:16.782Z","level":"log","context":"Bootstrap","message":"Users API successfully started on port 3842"}
{"timestamp":"2026-10-18T23:22:16.783Z","level":"log","context":"SeedService","message":"🌱 Starting database seeding..."}
{"timestamp":"2026-10-18T23:22:16.790Z","level":"log","context":"SeedService","message":"Admin account already exists, skipping seed"}
{"timestamp":"2026-10-18T23:22:16.793Z","level":"log","context":"SeedService","message":"Reseller account already exists, skipping seed"}
{"timestamp":"2026-10-18T23:22:16.794Z","level":"log","context":"SeedService","message":"MSP account already exists, skipping seed"}
{"timestamp":"2026-10-18T23:22:16.794Z","level":"log","context":"SeedService","message":"✅ Database seeding completed successfully"}
{"timestamp":"2026-10-18T23:22:16.832Z","level":"log","context":"UsersApiController","message":"Hello endpoint accessed"}
{"timestamp":"2026-10-19T02:21:21.117Z","level":"warn","context":"LegacyRouteConverter","message":"Unsupported route path: \"/lp/*\". In previous versions, the symbols ?, *, and + were used to denote optional or repeating path parameters. The latest version of \"path-to-regexp\" now requires the use of named parameters. For example, instead of using a route like /users/* to capture all routes starting with \"/users\", you should use /users/*path. For more details, refer to the migration guide. Attempting to auto-convert..."}
{"timestamp":"2026-10-19T02:21:21.157Z","level":"log","context":"Bootstrap","message":"Starting Users API on port 3842..."}
{"timestamp":"2026-10-19T02:21:21.161Z","level":"log","context":"RoutesResolver","message":"UsersApiController {/}:"}
{"timestamp":"2026-10-19T02:21:21.165Z","level":"log","context":"RouterExplorer","message":"Mapped {/, GET} route"}
{"timestamp":"2026-10-19T02:21:21.165Z","level":"log","context":"RoutesResolver","message":"AuthController {/auth}:"}
{"timestamp":"2026-10-19T02:21:21.166Z","level":"log","context":"RouterExplorer","message":"Mapped {/auth/login, POST} route"}
{"timestamp":"2026-10-19T02:21:21.166Z","level":"log","context":"RouterExplorer","message":"Mapped {/auth/admin/login, POST} route"}
{"timestamp":"2026-10-19T02:21:21.167Z","level":"log","context":"RouterExplorer","message":"Mapped {/auth/send-otp, POST} route"}
{"timestamp":"2026-10-19T02:21:21.167Z","level":"log","context":"RouterExplorer","message":"Mapped {/auth/verify-otp, POST} route"}
{"timestamp":"2026-10-19T02:21:21.168Z","level":"log","context":"RouterExplorer","message":"Mapped {/auth/signup, POST} route"}
{"timestamp":"2026-10-19T02:21:21.169Z","level":"log","context":"RouterExplorer","message":"Mapped {/auth/subscription-status, GET} route"}
{"timestamp":"2026-10-19T02:21:21.169Z","level":"log","context":"RoutesResolver","message":"AdminMspController {/admin/msp}:"}
{"timestamp":"2026-10-19T02:21:21.169Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/msp, GET} route"}
{"timestamp":"2026-10-19T02:21:21.170Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/msp/:id, GET} route"}
{"timestamp":"2026-10-19T02:21:21.171Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/msp, POST} route"}
{"timestamp":"2026-10-19T02:21:21.171Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/msp/:id, PUT} route"}
{"timestamp":"2026-10-19T02:21:21.171Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/msp/:id, DELETE} route"}
{"timestamp":"2026-10-19T02:21:21.172Z","level":"log","context":"RoutesResolver","message":"AdminLicenseController {/admin/licenses}:"}
{"timestamp":"2026-10-19T02:21:21.172Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/licenses/summary, GET} route"}
{"timestamp":"2026-10-19T02:21:21.172Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/licenses/msp/:mspId, GET} route"}
{"timestamp":"2026-10-19T02:21:21.172Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/licenses/msp/:mspId, PUT} route"}
{"timestamp":"2026-10-19T02:21:21.173Z","level":"log","context":"RoutesResolver","message":"AdminImpersonationController {/admin/impersonation}:"}
{"timestamp":"2026-10-19T02:21:21.173Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/impersonation/msp-users, GET} route"}
{"timestamp":"2026-10-19T02:21:21.173Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/impersonation/impersonate, POST} route"}
{"timestamp":"2026-10-19T02:21:21.174Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/impersonation/stop, POST} route"}
{"timestamp":"2026-10-19T02:21:21.174Z","level":"log","context":"RoutesResolver","message":"AdminAiUsageController {/admin/ai-usage}:"}
{"timestamp":"2026-10-19T02:21:21.174Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-usage, GET} route"}
{"timestamp":"2026-10-19T02:21:21.174Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-usage/business/:businessId, GET} route"}
{"timestamp":"2026-10-19T02:21:21.178Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-usage/report/monthly, GET} route"}
{"timestamp":"2026-10-19T02:21:21.178Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-usage/pricing, GET} route"}
{"timestamp":"2026-10-19T02:21:21.178Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-usage/pricing, POST} route"}
{"timestamp":"2026-10-19T02:21:21.178Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-usage/credit/:businessId, PUT} route"}
{"timestamp":"2026-10-19T02:21:21.178Z","level":"log","context":"RoutesResolver","message":"AdminAiUsageController {/api/admin/ai-usage}:"}
{"timestamp":"2026-10-19T02:21:21.179Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-usage, GET} route"}
{"timestamp":"2026-10-19T02:21:21.179Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-usage/business/:businessId, GET} route"}
{"timestamp":"2026-10-19T02:21:21.179Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-usage/report/monthly, GET} route"}
{"timestamp":"2026-10-19T02:21:21.179Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-usage/pricing, GET} route"}
{"timestamp":"2026-10-19T02:21:21.179Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-usage/pricing, POST} route"}
{"timestamp":"2026-10-19T02:21:21.180Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-usage/credit/:businessId, PUT} route"}
{"timestamp":"2026-10-19T02:21:21.180Z","level":"log","context":"RoutesResolver","message":"AdminAiModelController {/admin/ai-models}:"}
{"timestamp":"2026-10-19T02:21:21.180Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models, POST} route"}
{"timestamp":"2026-10-19T02:21:21.180Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models, GET} route"}
{"timestamp":"2026-10-19T02:21:21.180Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/default, GET} route"}
{"timestamp":"2026-10-19T02:21:21.181Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/:id, GET} route"}
{"timestamp":"2026-10-19T02:21:21.181Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/:id, PUT} route"}
{"timestamp":"2026-10-19T02:21:21.181Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/:id, DELETE} route"}
{"timestamp":"2026-10-19T02:21:21.181Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/:id/set-default, POST} route"}
{"timestamp":"2026-10-19T02:21:21.181Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/assign-to-business, POST} route"}
{"timestamp":"2026-10-19T02:21:21.182Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/business/:businessId, GET} route"}
{"timestamp":"2026-10-19T02:21:21.182Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/:id/businesses, GET} route"}
{"timestamp":"2026-10-19T02:21:21.182Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/initialize-defaults, POST} route"}
{"timestamp":"2026-10-19T02:21:21.182Z","level":"log","context":"RoutesResolver","message":"AdminAiModelController {/api/admin/ai-models}:"}
{"timestamp":"2026-10-19T02:21:21.183Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models, POST} route"}
{"timestamp":"2026-10-19T02:21:21.183Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models, GET} route"}
{"timestamp":"2026-10-19T02:21:21.183Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/default, GET} route"}
{"timestamp":"2026-10-19T02:21:21.183Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/:id, GET} route"}
{"timestamp":"2026-10-19T02:21:21.183Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/:id, PUT} route"}
{"timestamp":"2026-10-19T02:21:21.183Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/:id, DELETE} route"}
{"timestamp":"2026-10-19T02:21:21.184Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/:id/set-default, POST} route"}
{"timestamp":"2026-10-19T02:21:21.184Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/assign-to-business, POST} route"}
{"timestamp":"2026-10-19T02:21:21.184Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/business/:businessId, GET} route"}
{"timestamp":"2026-10-19T02:21:21.184Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/:id/businesses, GET} route"}
{"timestamp":"2026-10-19T02:21:21.184Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/initialize-defaults, POST} route"}
{"timestamp":"2026-10-19T02:21:21.185Z","level":"log","context":"RoutesResolver","message":"AdminBusinessController {/admin/businesses}:"}
{"timestamp":"2026-10-19T02:21:21.185Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/businesses, GET} route"}
{"timestamp":"2026-10-19T02:21:21.185Z","level":"log","context":"RoutesResolver","message":"ResellerManagementController {/admin/resellers}:"}
{"timestamp":"2026-10-19T02:21:21.185Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/resellers, GET} route"}
{"timestamp":"2026-10-19T02:21:21.185Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/resellers/create-default, POST} route"}
{"timestamp":"2026-10-19T02:21:21.185Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/resellers, POST} route"}
{"timestamp":"2026-10-19T02:21:21.186Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/resellers/:id/toggle-status, PUT} route"}
{"timestamp":"2026-10-19T02:21:21.186Z","level":"log","context":"RoutesResolver","message":"SubscriptionController {/subscription}:"}
{"timestamp":"2026-10-19T02:21:21.186Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/plans, GET} route"}
{"timestamp":"2026-10-19T02:21:21.186Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/calculate-price, POST} route"}
{"timestamp":"2026-10-19T02:21:21.186Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/current, GET} route"}
{"timestamp":"2026-10-19T02:21:21.187Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/create, POST} route"}
{"timestamp":"2026-10-19T02:21:21.187Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/:id, PUT} route"}
{"timestamp":"2026-10-19T02:21:21.187Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/:id/cancel, DELETE} route"}
{"timestamp":"2026-10-19T02:21:21.187Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/sync/:stripeSubscriptionId, POST} route"}
{"timestamp":"2026-10-19T02:21:21.187Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/payments, GET} route"}
{"timestamp":"2026-10-19T02:21:21.188Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/payments/stats, GET} route"}
{"timestamp":"2026-10-19T02:21:21.188Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/payment/:id, GET} route"}
{"timestamp":"2026-10-19T02:21:21.188Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/payment-methods/attach, POST} route"}
{"timestamp":"2026-10-19T02:21:21.188Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/payment-methods/:paymentMethodId, DELETE} route"}
{"timestamp":"2026-10-19T02:21:21.188Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/payment-methods, GET} route"}
{"timestamp":"2026-10-19T02:21:21.188Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/setup-intent, POST} route"}
{"timestamp":"2026-10-19T02:21:21.189Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/update-employee-count, POST} route"}
{"timestamp":"2026-10-19T02:21:21.189Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/retry-payment/:subscriptionId, POST} route"}
{"timestamp":"2026-10-19T02:21:21.189Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/invoice/:invoiceId/pdf, GET} route"}
{"timestamp":"2026-10-19T02:21:21.189Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/preview-upgrade, POST} route"}
{"timestamp":"2026-10-19T02:21:21.189Z","level":"log","context":"RoutesResolver","message":"SubscriptionController {/api/subscription}:"}
{"timestamp":"2026-10-19T02:21:21.190Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/plans, GET} route"}
{"timestamp":"2026-10-19T02:21:21.190Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/calculate-price, POST} route"}
{"timestamp":"2026-10-19T02:21:21.190Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/current, GET} route"}
{"timestamp":"2026-10-19T02:21:21.190Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/create, POST} route"}
{"timestamp":"2026-10-19T02:21:21.190Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/:id, PUT} route"}
{"timestamp":"2026-10-19T02:21:21.190Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/:id/cancel, DELETE} route"}
{"timestamp":"2026-10-19T02:21:21.191Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/sync/:stripeSubscriptionId, POST} route"}
{"timestamp":"2026-10-19T02:21:21.191Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/payments, GET} route"}
{"timestamp":"2026-10-19T02:21:21.191Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/payments/stats, GET} route"}
{"timestamp":"2026-10-19T02:21:21.191Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/payment/:id, GET} route"}
{"timestamp":"2026-10-19T02:21:21.191Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/payment-methods/attach, POST} route"}
{"timestamp":"2026-10-19T02:21:21.191Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/payment-methods/:paymentMethodId, DELETE} route"}
{"timestamp":"2026-10-19T02:21:21.192Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/payment-methods, GET} route"}
{"timestamp":"2026-10-19T02:21:21.192Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/setup-intent, POST} route"}
{"timestamp":"2026-10-19T02:21:21.192Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/update-employee-count, POST} route"}
{"timestamp":"2026-10-19T02:21:21.192Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/retry-payment/:subscriptionId, POST} route"}
{"timestamp":"2026-10-19T02:21:21.192Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/invoice/:invoiceId/pdf, GET} route"}
{"timestamp":"2026-10-19T02:21:21.192Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/preview-upgrade, POST} route"}
{"timestamp":"2026-10-19T02:21:21.192Z","level":"log","context":"RoutesResolver","message":"StripeWebhookController {/stripe/webhook}:"}
{"timestamp":"2026-10-19T02:21:21.193Z","level":"log","context":"RouterExplorer","message":"Mapped {/stripe/webhook/test, GET} route"}
{"timestamp":"2026-10-19T02:21:21.193Z","level":"log","context":"RouterExplorer","message":"Mapped {/stripe/webhook, POST} route"}
{"timestamp":"2026-10-19T02:21:21.193Z","level":"log","context":"RoutesResolver","message":"EmailController {/email-templates}:"}
{"timestamp":"2026-10-19T02:21:21.193Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates/test, POST} route"}
{"timestamp":"2026-10-19T02:21:21.193Z","level":"log","context":"RoutesResolver","message":"EmployeeController {/employees}:"}
{"timestamp":"2026-10-19T02:21:21.193Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees, POST} route"}
{"timestamp":"2026-10-19T02:21:21.194Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees, GET} route"}
{"timestamp":"2026-10-19T02:21:21.194Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees/export, GET} route"}
{"timestamp":"2026-10-19T02:21:21.194Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees/risk-stats, GET} route"}
{"timestamp":"2026-10-19T02:21:21.194Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees/:id, GET} route"}
{"timestamp":"2026-10-19T02:21:21.194Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees/:id, PUT} route"}
{"timestamp":"2026-10-19T02:21:21.195Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees/:id, DELETE} route"}
{"timestamp":"2026-10-19T02:21:21.195Z","level":"log","context":"RoutesResolver","message":"GroupController {/groups}:"}
{"timestamp":"2026-10-19T02:21:21.195Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups, POST} route"}
{"timestamp":"2026-10-19T02:21:21.195Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups, GET} route"}
{"timestamp":"2026-10-19T02:21:21.195Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups/standard, GET} route"}
{"timestamp":"2026-10-19T02:21:21.195Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups/:id, GET} route"}
{"timestamp":"2026-10-19T02:21:21.196Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups/:id, PUT} route"}
{"timestamp":"2026-10-19T02:21:21.196Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups/:id, DELETE} route"}
{"timestamp":"2026-10-19T02:21:21.196Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups/:id/info, GET} route"}
{"timestamp":"2026-10-19T02:21:21.196Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups/:id/with-employees, GET} route"}
{"timestamp":"2026-10-19T02:21:21.196Z","level":"log","context":"RoutesResolver","message":"SenderProfileController {/sender-profiles}:"}
{"timestamp":"2026-10-19T02:21:21.196Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles, GET} route"}
{"timestamp":"2026-10-19T02:21:21.196Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles/:id, GET} route"}
{"timestamp":"2026-10-19T02:21:21.197Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles, POST} route"}
{"timestamp":"2026-10-19T02:21:21.197Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles/:id, PUT} route"}
{"timestamp":"2026-10-19T02:21:21.197Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles/:id, DELETE} route"}
{"timestamp":"2026-10-19T02:21:21.197Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles/:id/verify-domain, POST} route"}
{"timestamp":"2026-10-19T02:21:21.197Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles/domain-verification, GET} route"}
{"timestamp":"2026-10-19T02:21:21.197Z","level":"log","context":"RoutesResolver","message":"EmailTemplateController {/email-templates}:"}
{"timestamp":"2026-10-19T02:21:21.198Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates, GET} route"}
{"timestamp":"2026-10-19T02:21:21.198Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates/:id, GET} route"}
{"timestamp":"2026-10-19T02:21:21.198Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates, POST} route"}
{"timestamp":"2026-10-19T02:21:21.198Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates/:id, PUT} route"}
{"timestamp":"2026-10-19T02:21:21.198Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates/:id, DELETE} route"}
{"timestamp":"2026-10-19T02:21:21.198Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates/:id/duplicate, POST} route"}
{"timestamp":"2026-10-19T02:21:21.199Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates/:id/preview, GET} route"}
{"timestamp":"2026-10-19T02:21:21.199Z","level":"log","context":"RoutesResolver","message":"ScenarioController {/scenarios}:"}
{"timestamp":"2026-10-19T02:21:21.199Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios, POST} route"}
{"timestamp":"2026-10-19T02:21:21.199Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios/generate-content, POST} route"}
{"timestamp":"2026-10-19T02:21:21.199Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios, GET} route"}
{"timestamp":"2026-10-19T02:21:21.199Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios/:id, GET} route"}
{"timestamp":"2026-10-19T02:21:21.200Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios/:id, PUT} route"}
{"timestamp":"2026-10-19T02:21:21.200Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios/:id, DELETE} route"}
{"timestamp":"2026-10-19T02:21:21.200Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios/generate-from-json, POST} route"}
{"timestamp":"2026-10-19T02:21:21.200Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios/:id/save-as-custom-scenario, POST} route"}
{"timestamp":"2026-10-19T02:21:21.200Z","level":"log","context":"RoutesResolver","message":"CampaignController {/campaigns}:"}
{"timestamp":"2026-10-19T02:21:21.200Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns, POST} route"}
{"timestamp":"2026-10-19T02:21:21.201Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns, GET} route"}
{"timestamp":"2026-10-19T02:21:21.201Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id, GET} route"}
{"timestamp":"2026-10-19T02:21:21.201Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id/details, GET} route"}
{"timestamp":"2026-10-19T02:21:21.201Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id/employees, GET} route"}
{"timestamp":"2026-10-19T02:21:21.201Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id, PATCH} route"}
{"timestamp":"2026-10-19T02:21:21.202Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id/start, POST} route"}
{"timestamp":"2026-10-19T02:21:21.202Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id/stop, POST} route"}
{"timestamp":"2026-10-19T02:21:21.202Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id/duplicate, POST} route"}
{"timestamp":"2026-10-19T02:21:21.202Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id, DELETE} route"}
{"timestamp":"2026-10-19T02:21:21.202Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/auto-generate-program, POST} route"}
{"timestamp":"2026-10-19T02:21:21.203Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/generate-from-threat-intelligence, POST} route"}
{"timestamp":"2026-10-19T02:21:21.203Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id/risk-score, GET} route"}
{"timestamp":"2026-10-19T02:21:21.203Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/recalculate-risk-scores, POST} route"}
{"timestamp":"2026-10-19T02:21:21.203Z","level":"log","context":"RoutesResolver","message":"CampaignController {/api/campaigns}:"}
{"timestamp":"2026-10-19T02:21:21.203Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns, POST} route"}
{"timestamp":"2026-10-19T02:21:21.203Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns, GET} route"}
{"timestamp":"2026-10-19T02:21:21.203Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id, GET} route"}
{"timestamp":"2026-10-19T02:21:21.204Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id/details, GET} route"}
{"timestamp":"2026-10-19T02:21:21.204Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id/employees, GET} route"}
{"timestamp":"2026-10-19T02:21:21.204Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id, PATCH} route"}
{"timestamp":"2026-10-19T02:21:21.204Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id/start, POST} route"}
{"timestamp":"2026-10-19T02:21:21.204Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id/stop, POST} route"}
{"timestamp":"2026-10-19T02:21:21.204Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id/duplicate, POST} route"}
{"timestamp":"2026-10-19T02:21:21.205Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id, DELETE} route"}
{"timestamp":"2026-10-19T02:21:21.205Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/auto-generate-program, POST} route"}
{"timestamp":"2026-10-19T02:21:21.205Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/generate-from-threat-intelligence, POST} route"}
{"timestamp":"2026-10-19T02:21:21.205Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id/risk-score, GET} route"}
{"timestamp":"2026-10-19T02:21:21.205Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/recalculate-risk-scores, POST} route"}
{"timestamp":"2026-10-19T02:21:21.205Z","level":"log","context":"RoutesResolver","message":"NotificationsController {/notifications}:"}
{"timestamp":"2026-10-19T02:21:21.206Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications, POST} route"}
{"timestamp":"2026-10-19T02:21:21.206Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications, GET} route"}
{"timestamp":"2026-10-19T02:21:21.206Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/unread, GET} route"}
{"timestamp":"2026-10-19T02:21:21.206Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/unread-count, GET} route"}
{"timestamp":"2026-10-19T02:21:21.206Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/:id, GET} route"}
{"timestamp":"2026-10-19T02:21:21.207Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/:id, PATCH} route"}
{"timestamp":"2026-10-19T02:21:21.207Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/:id/read, PATCH} route"}
{"timestamp":"2026-10-19T02:21:21.207Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/mark-all-read, PATCH} route"}
{"timestamp":"2026-10-19T02:21:21.207Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/:id, DELETE} route"}
{"timestamp":"2026-10-19T02:21:21.207Z","level":"log","context":"RoutesResolver","message":"LandingPageController {/lp}:"}
{"timestamp":"2026-10-19T02:21:21.208Z","level":"log","context":"RouterExplorer","message":"Mapped {/lp/image, GET} route"}
{"timestamp":"2026-10-19T02:21:21.208Z","level":"log","context":"RouterExplorer","message":"Mapped {/lp/learning, GET} route"}
{"timestamp":"2026-10-19T02:21:21.208Z","level":"log","context":"RouterExplorer","message":"Mapped {/lp/submit, POST} route"}
{"timestamp":"2026-10-19T02:21:21.208Z","level":"log","context":"RouterExplorer","message":"Mapped {/lp/test, GET} route"}
{"timestamp":"2026-10-19T02:21:21.208Z","level":"warn","context":"LegacyRouteConverter","message":"Unsupported route path: \"/lp/*\". In previous versions, the symbols ?, *, and + were used to denote optional or repeating path parameters. The latest version of \"path-to-regexp\" now requires the use of named parameters. For example, instead of using a route like /users/* to capture all routes starting with \"/users\", you should use /users/*path. For more details, refer to the migration guide. Attempting to auto-convert..."}
{"timestamp":"2026-10-19T02:21:21.209Z","level":"log","context":"RouterExplorer","message":"Mapped {/lp/*, ALL} route"}
{"timestamp":"2026-10-19T02:21:21.209Z","level":"log","context":"RoutesResolver","message":"SupportController {/support}:"}
{"timestamp":"2026-10-19T02:21:21.210Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets, POST} route"}
{"timestamp":"2026-10-19T02:21:21.210Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets, GET} route"}
{"timestamp":"2026-10-19T02:21:21.210Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets/:id, GET} route"}
{"timestamp":"2026-10-19T02:21:21.210Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets/:id, PATCH} route"}
{"timestamp":"2026-10-19T02:21:21.210Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets/:id, DELETE} route"}
{"timestamp":"2026-10-19T02:21:21.211Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets/:id/messages, POST} route"}
{"timestamp":"2026-10-19T02:21:21.211Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets/:id/close, POST} route"}
{"timestamp":"2026-10-19T02:21:21.211Z","level":"log","context":"RoutesResolver","message":"BusninessMetricsController {/business-metrics}:"}
{"timestamp":"2026-10-19T02:21:21.211Z","level":"log","context":"RouterExplorer","message":"Mapped {/business-metrics, GET} route"}
{"timestamp":"2026-10-19T02:21:21.211Z","level":"log","context":"RoutesResolver","message":"UsersController {/users}:"}
{"timestamp":"2026-10-19T02:21:21.211Z","level":"log","context":"RouterExplorer","message":"Mapped {/users/:id, PUT} route"}
{"timestamp":"2026-10-19T02:21:21.212Z","level":"log","context":"RouterExplorer","message":"Mapped {/users/settings, GET} route"}
{"timestamp":"2026-10-19T02:21:21.212Z","level":"log","context":"RouterExplorer","message":"Mapped {/users/settings/general, PUT} route"}
{"timestamp":"2026-10-19T02:21:21.212Z","level":"log","context":"RouterExplorer","message":"Mapped {/users/company/settings, PUT} route"}
{"timestamp":"2026-10-19T02:21:21.212Z","level":"log","context":"RouterExplorer","message":"Mapped {/users/change-password, POST} route"}
{"timestamp":"2026-10-19T02:21:21.212Z","level":"log","context":"RouterExplorer","message":"Mapped {/users/localization/settings, PUT} route"}
{"timestamp":"2026-10-19T02:21:21.212Z","level":"log","context":"RoutesResolver","message":"PartnerController {/partner}:"}
{"timestamp":"2026-10-19T02:21:21.213Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses, POST} route"}
{"timestamp":"2026-10-19T02:21:21.213Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses, GET} route"}
{"timestamp":"2026-10-19T02:21:21.213Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses/:id, GET} route"}
{"timestamp":"2026-10-19T02:21:21.213Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses/:id, PUT} route"}
{"timestamp":"2026-10-19T02:21:21.213Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses/:id, DELETE} route"}
{"timestamp":"2026-10-19T02:21:21.213Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses/:id/impersonate, POST} route"}
{"timestamp":"2026-10-19T02:21:21.214Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses/stop-impersonation, POST} route"}
{"timestamp":"2026-10-19T02:21:21.214Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/license-usage, GET} route"}
{"timestamp":"2026-10-19T02:21:21.214Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/invoices, POST} route"}
{"timestamp":"2026-10-19T02:21:21.214Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/invoices, GET} route"}
{"timestamp":"2026-10-19T02:21:21.214Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/invoices/:id, GET} route"}
{"timestamp":"2026-10-19T02:21:21.214Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/invoices/:id, PUT} route"}
{"timestamp":"2026-10-19T02:21:21.215Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/invoices/:id, DELETE} route"}
{"timestamp":"2026-10-19T02:21:21.215Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/invoices/:id/mark-paid, PUT} route"}
{"timestamp":"2026-10-19T02:21:21.215Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/onboarding/generate-token, POST} route"}
{"timestamp":"2026-10-19T02:21:21.215Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/dashboard, GET} route"}
{"timestamp":"2026-10-19T02:21:21.215Z","level":"log","context":"RoutesResolver","message":"MspSubscriptionController {/partner/msp-subscriptions}:"}
{"timestamp":"2026-10-19T02:21:21.215Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/plans, POST} route"}
{"timestamp":"2026-10-19T02:21:21.216Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/plans, GET} route"}
{"timestamp":"2026-10-19T02:21:21.216Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/plans/:planId, GET} route"}
{"timestamp":"2026-10-19T02:21:21.216Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/plans/:planId, PUT} route"}
{"timestamp":"2026-10-19T02:21:21.216Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/plans/:planId, DELETE} route"}
{"timestamp":"2026-10-19T02:21:21.216Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/businesses/:businessId/subscription, POST} route"}
{"timestamp":"2026-10-19T02:21:21.216Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions, GET} route"}
{"timestamp":"2026-10-19T02:21:21.217Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/businesses/:businessId/subscription, GET} route"}
{"timestamp":"2026-10-19T02:21:21.217Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/businesses/:businessId/subscription, PUT} route"}
{"timestamp":"2026-10-19T02:21:21.217Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/businesses/:businessId/subscription, DELETE} route"}
{"timestamp":"2026-10-19T02:21:21.217Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/businesses/:businessId/subscription/limits, GET} route"}
{"timestamp":"2026-10-19T02:21:21.217Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/businesses/:businessId/subscription/change-plan, PUT} route"}
{"timestamp":"2026-10-19T02:21:21.218Z","level":"log","context":"RoutesResolver","message":"OnboardingController {/onboarding}:"}
{"timestamp":"2026-10-19T02:21:21.218Z","level":"log","context":"RouterExplorer","message":"Mapped {/onboarding/validate/:token, GET} route"}
{"timestamp":"2026-10-19T02:21:21.218Z","level":"log","context":"RouterExplorer","message":"Mapped {/onboarding/complete/:token, POST} route"}
{"timestamp":"2026-10-19T02:21:21.218Z","level":"log","context":"RoutesResolver","message":"ResellerController {/reseller}:"}
{"timestamp":"2026-10-19T02:21:21.218Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/businesses, POST} route"}
{"timestamp":"2026-10-19T02:21:21.218Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/businesses, GET} route"}
{"timestamp":"2026-10-19T02:21:21.219Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/businesses/:id, GET} route"}
{"timestamp":"2026-10-19T02:21:21.219Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/businesses/:id, PUT} route"}
{"timestamp":"2026-10-19T02:21:21.219Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/businesses/:id, DELETE} route"}
{"timestamp":"2026-10-19T02:21:21.219Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/license-usage, GET} route"}
{"timestamp":"2026-10-19T02:21:21.219Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/invoices, POST} route"}
{"timestamp":"2026-10-19T02:21:21.219Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/invoices, GET} route"}
{"timestamp":"2026-10-19T02:21:21.220Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/invoices/:id, GET} route"}
{"timestamp":"2026-10-19T02:21:21.220Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/invoices/:id, PUT} route"}
{"timestamp":"2026-10-19T02:21:21.220Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/invoices/:id, DELETE} route"}
{"timestamp":"2026-10-19T02:21:21.220Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/invoices/:id/mark-paid, PUT} route"}
{"timestamp":"2026-10-19T02:21:21.220Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/onboarding/generate-token, POST} route"}
{"timestamp":"2026-10-19T02:21:21.220Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/dashboard, GET} route"}
{"timestamp":"2026-10-19T02:21:21.220Z","level":"log","context":"RoutesResolver","message":"ResellerSubscriptionController {/reseller}:"}
{"timestamp":"2026-10-19T02:21:21.221Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/plans, POST} route"}
{"timestamp":"2026-10-19T02:21:21.221Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/plans, GET} route"}
{"timestamp":"2026-10-19T02:21:21.221Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/plans/:planId, GET} route"}
{"timestamp":"2026-10-19T02:21:21.221Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/plans/:planId, PUT} route"}
{"timestamp":"2026-10-19T02:21:21.221Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/plans/:planId, DELETE} route"}
{"timestamp":"2026-10-19T02:21:21.221Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/subscriptions/businesses/:businessId/subscription, POST} route"}
{"timestamp":"2026-10-19T02:21:21.222Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/subscriptions, GET} route"}
{"timestamp":"2026-10-19T02:21:21.222Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/subscriptions/businesses/:businessId/subscription, GET} route"}
{"timestamp":"2026-10-19T02:21:21.222Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/subscriptions/businesses/:businessId/subscription, PUT} route"}
{"timestamp":"2026-10-19T02:21:21.222Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/subscriptions/businesses/:businessId/subscription, DELETE} route"}
{"timestamp":"2026-10-19T02:21:21.222Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/subscriptions/businesses/:businessId/subscription/limits, GET} route"}
{"timestamp":"2026-10-19T02:21:21.222Z","level":"log","context":"RoutesResolver","message":"HealthController {/health}:"}
{"timestamp":"2026-10-19T02:21:21.223Z","level":"log","context":"RouterExplorer","message":"Mapped {/health, GET} route"}
{"timestamp":"2026-10-19T02:21:21.223Z","level":"log","context":"RouterExplorer","message":"Mapped {/health/test-logs, GET} route"}
{"timestamp":"2026-10-19T02:21:21.223Z","level":"log","context":"RoutesResolver","message":"AzureAdController {/azure-ad}:"}
{"timestamp":"2026-10-19T02:21:21.223Z","level":"log","context":"RouterExplorer","message":"Mapped {/azure-ad/config, POST} route"}
{"timestamp":"2026-10-19T02:21:21.223Z","level":"log","context":"RouterExplorer","message":"Mapped {/azure-ad/config, GET} route"}
{"timestamp":"2026-10-19T02:21:21.223Z","level":"log","context":"RouterExplorer","message":"Mapped {/azure-ad/test-connection, POST} route"}
{"timestamp":"2026-10-19T02:21:21.223Z","level":"log","context":"RouterExplorer","message":"Mapped {/azure-ad/sync, POST} route"}
{"timestamp":"2026-10-19T02:21:21.223Z","level":"log","context":"RoutesResolver","message":"ThreatsController {/threats}:"}
{"timestamp":"2026-10-19T02:21:21.224Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats, POST} route"}
{"timestamp":"2026-10-19T02:21:21.224Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats, GET} route"}
{"timestamp":"2026-10-19T02:21:21.224Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/chart-data, GET} route"}
{"timestamp":"2026-10-19T02:21:21.224Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/claude-search, POST} route"}
{"timestamp":"2026-10-19T02:21:21.224Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/claude-latest, POST} route"}
{"timestamp":"2026-10-19T02:21:21.225Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/claude-trending, POST} route"}
{"timestamp":"2026-10-19T02:21:21.225Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/claude-categories, POST} route"}
{"timestamp":"2026-10-19T02:21:21.225Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/claude-manual-search, POST} route"}
{"timestamp":"2026-10-19T02:21:21.225Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/claude-quick-search, POST} route"}
{"timestamp":"2026-10-19T02:21:21.225Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/scheduler-status, GET} route"}
{"timestamp":"2026-10-19T02:21:21.225Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/health-check, GET} route"}
{"timestamp":"2026-10-19T02:21:21.226Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/pause-scheduler, POST} route"}
{"timestamp":"2026-10-19T02:21:21.226Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/:id, GET} route"}
{"timestamp":"2026-10-19T02:21:21.226Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/:id, PATCH} route"}
{"timestamp":"2026-10-19T02:21:21.226Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/:id, DELETE} route"}
{"timestamp":"2026-10-19T02:21:21.226Z","level":"log","context":"RoutesResolver","message":"DomainController {/domains}:"}
{"timestamp":"2026-10-19T02:21:21.226Z","level":"log","context":"RouterExplorer","message":"Mapped {/domains, GET} route"}
{"timestamp":"2026-10-19T02:21:21.226Z","level":"log","context":"RouterExplorer","message":"Mapped {/domains/:id, GET} route"}
{"timestamp":"2026-10-19T02:21:21.227Z","level":"log","context":"RouterExplorer","message":"Mapped {/domains, POST} route"}
{"timestamp":"2026-10-19T02:21:21.227Z","level":"log","context":"RouterExplorer","message":"Mapped {/domains/:id, PUT} route"}
{"timestamp":"2026-10-19T02:21:21.227Z","level":"log","context":"RouterExplorer","message":"Mapped {/domains/:id, DELETE} route"}
{"timestamp":"2026-10-19T02:21:21.227Z","level":"log","context":"RouterExplorer","message":"Mapped {/domains/seed, POST} route"}
{"timestamp":"2026-10-19T02:21:21.227Z","level":"log","context":"RoutesResolver","message":"MspSubscriptionController {/msp-subscription}:"}
{"timestamp":"2026-10-19T02:21:21.227Z","level":"log","context":"RouterExplorer","message":"Mapped {/msp-subscription/current, GET} route"}
{"timestamp":"2026-10-19T02:21:21.227Z","level":"log","context":"RouterExplorer","message":"Mapped {/msp-subscription/invoices, GET} route"}
{"timestamp":"2026-10-19T02:21:21.228Z","level":"log","context":"RouterExplorer","message":"Mapped {/msp-subscription/invoice/:invoiceId/pdf, GET} route"}
{"timestamp":"2026-10-19T02:21:21.228Z","level":"log","context":"RoutesResolver","message":"MspSubscriptionController {/api/msp-subscription}:"}
{"timestamp":"2026-10-19T02:21:21.228Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/msp-subscription/current, GET} route"}
{"timestamp":"2026-10-19T02:21:21.228Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/msp-subscription/invoices, GET} route"}
{"timestamp":"2026-10-19T02:21:21.228Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/msp-subscription/invoice/:invoiceId/pdf, GET} route"}
{"timestamp":"2026-10-19T02:21:21.305Z","level":"log","context":"NestApplication","message":"Nest application successfully started"}
{"timestamp":"2026-10-19T02:21:21.321Z","level":"log","context":"Bootstrap","message":"Users API successfully started on port 3842"}
{"timestamp":"2026-10-19T02:21:21.321Z","level":"log","context":"SeedService","message":"🌱 Starting database seeding..."}
{"timestamp":"2026-10-19T02:21:21.327Z","level":"log","context":"SeedService","message":"Admin account already exists, skipping seed"}
{"timestamp":"2026-10-19T02:21:21.330Z","level":"log","context":"SeedService","message":"Reseller account already exists, skipping seed"}
{"timestamp":"2026-10-19T02:21:21.332Z","level":"log","context":"SeedService","message":"MSP account already exists, skipping seed"}
{"timestamp":"2026-10-19T02:21:21.332Z","level":"log","context":"SeedService","message":"✅ Database seeding completed successfully"}
{"timestamp":"2026-10-19T02:39:22.524Z","level":"warn","context":"LegacyRouteConverter","message":"Unsupported route path: \"/lp/*\". In previous versions, the symbols ?, *, and + were used to denote optional or repeating path parameters. The latest version of \"path-to-regexp\" now requires the use of named parameters. For example, instead of using a route like /users/* to capture all routes starting with \"/users\", you should use /users/*path. For more details, refer to the migration guide. Attempting to auto-convert..."}
{"timestamp":"2026-10-19T02:39:22.570Z","level":"log","context":"Bootstrap","message":"Starting Users API on port 3842..."}
{"timestamp":"2026-10-19T02:39:22.574Z","level":"log","context":"RoutesResolver","message":"UsersApiController {/}:"}
{"timestamp":"2026-10-19T02:39:22.577Z","level":"log","context":"RouterExplorer","message":"Mapped {/, GET} route"}
{"timestamp":"2026-10-19T02:39:22.578Z","level":"log","context":"RoutesResolver","message":"AuthController {/auth}:"}
{"timestamp":"2026-10-19T02:39:22.578Z","level":"log","context":"RouterExplorer","message":"Mapped {/auth/login, POST} route"}
{"timestamp":"2026-10-19T02:39:22.579Z","level":"log","context":"RouterExplorer","message":"Mapped {/auth/admin/login, POST} route"}
{"timestamp":"2026-10-19T02:39:22.579Z","level":"log","context":"RouterExplorer","message":"Mapped {/auth/send-otp, POST} route"}
{"timestamp":"2026-10-19T02:39:22.580Z","level":"log","context":"RouterExplorer","message":"Mapped {/auth/verify-otp, POST} route"}
{"timestamp":"2026-10-19T02:39:22.580Z","level":"log","context":"RouterExplorer","message":"Mapped {/auth/signup, POST} route"}
{"timestamp":"2026-10-19T02:39:22.581Z","level":"log","context":"RouterExplorer","message":"Mapped {/auth/subscription-status, GET} route"}
{"timestamp":"2026-10-19T02:39:22.581Z","level":"log","context":"RoutesResolver","message":"AdminMspController {/admin/msp}:"}
{"timestamp":"2026-10-19T02:39:22.581Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/msp, GET} route"}
{"timestamp":"2026-10-19T02:39:22.582Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/msp/:id, GET} route"}
{"timestamp":"2026-10-19T02:39:22.583Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/msp, POST} route"}
{"timestamp":"2026-10-19T02:39:22.583Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/msp/:id, PUT} route"}
{"timestamp":"2026-10-19T02:39:22.583Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/msp/:id, DELETE} route"}
{"timestamp":"2026-10-19T02:39:22.584Z","level":"log","context":"RoutesResolver","message":"AdminLicenseController {/admin/licenses}:"}
{"timestamp":"2026-10-19T02:39:22.584Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/licenses/summary, GET} route"}
{"timestamp":"2026-10-19T02:39:22.584Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/licenses/msp/:mspId, GET} route"}
{"timestamp":"2026-10-19T02:39:22.584Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/licenses/msp/:mspId, PUT} route"}
{"timestamp":"2026-10-19T02:39:22.585Z","level":"log","context":"RoutesResolver","message":"AdminImpersonationController {/admin/impersonation}:"}
{"timestamp":"2026-10-19T02:39:22.585Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/impersonation/msp-users, GET} route"}
{"timestamp":"2026-10-19T02:39:22.585Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/impersonation/impersonate, POST} route"}
{"timestamp":"2026-10-19T02:39:22.585Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/impersonation/stop, POST} route"}
{"timestamp":"2026-10-19T02:39:22.586Z","level":"log","context":"RoutesResolver","message":"AdminAiUsageController {/admin/ai-usage}:"}
{"timestamp":"2026-10-19T02:39:22.586Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-usage, GET} route"}
{"timestamp":"2026-10-19T02:39:22.588Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-usage/business/:businessId, GET} route"}
{"timestamp":"2026-10-19T02:39:22.589Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-usage/report/monthly, GET} route"}
{"timestamp":"2026-10-19T02:39:22.589Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-usage/pricing, GET} route"}
{"timestamp":"2026-10-19T02:39:22.589Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-usage/pricing, POST} route"}
{"timestamp":"2026-10-19T02:39:22.589Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-usage/credit/:businessId, PUT} route"}
{"timestamp":"2026-10-19T02:39:22.590Z","level":"log","context":"RoutesResolver","message":"AdminAiUsageController {/api/admin/ai-usage}:"}
{"timestamp":"2026-10-19T02:39:22.590Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-usage, GET} route"}
{"timestamp":"2026-10-19T02:39:22.590Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-usage/business/:businessId, GET} route"}
{"timestamp":"2026-10-19T02:39:22.590Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-usage/report/monthly, GET} route"}
{"timestamp":"2026-10-19T02:39:22.591Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-usage/pricing, GET} route"}
{"timestamp":"2026-10-19T02:39:22.591Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-usage/pricing, POST} route"}
{"timestamp":"2026-10-19T02:39:22.591Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-usage/credit/:businessId, PUT} route"}
{"timestamp":"2026-10-19T02:39:22.591Z","level":"log","context":"RoutesResolver","message":"AdminAiModelController {/admin/ai-models}:"}
{"timestamp":"2026-10-19T02:39:22.591Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models, POST} route"}
{"timestamp":"2026-10-19T02:39:22.592Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models, GET} route"}
{"timestamp":"2026-10-19T02:39:22.592Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/default, GET} route"}
{"timestamp":"2026-10-19T02:39:22.592Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/:id, GET} route"}
{"timestamp":"2026-10-19T02:39:22.592Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/:id, PUT} route"}
{"timestamp":"2026-10-19T02:39:22.592Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/:id, DELETE} route"}
{"timestamp":"2026-10-19T02:39:22.592Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/:id/set-default, POST} route"}
{"timestamp":"2026-10-19T02:39:22.593Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/assign-to-business, POST} route"}
{"timestamp":"2026-10-19T02:39:22.593Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/business/:businessId, GET} route"}
{"timestamp":"2026-10-19T02:39:22.593Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/:id/businesses, GET} route"}
{"timestamp":"2026-10-19T02:39:22.593Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/initialize-defaults, POST} route"}
{"timestamp":"2026-10-19T02:39:22.593Z","level":"log","context":"RoutesResolver","message":"AdminAiModelController {/api/admin/ai-models}:"}
{"timestamp":"2026-10-19T02:39:22.594Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models, POST} route"}
{"timestamp":"2026-10-19T02:39:22.594Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models, GET} route"}
{"timestamp":"2026-10-19T02:39:22.594Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/default, GET} route"}
{"timestamp":"2026-10-19T02:39:22.594Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/:id, GET} route"}
{"timestamp":"2026-10-19T02:39:22.594Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/:id, PUT} route"}
{"timestamp":"2026-10-19T02:39:22.594Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/:id, DELETE} route"}
{"timestamp":"2026-10-19T02:39:22.595Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/:id/set-default, POST} route"}
{"timestamp":"2026-10-19T02:39:22.595Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/assign-to-business, POST} route"}
{"timestamp":"2026-10-19T02:39:22.595Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/business/:businessId, GET} route"}
{"timestamp":"2026-10-19T02:39:22.595Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/:id/businesses, GET} route"}
{"timestamp":"2026-10-19T02:39:22.595Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/initialize-defaults, POST} route"}
{"timestamp":"2026-10-19T02:39:22.595Z","level":"log","context":"RoutesResolver","message":"AdminBusinessController {/admin/businesses}:"}
{"timestamp":"2026-10-19T02:39:22.596Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/businesses, GET} route"}
{"timestamp":"2026-10-19T02:39:22.596Z","level":"log","context":"RoutesResolver","message":"ResellerManagementController {/admin/resellers}:"}
{"timestamp":"2026-10-19T02:39:22.596Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/resellers, GET} route"}
{"timestamp":"2026-10-19T02:39:22.596Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/resellers/create-default, POST} route"}
{"timestamp":"2026-10-19T02:39:22.596Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/resellers, POST} route"}
{"timestamp":"2026-10-19T02:39:22.596Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/resellers/:id/toggle-status, PUT} route"}
{"timestamp":"2026-10-19T02:39:22.596Z","level":"log","context":"RoutesResolver","message":"SubscriptionController {/subscription}:"}
{"timestamp":"2026-10-19T02:39:22.597Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/plans, GET} route"}
{"timestamp":"2026-10-19T02:39:22.597Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/calculate-price, POST} route"}
{"timestamp":"2026-10-19T02:39:22.597Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/current, GET} route"}
{"timestamp":"2026-10-19T02:39:22.597Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/create, POST} route"}
{"timestamp":"2026-10-19T02:39:22.597Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/:id, PUT} route"}
{"timestamp":"2026-10-19T02:39:22.597Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/:id/cancel, DELETE} route"}
{"timestamp":"2026-10-19T02:39:22.598Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/sync/:stripeSubscriptionId, POST} route"}
{"timestamp":"2026-10-19T02:39:22.598Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/payments, GET} route"}
{"timestamp":"2026-10-19T02:39:22.598Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/payments/stats, GET} route"}
{"timestamp":"2026-10-19T02:39:22.598Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/payment/:id, GET} route"}
{"timestamp":"2026-10-19T02:39:22.598Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/payment-methods/attach, POST} route"}
{"timestamp":"2026-10-19T02:39:22.598Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/payment-methods/:paymentMethodId, DELETE} route"}
{"timestamp":"2026-10-19T02:39:22.599Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/payment-methods, GET} route"}
{"timestamp":"2026-10-19T02:39:22.599Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/setup-intent, POST} route"}
{"timestamp":"2026-10-19T02:39:22.599Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/update-employee-count, POST} route"}
{"timestamp":"2026-10-19T02:39:22.599Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/retry-payment/:subscriptionId, POST} route"}
{"timestamp":"2026-10-19T02:39:22.599Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/invoice/:invoiceId/pdf, GET} route"}
{"timestamp":"2026-10-19T02:39:22.599Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/preview-upgrade, POST} route"}
{"timestamp":"2026-10-19T02:39:22.599Z","level":"log","context":"RoutesResolver","message":"SubscriptionController {/api/subscription}:"}
{"timestamp":"2026-10-19T02:39:22.600Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/plans, GET} route"}
{"timestamp":"2026-10-19T02:39:22.600Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/calculate-price, POST} route"}
{"timestamp":"2026-10-19T02:39:22.600Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/current, GET} route"}
{"timestamp":"2026-10-19T02:39:22.600Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/create, POST} route"}
{"timestamp":"2026-10-19T02:39:22.600Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/:id, PUT} route"}
{"timestamp":"2026-10-19T02:39:22.600Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/:id/cancel, DELETE} route"}
{"timestamp":"2026-10-19T02:39:22.601Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/sync/:stripeSubscriptionId, POST} route"}
{"timestamp":"2026-10-19T02:39:22.601Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/payments, GET} route"}
{"timestamp":"2026-10-19T02:39:22.601Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/payments/stats, GET} route"}
{"timestamp":"2026-10-19T02:39:22.601Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/payment/:id, GET} route"}
{"timestamp":"2026-10-19T02:39:22.601Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/payment-methods/attach, POST} route"}
{"timestamp":"2026-10-19T02:39:22.601Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/payment-methods/:paymentMethodId, DELETE} route"}
{"timestamp":"2026-10-19T02:39:22.601Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/payment-methods, GET} route"}
{"timestamp":"2026-10-19T02:39:22.602Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/setup-intent, POST} route"}
{"timestamp":"2026-10-19T02:39:22.602Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/update-employee-count, POST} route"}
{"timestamp":"2026-10-19T02:39:22.602Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/retry-payment/:subscriptionId, POST} route"}
{"timestamp":"2026-10-19T02:39:22.602Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/invoice/:invoiceId/pdf, GET} route"}
{"timestamp":"2026-10-19T02:39:22.602Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/preview-upgrade, POST} route"}
{"timestamp":"2026-10-19T02:39:22.602Z","level":"log","context":"RoutesResolver","message":"StripeWebhookController {/stripe/webhook}:"}
{"timestamp":"2026-10-19T02:39:22.602Z","level":"log","context":"RouterExplorer","message":"Mapped {/stripe/webhook/test, GET} route"}
{"timestamp":"2026-10-19T02:39:22.603Z","level":"log","context":"RouterExplorer","message":"Mapped {/stripe/webhook, POST} route"}
{"timestamp":"2026-10-19T02:39:22.603Z","level":"log","context":"RoutesResolver","message":"EmailController {/email-templates}:"}
{"timestamp":"2026-10-19T02:39:22.603Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates/test, POST} route"}
{"timestamp":"2026-10-19T02:39:22.603Z","level":"log","context":"RoutesResolver","message":"EmployeeController {/employees}:"}
{"timestamp":"2026-10-19T02:39:22.603Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees, POST} route"}
{"timestamp":"2026-10-19T02:39:22.603Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees, GET} route"}
{"timestamp":"2026-10-19T02:39:22.603Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees/export, GET} route"}
{"timestamp":"2026-10-19T02:39:22.603Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees/risk-stats, GET} route"}
{"timestamp":"2026-10-19T02:39:22.604Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees/:id, GET} route"}
{"timestamp":"2026-10-19T02:39:22.604Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees/:id, PUT} route"}
{"timestamp":"2026-10-19T02:39:22.604Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees/:id, DELETE} route"}
{"timestamp":"2026-10-19T02:39:22.604Z","level":"log","context":"RoutesResolver","message":"GroupController {/groups}:"}
{"timestamp":"2026-10-19T02:39:22.604Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups, POST} route"}
{"timestamp":"2026-10-19T02:39:22.604Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups, GET} route"}
{"timestamp":"2026-10-19T02:39:22.605Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups/standard, GET} route"}
{"timestamp":"2026-10-19T02:39:22.605Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups/:id, GET} route"}
{"timestamp":"2026-10-19T02:39:22.605Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups/:id, PUT} route"}
{"timestamp":"2026-10-19T02:39:22.605Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups/:id, DELETE} route"}
{"timestamp":"2026-10-19T02:39:22.605Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups/:id/info, GET} route"}
{"timestamp":"2026-10-19T02:39:22.605Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups/:id/with-employees, GET} route"}
{"timestamp":"2026-10-19T02:39:22.605Z","level":"log","context":"RoutesResolver","message":"SenderProfileController {/sender-profiles}:"}
{"timestamp":"2026-10-19T02:39:22.606Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles, GET} route"}
{"timestamp":"2026-10-19T02:39:22.606Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles/:id, GET} route"}
{"timestamp":"2026-10-19T02:39:22.606Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles, POST} route"}
{"timestamp":"2026-10-19T02:39:22.606Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles/:id, PUT} route"}
{"timestamp":"2026-10-19T02:39:22.606Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles/:id, DELETE} route"}
{"timestamp":"2026-10-19T02:39:22.606Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles/:id/verify-domain, POST} route"}
{"timestamp":"2026-10-19T02:39:22.607Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles/domain-verification, GET} route"}
{"timestamp":"2026-10-19T02:39:22.607Z","level":"log","context":"RoutesResolver","message":"EmailTemplateController {/email-templates}:"}
{"timestamp":"2026-10-19T02:39:22.607Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates, GET} route"}
{"timestamp":"2026-10-19T02:39:22.607Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates/:id, GET} route"}
{"timestamp":"2026-10-19T02:39:22.607Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates, POST} route"}
{"timestamp":"2026-10-19T02:39:22.607Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates/:id, PUT} route"}
{"timestamp":"2026-10-19T02:39:22.608Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates/:id, DELETE} route"}
{"timestamp":"2026-10-19T02:39:22.608Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates/:id/duplicate, POST} route"}
{"timestamp":"2026-10-19T02:39:22.608Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates/:id/preview, GET} route"}
{"timestamp":"2026-10-19T02:39:22.608Z","level":"log","context":"RoutesResolver","message":"ScenarioController {/scenarios}:"}
{"timestamp":"2026-10-19T02:39:22.608Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios, POST} route"}
{"timestamp":"2026-10-19T02:39:22.608Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios/generate-content, POST} route"}
{"timestamp":"2026-10-19T02:39:22.608Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios, GET} route"}
{"timestamp":"2026-10-19T02:39:22.609Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios/:id, GET} route"}
{"timestamp":"2026-10-19T02:39:22.609Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios/:id, PUT} route"}
{"timestamp":"2026-10-19T02:39:22.609Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios/:id, DELETE} route"}
{"timestamp":"2026-10-19T02:39:22.609Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios/generate-from-json, POST} route"}
{"timestamp":"2026-10-19T02:39:22.609Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios/:id/save-as-custom-scenario, POST} route"}
{"timestamp":"2026-10-19T02:39:22.609Z","level":"log","context":"RoutesResolver","message":"CampaignController {/campaigns}:"}
{"timestamp":"2026-10-19T02:39:22.609Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns, POST} route"}
{"timestamp":"2026-10-19T02:39:22.610Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns, GET} route"}
{"timestamp":"2026-10-19T02:39:22.610Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id, GET} route"}
{"timestamp":"2026-10-19T02:39:22.610Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id/details, GET} route"}
{"timestamp":"2026-10-19T02:39:22.610Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id/employees, GET} route"}
{"timestamp":"2026-10-19T02:39:22.610Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id, PATCH} route"}
{"timestamp":"2026-10-19T02:39:22.610Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id/start, POST} route"}
{"timestamp":"2026-10-19T02:39:22.611Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id/stop, POST} route"}
{"timestamp":"2026-10-19T02:39:22.611Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id/duplicate, POST} route"}
{"timestamp":"2026-10-19T02:39:22.611Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id, DELETE} route"}
{"timestamp":"2026-10-19T02:39:22.611Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/auto-generate-program, POST} route"}
{"timestamp":"2026-10-19T02:39:22.611Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/generate-from-threat-intelligence, POST} route"}
{"timestamp":"2026-10-19T02:39:22.611Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id/risk-score, GET} route"}
{"timestamp":"2026-10-19T02:39:22.612Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/recalculate-risk-scores, POST} route"}
{"timestamp":"2026-10-19T02:39:22.612Z","level":"log","context":"RoutesResolver","message":"CampaignController {/api/campaigns}:"}
{"timestamp":"2026-10-19T02:39:22.612Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns, POST} route"}
{"timestamp":"2026-10-19T02:39:22.612Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns, GET} route"}
{"timestamp":"2026-10-19T02:39:22.612Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id, GET} route"}
{"timestamp":"2026-10-19T02:39:22.612Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id/details, GET} route"}
{"timestamp":"2026-10-19T02:39:22.612Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id/employees, GET} route"}
{"timestamp":"2026-10-19T02:39:22.612Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id, PATCH} route"}
{"timestamp":"2026-10-19T02:39:22.613Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id/start, POST} route"}
{"timestamp":"2026-10-19T02:39:22.613Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id/stop, POST} route"}
{"timestamp":"2026-10-19T02:39:22.613Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id/duplicate, POST} route"}
{"timestamp":"2026-10-19T02:39:22.613Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id, DELETE} route"}
{"timestamp":"2026-10-19T02:39:22.613Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/auto-generate-program, POST} route"}
{"timestamp":"2026-10-19T02:39:22.613Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/generate-from-threat-intelligence, POST} route"}
{"timestamp":"2026-10-19T02:39:22.613Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id/risk-score, GET} route"}
{"timestamp":"2026-10-19T02:39:22.614Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/recalculate-risk-scores, POST} route"}
{"timestamp":"2026-10-19T02:39:22.614Z","level":"log","context":"RoutesResolver","message":"NotificationsController {/notifications}:"}
{"timestamp":"2026-10-19T02:39:22.614Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications, POST} route"}
{"timestamp":"2026-10-19T02:39:22.614Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications, GET} route"}
{"timestamp":"2026-10-19T02:39:22.614Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/unread, GET} route"}
{"timestamp":"2026-10-19T02:39:22.614Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/unread-count, GET} route"}
{"timestamp":"2026-10-19T02:39:22.615Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/:id, GET} route"}
{"timestamp":"2026-10-19T02:39:22.615Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/:id, PATCH} route"}
{"timestamp":"2026-10-19T02:39:22.615Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/:id/read, PATCH} route"}
{"timestamp":"2026-10-19T02:39:22.615Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/mark-all-read, PATCH} route"}
{"timestamp":"2026-10-19T02:39:22.616Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/:id, DELETE} route"}
{"timestamp":"2026-10-19T02:39:22.616Z","level":"log","context":"RoutesResolver","message":"LandingPageController {/lp}:"}
{"timestamp":"2026-10-19T02:39:22.616Z","level":"log","context":"RouterExplorer","message":"Mapped {/lp/image, GET} route"}
{"timestamp":"2026-10-19T02:39:22.616Z","level":"log","context":"RouterExplorer","message":"Mapped {/lp/learning, GET} route"}
{"timestamp":"2026-10-19T02:39:22.616Z","level":"log","context":"RouterExplorer","message":"Mapped {/lp/submit, POST} route"}
{"timestamp":"2026-10-19T02:39:22.616Z","level":"log","context":"RouterExplorer","message":"Mapped {/lp/test, GET} route"}
{"timestamp":"2026-10-19T02:39:22.616Z","level":"warn","context":"LegacyRouteConverter","message":"Unsupported route path: \"/lp/*\". In previous versions, the symbols ?, *, and + were used to denote optional or repeating path parameters. The latest version of \"path-to-regexp\" now requires the use of named parameters. For example, instead of using a route like /users/* to capture all routes starting with \"/users\", you should use /users/*path. For more details, refer to the migration guide. Attempting to auto-convert..."}
{"timestamp":"2026-10-19T02:39:22.617Z","level":"log","context":"RouterExplorer","message":"Mapped {/lp/*, ALL} route"}
{"timestamp":"2026-10-19T02:39:22.617Z","level":"log","context":"RoutesResolver","message":"SupportController {/support}:"}
{"timestamp":"2026-10-19T02:39:22.617Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets, POST} route"}
{"timestamp":"2026-10-19T02:39:22.618Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets, GET} route"}
{"timestamp":"2026-10-19T02:39:22.618Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets/:id, GET} route"}
{"timestamp":"2026-10-19T02:39:22.618Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets/:id, PATCH} route"}
{"timestamp":"2026-10-19T02:39:22.618Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets/:id, DELETE} route"}
{"timestamp":"2026-10-19T02:39:22.618Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets/:id/messages, POST} route"}
{"timestamp":"2026-10-19T02:39:22.619Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets/:id/close, POST} route"}
{"timestamp":"2026-10-19T02:39:22.619Z","level":"log","context":"RoutesResolver","message":"BusninessMetricsController {/business-metrics}:"}
{"timestamp":"2026-10-19T02:39:22.619Z","level":"log","context":"RouterExplorer","message":"Mapped {/business-metrics, GET} route"}
{"timestamp":"2026-10-19T02:39:22.619Z","level":"log","context":"RoutesResolver","message":"UsersController {/users}:"}
{"timestamp":"2026-10-19T02:39:22.619Z","level":"log","context":"RouterExplorer","message":"Mapped {/users/:id, PUT} route"}
{"timestamp":"2026-10-19T02:39:22.619Z","level":"log","context":"RouterExplorer","message":"Mapped {/users/settings, GET} route"}
{"timestamp":"2026-10-19T02:39:22.619Z","level":"log","context":"RouterExplorer","message":"Mapped {/users/settings/general, PUT} route"}
{"timestamp":"2026-10-19T02:39:22.620Z","level":"log","context":"RouterExplorer","message":"Mapped {/users/company/settings, PUT} route"}
{"timestamp":"2026-10-19T02:39:22.620Z","level":"log","context":"RouterExplorer","message":"Mapped {/users/change-password, POST} route"}
{"timestamp":"2026-10-19T02:39:22.620Z","level":"log","context":"RouterExplorer","message":"Mapped {/users/localization/settings, PUT} route"}
{"timestamp":"2026-10-19T02:39:22.620Z","level":"log","context":"RoutesResolver","message":"PartnerController {/partner}:"}
{"timestamp":"2026-10-19T02:39:22.620Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses, POST} route"}
{"timestamp":"2026-10-19T02:39:22.620Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses, GET} route"}
{"timestamp":"2026-10-19T02:39:22.621Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses/:id, GET} route"}
{"timestamp":"2026-10-19T02:39:22.621Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses/:id, PUT} route"}
{"timestamp":"2026-10-19T02:39:22.621Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses/:id, DELETE} route"}
{"timestamp":"2026-10-19T02:39:22.621Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses/:id/impersonate, POST} route"}
{"timestamp":"2026-10-19T02:39:22.621Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses/stop-impersonation, POST} route"}
{"timestamp":"2026-10-19T02:39:22.621Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/license-usage, GET} route"}
{"timestamp":"2026-10-19T02:39:22.621Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/invoices, POST} route"}
{"timestamp":"2026-10-19T02:39:22.622Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/invoices, GET} route"}
{"timestamp":"2026-10-19T02:39:22.622Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/invoices/:id, GET} route"}
{"timestamp":"2026-10-19T02:39:22.622Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/invoices/:id, PUT} route"}
{"timestamp":"2026-10-19T02:39:22.622Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/invoices/:id, DELETE} route"}
{"timestamp":"2026-10-19T02:39:22.622Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/invoices/:id/mark-paid, PUT} route"}
{"timestamp":"2026-10-19T02:39:22.622Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/onboarding/generate-token, POST} route"}
{"timestamp":"2026-10-19T02:39:22.623Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/dashboard, GET} route"}
{"timestamp":"2026-10-19T02:39:22.623Z","level":"log","context":"RoutesResolver","message":"MspSubscriptionController {/partner/msp-subscriptions}:"}
{"timestamp":"2026-10-19T02:39:22.623Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/plans, POST} route"}
{"timestamp":"2026-10-19T02:39:22.623Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/plans, GET} route"}
{"timestamp":"2026-10-19T02:39:22.623Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/plans/:planId, GET} route"}
{"timestamp":"2026-10-19T02:39:22.623Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/plans/:planId, PUT} route"}
{"timestamp":"2026-10-19T02:39:22.623Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/plans/:planId, DELETE} route"}
{"timestamp":"2026-10-19T02:39:22.624Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/businesses/:businessId/subscription, POST} route"}
{"timestamp":"2026-10-19T02:39:22.624Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions, GET} route"}
{"timestamp":"2026-10-19T02:39:22.624Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/businesses/:businessId/subscription, GET} route"}
{"timestamp":"2026-10-19T02:39:22.624Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/businesses/:businessId/subscription, PUT} route"}
{"timestamp":"2026-10-19T02:39:22.624Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/businesses/:businessId/subscription, DELETE} route"}
{"timestamp":"2026-10-19T02:39:22.624Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/businesses/:businessId/subscription/limits, GET} route"}
{"timestamp":"2026-10-19T02:39:22.625Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/businesses/:businessId/subscription/change-plan, PUT} route"}
{"timestamp":"2026-10-19T02:39:22.625Z","level":"log","context":"RoutesResolver","message":"OnboardingController {/onboarding}:"}
{"timestamp":"2026-10-19T02:39:22.625Z","level":"log","context":"RouterExplorer","message":"Mapped {/onboarding/validate/:token, GET} route"}
{"timestamp":"2026-10-19T02:39:22.625Z","level":"log","context":"RouterExplorer","message":"Mapped {/onboarding/complete/:token, POST} route"}
{"timestamp":"2026-10-19T02:39:22.625Z","level":"log","context":"RoutesResolver","message":"ResellerController {/reseller}:"}
{"timestamp":"2026-10-19T02:39:22.625Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/businesses, POST} route"}
{"timestamp":"2026-10-19T02:39:22.625Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/businesses, GET} route"}
{"timestamp":"2026-10-19T02:39:22.626Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/businesses/:id, GET} route"}
{"timestamp":"2026-10-19T02:39:22.626Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/businesses/:id, PUT} route"}
{"timestamp":"2026-10-19T02:39:22.626Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/businesses/:id, DELETE} route"}
{"timestamp":"2026-10-19T02:39:22.626Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/license-usage, GET} route"}
{"timestamp":"2026-10-19T02:39:22.626Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/invoices, POST} route"}
{"timestamp":"2026-10-19T02:39:22.626Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/invoices, GET} route"}
{"timestamp":"2026-10-19T02:39:22.626Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/invoices/:id, GET} route"}
{"timestamp":"2026-10-19T02:39:22.627Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/invoices/:id, PUT} route"}
{"timestamp":"2026-10-19T02:39:22.627Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/invoices/:id, DELETE} route"}
{"timestamp":"2026-10-19T02:39:22.627Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/invoices/:id/mark-paid, PUT} route"}
{"timestamp":"2026-10-19T02:39:22.627Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/onboarding/generate-token, POST} route"}
{"timestamp":"2026-10-19T02:39:22.627Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/dashboard, GET} route"}
{"timestamp":"2026-10-19T02:39:22.627Z","level":"log","context":"RoutesResolver","message":"ResellerSubscriptionController {/reseller}:"}
{"timestamp":"2026-10-19T02:39:22.627Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/plans, POST} route"}
{"timestamp":"2026-10-19T02:39:22.628Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/plans, GET} route"}
{"timestamp":"2026-10-19T02:39:22.628Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/plans/:planId, GET} route"}
{"timestamp":"2026-10-19T02:39:22.628Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/plans/:planId, PUT} route"}
{"timestamp":"2026-10-19T02:39:22.628Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/plans/:planId, DELETE} route"}
{"timestamp":"2026-10-19T02:39:22.628Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/subscriptions/businesses/:businessId/subscription, POST} route"}
{"timestamp":"2026-10-19T02:39:22.628Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/subscriptions, GET} route"}
{"timestamp":"2026-10-19T02:39:22.628Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/subscriptions/businesses/:businessId/subscription, GET} route"}
{"timestamp":"2026-10-19T02:39:22.629Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/subscriptions/businesses/:businessId/subscription, PUT} route"}
{"timestamp":"2026-10-19T02:39:22.629Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/subscriptions/businesses/:businessId/subscription, DELETE} route"}
{"timestamp":"2026-10-19T02:39:22.629Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/subscriptions/businesses/:businessId/subscription/limits, GET} route"}
{"timestamp":"2026-10-19T02:39:22.629Z","level":"log","context":"RoutesResolver","message":"HealthController {/health}:"}
{"timestamp":"2026-10-19T02:39:22.629Z","level":"log","context":"RouterExplorer","message":"Mapped {/health, GET} route"}
{"timestamp":"2026-10-19T02:39:22.629Z","level":"log","context":"RouterExplorer","message":"Mapped {/health/test-logs, GET} route"}
{"timestamp":"2026-10-19T02:39:22.629Z","level":"log","context":"RoutesResolver","message":"AzureAdController {/azure-ad}:"}
{"timestamp":"2026-10-19T02:39:22.630Z","level":"log","context":"RouterExplorer","message":"Mapped {/azure-ad/config, POST} route"}
{"timestamp":"2026-10-19T02:39:22.630Z","level":"log","context":"RouterExplorer","message":"Mapped {/azure-ad/config, GET} route"}
{"timestamp":"2026-10-19T02:39:22.630Z","level":"log","context":"RouterExplorer","message":"Mapped {/azure-ad/test-connection, POST} route"}
{"timestamp":"2026-10-19T02:39:22.630Z","level":"log","context":"RouterExplorer","message":"Mapped {/azure-ad/sync, POST} route"}
{"timestamp":"2026-10-19T02:39:22.630Z","level":"log","context":"RoutesResolver","message":"ThreatsController {/threats}:"}
{"timestamp":"2026-10-19T02:39:22.630Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats, POST} route"}
{"timestamp":"2026-10-19T02:39:22.630Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats, GET} route"}
{"timestamp":"2026-10-19T02:39:22.630Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/chart-data, GET} route"}
{"timestamp":"2026-10-19T02:39:22.631Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/claude-search, POST} route"}
{"timestamp":"2026-10-19T02:39:22.631Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/claude-latest, POST} route"}
{"timestamp":"2026-10-19T02:39:22.631Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/claude-trending, POST} route"}
{"timestamp":"2026-10-19T02:39:22.631Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/claude-categories, POST} route"}
{"timestamp":"2026-10-19T02:39:22.631Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/claude-manual-search, POST} route"}
{"timestamp":"2026-10-19T02:39:22.631Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/claude-quick-search, POST} route"}
{"timestamp":"2026-10-19T02:39:22.632Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/scheduler-status, GET} route"}
{"timestamp":"2026-10-19T02:39:22.632Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/health-check, GET} route"}
{"timestamp":"2026-10-19T02:39:22.632Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/pause-scheduler, POST} route"}
{"timestamp":"2026-10-19T02:39:22.632Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/:id, GET} route"}
{"timestamp":"2026-10-19T02:39:22.632Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/:id, PATCH} route"}
{"timestamp":"2026-10-19T02:39:22.632Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/:id, DELETE} route"}
{"timestamp":"2026-10-19T02:39:22.632Z","level":"log","context":"RoutesResolver","message":"DomainController {/domains}:"}
{"timestamp":"2026-10-19T02:39:22.633Z","level":"log","context":"RouterExplorer","message":"Mapped {/domains, GET} route"}
{"timestamp":"2026-10-19T02:39:22.633Z","level":"log","context":"RouterExplorer","message":"Mapped {/domains/:id, GET} route"}
{"timestamp":"2026-10-19T02:39:22.633Z","level":"log","context":"RouterExplorer","message":"Mapped {/domains, POST} route"}
{"timestamp":"2026-10-19T02:39:22.633Z","level":"log","context":"RouterExplorer","message":"Mapped {/domains/:id, PUT} route"}
{"timestamp":"2026-10-19T02:39:22.633Z","level":"log","context":"RouterExplorer","message":"Mapped {/domains/:id, DELETE} route"}
{"timestamp":"2026-10-19T02:39:22.633Z","level":"log","context":"RouterExplorer","message":"Mapped {/domains/seed, POST} route"}
{"timestamp":"2026-10-19T02:39:22.633Z","level":"log","context":"RoutesResolver","message":"MspSubscriptionController {/msp-subscription}:"}
{"timestamp":"2026-10-19T02:39:22.633Z","level":"log","context":"RouterExplorer","message":"Mapped {/msp-subscription/current, GET} route"}
{"timestamp":"2026-10-19T02:39:22.634Z","level":"log","context":"RouterExplorer","message":"Mapped {/msp-subscription/invoices, GET} route"}
{"timestamp":"2026-10-19T02:39:22.634Z","level":"log","context":"RouterExplorer","message":"Mapped {/msp-subscription/invoice/:invoiceId/pdf, GET} route"}
{"timestamp":"2026-10-19T02:39:22.634Z","level":"log","context":"RoutesResolver","message":"MspSubscriptionController {/api/msp-subscription}:"}
{"timestamp":"2026-10-19T02:39:22.634Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/msp-subscription/current, GET} route"}
{"timestamp":"2026-10-19T02:39:22.634Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/msp-subscription/invoices, GET} route"}
{"timestamp":"2026-10-19T02:39:22.634Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/msp-subscription/invoice/:invoiceId/pdf, GET} route"}
{"timestamp":"2026-10-19T02:39:22.707Z","level":"log","context":"NestApplication","message":"Nest application successfully started"}
{"timestamp":"2026-10-19T02:39:22.726Z","level":"log","context":"Bootstrap","message":"Users API successfully started on port 3842"}
{"timestamp":"2026-10-19T02:39:22.726Z","level":"log","context":"SeedService","message":"🌱 Starting database seeding..."}
{"timestamp":"2026-10-19T02:39:22.732Z","level":"log","context":"SeedService","message":"Admin account already exists, skipping seed"}
{"timestamp":"2026-10-19T02:39:22.735Z","level":"log","context":"SeedService","message":"Reseller account already exists, skipping seed"}
{"timestamp":"2026-10-19T02:39:22.736Z","level":"log","context":"SeedService","message":"MSP account already exists, skipping seed"}
{"timestamp":"2026-10-19T02:39:22.736Z","level":"log","context":"SeedService","message":"✅ Database seeding completed successfully"}
{"timestamp":"2026-10-19T04:19:53.666Z","level":"warn","context":"LegacyRouteConverter","message":"Unsupported route path: \"/lp/*\". In previous versions, the symbols ?, *, and + were used to denote optional or repeating path parameters. The latest version of \"path-to-regexp\" now requires the use of named parameters. For example, instead of using a route like /users/* to capture all routes starting with \"/users\", you should use /users/*path. For more details, refer to the migration guide. Attempting to auto-convert..."}
{"timestamp":"2026-10-19T04:19:53.705Z","level":"log","context":"Bootstrap","message":"Starting Users API on port 3842..."}
{"timestamp":"2026-10-19T04:19:53.709Z","level":"log","context":"RoutesResolver","message":"UsersApiController {/}:"}
{"timestamp":"2026-10-19T04:19:53.713Z","level":"log","context":"RouterExplorer","message":"Mapped {/, GET} route"}
{"timestamp":"2026-10-19T04:19:53.713Z","level":"log","context":"RoutesResolver","message":"AuthController {/auth}:"}
{"timestamp":"2026-10-19T04:19:53.714Z","level":"log","context":"RouterExplorer","message":"Mapped {/auth/login, POST} route"}
{"timestamp":"2026-10-19T04:19:53.714Z","level":"log","context":"RouterExplorer","message":"Mapped {/auth/admin/login, POST} route"}
{"timestamp":"2026-10-19T04:19:53.715Z","level":"log","context":"RouterExplorer","message":"Mapped {/auth/send-otp, POST} route"}
{"timestamp":"2026-10-19T04:19:53.715Z","level":"log","context":"RouterExplorer","message":"Mapped {/auth/verify-otp, POST} route"}
{"timestamp":"2026-10-19T04:19:53.716Z","level":"log","context":"RouterExplorer","message":"Mapped {/auth/signup, POST} route"}
{"timestamp":"2026-10-19T04:19:53.716Z","level":"log","context":"RouterExplorer","message":"Mapped {/auth/subscription-status, GET} route"}
{"timestamp":"2026-10-19T04:19:53.716Z","level":"log","context":"RoutesResolver","message":"AdminMspController {/admin/msp}:"}
{"timestamp":"2026-10-19T04:19:53.717Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/msp, GET} route"}
{"timestamp":"2026-10-19T04:19:53.718Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/msp/:id, GET} route"}
{"timestamp":"2026-10-19T04:19:53.718Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/msp, POST} route"}
{"timestamp":"2026-10-19T04:19:53.719Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/msp/:id, PUT} route"}
{"timestamp":"2026-10-19T04:19:53.719Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/msp/:id, DELETE} route"}
{"timestamp":"2026-10-19T04:19:53.719Z","level":"log","context":"RoutesResolver","message":"AdminLicenseController {/admin/licenses}:"}
{"timestamp":"2026-10-19T04:19:53.719Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/licenses/summary, GET} route"}
{"timestamp":"2026-10-19T04:19:53.720Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/licenses/msp/:mspId, GET} route"}
{"timestamp":"2026-10-19T04:19:53.720Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/licenses/msp/:mspId, PUT} route"}
{"timestamp":"2026-10-19T04:19:53.720Z","level":"log","context":"RoutesResolver","message":"AdminImpersonationController {/admin/impersonation}:"}
{"timestamp":"2026-10-19T04:19:53.720Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/impersonation/msp-users, GET} route"}
{"timestamp":"2026-10-19T04:19:53.721Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/impersonation/impersonate, POST} route"}
{"timestamp":"2026-10-19T04:19:53.721Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/impersonation/stop, POST} route"}
{"timestamp":"2026-10-19T04:19:53.721Z","level":"log","context":"RoutesResolver","message":"AdminAiUsageController {/admin/ai-usage}:"}
{"timestamp":"2026-10-19T04:19:53.721Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-usage, GET} route"}
{"timestamp":"2026-10-19T04:19:53.724Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-usage/business/:businessId, GET} route"}
{"timestamp":"2026-10-19T04:19:53.725Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-usage/report/monthly, GET} route"}
{"timestamp":"2026-10-19T04:19:53.725Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-usage/pricing, GET} route"}
{"timestamp":"2026-10-19T04:19:53.725Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-usage/pricing, POST} route"}
{"timestamp":"2026-10-19T04:19:53.725Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-usage/credit/:businessId, PUT} route"}
{"timestamp":"2026-10-19T04:19:53.725Z","level":"log","context":"RoutesResolver","message":"AdminAiUsageController {/api/admin/ai-usage}:"}
{"timestamp":"2026-10-19T04:19:53.726Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-usage, GET} route"}
{"timestamp":"2026-10-19T04:19:53.726Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-usage/business/:businessId, GET} route"}
{"timestamp":"2026-10-19T04:19:53.726Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-usage/report/monthly, GET} route"}
{"timestamp":"2026-10-19T04:19:53.726Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-usage/pricing, GET} route"}
{"timestamp":"2026-10-19T04:19:53.726Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-usage/pricing, POST} route"}
{"timestamp":"2026-10-19T04:19:53.727Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-usage/credit/:businessId, PUT} route"}
{"timestamp":"2026-10-19T04:19:53.727Z","level":"log","context":"RoutesResolver","message":"AdminAiModelController {/admin/ai-models}:"}
{"timestamp":"2026-10-19T04:19:53.727Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models, POST} route"}
{"timestamp":"2026-10-19T04:19:53.727Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models, GET} route"}
{"timestamp":"2026-10-19T04:19:53.727Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/default, GET} route"}
{"timestamp":"2026-10-19T04:19:53.727Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/:id, GET} route"}
{"timestamp":"2026-10-19T04:19:53.728Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/:id, PUT} route"}
{"timestamp":"2026-10-19T04:19:53.728Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/:id, DELETE} route"}
{"timestamp":"2026-10-19T04:19:53.728Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/:id/set-default, POST} route"}
{"timestamp":"2026-10-19T04:19:53.728Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/assign-to-business, POST} route"}
{"timestamp":"2026-10-19T04:19:53.728Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/business/:businessId, GET} route"}
{"timestamp":"2026-10-19T04:19:53.729Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/:id/businesses, GET} route"}
{"timestamp":"2026-10-19T04:19:53.729Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/initialize-defaults, POST} route"}
{"timestamp":"2026-10-19T04:19:53.729Z","level":"log","context":"RoutesResolver","message":"AdminAiModelController {/api/admin/ai-models}:"}
{"timestamp":"2026-10-19T04:19:53.729Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models, POST} route"}
{"timestamp":"2026-10-19T04:19:53.729Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models, GET} route"}
{"timestamp":"2026-10-19T04:19:53.729Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/default, GET} route"}
{"timestamp":"2026-10-19T04:19:53.730Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/:id, GET} route"}
{"timestamp":"2026-10-19T04:19:53.730Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/:id, PUT} route"}
{"timestamp":"2026-10-19T04:19:53.730Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/:id, DELETE} route"}
{"timestamp":"2026-10-19T04:19:53.730Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/:id/set-default, POST} route"}
{"timestamp":"2026-10-19T04:19:53.730Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/assign-to-business, POST} route"}
{"timestamp":"2026-10-19T04:19:53.730Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/business/:businessId, GET} route"}
{"timestamp":"2026-10-19T04:19:53.731Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/:id/businesses, GET} route"}
{"timestamp":"2026-10-19T04:19:53.731Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/initialize-defaults, POST} route"}
{"timestamp":"2026-10-19T04:19:53.731Z","level":"log","context":"RoutesResolver","message":"AdminBusinessController {/admin/businesses}:"}
{"timestamp":"2026-10-19T04:19:53.731Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/businesses, GET} route"}
{"timestamp":"2026-10-19T04:19:53.731Z","level":"log","context":"RoutesResolver","message":"ResellerManagementController {/admin/resellers}:"}
{"timestamp":"2026-10-19T04:19:53.732Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/resellers, GET} route"}
{"timestamp":"2026-10-19T04:19:53.732Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/resellers/create-default, POST} route"}
{"timestamp":"2026-10-19T04:19:53.732Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/resellers, POST} route"}
{"timestamp":"2026-10-19T04:19:53.732Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/resellers/:id/toggle-status, PUT} route"}
{"timestamp":"2026-10-19T04:19:53.732Z","level":"log","context":"RoutesResolver","message":"SubscriptionController {/subscription}:"}
{"timestamp":"2026-10-19T04:19:53.733Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/plans, GET} route"}
{"timestamp":"2026-10-19T04:19:53.733Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/calculate-price, POST} route"}
{"timestamp":"2026-10-19T04:19:53.733Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/current, GET} route"}
{"timestamp":"2026-10-19T04:19:53.733Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/create, POST} route"}
{"timestamp":"2026-10-19T04:19:53.733Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/:id, PUT} route"}
{"timestamp":"2026-10-19T04:19:53.733Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/:id/cancel, DELETE} route"}
{"timestamp":"2026-10-19T04:19:53.734Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/sync/:stripeSubscriptionId, POST} route"}
{"timestamp":"2026-10-19T04:19:53.734Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/payments, GET} route"}
{"timestamp":"2026-10-19T04:19:53.734Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/payments/stats, GET} route"}
{"timestamp":"2026-10-19T04:19:53.734Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/payment/:id, GET} route"}
{"timestamp":"2026-10-19T04:19:53.734Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/payment-methods/attach, POST} route"}
{"timestamp":"2026-10-19T04:19:53.734Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/payment-methods/:paymentMethodId, DELETE} route"}
{"timestamp":"2026-10-19T04:19:53.735Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/payment-methods, GET} route"}
{"timestamp":"2026-10-19T04:19:53.735Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/setup-intent, POST} route"}
{"timestamp":"2026-10-19T04:19:53.735Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/update-employee-count, POST} route"}
{"timestamp":"2026-10-19T04:19:53.735Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/retry-payment/:subscriptionId, POST} route"}
{"timestamp":"2026-10-19T04:19:53.735Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/invoice/:invoiceId/pdf, GET} route"}
{"timestamp":"2026-10-19T04:19:53.736Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/preview-upgrade, POST} route"}
{"timestamp":"2026-10-19T04:19:53.736Z","level":"log","context":"RoutesResolver","message":"SubscriptionController {/api/subscription}:"}
{"timestamp":"2026-10-19T04:19:53.736Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/plans, GET} route"}
{"timestamp":"2026-10-19T04:19:53.736Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/calculate-price, POST} route"}
{"timestamp":"2026-10-19T04:19:53.736Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/current, GET} route"}
{"timestamp":"2026-10-19T04:19:53.736Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/create, POST} route"}
{"timestamp":"2026-10-19T04:19:53.736Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/:id, PUT} route"}
{"timestamp":"2026-10-19T04:19:53.737Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/:id/cancel, DELETE} route"}
{"timestamp":"2026-10-19T04:19:53.737Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/sync/:stripeSubscriptionId, POST} route"}
{"timestamp":"2026-10-19T04:19:53.737Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/payments, GET} route"}
{"timestamp":"2026-10-19T04:19:53.737Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/payments/stats, GET} route"}
{"timestamp":"2026-10-19T04:19:53.737Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/payment/:id, GET} route"}
{"timestamp":"2026-10-19T04:19:53.737Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/payment-methods/attach, POST} route"}
{"timestamp":"2026-10-19T04:19:53.737Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/payment-methods/:paymentMethodId, DELETE} route"}
{"timestamp":"2026-10-19T04:19:53.738Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/payment-methods, GET} route"}
{"timestamp":"2026-10-19T04:19:53.738Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/setup-intent, POST} route"}
{"timestamp":"2026-10-19T04:19:53.738Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/update-employee-count, POST} route"}
{"timestamp":"2026-10-19T04:19:53.738Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/retry-payment/:subscriptionId, POST} route"}
{"timestamp":"2026-10-19T04:19:53.738Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/invoice/:invoiceId/pdf, GET} route"}
{"timestamp":"2026-10-19T04:19:53.738Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/preview-upgrade, POST} route"}
{"timestamp":"2026-10-19T04:19:53.738Z","level":"log","context":"RoutesResolver","message":"StripeWebhookController {/stripe/webhook}:"}
{"timestamp":"2026-10-19T04:19:53.739Z","level":"log","context":"RouterExplorer","message":"Mapped {/stripe/webhook/test, GET} route"}
{"timestamp":"2026-10-19T04:19:53.739Z","level":"log","context":"RouterExplorer","message":"Mapped {/stripe/webhook, POST} route"}
{"timestamp":"2026-10-19T04:19:53.739Z","level":"log","context":"RoutesResolver","message":"EmailController {/email-templates}:"}
{"timestamp":"2026-10-19T04:19:53.739Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates/test, POST} route"}
{"timestamp":"2026-10-19T04:19:53.739Z","level":"log","context":"RoutesResolver","message":"EmployeeController {/employees}:"}
{"timestamp":"2026-10-19T04:19:53.739Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees, POST} route"}
{"timestamp":"2026-10-19T04:19:53.739Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees, GET} route"}
{"timestamp":"2026-10-19T04:19:53.740Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees/export, GET} route"}
{"timestamp":"2026-10-19T04:19:53.740Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees/risk-stats, GET} route"}
{"timestamp":"2026-10-19T04:19:53.740Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees/:id, GET} route"}
{"timestamp":"2026-10-19T04:19:53.740Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees/:id, PUT} route"}
{"timestamp":"2026-10-19T04:19:53.740Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees/:id, DELETE} route"}
{"timestamp":"2026-10-19T04:19:53.740Z","level":"log","context":"RoutesResolver","message":"GroupController {/groups}:"}
{"timestamp":"2026-10-19T04:19:53.741Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups, POST} route"}
{"timestamp":"2026-10-19T04:19:53.741Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups, GET} route"}
{"timestamp":"2026-10-19T04:19:53.741Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups/standard, GET} route"}
{"timestamp":"2026-10-19T04:19:53.741Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups/:id, GET} route"}
{"timestamp":"2026-10-19T04:19:53.741Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups/:id, PUT} route"}
{"timestamp":"2026-10-19T04:19:53.741Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups/:id, DELETE} route"}
{"timestamp":"2026-10-19T04:19:53.741Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups/:id/info, GET} route"}
{"timestamp":"2026-10-19T04:19:53.742Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups/:id/with-employees, GET} route"}
{"timestamp":"2026-10-19T04:19:53.742Z","level":"log","context":"RoutesResolver","message":"SenderProfileController {/sender-profiles}:"}
{"timestamp":"2026-10-19T04:19:53.742Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles, GET} route"}
{"timestamp":"2026-10-19T04:19:53.742Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles/:id, GET} route"}
{"timestamp":"2026-10-19T04:19:53.742Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles, POST} route"}
{"timestamp":"2026-10-19T04:19:53.742Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles/:id, PUT} route"}
{"timestamp":"2026-10-19T04:19:53.743Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles/:id, DELETE} route"}
{"timestamp":"2026-10-19T04:19:53.743Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles/:id/verify-domain, POST} route"}
{"timestamp":"2026-10-19T04:19:53.743Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles/domain-verification, GET} route"}
{"timestamp":"2026-10-19T04:19:53.743Z","level":"log","context":"RoutesResolver","message":"EmailTemplateController {/email-templates}:"}
{"timestamp":"2026-10-19T04:19:53.743Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates, GET} route"}
{"timestamp":"2026-10-19T04:19:53.743Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates/:id, GET} route"}
{"timestamp":"2026-10-19T04:19:53.744Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates, POST} route"}
{"timestamp":"2026-10-19T04:19:53.744Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates/:id, PUT} route"}
{"timestamp":"2026-10-19T04:19:53.744Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates/:id, DELETE} route"}
{"timestamp":"2026-10-19T04:19:53.744Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates/:id/duplicate, POST} route"}
{"timestamp":"2026-10-19T04:19:53.744Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates/:id/preview, GET} route"}
{"timestamp":"2026-10-19T04:19:53.744Z","level":"log","context":"RoutesResolver","message":"ScenarioController {/scenarios}:"}
{"timestamp":"2026-10-19T04:19:53.745Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios, POST} route"}
{"timestamp":"2026-10-19T04:19:53.745Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios/generate-content, POST} route"}
{"timestamp":"2026-10-19T04:19:53.745Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios, GET} route"}
{"timestamp":"2026-10-19T04:19:53.745Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios/:id, GET} route"}
{"timestamp":"2026-10-19T04:19:53.745Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios/:id, PUT} route"}
{"timestamp":"2026-10-19T04:19:53.745Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios/:id, DELETE} route"}
{"timestamp":"2026-10-19T04:19:53.746Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios/generate-from-json, POST} route"}
{"timestamp":"2026-10-19T04:19:53.746Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios/:id/save-as-custom-scenario, POST} route"}
{"timestamp":"2026-10-19T04:19:53.746Z","level":"log","context":"RoutesResolver","message":"CampaignController {/campaigns}:"}
{"timestamp":"2026-10-19T04:19:53.746Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns, POST} route"}
{"timestamp":"2026-10-19T04:19:53.746Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns, GET} route"}
{"timestamp":"2026-10-19T04:19:53.746Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id, GET} route"}
{"timestamp":"2026-10-19T04:19:53.746Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id/details, GET} route"}
{"timestamp":"2026-10-19T04:19:53.747Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id/employees, GET} route"}
{"timestamp":"2026-10-19T04:19:53.747Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id, PATCH} route"}
{"timestamp":"2026-10-19T04:19:53.747Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id/start, POST} route"}
{"timestamp":"2026-10-19T04:19:53.747Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id/stop, POST} route"}
{"timestamp":"2026-10-19T04:19:53.748Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id/duplicate, POST} route"}
{"timestamp":"2026-10-19T04:19:53.748Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id, DELETE} route"}
{"timestamp":"2026-10-19T04:19:53.748Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/auto-generate-program, POST} route"}
{"timestamp":"2026-10-19T04:19:53.748Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/generate-from-threat-intelligence, POST} route"}
{"timestamp":"2026-10-19T04:19:53.748Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id/risk-score, GET} route"}
{"timestamp":"2026-10-19T04:19:53.748Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/recalculate-risk-scores, POST} route"}
{"timestamp":"2026-10-19T04:19:53.748Z","level":"log","context":"RoutesResolver","message":"CampaignController {/api/campaigns}:"}
{"timestamp":"2026-10-19T04:19:53.749Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns, POST} route"}
{"timestamp":"2026-10-19T04:19:53.749Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns, GET} route"}
{"timestamp":"2026-10-19T04:19:53.749Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id, GET} route"}
{"timestamp":"2026-10-19T04:19:53.749Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id/details, GET} route"}
{"timestamp":"2026-10-19T04:19:53.749Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id/employees, GET} route"}
{"timestamp":"2026-10-19T04:19:53.749Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id, PATCH} route"}
{"timestamp":"2026-10-19T04:19:53.750Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id/start, POST} route"}
{"timestamp":"2026-10-19T04:19:53.750Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id/stop, POST} route"}
{"timestamp":"2026-10-19T04:19:53.750Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id/duplicate, POST} route"}
{"timestamp":"2026-10-19T04:19:53.750Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id, DELETE} route"}
{"timestamp":"2026-10-19T04:19:53.750Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/auto-generate-program, POST} route"}
{"timestamp":"2026-10-19T04:19:53.750Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/generate-from-threat-intelligence, POST} route"}
{"timestamp":"2026-10-19T04:19:53.750Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id/risk-score, GET} route"}
{"timestamp":"2026-10-19T04:19:53.751Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/recalculate-risk-scores, POST} route"}
{"timestamp":"2026-10-19T04:19:53.751Z","level":"log","context":"RoutesResolver","message":"NotificationsController {/notifications}:"}
{"timestamp":"2026-10-19T04:19:53.751Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications, POST} route"}
{"timestamp":"2026-10-19T04:19:53.751Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications, GET} route"}
{"timestamp":"2026-10-19T04:19:53.751Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/unread, GET} route"}
{"timestamp":"2026-10-19T04:19:53.752Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/unread-count, GET} route"}
{"timestamp":"2026-10-19T04:19:53.752Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/:id, GET} route"}
{"timestamp":"2026-10-19T04:19:53.752Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/:id, PATCH} route"}
{"timestamp":"2026-10-19T04:19:53.752Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/:id/read, PATCH} route"}
{"timestamp":"2026-10-19T04:19:53.752Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/mark-all-read, PATCH} route"}
{"timestamp":"2026-10-19T04:19:53.753Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/:id, DELETE} route"}
{"timestamp":"2026-10-19T04:19:53.753Z","level":"log","context":"RoutesResolver","message":"LandingPageController {/lp}:"}
{"timestamp":"2026-10-19T04:19:53.753Z","level":"log","context":"RouterExplorer","message":"Mapped {/lp/image, GET} route"}
{"timestamp":"2026-10-19T04:19:53.753Z","level":"log","context":"RouterExplorer","message":"Mapped {/lp/learning, GET} route"}
{"timestamp":"2026-10-19T04:19:53.753Z","level":"log","context":"RouterExplorer","message":"Mapped {/lp/submit, POST} route"}
{"timestamp":"2026-10-19T04:19:53.753Z","level":"log","context":"RouterExplorer","message":"Mapped {/lp/test, GET} route"}
{"timestamp":"2026-10-19T04:19:53.754Z","level":"warn","context":"LegacyRouteConverter","message":"Unsupported route path: \"/lp/*\". In previous versions, the symbols ?, *, and + were used to denote optional or repeating path parameters. The latest version of \"path-to-regexp\" now requires the use of named parameters. For example, instead of using a route like /users/* to capture all routes starting with \"/users\", you should use /users/*path. For more details, refer to the migration guide. Attempting to auto-convert..."}
{"timestamp":"2026-10-19T04:19:53.754Z","level":"log","context":"RouterExplorer","message":"Mapped {/lp/*, ALL} route"}
{"timestamp":"2026-10-19T04:19:53.755Z","level":"log","context":"RoutesResolver","message":"SupportController {/support}:"}
{"timestamp":"2026-10-19T04:19:53.755Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets, POST} route"}
{"timestamp":"2026-10-19T04:19:53.755Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets, GET} route"}
{"timestamp":"2026-10-19T04:19:53.755Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets/:id, GET} route"}
{"timestamp":"2026-10-19T04:19:53.755Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets/:id, PATCH} route"}
{"timestamp":"2026-10-19T04:19:53.755Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets/:id, DELETE} route"}
{"timestamp":"2026-10-19T04:19:53.756Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets/:id/messages, POST} route"}
{"timestamp":"2026-10-19T04:19:53.756Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets/:id/close, POST} route"}
{"timestamp":"2026-10-19T04:19:53.756Z","level":"log","context":"RoutesResolver","message":"BusninessMetricsController {/business-metrics}:"}
{"timestamp":"2026-10-19T04:19:53.756Z","level":"log","context":"RouterExplorer","message":"Mapped {/business-metrics, GET} route"}
{"timestamp":"2026-10-19T04:19:53.756Z","level":"log","context":"RoutesResolver","message":"UsersController {/users}:"}
{"timestamp":"2026-10-19T04:19:53.756Z","level":"log","context":"RouterExplorer","message":"Mapped {/users/:id, PUT} route"}
{"timestamp":"2026-10-19T04:19:53.757Z","level":"log","context":"RouterExplorer","message":"Mapped {/users/settings, GET} route"}
{"timestamp":"2026-10-19T04:19:53.757Z","level":"log","context":"RouterExplorer","message":"Mapped {/users/settings/general, PUT} route"}
{"timestamp":"2026-10-19T04:19:53.757Z","level":"log","context":"RouterExplorer","message":"Mapped {/users/company/settings, PUT} route"}
{"timestamp":"2026-10-19T04:19:53.757Z","level":"log","context":"RouterExplorer","message":"Mapped {/users/change-password, POST} route"}
{"timestamp":"2026-10-19T04:19:53.757Z","level":"log","context":"RouterExplorer","message":"Mapped {/users/localization/settings, PUT} route"}
{"timestamp":"2026-10-19T04:19:53.757Z","level":"log","context":"RoutesResolver","message":"PartnerController {/partner}:"}
{"timestamp":"2026-10-19T04:19:53.758Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses, POST} route"}
{"timestamp":"2026-10-19T04:19:53.758Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses, GET} route"}
{"timestamp":"2026-10-19T04:19:53.758Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses/:id, GET} route"}
{"timestamp":"2026-10-19T04:19:53.758Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses/:id, PUT} route"}
{"timestamp":"2026-10-19T04:19:53.758Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses/:id, DELETE} route"}
{"timestamp":"2026-10-19T04:19:53.758Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses/:id/impersonate, POST} route"}
{"timestamp":"2026-10-19T04:19:53.759Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses/stop-impersonation, POST} route"}
{"timestamp":"2026-10-19T04:19:53.759Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/license-usage, GET} route"}
{"timestamp":"2026-10-19T04:19:53.759Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/invoices, POST} route"}
{"timestamp":"2026-10-19T04:19:53.759Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/invoices, GET} route"}
{"timestamp":"2026-10-19T04:19:53.759Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/invoices/:id, GET} route"}
{"timestamp":"2026-10-19T04:19:53.760Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/invoices/:id, PUT} route"}
{"timestamp":"2026-10-19T04:19:53.760Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/invoices/:id, DELETE} route"}
{"timestamp":"2026-10-19T04:19:53.760Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/invoices/:id/mark-paid, PUT} route"}
{"timestamp":"2026-10-19T04:19:53.760Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/onboarding/generate-token, POST} route"}
{"timestamp":"2026-10-19T04:19:53.760Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/dashboard, GET} route"}
{"timestamp":"2026-10-19T04:19:53.760Z","level":"log","context":"RoutesResolver","message":"MspSubscriptionController {/partner/msp-subscriptions}:"}
{"timestamp":"2026-10-19T04:19:53.760Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/plans, POST} route"}
{"timestamp":"2026-10-19T04:19:53.761Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/plans, GET} route"}
{"timestamp":"2026-10-19T04:19:53.761Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/plans/:planId, GET} route"}
{"timestamp":"2026-10-19T04:19:53.761Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/plans/:planId, PUT} route"}
{"timestamp":"2026-10-19T04:19:53.761Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/plans/:planId, DELETE} route"}
{"timestamp":"2026-10-19T04:19:53.761Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/businesses/:businessId/subscription, POST} route"}
{"timestamp":"2026-10-19T04:19:53.762Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions, GET} route"}
{"timestamp":"2026-10-19T04:19:53.762Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/businesses/:businessId/subscription, GET} route"}
{"timestamp":"2026-10-19T04:19:53.762Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/businesses/:businessId/subscription, PUT} route"}
{"timestamp":"2026-10-19T04:19:53.762Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/businesses/:businessId/subscription, DELETE} route"}
{"timestamp":"2026-10-19T04:19:53.762Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/businesses/:businessId/subscription/limits, GET} route"}
{"timestamp":"2026-10-19T04:19:53.762Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/businesses/:businessId/subscription/change-plan, PUT} route"}
{"timestamp":"2026-10-19T04:19:53.763Z","level":"log","context":"RoutesResolver","message":"OnboardingController {/onboarding}:"}
{"timestamp":"2026-10-19T04:19:53.763Z","level":"log","context":"RouterExplorer","message":"Mapped {/onboarding/validate/:token, GET} route"}
{"timestamp":"2026-10-19T04:19:53.763Z","level":"log","context":"RouterExplorer","message":"Mapped {/onboarding/complete/:token, POST} route"}
{"timestamp":"2026-10-19T04:19:53.763Z","level":"log","context":"RoutesResolver","message":"ResellerController {/reseller}:"}
{"timestamp":"2026-10-19T04:19:53.763Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/businesses, POST} route"}
{"timestamp":"2026-10-19T04:19:53.763Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/businesses, GET} route"}
{"timestamp":"2026-10-19T04:19:53.764Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/businesses/:id, GET} route"}
{"timestamp":"2026-10-19T04:19:53.764Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/businesses/:id, PUT} route"}
{"timestamp":"2026-10-19T04:19:53.764Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/businesses/:id, DELETE} route"}
{"timestamp":"2026-10-19T04:19:53.764Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/license-usage, GET} route"}
{"timestamp":"2026-10-19T04:19:53.764Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/invoices, POST} route"}
{"timestamp":"2026-10-19T04:19:53.764Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/invoices, GET} route"}
{"timestamp":"2026-10-19T04:19:53.765Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/invoices/:id, GET} route"}
{"timestamp":"2026-10-19T04:19:53.765Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/invoices/:id, PUT} route"}
{"timestamp":"2026-10-19T04:19:53.765Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/invoices/:id, DELETE} route"}
{"timestamp":"2026-10-19T04:19:53.765Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/invoices/:id/mark-paid, PUT} route"}
{"timestamp":"2026-10-19T04:19:53.765Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/onboarding/generate-token, POST} route"}
{"timestamp":"2026-10-19T04:19:53.765Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/dashboard, GET} route"}
{"timestamp":"2026-10-19T04:19:53.765Z","level":"log","context":"RoutesResolver","message":"ResellerSubscriptionController {/reseller}:"}
{"timestamp":"2026-10-19T04:19:53.766Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/plans, POST} route"}
{"timestamp":"2026-10-19T04:19:53.766Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/plans, GET} route"}
{"timestamp":"2026-10-19T04:19:53.766Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/plans/:planId, GET} route"}
{"timestamp":"2026-10-19T04:19:53.766Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/plans/:planId, PUT} route"}
{"timestamp":"2026-10-19T04:19:53.766Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/plans/:planId, DELETE} route"}
{"timestamp":"2026-10-19T04:19:53.766Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/subscriptions/businesses/:businessId/subscription, POST} route"}
{"timestamp":"2026-10-19T04:19:53.767Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/subscriptions, GET} route"}
{"timestamp":"2026-10-19T04:19:53.767Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/subscriptions/businesses/:businessId/subscription, GET} route"}
{"timestamp":"2026-10-19T04:19:53.767Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/subscriptions/businesses/:businessId/subscription, PUT} route"}
{"timestamp":"2026-10-19T04:19:53.767Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/subscriptions/businesses/:businessId/subscription, DELETE} route"}
{"timestamp":"2026-10-19T04:19:53.767Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/subscriptions/businesses/:businessId/subscription/limits, GET} route"}
{"timestamp":"2026-10-19T04:19:53.767Z","level":"log","context":"RoutesResolver","message":"HealthController {/health}:"}
{"timestamp":"2026-10-19T04:19:53.768Z","level":"log","context":"RouterExplorer","message":"Mapped {/health, GET} route"}
{"timestamp":"2026-10-19T04:19:53.768Z","level":"log","context":"RouterExplorer","message":"Mapped {/health/test-logs, GET} route"}
{"timestamp":"2026-10-19T04:19:53.768Z","level":"log","context":"RoutesResolver","message":"AzureAdController {/azure-ad}:"}
{"timestamp":"2026-10-19T04:19:53.768Z","level":"log","context":"RouterExplorer","message":"Mapped {/azure-ad/config, POST} route"}
{"timestamp":"2026-10-19T04:19:53.768Z","level":"log","context":"RouterExplorer","message":"Mapped {/azure-ad/config, GET} route"}
{"timestamp":"2026-10-19T04:19:53.768Z","level":"log","context":"RouterExplorer","message":"Mapped {/azure-ad/test-connection, POST} route"}
{"timestamp":"2026-10-19T04:19:53.768Z","level":"log","context":"RouterExplorer","message":"Mapped {/azure-ad/sync, POST} route"}
{"timestamp":"2026-10-19T04:19:53.768Z","level":"log","context":"RoutesResolver","message":"ThreatsController {/threats}:"}
{"timestamp":"2026-10-19T04:19:53.769Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats, POST} route"}
{"timestamp":"2026-10-19T04:19:53.769Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats, GET} route"}
{"timestamp":"2026-10-19T04:19:53.769Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/chart-data, GET} route"}
{"timestamp":"2026-10-19T04:19:53.769Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/claude-search, POST} route"}
{"timestamp":"2026-10-19T04:19:53.769Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/claude-latest, POST} route"}
{"timestamp":"2026-10-19T04:19:53.769Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/claude-trending, POST} route"}
{"timestamp":"2026-10-19T04:19:53.770Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/claude-categories, POST} route"}
{"timestamp":"2026-10-19T04:19:53.770Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/claude-manual-search, POST} route"}
{"timestamp":"2026-10-19T04:19:53.770Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/claude-quick-search, POST} route"}
{"timestamp":"2026-10-19T04:19:53.770Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/scheduler-status, GET} route"}
{"timestamp":"2026-10-19T04:19:53.770Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/health-check, GET} route"}
{"timestamp":"2026-10-19T04:19:53.770Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/pause-scheduler, POST} route"}
{"timestamp":"2026-10-19T04:19:53.771Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/:id, GET} route"}
{"timestamp":"2026-10-19T04:19:53.771Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/:id, PATCH} route"}
{"timestamp":"2026-10-19T04:19:53.771Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/:id, DELETE} route"}
{"timestamp":"2026-10-19T04:19:53.771Z","level":"log","context":"RoutesResolver","message":"DomainController {/domains}:"}
{"timestamp":"2026-10-19T04:19:53.771Z","level":"log","context":"RouterExplorer","message":"Mapped {/domains, GET} route"}
{"timestamp":"2026-10-19T04:19:53.771Z","level":"log","context":"RouterExplorer","message":"Mapped {/domains/:id, GET} route"}
{"timestamp":"2026-10-19T04:19:53.771Z","level":"log","context":"RouterExplorer","message":"Mapped {/domains, POST} route"}
{"timestamp":"2026-10-19T04:19:53.772Z","level":"log","context":"RouterExplorer","message":"Mapped {/domains/:id, PUT} route"}
{"timestamp":"2026-10-19T04:19:53.772Z","level":"log","context":"RouterExplorer","message":"Mapped {/domains/:id, DELETE} route"}
{"timestamp":"2026-10-19T04:19:53.772Z","level":"log","context":"RouterExplorer","message":"Mapped {/domains/seed, POST} route"}
{"timestamp":"2026-10-19T04:19:53.772Z","level":"log","context":"RoutesResolver","message":"MspSubscriptionController {/msp-subscription}:"}
{"timestamp":"2026-10-19T04:19:53.772Z","level":"log","context":"RouterExplorer","message":"Mapped {/msp-subscription/current, GET} route"}
{"timestamp":"2026-10-19T04:19:53.772Z","level":"log","context":"RouterExplorer","message":"Mapped {/msp-subscription/invoices, GET} route"}
{"timestamp":"2026-10-19T04:19:53.773Z","level":"log","context":"RouterExplorer","message":"Mapped {/msp-subscription/invoice/:invoiceId/pdf, GET} route"}
{"timestamp":"2026-10-19T04:19:53.773Z","level":"log","context":"RoutesResolver","message":"MspSubscriptionController {/api/msp-subscription}:"}
{"timestamp":"2026-10-19T04:19:53.773Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/msp-subscription/current, GET} route"}
{"timestamp":"2026-10-19T04:19:53.773Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/msp-subscription/invoices, GET} route"}
{"timestamp":"2026-10-19T04:19:53.773Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/msp-subscription/invoice/:invoiceId/pdf, GET} route"}
{"timestamp":"2026-10-19T04:19:53.851Z","level":"log","context":"NestApplication","message":"Nest application successfully started"}
{"timestamp":"2026-10-19T04:19:53.866Z","level":"log","context":"Bootstrap","message":"Users API successfully started on port 3842"}
{"timestamp":"2026-10-19T04:19:53.866Z","level":"log","context":"SeedService","message":"🌱 Starting database seeding..."}
{"timestamp":"2026-10-19T04:19:53.872Z","level":"log","context":"SeedService","message":"Admin account already exists, skipping seed"}
{"timestamp":"2026-10-19T04:19:53.875Z","level":"log","context":"SeedService","message":"Reseller account already exists, skipping seed"}
{"timestamp":"2026-10-19T04:19:53.877Z","level":"log","context":"SeedService","message":"MSP account already exists, skipping seed"}
{"timestamp":"2026-10-19T04:19:53.877Z","level":"log","context":"SeedService","message":"✅ Database seeding completed successfully"}
{"timestamp":"2026-10-19T04:19:53.911Z","level":"log","context":"UsersApiController","message":"Hello endpoint accessed"}
{"timestamp":"2026-10-19T08:49:41.987Z","level":"warn","context":"LegacyRouteConverter","message":"Unsupported route path: \"/lp/*\". In previous versions, the symbols ?, *, and + were used to denote optional or repeating path parameters. The latest version of \"path-to-regexp\" now requires the use of named parameters. For example, instead of using a route like /users/* to capture all routes starting with \"/users\", you should use /users/*path. For more details, refer to the migration guide. Attempting to auto-convert..."}
{"timestamp":"2026-10-19T08:49:42.022Z","level":"log","context":"Bootstrap","message":"Starting Users API on port 3842..."}
{"timestamp":"2026-10-19T08:49:42.025Z","level":"log","context":"RoutesResolver","message":"UsersApiController {/}:"}
{"timestamp":"2026-10-19T08:49:42.028Z","level":"log","context":"RouterExplorer","message":"Mapped {/, GET} route"}
{"timestamp":"2026-10-19T08:49:42.028Z","level":"log","context":"RoutesResolver","message":"AuthController {/auth}:"}
{"timestamp":"2026-10-19T08:49:42.029Z","level":"log","context":"RouterExplorer","message":"Mapped {/auth/login, POST} route"}
{"timestamp":"2026-10-19T08:49:42.029Z","level":"log","context":"RouterExplorer","message":"Mapped {/auth/admin/login, POST} route"}
{"timestamp":"2026-10-19T08:49:42.030Z","level":"log","context":"RouterExplorer","message":"Mapped {/auth/send-otp, POST} route"}
{"timestamp":"2026-10-19T08:49:42.030Z","level":"log","context":"RouterExplorer","message":"Mapped {/auth/verify-otp, POST} route"}
{"timestamp":"2026-10-19T08:49:42.031Z","level":"log","context":"RouterExplorer","message":"Mapped {/auth/signup, POST} route"}
{"timestamp":"2026-10-19T08:49:42.031Z","level":"log","context":"RouterExplorer","message":"Mapped {/auth/subscription-status, GET} route"}
{"timestamp":"2026-10-19T08:49:42.031Z","level":"log","context":"RoutesResolver","message":"AdminMspController {/admin/msp}:"}
{"timestamp":"2026-10-19T08:49:42.032Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/msp, GET} route"}
{"timestamp":"2026-10-19T08:49:42.032Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/msp/:id, GET} route"}
{"timestamp":"2026-10-19T08:49:42.033Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/msp, POST} route"}
{"timestamp":"2026-10-19T08:49:42.033Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/msp/:id, PUT} route"}
{"timestamp":"2026-10-19T08:49:42.033Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/msp/:id, DELETE} route"}
{"timestamp":"2026-10-19T08:49:42.033Z","level":"log","context":"RoutesResolver","message":"AdminLicenseController {/admin/licenses}:"}
{"timestamp":"2026-10-19T08:49:42.034Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/licenses/summary, GET} route"}
{"timestamp":"2026-10-19T08:49:42.034Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/licenses/msp/:mspId, GET} route"}
{"timestamp":"2026-10-19T08:49:42.034Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/licenses/msp/:mspId, PUT} route"}
{"timestamp":"2026-10-19T08:49:42.034Z","level":"log","context":"RoutesResolver","message":"AdminImpersonationController {/admin/impersonation}:"}
{"timestamp":"2026-10-19T08:49:42.034Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/impersonation/msp-users, GET} route"}
{"timestamp":"2026-10-19T08:49:42.035Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/impersonation/impersonate, POST} route"}
{"timestamp":"2026-10-19T08:49:42.035Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/impersonation/stop, POST} route"}
{"timestamp":"2026-10-19T08:49:42.035Z","level":"log","context":"RoutesResolver","message":"AdminAiUsageController {/admin/ai-usage}:"}
{"timestamp":"2026-10-19T08:49:42.035Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-usage, GET} route"}
{"timestamp":"2026-10-19T08:49:42.036Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-usage/business/:businessId, GET} route"}
{"timestamp":"2026-10-19T08:49:42.036Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-usage/report/monthly, GET} route"}
{"timestamp":"2026-10-19T08:49:42.036Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-usage/pricing, GET} route"}
{"timestamp":"2026-10-19T08:49:42.036Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-usage/pricing, POST} route"}
{"timestamp":"2026-10-19T08:49:42.036Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-usage/credit/:businessId, PUT} route"}
{"timestamp":"2026-10-19T08:49:42.036Z","level":"log","context":"RoutesResolver","message":"AdminAiUsageController {/api/admin/ai-usage}:"}
{"timestamp":"2026-10-19T08:49:42.037Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-usage, GET} route"}
{"timestamp":"2026-10-19T08:49:42.037Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-usage/business/:businessId, GET} route"}
{"timestamp":"2026-10-19T08:49:42.037Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-usage/report/monthly, GET} route"}
{"timestamp":"2026-10-19T08:49:42.037Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-usage/pricing, GET} route"}
{"timestamp":"2026-10-19T08:49:42.037Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-usage/pricing, POST} route"}
{"timestamp":"2026-10-19T08:49:42.037Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-usage/credit/:businessId, PUT} route"}
{"timestamp":"2026-10-19T08:49:42.038Z","level":"log","context":"RoutesResolver","message":"AdminAiModelController {/admin/ai-models}:"}
{"timestamp":"2026-10-19T08:49:42.038Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models, POST} route"}
{"timestamp":"2026-10-19T08:49:42.038Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models, GET} route"}
{"timestamp":"2026-10-19T08:49:42.038Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/default, GET} route"}
{"timestamp":"2026-10-19T08:49:42.038Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/:id, GET} route"}
{"timestamp":"2026-10-19T08:49:42.038Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/:id, PUT} route"}
{"timestamp":"2026-10-19T08:49:42.039Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/:id, DELETE} route"}
{"timestamp":"2026-10-19T08:49:42.039Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/:id/set-default, POST} route"}
{"timestamp":"2026-10-19T08:49:42.039Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/assign-to-business, POST} route"}
{"timestamp":"2026-10-19T08:49:42.039Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/business/:businessId, GET} route"}
{"timestamp":"2026-10-19T08:49:42.039Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/:id/businesses, GET} route"}
{"timestamp":"2026-10-19T08:49:42.040Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/initialize-defaults, POST} route"}
{"timestamp":"2026-10-19T08:49:42.040Z","level":"log","context":"RoutesResolver","message":"AdminAiModelController {/api/admin/ai-models}:"}
{"timestamp":"2026-10-19T08:49:42.040Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models, POST} route"}
{"timestamp":"2026-10-19T08:49:42.040Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models, GET} route"}
{"timestamp":"2026-10-19T08:49:42.040Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/default, GET} route"}
{"timestamp":"2026-10-19T08:49:42.040Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/:id, GET} route"}
{"timestamp":"2026-10-19T08:49:42.041Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/:id, PUT} route"}
{"timestamp":"2026-10-19T08:49:42.041Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/:id, DELETE} route"}
{"timestamp":"2026-10-19T08:49:42.041Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/:id/set-default, POST} route"}
{"timestamp":"2026-10-19T08:49:42.041Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/assign-to-business, POST} route"}
{"timestamp":"2026-10-19T08:49:42.041Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/business/:businessId, GET} route"}
{"timestamp":"2026-10-19T08:49:42.041Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/:id/businesses, GET} route"}
{"timestamp":"2026-10-19T08:49:42.041Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/initialize-defaults, POST} route"}
{"timestamp":"2026-10-19T08:49:42.042Z","level":"log","context":"RoutesResolver","message":"AdminBusinessController {/admin/businesses}:"}
{"timestamp":"2026-10-19T08:49:42.042Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/businesses, GET} route"}
{"timestamp":"2026-10-19T08:49:42.042Z","level":"log","context":"RoutesResolver","message":"ResellerManagementController {/admin/resellers}:"}
{"timestamp":"2026-10-19T08:49:42.042Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/resellers, GET} route"}
{"timestamp":"2026-10-19T08:49:42.042Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/resellers/create-default, POST} route"}
{"timestamp":"2026-10-19T08:49:42.042Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/resellers, POST} route"}
{"timestamp":"2026-10-19T08:49:42.043Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/resellers/:id/toggle-status, PUT} route"}
{"timestamp":"2026-10-19T08:49:42.043Z","level":"log","context":"RoutesResolver","message":"SubscriptionController {/subscription}:"}
{"timestamp":"2026-10-19T08:49:42.043Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/plans, GET} route"}
{"timestamp":"2026-10-19T08:49:42.043Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/calculate-price, POST} route"}
{"timestamp":"2026-10-19T08:49:42.043Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/current, GET} route"}
{"timestamp":"2026-10-19T08:49:42.043Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/create, POST} route"}
{"timestamp":"2026-10-19T08:49:42.043Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/:id, PUT} route"}
{"timestamp":"2026-10-19T08:49:42.044Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/:id/cancel, DELETE} route"}
{"timestamp":"2026-10-19T08:49:42.044Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/sync/:stripeSubscriptionId, POST} route"}
{"timestamp":"2026-10-19T08:49:42.044Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/payments, GET} route"}
{"timestamp":"2026-10-19T08:49:42.044Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/payments/stats, GET} route"}
{"timestamp":"2026-10-19T08:49:42.044Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/payment/:id, GET} route"}
{"timestamp":"2026-10-19T08:49:42.044Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/payment-methods/attach, POST} route"}
{"timestamp":"2026-10-19T08:49:42.045Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/payment-methods/:paymentMethodId, DELETE} route"}
{"timestamp":"2026-10-19T08:49:42.045Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/payment-methods, GET} route"}
{"timestamp":"2026-10-19T08:49:42.045Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/setup-intent, POST} route"}
{"timestamp":"2026-10-19T08:49:42.045Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/update-employee-count, POST} route"}
{"timestamp":"2026-10-19T08:49:42.045Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/retry-payment/:subscriptionId, POST} route"}
{"timestamp":"2026-10-19T08:49:42.045Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/invoice/:invoiceId/pdf, GET} route"}
{"timestamp":"2026-10-19T08:49:42.045Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/preview-upgrade, POST} route"}
{"timestamp":"2026-10-19T08:49:42.045Z","level":"log","context":"RoutesResolver","message":"SubscriptionController {/api/subscription}:"}
{"timestamp":"2026-10-19T08:49:42.046Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/plans, GET} route"}
{"timestamp":"2026-10-19T08:49:42.046Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/calculate-price, POST} route"}
{"timestamp":"2026-10-19T08:49:42.046Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/current, GET} route"}
{"timestamp":"2026-10-19T08:49:42.046Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/create, POST} route"}
{"timestamp":"2026-10-19T08:49:42.046Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/:id, PUT} route"}
{"timestamp":"2026-10-19T08:49:42.046Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/:id/cancel, DELETE} route"}
{"timestamp":"2026-10-19T08:49:42.047Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/sync/:stripeSubscriptionId, POST} route"}
{"timestamp":"2026-10-19T08:49:42.047Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/payments, GET} route"}
{"timestamp":"2026-10-19T08:49:42.047Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/payments/stats, GET} route"}
{"timestamp":"2026-10-19T08:49:42.047Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/payment/:id, GET} route"}
{"timestamp":"2026-10-19T08:49:42.047Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/payment-methods/attach, POST} route"}
{"timestamp":"2026-10-19T08:49:42.047Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/payment-methods/:paymentMethodId, DELETE} route"}
{"timestamp":"2026-10-19T08:49:42.047Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/payment-methods, GET} route"}
{"timestamp":"2026-10-19T08:49:42.048Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/setup-intent, POST} route"}
{"timestamp":"2026-10-19T08:49:42.048Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/update-employee-count, POST} route"}
{"timestamp":"2026-10-19T08:49:42.048Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/retry-payment/:subscriptionId, POST} route"}
{"timestamp":"2026-10-19T08:49:42.048Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/invoice/:invoiceId/pdf, GET} route"}
{"timestamp":"2026-10-19T08:49:42.048Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/preview-upgrade, POST} route"}
{"timestamp":"2026-10-19T08:49:42.048Z","level":"log","context":"RoutesResolver","message":"StripeWebhookController {/stripe/webhook}:"}
{"timestamp":"2026-10-19T08:49:42.048Z","level":"log","context":"RouterExplorer","message":"Mapped {/stripe/webhook/test, GET} route"}
{"timestamp":"2026-10-19T08:49:42.048Z","level":"log","context":"RouterExplorer","message":"Mapped {/stripe/webhook, POST} route"}
{"timestamp":"2026-10-19T08:49:42.048Z","level":"log","context":"RoutesResolver","message":"EmailController {/email-templates}:"}
{"timestamp":"2026-10-19T08:49:42.049Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates/test, POST} route"}
{"timestamp":"2026-10-19T08:49:42.049Z","level":"log","context":"RoutesResolver","message":"EmployeeController {/employees}:"}
{"timestamp":"2026-10-19T08:49:42.049Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees, POST} route"}
{"timestamp":"2026-10-19T08:49:42.049Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees, GET} route"}
{"timestamp":"2026-10-19T08:49:42.049Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees/export, GET} route"}
{"timestamp":"2026-10-19T08:49:42.049Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees/risk-stats, GET} route"}
{"timestamp":"2026-10-19T08:49:42.050Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees/:id, GET} route"}
{"timestamp":"2026-10-19T08:49:42.050Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees/:id, PUT} route"}
{"timestamp":"2026-10-19T08:49:42.050Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees/:id, DELETE} route"}
{"timestamp":"2026-10-19T08:49:42.050Z","level":"log","context":"RoutesResolver","message":"GroupController {/groups}:"}
{"timestamp":"2026-10-19T08:49:42.050Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups, POST} route"}
{"timestamp":"2026-10-19T08:49:42.050Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups, GET} route"}
{"timestamp":"2026-10-19T08:49:42.050Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups/standard, GET} route"}
{"timestamp":"2026-10-19T08:49:42.050Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups/:id, GET} route"}
{"timestamp":"2026-10-19T08:49:42.051Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups/:id, PUT} route"}
{"timestamp":"2026-10-19T08:49:42.051Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups/:id, DELETE} route"}
{"timestamp":"2026-10-19T08:49:42.051Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups/:id/info, GET} route"}
{"timestamp":"2026-10-19T08:49:42.051Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups/:id/with-employees, GET} route"}
{"timestamp":"2026-10-19T08:49:42.051Z","level":"log","context":"RoutesResolver","message":"SenderProfileController {/sender-profiles}:"}
{"timestamp":"2026-10-19T08:49:42.051Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles, GET} route"}
{"timestamp":"2026-10-19T08:49:42.051Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles/:id, GET} route"}
{"timestamp":"2026-10-19T08:49:42.052Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles, POST} route"}
{"timestamp":"2026-10-19T08:49:42.052Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles/:id, PUT} route"}
{"timestamp":"2026-10-19T08:49:42.052Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles/:id, DELETE} route"}
{"timestamp":"2026-10-19T08:49:42.052Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles/:id/verify-domain, POST} route"}
{"timestamp":"2026-10-19T08:49:42.052Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles/domain-verification, GET} route"}
{"timestamp":"2026-10-19T08:49:42.052Z","level":"log","context":"RoutesResolver","message":"EmailTemplateController {/email-templates}:"}
{"timestamp":"2026-10-19T08:49:42.052Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates, GET} route"}
{"timestamp":"2026-10-19T08:49:42.053Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates/:id, GET} route"}
{"timestamp":"2026-10-19T08:49:42.053Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates, POST} route"}
{"timestamp":"2026-10-19T08:49:42.053Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates/:id, PUT} route"}
{"timestamp":"2026-10-19T08:49:42.053Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates/:id, DELETE} route"}
{"timestamp":"2026-10-19T08:49:42.053Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates/:id/duplicate, POST} route"}
{"timestamp":"2026-10-19T08:49:42.053Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates/:id/preview, GET} route"}
{"timestamp":"2026-10-19T08:49:42.053Z","level":"log","context":"RoutesResolver","message":"ScenarioController {/scenarios}:"}
{"timestamp":"2026-10-19T08:49:42.054Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios, POST} route"}
{"timestamp":"2026-10-19T08:49:42.054Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios/generate-content, POST} route"}
{"timestamp":"2026-10-19T08:49:42.054Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios, GET} route"}
{"timestamp":"2026-10-19T08:49:42.054Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios/:id, GET} route"}
{"timestamp":"2026-10-19T08:49:42.054Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios/:id, PUT} route"}
{"timestamp":"2026-10-19T08:49:42.054Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios/:id, DELETE} route"}
{"timestamp":"2026-10-19T08:49:42.054Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios/generate-from-json, POST} route"}
{"timestamp":"2026-10-19T08:49:42.055Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios/:id/save-as-custom-scenario, POST} route"}
{"timestamp":"2026-10-19T08:49:42.055Z","level":"log","context":"RoutesResolver","message":"CampaignController {/campaigns}:"}
{"timestamp":"2026-10-19T08:49:42.055Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns, POST} route"}
{"timestamp":"2026-10-19T08:49:42.055Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns, GET} route"}
{"timestamp":"2026-10-19T08:49:42.055Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id, GET} route"}
{"timestamp":"2026-10-19T08:49:42.055Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id/details, GET} route"}
{"timestamp":"2026-10-19T08:49:42.055Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id/employees, GET} route"}
{"timestamp":"2026-10-19T08:49:42.056Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id, PATCH} route"}
{"timestamp":"2026-10-19T08:49:42.056Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id/start, POST} route"}
{"timestamp":"2026-10-19T08:49:42.056Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id/stop, POST} route"}
{"timestamp":"2026-10-19T08:49:42.056Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id/duplicate, POST} route"}
{"timestamp":"2026-10-19T08:49:42.056Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id, DELETE} route"}
{"timestamp":"2026-10-19T08:49:42.056Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/auto-generate-program, POST} route"}
{"timestamp":"2026-10-19T08:49:42.057Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/generate-from-threat-intelligence, POST} route"}
{"timestamp":"2026-10-19T08:49:42.057Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id/risk-score, GET} route"}
{"timestamp":"2026-10-19T08:49:42.057Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/recalculate-risk-scores, POST} route"}
{"timestamp":"2026-10-19T08:49:42.057Z","level":"log","context":"RoutesResolver","message":"CampaignController {/api/campaigns}:"}
{"timestamp":"2026-10-19T08:49:42.057Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns, POST} route"}
{"timestamp":"2026-10-19T08:49:42.057Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns, GET} route"}
{"timestamp":"2026-10-19T08:49:42.057Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id, GET} route"}
{"timestamp":"2026-10-19T08:49:42.058Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id/details, GET} route"}
{"timestamp":"2026-10-19T08:49:42.058Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id/employees, GET} route"}
{"timestamp":"2026-10-19T08:49:42.058Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id, PATCH} route"}
{"timestamp":"2026-10-19T08:49:42.058Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id/start, POST} route"}
{"timestamp":"2026-10-19T08:49:42.058Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id/stop, POST} route"}
{"timestamp":"2026-10-19T08:49:42.058Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id/duplicate, POST} route"}
{"timestamp":"2026-10-19T08:49:42.058Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id, DELETE} route"}
{"timestamp":"2026-10-19T08:49:42.058Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/auto-generate-program, POST} route"}
{"timestamp":"2026-10-19T08:49:42.059Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/generate-from-threat-intelligence, POST} route"}
{"timestamp":"2026-10-19T08:49:42.059Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id/risk-score, GET} route"}
{"timestamp":"2026-10-19T08:49:42.059Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/recalculate-risk-scores, POST} route"}
{"timestamp":"2026-10-19T08:49:42.059Z","level":"log","context":"RoutesResolver","message":"NotificationsController {/notifications}:"}
{"timestamp":"2026-10-19T08:49:42.059Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications, POST} route"}
{"timestamp":"2026-10-19T08:49:42.059Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications, GET} route"}
{"timestamp":"2026-10-19T08:49:42.059Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/unread, GET} route"}
{"timestamp":"2026-10-19T08:49:42.060Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/unread-count, GET} route"}
{"timestamp":"2026-10-19T08:49:42.060Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/:id, GET} route"}
{"timestamp":"2026-10-19T08:49:42.060Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/:id, PATCH} route"}
{"timestamp":"2026-10-19T08:49:42.060Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/:id/read, PATCH} route"}
{"timestamp":"2026-10-19T08:49:42.060Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/mark-all-read, PATCH} route"}
{"timestamp":"2026-10-19T08:49:42.061Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/:id, DELETE} route"}
{"timestamp":"2026-10-19T08:49:42.061Z","level":"log","context":"RoutesResolver","message":"LandingPageController {/lp}:"}
{"timestamp":"2026-10-19T08:49:42.061Z","level":"log","context":"RouterExplorer","message":"Mapped {/lp/image, GET} route"}
{"timestamp":"2026-10-19T08:49:42.061Z","level":"log","context":"RouterExplorer","message":"Mapped {/lp/learning, GET} route"}
{"timestamp":"2026-10-19T08:49:42.061Z","level":"log","context":"RouterExplorer","message":"Mapped {/lp/submit, POST} route"}
{"timestamp":"2026-10-19T08:49:42.061Z","level":"log","context":"RouterExplorer","message":"Mapped {/lp/test, GET} route"}
{"timestamp":"2026-10-19T08:49:42.061Z","level":"warn","context":"LegacyRouteConverter","message":"Unsupported route path: \"/lp/*\". In previous versions, the symbols ?, *, and + were used to denote optional or repeating path parameters. The latest version of \"path-to-regexp\" now requires the use of named parameters. For example, instead of using a route like /users/* to capture all routes starting with \"/users\", you should use /users/*path. For more details, refer to the migration guide. Attempting to auto-convert..."}
{"timestamp":"2026-10-19T08:49:42.062Z","level":"log","context":"RouterExplorer","message":"Mapped {/lp/*, ALL} route"}
{"timestamp":"2026-10-19T08:49:42.062Z","level":"log","context":"RoutesResolver","message":"SupportController {/support}:"}
{"timestamp":"2026-10-19T08:49:42.062Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets, POST} route"}
{"timestamp":"2026-10-19T08:49:42.063Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets, GET} route"}
{"timestamp":"2026-10-19T08:49:42.063Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets/:id, GET} route"}
{"timestamp":"2026-10-19T08:49:42.063Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets/:id, PATCH} route"}
{"timestamp":"2026-10-19T08:49:42.063Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets/:id, DELETE} route"}
{"timestamp":"2026-10-19T08:49:42.063Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets/:id/messages, POST} route"}
{"timestamp":"2026-10-19T08:49:42.063Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets/:id/close, POST} route"}
{"timestamp":"2026-10-19T08:49:42.063Z","level":"log","context":"RoutesResolver","message":"BusninessMetricsController {/business-metrics}:"}
{"timestamp":"2026-10-19T08:49:42.064Z","level":"log","context":"RouterExplorer","message":"Mapped {/business-metrics, GET} route"}
{"timestamp":"2026-10-19T08:49:42.064Z","level":"log","context":"RoutesResolver","message":"UsersController {/users}:"}
{"timestamp":"2026-10-19T08:49:42.064Z","level":"log","context":"RouterExplorer","message":"Mapped {/users/:id, PUT} route"}
{"timestamp":"2026-10-19T08:49:42.064Z","level":"log","context":"RouterExplorer","message":"Mapped {/users/settings, GET} route"}
{"timestamp":"2026-10-19T08:49:42.064Z","level":"log","context":"RouterExplorer","message":"Mapped {/users/settings/general, PUT} route"}
{"timestamp":"2026-10-19T08:49:42.064Z","level":"log","context":"RouterExplorer","message":"Mapped {/users/company/settings, PUT} route"}
{"timestamp":"2026-10-19T08:49:42.065Z","level":"log","context":"RouterExplorer","message":"Mapped {/users/change-password, POST} route"}
{"timestamp":"2026-10-19T08:49:42.065Z","level":"log","context":"RouterExplorer","message":"Mapped {/users/localization/settings, PUT} route"}
{"timestamp":"2026-10-19T08:49:42.065Z","level":"log","context":"RoutesResolver","message":"PartnerController {/partner}:"}
{"timestamp":"2026-10-19T08:49:42.065Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses, POST} route"}
{"timestamp":"2026-10-19T08:49:42.065Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses, GET} route"}
{"timestamp":"2026-10-19T08:49:42.065Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses/:id, GET} route"}
{"timestamp":"2026-10-19T08:49:42.065Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses/:id, PUT} route"}
{"timestamp":"2026-10-19T08:49:42.066Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses/:id, DELETE} route"}
{"timestamp":"2026-10-19T08:49:42.066Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses/:id/impersonate, POST} route"}
{"timestamp":"2026-10-19T08:49:42.066Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses/stop-impersonation, POST} route"}
{"timestamp":"2026-10-19T08:49:42.066Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/license-usage, GET} route"}
{"timestamp":"2026-10-19T08:49:42.066Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/invoices, POST} route"}
{"timestamp":"2026-10-19T08:49:42.066Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/invoices, GET} route"}
{"timestamp":"2026-10-19T08:49:42.067Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/invoices/:id, GET} route"}
{"timestamp":"2026-10-19T08:49:42.067Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/invoices/:id, PUT} route"}
{"timestamp":"2026-10-19T08:49:42.067Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/invoices/:id, DELETE} route"}
{"timestamp":"2026-10-19T08:49:42.067Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/invoices/:id/mark-paid, PUT} route"}
{"timestamp":"2026-10-19T08:49:42.067Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/onboarding/generate-token, POST} route"}
{"timestamp":"2026-10-19T08:49:42.067Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/dashboard, GET} route"}
{"timestamp":"2026-10-19T08:49:42.067Z","level":"log","context":"RoutesResolver","message":"MspSubscriptionController {/partner/msp-subscriptions}:"}
{"timestamp":"2026-10-19T08:49:42.068Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/plans, POST} route"}
{"timestamp":"2026-10-19T08:49:42.068Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/plans, GET} route"}
{"timestamp":"2026-10-19T08:49:42.068Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/plans/:planId, GET} route"}
{"timestamp":"2026-10-19T08:49:42.068Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/plans/:planId, PUT} route"}
{"timestamp":"2026-10-19T08:49:42.068Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/plans/:planId, DELETE} route"}
{"timestamp":"2026-10-19T08:49:42.068Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/businesses/:businessId/subscription, POST} route"}
{"timestamp":"2026-10-19T08:49:42.068Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions, GET} route"}
{"timestamp":"2026-10-19T08:49:42.069Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/businesses/:businessId/subscription, GET} route"}
{"timestamp":"2026-10-19T08:49:42.069Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/businesses/:businessId/subscription, PUT} route"}
{"timestamp":"2026-10-19T08:49:42.069Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/businesses/:businessId/subscription, DELETE} route"}
{"timestamp":"2026-10-19T08:49:42.069Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/businesses/:businessId/subscription/limits, GET} route"}
{"timestamp":"2026-10-19T08:49:42.069Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/businesses/:businessId/subscription/change-plan, PUT} route"}
{"timestamp":"2026-10-19T08:49:42.069Z","level":"log","context":"RoutesResolver","message":"OnboardingController {/onboarding}:"}
{"timestamp":"2026-10-19T08:49:42.069Z","level":"log","context":"RouterExplorer","message":"Mapped {/onboarding/validate/:token, GET} route"}
{"timestamp":"2026-10-19T08:49:42.070Z","level":"log","context":"RouterExplorer","message":"Mapped {/onboarding/complete/:token, POST} route"}
{"timestamp":"2026-10-19T08:49:42.070Z","level":"log","context":"RoutesResolver","message":"ResellerController {/reseller}:"}
{"timestamp":"2026-10-19T08:49:42.070Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/businesses, POST} route"}
{"timestamp":"2026-10-19T08:49:42.070Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/businesses, GET} route"}
{"timestamp":"2026-10-19T08:49:42.070Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/businesses/:id, GET} route"}
{"timestamp":"2026-10-19T08:49:42.070Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/businesses/:id, PUT} route"}
{"timestamp":"2026-10-19T08:49:42.071Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/businesses/:id, DELETE} route"}
{"timestamp":"2026-10-19T08:49:42.071Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/license-usage, GET} route"}
{"timestamp":"2026-10-19T08:49:42.071Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/invoices, POST} route"}
{"timestamp":"2026-10-19T08:49:42.071Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/invoices, GET} route"}
{"timestamp":"2026-10-19T08:49:42.071Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/invoices/:id, GET} route"}
{"timestamp":"2026-10-19T08:49:42.071Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/invoices/:id, PUT} route"}
{"timestamp":"2026-10-19T08:49:42.071Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/invoices/:id, DELETE} route"}
{"timestamp":"2026-10-19T08:49:42.072Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/invoices/:id/mark-paid, PUT} route"}
{"timestamp":"2026-10-19T08:49:42.072Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/onboarding/generate-token, POST} route"}
{"timestamp":"2026-10-19T08:49:42.072Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/dashboard, GET} route"}
{"timestamp":"2026-10-19T08:49:42.072Z","level":"log","context":"RoutesResolver","message":"ResellerSubscriptionController {/reseller}:"}
{"timestamp":"2026-10-19T08:49:42.072Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/plans, POST} route"}
{"timestamp":"2026-10-19T08:49:42.072Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/plans, GET} route"}
{"timestamp":"2026-10-19T08:49:42.072Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/plans/:planId, GET} route"}
{"timestamp":"2026-10-19T08:49:42.073Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/plans/:planId, PUT} route"}
{"timestamp":"2026-10-19T08:49:42.073Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/plans/:planId, DELETE} route"}
{"timestamp":"2026-10-19T08:49:42.073Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/subscriptions/businesses/:businessId/subscription, POST} route"}
{"timestamp":"2026-10-19T08:49:42.073Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/subscriptions, GET} route"}
{"timestamp":"2026-10-19T08:49:42.073Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/subscriptions/businesses/:businessId/subscription, GET} route"}
{"timestamp":"2026-10-19T08:49:42.073Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/subscriptions/businesses/:businessId/subscription, PUT} route"}
{"timestamp":"2026-10-19T08:49:42.074Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/subscriptions/businesses/:businessId/subscription, DELETE} route"}
{"timestamp":"2026-10-19T08:49:42.074Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/subscriptions/businesses/:businessId/subscription/limits, GET} route"}
{"timestamp":"2026-10-19T08:49:42.074Z","level":"log","context":"RoutesResolver","message":"HealthController {/health}:"}
{"timestamp":"2026-10-19T08:49:42.074Z","level":"log","context":"RouterExplorer","message":"Mapped {/health, GET} route"}
{"timestamp":"2026-10-19T08:49:42.074Z","level":"log","context":"RouterExplorer","message":"Mapped {/health/test-logs, GET} route"}
{"timestamp":"2026-10-19T08:49:42.074Z","level":"log","context":"RoutesResolver","message":"AzureAdController {/azure-ad}:"}
{"timestamp":"2026-10-19T08:49:42.074Z","level":"log","context":"RouterExplorer","message":"Mapped {/azure-ad/config, POST} route"}
{"timestamp":"2026-10-19T08:49:42.075Z","level":"log","context":"RouterExplorer","message":"Mapped {/azure-ad/config, GET} route"}
{"timestamp":"2026-10-19T08:49:42.075Z","level":"log","context":"RouterExplorer","message":"Mapped {/azure-ad/test-connection, POST} route"}
{"timestamp":"2026-10-19T08:49:42.075Z","level":"log","context":"RouterExplorer","message":"Mapped {/azure-ad/sync, POST} route"}
{"timestamp":"2026-10-19T08:49:42.075Z","level":"log","context":"RoutesResolver","message":"ThreatsController {/threats}:"}
{"timestamp":"2026-10-19T08:49:42.075Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats, POST} route"}
{"timestamp":"2026-10-19T08:49:42.075Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats, GET} route"}
{"timestamp":"2026-10-19T08:49:42.075Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/chart-data, GET} route"}
{"timestamp":"2026-10-19T08:49:42.076Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/claude-search, POST} route"}
{"timestamp":"2026-10-19T08:49:42.076Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/claude-latest, POST} route"}
{"timestamp":"2026-10-19T08:49:42.076Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/claude-trending, POST} route"}
{"timestamp":"2026-10-19T08:49:42.076Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/claude-categories, POST} route"}
{"timestamp":"2026-10-19T08:49:42.076Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/claude-manual-search, POST} route"}
{"timestamp":"2026-10-19T08:49:42.076Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/claude-quick-search, POST} route"}
{"timestamp":"2026-10-19T08:49:42.076Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/scheduler-status, GET} route"}
{"timestamp":"2026-10-19T08:49:42.077Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/health-check, GET} route"}
{"timestamp":"2026-10-19T08:49:42.077Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/pause-scheduler, POST} route"}
{"timestamp":"2026-10-19T08:49:42.077Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/:id, GET} route"}
{"timestamp":"2026-10-19T08:49:42.077Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/:id, PATCH} route"}
{"timestamp":"2026-10-19T08:49:42.077Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/:id, DELETE} route"}
{"timestamp":"2026-10-19T08:49:42.077Z","level":"log","context":"RoutesResolver","message":"DomainController {/domains}:"}
{"timestamp":"2026-10-19T08:49:42.078Z","level":"log","context":"RouterExplorer","message":"Mapped {/domains, GET} route"}
{"timestamp":"2026-10-19T08:49:42.078Z","level":"log","context":"RouterExplorer","message":"Mapped {/domains/:id, GET} route"}
{"timestamp":"2026-10-19T08:49:42.078Z","level":"log","context":"RouterExplorer","message":"Mapped {/domains, POST} route"}
{"timestamp":"2026-10-19T08:49:42.078Z","level":"log","context":"RouterExplorer","message":"Mapped {/domains/:id, PUT} route"}
{"timestamp":"2026-10-19T08:49:42.078Z","level":"log","context":"RouterExplorer","message":"Mapped {/domains/:id, DELETE} route"}
{"timestamp":"2026-10-19T08:49:42.078Z","level":"log","context":"RouterExplorer","message":"Mapped {/domains/seed, POST} route"}
{"timestamp":"2026-10-19T08:49:42.078Z","level":"log","context":"RoutesResolver","message":"MspSubscriptionController {/msp-subscription}:"}
{"timestamp":"2026-10-19T08:49:42.078Z","level":"log","context":"RouterExplorer","message":"Mapped {/msp-subscription/current, GET} route"}
{"timestamp":"2026-10-19T08:49:42.079Z","level":"log","context":"RouterExplorer","message":"Mapped {/msp-subscription/invoices, GET} route"}
{"timestamp":"2026-10-19T08:49:42.079Z","level":"log","context":"RouterExplorer","message":"Mapped {/msp-subscription/invoice/:invoiceId/pdf, GET} route"}
{"timestamp":"2026-10-19T08:49:42.079Z","level":"log","context":"RoutesResolver","message":"MspSubscriptionController {/api/msp-subscription}:"}
{"timestamp":"2026-10-19T08:49:42.079Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/msp-subscription/current, GET} route"}
{"timestamp":"2026-10-19T08:49:42.079Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/msp-subscription/invoices, GET} route"}
{"timestamp":"2026-10-19T08:49:42.079Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/msp-subscription/invoice/:invoiceId/pdf, GET} route"}
{"timestamp":"2026-10-19T08:49:42.144Z","level":"log","context":"NestApplication","message":"Nest application successfully started"}
{"timestamp":"2026-10-19T08:49:42.167Z","level":"log","context":"Bootstrap","message":"Users API successfully started on port 3842"}
{"timestamp":"2026-10-19T08:49:42.167Z","level":"log","context":"SeedService","message":"🌱 Starting database seeding..."}
{"timestamp":"2026-10-19T08:49:42.170Z","level":"log","context":"SeedService","message":"Admin account already exists, skipping seed"}
{"timestamp":"2026-10-19T08:49:42.172Z","level":"log","context":"SeedService","message":"Reseller account already exists, skipping seed"}
{"timestamp":"2026-10-19T08:49:42.173Z","level":"log","context":"SeedService","message":"MSP account already exists, skipping seed"}
{"timestamp":"2026-10-19T08:49:42.173Z","level":"log","context":"SeedService","message":"✅ Database seeding completed successfully"}
{"timestamp":"2026-10-19T09:36:16.360Z","level":"warn","context":"LegacyRouteConverter","message":"Unsupported route path: \"/lp/*\". In previous versions, the symbols ?, *, and + were used to denote optional or repeating path parameters. The latest version of \"path-to-regexp\" now requires the use of named parameters. For example, instead of using a route like /users/* to capture all routes starting with \"/users\", you should use /users/*path. For more details, refer to the migration guide. Attempting to auto-convert..."}
{"timestamp":"2026-10-19T09:36:16.394Z","level":"log","context":"Bootstrap","message":"Starting Users API on port 3842..."}
{"timestamp":"2026-10-19T09:36:16.397Z","level":"log","context":"RoutesResolver","message":"UsersApiController {/}:"}
{"timestamp":"2026-10-19T09:36:16.400Z","level":"log","context":"RouterExplorer","message":"Mapped {/, GET} route"}
{"timestamp":"2026-10-19T09:36:16.401Z","level":"log","context":"RoutesResolver","message":"AuthController {/auth}:"}
{"timestamp":"2026-10-19T09:36:16.401Z","level":"log","context":"RouterExplorer","message":"Mapped {/auth/login, POST} route"}
{"timestamp":"2026-10-19T09:36:16.402Z","level":"log","context":"RouterExplorer","message":"Mapped {/auth/admin/login, POST} route"}
{"timestamp":"2026-10-19T09:36:16.402Z","level":"log","context":"RouterExplorer","message":"Mapped {/auth/send-otp, POST} route"}
{"timestamp":"2026-10-19T09:36:16.402Z","level":"log","context":"RouterExplorer","message":"Mapped {/auth/verify-otp, POST} route"}
{"timestamp":"2026-10-19T09:36:16.403Z","level":"log","context":"RouterExplorer","message":"Mapped {/auth/signup, POST} route"}
{"timestamp":"2026-10-19T09:36:16.403Z","level":"log","context":"RouterExplorer","message":"Mapped {/auth/subscription-status, GET} route"}
{"timestamp":"2026-10-19T09:36:16.403Z","level":"log","context":"RoutesResolver","message":"AdminMspController {/admin/msp}:"}
{"timestamp":"2026-10-19T09:36:16.404Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/msp, GET} route"}
{"timestamp":"2026-10-19T09:36:16.405Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/msp/:id, GET} route"}
{"timestamp":"2026-10-19T09:36:16.405Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/msp, POST} route"}
{"timestamp":"2026-10-19T09:36:16.405Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/msp/:id, PUT} route"}
{"timestamp":"2026-10-19T09:36:16.406Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/msp/:id, DELETE} route"}
{"timestamp":"2026-10-19T09:36:16.406Z","level":"log","context":"RoutesResolver","message":"AdminLicenseController {/admin/licenses}:"}
{"timestamp":"2026-10-19T09:36:16.406Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/licenses/summary, GET} route"}
{"timestamp":"2026-10-19T09:36:16.406Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/licenses/msp/:mspId, GET} route"}
{"timestamp":"2026-10-19T09:36:16.407Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/licenses/msp/:mspId, PUT} route"}
{"timestamp":"2026-10-19T09:36:16.407Z","level":"log","context":"RoutesResolver","message":"AdminImpersonationController {/admin/impersonation}:"}
{"timestamp":"2026-10-19T09:36:16.407Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/impersonation/msp-users, GET} route"}
{"timestamp":"2026-10-19T09:36:16.407Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/impersonation/impersonate, POST} route"}
{"timestamp":"2026-10-19T09:36:16.410Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/impersonation/stop, POST} route"}
{"timestamp":"2026-10-19T09:36:16.410Z","level":"log","context":"RoutesResolver","message":"AdminAiUsageController {/admin/ai-usage}:"}
{"timestamp":"2026-10-19T09:36:16.410Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-usage, GET} route"}
{"timestamp":"2026-10-19T09:36:16.411Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-usage/business/:businessId, GET} route"}
{"timestamp":"2026-10-19T09:36:16.411Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-usage/report/monthly, GET} route"}
{"timestamp":"2026-10-19T09:36:16.411Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-usage/pricing, GET} route"}
{"timestamp":"2026-10-19T09:36:16.411Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-usage/pricing, POST} route"}
{"timestamp":"2026-10-19T09:36:16.411Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-usage/credit/:businessId, PUT} route"}
{"timestamp":"2026-10-19T09:36:16.411Z","level":"log","context":"RoutesResolver","message":"AdminAiUsageController {/api/admin/ai-usage}:"}
{"timestamp":"2026-10-19T09:36:16.412Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-usage, GET} route"}
{"timestamp":"2026-10-19T09:36:16.412Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-usage/business/:businessId, GET} route"}
{"timestamp":"2026-10-19T09:36:16.412Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-usage/report/monthly, GET} route"}
{"timestamp":"2026-10-19T09:36:16.412Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-usage/pricing, GET} route"}
{"timestamp":"2026-10-19T09:36:16.412Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-usage/pricing, POST} route"}
{"timestamp":"2026-10-19T09:36:16.413Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-usage/credit/:businessId, PUT} route"}
{"timestamp":"2026-10-19T09:36:16.413Z","level":"log","context":"RoutesResolver","message":"AdminAiModelController {/admin/ai-models}:"}
{"timestamp":"2026-10-19T09:36:16.413Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models, POST} route"}
{"timestamp":"2026-10-19T09:36:16.413Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models, GET} route"}
{"timestamp":"2026-10-19T09:36:16.413Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/default, GET} route"}
{"timestamp":"2026-10-19T09:36:16.413Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/:id, GET} route"}
{"timestamp":"2026-10-19T09:36:16.413Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/:id, PUT} route"}
{"timestamp":"2026-10-19T09:36:16.414Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/:id, DELETE} route"}
{"timestamp":"2026-10-19T09:36:16.414Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/:id/set-default, POST} route"}
{"timestamp":"2026-10-19T09:36:16.414Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/assign-to-business, POST} route"}
{"timestamp":"2026-10-19T09:36:16.414Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/business/:businessId, GET} route"}
{"timestamp":"2026-10-19T09:36:16.414Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/:id/businesses, GET} route"}
{"timestamp":"2026-10-19T09:36:16.415Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/initialize-defaults, POST} route"}
{"timestamp":"2026-10-19T09:36:16.415Z","level":"log","context":"RoutesResolver","message":"AdminAiModelController {/api/admin/ai-models}:"}
{"timestamp":"2026-10-19T09:36:16.415Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models, POST} route"}
{"timestamp":"2026-10-19T09:36:16.415Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models, GET} route"}
{"timestamp":"2026-10-19T09:36:16.415Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/default, GET} route"}
{"timestamp":"2026-10-19T09:36:16.415Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/:id, GET} route"}
{"timestamp":"2026-10-19T09:36:16.415Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/:id, PUT} route"}
{"timestamp":"2026-10-19T09:36:16.416Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/:id, DELETE} route"}
{"timestamp":"2026-10-19T09:36:16.416Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/:id/set-default, POST} route"}
{"timestamp":"2026-10-19T09:36:16.416Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/assign-to-business, POST} route"}
{"timestamp":"2026-10-19T09:36:16.416Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/business/:businessId, GET} route"}
{"timestamp":"2026-10-19T09:36:16.416Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/:id/businesses, GET} route"}
{"timestamp":"2026-10-19T09:36:16.416Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/initialize-defaults, POST} route"}
{"timestamp":"2026-10-19T09:36:16.417Z","level":"log","context":"RoutesResolver","message":"AdminBusinessController {/admin/businesses}:"}
{"timestamp":"2026-10-19T09:36:16.417Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/businesses, GET} route"}
{"timestamp":"2026-10-19T09:36:16.417Z","level":"log","context":"RoutesResolver","message":"ResellerManagementController {/admin/resellers}:"}
{"timestamp":"2026-10-19T09:36:16.417Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/resellers, GET} route"}
{"timestamp":"2026-10-19T09:36:16.417Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/resellers/create-default, POST} route"}
{"timestamp":"2026-10-19T09:36:16.417Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/resellers, POST} route"}
{"timestamp":"2026-10-19T09:36:16.418Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/resellers/:id/toggle-status, PUT} route"}
{"timestamp":"2026-10-19T09:36:16.418Z","level":"log","context":"RoutesResolver","message":"SubscriptionController {/subscription}:"}
{"timestamp":"2026-10-19T09:36:16.418Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/plans, GET} route"}
{"timestamp":"2026-10-19T09:36:16.418Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/calculate-price, POST} route"}
{"timestamp":"2026-10-19T09:36:16.418Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/current, GET} route"}
{"timestamp":"2026-10-19T09:36:16.418Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/create, POST} route"}
{"timestamp":"2026-10-19T09:36:16.418Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/:id, PUT} route"}
{"timestamp":"2026-10-19T09:36:16.419Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/:id/cancel, DELETE} route"}
{"timestamp":"2026-10-19T09:36:16.419Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/sync/:stripeSubscriptionId, POST} route"}
{"timestamp":"2026-10-19T09:36:16.419Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/payments, GET} route"}
{"timestamp":"2026-10-19T09:36:16.419Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/payments/stats, GET} route"}
{"timestamp":"2026-10-19T09:36:16.419Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/payment/:id, GET} route"}
{"timestamp":"2026-10-19T09:36:16.419Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/payment-methods/attach, POST} route"}
{"timestamp":"2026-10-19T09:36:16.420Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/payment-methods/:paymentMethodId, DELETE} route"}
{"timestamp":"2026-10-19T09:36:16.420Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/payment-methods, GET} route"}
{"timestamp":"2026-10-19T09:36:16.420Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/setup-intent, POST} route"}
{"timestamp":"2026-10-19T09:36:16.420Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/update-employee-count, POST} route"}
{"timestamp":"2026-10-19T09:36:16.420Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/retry-payment/:subscriptionId, POST} route"}
{"timestamp":"2026-10-19T09:36:16.420Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/invoice/:invoiceId/pdf, GET} route"}
{"timestamp":"2026-10-19T09:36:16.420Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/preview-upgrade, POST} route"}
{"timestamp":"2026-10-19T09:36:16.420Z","level":"log","context":"RoutesResolver","message":"SubscriptionController {/api/subscription}:"}
{"timestamp":"2026-10-19T09:36:16.421Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/plans, GET} route"}
{"timestamp":"2026-10-19T09:36:16.421Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/calculate-price, POST} route"}
{"timestamp":"2026-10-19T09:36:16.421Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/current, GET} route"}
{"timestamp":"2026-10-19T09:36:16.421Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/create, POST} route"}
{"timestamp":"2026-10-19T09:36:16.421Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/:id, PUT} route"}
{"timestamp":"2026-10-19T09:36:16.421Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/:id/cancel, DELETE} route"}
{"timestamp":"2026-10-19T09:36:16.422Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/sync/:stripeSubscriptionId, POST} route"}
{"timestamp":"2026-10-19T09:36:16.422Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/payments, GET} route"}
{"timestamp":"2026-10-19T09:36:16.422Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/payments/stats, GET} route"}
{"timestamp":"2026-10-19T09:36:16.422Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/payment/:id, GET} route"}
{"timestamp":"2026-10-19T09:36:16.422Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/payment-methods/attach, POST} route"}
{"timestamp":"2026-10-19T09:36:16.422Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/payment-methods/:paymentMethodId, DELETE} route"}
{"timestamp":"2026-10-19T09:36:16.422Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/payment-methods, GET} route"}
{"timestamp":"2026-10-19T09:36:16.422Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/setup-intent, POST} route"}
{"timestamp":"2026-10-19T09:36:16.423Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/update-employee-count, POST} route"}
{"timestamp":"2026-10-19T09:36:16.423Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/retry-payment/:subscriptionId, POST} route"}
{"timestamp":"2026-10-19T09:36:16.423Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/invoice/:invoiceId/pdf, GET} route"}
{"timestamp":"2026-10-19T09:36:16.423Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/preview-upgrade, POST} route"}
{"timestamp":"2026-10-19T09:36:16.423Z","level":"log","context":"RoutesResolver","message":"StripeWebhookController {/stripe/webhook}:"}
{"timestamp":"2026-10-19T09:36:16.423Z","level":"log","context":"RouterExplorer","message":"Mapped {/stripe/webhook/test, GET} route"}
{"timestamp":"2026-10-19T09:36:16.423Z","level":"log","context":"RouterExplorer","message":"Mapped {/stripe/webhook, POST} route"}
{"timestamp":"2026-10-19T09:36:16.423Z","level":"log","context":"RoutesResolver","message":"EmailController {/email-templates}:"}
{"timestamp":"2026-10-19T09:36:16.424Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates/test, POST} route"}
{"timestamp":"2026-10-19T09:36:16.424Z","level":"log","context":"RoutesResolver","message":"EmployeeController {/employees}:"}
{"timestamp":"2026-10-19T09:36:16.424Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees, POST} route"}
{"timestamp":"2026-10-19T09:36:16.424Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees, GET} route"}
{"timestamp":"2026-10-19T09:36:16.424Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees/export, GET} route"}
{"timestamp":"2026-10-19T09:36:16.424Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees/risk-stats, GET} route"}
{"timestamp":"2026-10-19T09:36:16.424Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees/:id, GET} route"}
{"timestamp":"2026-10-19T09:36:16.425Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees/:id, PUT} route"}
{"timestamp":"2026-10-19T09:36:16.425Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees/:id, DELETE} route"}
{"timestamp":"2026-10-19T09:36:16.425Z","level":"log","context":"RoutesResolver","message":"GroupController {/groups}:"}
{"timestamp":"2026-10-19T09:36:16.425Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups, POST} route"}
{"timestamp":"2026-10-19T09:36:16.425Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups, GET} route"}
{"timestamp":"2026-10-19T09:36:16.425Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups/standard, GET} route"}
{"timestamp":"2026-10-19T09:36:16.425Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups/:id, GET} route"}
{"timestamp":"2026-10-19T09:36:16.426Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups/:id, PUT} route"}
{"timestamp":"2026-10-19T09:36:16.426Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups/:id, DELETE} route"}
{"timestamp":"2026-10-19T09:36:16.426Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups/:id/info, GET} route"}
{"timestamp":"2026-10-19T09:36:16.426Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups/:id/with-employees, GET} route"}
{"timestamp":"2026-10-19T09:36:16.426Z","level":"log","context":"RoutesResolver","message":"SenderProfileController {/sender-profiles}:"}
{"timestamp":"2026-10-19T09:36:16.426Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles, GET} route"}
{"timestamp":"2026-10-19T09:36:16.426Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles/:id, GET} route"}
{"timestamp":"2026-10-19T09:36:16.427Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles, POST} route"}
{"timestamp":"2026-10-19T09:36:16.427Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles/:id, PUT} route"}
{"timestamp":"2026-10-19T09:36:16.427Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles/:id, DELETE} route"}
{"timestamp":"2026-10-19T09:36:16.427Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles/:id/verify-domain, POST} route"}
{"timestamp":"2026-10-19T09:36:16.427Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles/domain-verification, GET} route"}
{"timestamp":"2026-10-19T09:36:16.427Z","level":"log","context":"RoutesResolver","message":"EmailTemplateController {/email-templates}:"}
{"timestamp":"2026-10-19T09:36:16.427Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates, GET} route"}
{"timestamp":"2026-10-19T09:36:16.428Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates/:id, GET} route"}
{"timestamp":"2026-10-19T09:36:16.428Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates, POST} route"}
{"timestamp":"2026-10-19T09:36:16.428Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates/:id, PUT} route"}
{"timestamp":"2026-10-19T09:36:16.428Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates/:id, DELETE} route"}
{"timestamp":"2026-10-19T09:36:16.428Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates/:id/duplicate, POST} route"}
{"timestamp":"2026-10-19T09:36:16.428Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates/:id/preview, GET} route"}
{"timestamp":"2026-10-19T09:36:16.428Z","level":"log","context":"RoutesResolver","message":"ScenarioController {/scenarios}:"}
{"timestamp":"2026-10-19T09:36:16.429Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios, POST} route"}
{"timestamp":"2026-10-19T09:36:16.429Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios/generate-content, POST} route"}
{"timestamp":"2026-10-19T09:36:16.429Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios, GET} route"}
{"timestamp":"2026-10-19T09:36:16.429Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios/:id, GET} route"}
{"timestamp":"2026-10-19T09:36:16.429Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios/:id, PUT} route"}
{"timestamp":"2026-10-19T09:36:16.429Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios/:id, DELETE} route"}
{"timestamp":"2026-10-19T09:36:16.429Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios/generate-from-json, POST} route"}
{"timestamp":"2026-10-19T09:36:16.430Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios/:id/save-as-custom-scenario, POST} route"}
{"timestamp":"2026-10-19T09:36:16.430Z","level":"log","context":"RoutesResolver","message":"CampaignController {/campaigns}:"}
{"timestamp":"2026-10-19T09:36:16.430Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns, POST} route"}
{"timestamp":"2026-10-19T09:36:16.430Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns, GET} route"}
{"timestamp":"2026-10-19T09:36:16.430Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id, GET} route"}
{"timestamp":"2026-10-19T09:36:16.430Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id/details, GET} route"}
{"timestamp":"2026-10-19T09:36:16.430Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id/employees, GET} route"}
{"timestamp":"2026-10-19T09:36:16.431Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id, PATCH} route"}
{"timestamp":"2026-10-19T09:36:16.431Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id/start, POST} route"}
{"timestamp":"2026-10-19T09:36:16.431Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id/stop, POST} route"}
{"timestamp":"2026-10-19T09:36:16.431Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id/duplicate, POST} route"}
{"timestamp":"2026-10-19T09:36:16.431Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id, DELETE} route"}
{"timestamp":"2026-10-19T09:36:16.431Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/auto-generate-program, POST} route"}
{"timestamp":"2026-10-19T09:36:16.432Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/generate-from-threat-intelligence, POST} route"}
{"timestamp":"2026-10-19T09:36:16.432Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id/risk-score, GET} route"}
{"timestamp":"2026-10-19T09:36:16.432Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/recalculate-risk-scores, POST} route"}
{"timestamp":"2026-10-19T09:36:16.432Z","level":"log","context":"RoutesResolver","message":"CampaignController {/api/campaigns}:"}
{"timestamp":"2026-10-19T09:36:16.432Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns, POST} route"}
{"timestamp":"2026-10-19T09:36:16.432Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns, GET} route"}
{"timestamp":"2026-10-19T09:36:16.432Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id, GET} route"}
{"timestamp":"2026-10-19T09:36:16.433Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id/details, GET} route"}
{"timestamp":"2026-10-19T09:36:16.433Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id/employees, GET} route"}
{"timestamp":"2026-10-19T09:36:16.433Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id, PATCH} route"}
{"timestamp":"2026-10-19T09:36:16.433Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id/start, POST} route"}
{"timestamp":"2026-10-19T09:36:16.433Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id/stop, POST} route"}
{"timestamp":"2026-10-19T09:36:16.433Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id/duplicate, POST} route"}
{"timestamp":"2026-10-19T09:36:16.433Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id, DELETE} route"}
{"timestamp":"2026-10-19T09:36:16.434Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/auto-generate-program, POST} route"}
{"timestamp":"2026-10-19T09:36:16.434Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/generate-from-threat-intelligence, POST} route"}
{"timestamp":"2026-10-19T09:36:16.434Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id/risk-score, GET} route"}
{"timestamp":"2026-10-19T09:36:16.434Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/recalculate-risk-scores, POST} route"}
{"timestamp":"2026-10-19T09:36:16.434Z","level":"log","context":"RoutesResolver","message":"NotificationsController {/notifications}:"}
{"timestamp":"2026-10-19T09:36:16.434Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications, POST} route"}
{"timestamp":"2026-10-19T09:36:16.435Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications, GET} route"}
{"timestamp":"2026-10-19T09:36:16.435Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/unread, GET} route"}
{"timestamp":"2026-10-19T09:36:16.435Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/unread-count, GET} route"}
{"timestamp":"2026-10-19T09:36:16.435Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/:id, GET} route"}
{"timestamp":"2026-10-19T09:36:16.435Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/:id, PATCH} route"}
{"timestamp":"2026-10-19T09:36:16.435Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/:id/read, PATCH} route"}
{"timestamp":"2026-10-19T09:36:16.436Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/mark-all-read, PATCH} route"}
{"timestamp":"2026-10-19T09:36:16.436Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/:id, DELETE} route"}
{"timestamp":"2026-10-19T09:36:16.436Z","level":"log","context":"RoutesResolver","message":"LandingPageController {/lp}:"}
{"timestamp":"2026-10-19T09:36:16.436Z","level":"log","context":"RouterExplorer","message":"Mapped {/lp/image, GET} route"}
{"timestamp":"2026-10-19T09:36:16.436Z","level":"log","context":"RouterExplorer","message":"Mapped {/lp/learning, GET} route"}
{"timestamp":"2026-10-19T09:36:16.437Z","level":"log","context":"RouterExplorer","message":"Mapped {/lp/submit, POST} route"}
{"timestamp":"2026-10-19T09:36:16.437Z","level":"log","context":"RouterExplorer","message":"Mapped {/lp/test, GET} route"}
{"timestamp":"2026-10-19T09:36:16.437Z","level":"warn","context":"LegacyRouteConverter","message":"Unsupported route path: \"/lp/*\". In previous versions, the symbols ?, *, and + were used to denote optional or repeating path parameters. The latest version of \"path-to-regexp\" now requires the use of named parameters. For example, instead of using a route like /users/* to capture all routes starting with \"/users\", you should use /users/*path. For more details, refer to the migration guide. Attempting to auto-convert..."}
{"timestamp":"2026-10-19T09:36:16.438Z","level":"log","context":"RouterExplorer","message":"Mapped {/lp/*, ALL} route"}
{"timestamp":"2026-10-19T09:36:16.438Z","level":"log","context":"RoutesResolver","message":"SupportController {/support}:"}
{"timestamp":"2026-10-19T09:36:16.438Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets, POST} route"}
{"timestamp":"2026-10-19T09:36:16.438Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets, GET} route"}
{"timestamp":"2026-10-19T09:36:16.438Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets/:id, GET} route"}
{"timestamp":"2026-10-19T09:36:16.439Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets/:id, PATCH} route"}
{"timestamp":"2026-10-19T09:36:16.439Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets/:id, DELETE} route"}
{"timestamp":"2026-10-19T09:36:16.439Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets/:id/messages, POST} route"}
{"timestamp":"2026-10-19T09:36:16.439Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets/:id/close, POST} route"}
{"timestamp":"2026-10-19T09:36:16.439Z","level":"log","context":"RoutesResolver","message":"BusninessMetricsController {/business-metrics}:"}
{"timestamp":"2026-10-19T09:36:16.439Z","level":"log","context":"RouterExplorer","message":"Mapped {/business-metrics, GET} route"}
{"timestamp":"2026-10-19T09:36:16.439Z","level":"log","context":"RoutesResolver","message":"UsersController {/users}:"}
{"timestamp":"2026-10-19T09:36:16.440Z","level":"log","context":"RouterExplorer","message":"Mapped {/users/:id, PUT} route"}
{"timestamp":"2026-10-19T09:36:16.440Z","level":"log","context":"RouterExplorer","message":"Mapped {/users/settings, GET} route"}
{"timestamp":"2026-10-19T09:36:16.440Z","level":"log","context":"RouterExplorer","message":"Mapped {/users/settings/general, PUT} route"}
{"timestamp":"2026-10-19T09:36:16.440Z","level":"log","context":"RouterExplorer","message":"Mapped {/users/company/settings, PUT} route"}
{"timestamp":"2026-10-19T09:36:16.440Z","level":"log","context":"RouterExplorer","message":"Mapped {/users/change-password, POST} route"}
{"timestamp":"2026-10-19T09:36:16.440Z","level":"log","context":"RouterExplorer","message":"Mapped {/users/localization/settings, PUT} route"}
{"timestamp":"2026-10-19T09:36:16.441Z","level":"log","context":"RoutesResolver","message":"PartnerController {/partner}:"}
{"timestamp":"2026-10-19T09:36:16.441Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses, POST} route"}
{"timestamp":"2026-10-19T09:36:16.441Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses, GET} route"}
{"timestamp":"2026-10-19T09:36:16.441Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses/:id, GET} route"}
{"timestamp":"2026-10-19T09:36:16.441Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses/:id, PUT} route"}
{"timestamp":"2026-10-19T09:36:16.441Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses/:id, DELETE} route"}
{"timestamp":"2026-10-19T09:36:16.442Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses/:id/impersonate, POST} route"}
{"timestamp":"2026-10-19T09:36:16.442Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses/stop-impersonation, POST} route"}
{"timestamp":"2026-10-19T09:36:16.442Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/license-usage, GET} route"}
{"timestamp":"2026-10-19T09:36:16.442Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/invoices, POST} route"}
{"timestamp":"2026-10-19T09:36:16.442Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/invoices, GET} route"}
{"timestamp":"2026-10-19T09:36:16.442Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/invoices/:id, GET} route"}
{"timestamp":"2026-10-19T09:36:16.443Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/invoices/:id, PUT} route"}
{"timestamp":"2026-10-19T09:36:16.443Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/invoices/:id, DELETE} route"}
{"timestamp":"2026-10-19T09:36:16.443Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/invoices/:id/mark-paid, PUT} route"}
{"timestamp":"2026-10-19T09:36:16.443Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/onboarding/generate-token, POST} route"}
{"timestamp":"2026-10-19T09:36:16.443Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/dashboard, GET} route"}
{"timestamp":"2026-10-19T09:36:16.443Z","level":"log","context":"RoutesResolver","message":"MspSubscriptionController {/partner/msp-subscriptions}:"}
{"timestamp":"2026-10-19T09:36:16.443Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/plans, POST} route"}
{"timestamp":"2026-10-19T09:36:16.444Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/plans, GET} route"}
{"timestamp":"2026-10-19T09:36:16.444Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/plans/:planId, GET} route"}
{"timestamp":"2026-10-19T09:36:16.444Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/plans/:planId, PUT} route"}
{"timestamp":"2026-10-19T09:36:16.444Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/plans/:planId, DELETE} route"}
{"timestamp":"2026-10-19T09:36:16.444Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/businesses/:businessId/subscription, POST} route"}
{"timestamp":"2026-10-19T09:36:16.444Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions, GET} route"}
{"timestamp":"2026-10-19T09:36:16.444Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/businesses/:businessId/subscription, GET} route"}
{"timestamp":"2026-10-19T09:36:16.445Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/businesses/:businessId/subscription, PUT} route"}
{"timestamp":"2026-10-19T09:36:16.445Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/businesses/:businessId/subscription, DELETE} route"}
{"timestamp":"2026-10-19T09:36:16.445Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/businesses/:businessId/subscription/limits, GET} route"}
{"timestamp":"2026-10-19T09:36:16.445Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/businesses/:businessId/subscription/change-plan, PUT} route"}
{"timestamp":"2026-10-19T09:36:16.445Z","level":"log","context":"RoutesResolver","message":"OnboardingController {/onboarding}:"}
{"timestamp":"2026-10-19T09:36:16.445Z","level":"log","context":"RouterExplorer","message":"Mapped {/onboarding/validate/:token, GET} route"}
{"timestamp":"2026-10-19T09:36:16.445Z","level":"log","context":"RouterExplorer","message":"Mapped {/onboarding/complete/:token, POST} route"}
{"timestamp":"2026-10-19T09:36:16.446Z","level":"log","context":"RoutesResolver","message":"ResellerController {/reseller}:"}
{"timestamp":"2026-10-19T09:36:16.446Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/businesses, POST} route"}
{"timestamp":"2026-10-19T09:36:16.446Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/businesses, GET} route"}
{"timestamp":"2026-10-19T09:36:16.446Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/businesses/:id, GET} route"}
{"timestamp":"2026-10-19T09:36:16.446Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/businesses/:id, PUT} route"}
{"timestamp":"2026-10-19T09:36:16.446Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/businesses/:id, DELETE} route"}
{"timestamp":"2026-10-19T09:36:16.446Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/license-usage, GET} route"}
{"timestamp":"2026-10-19T09:36:16.447Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/invoices, POST} route"}
{"timestamp":"2026-10-19T09:36:16.447Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/invoices, GET} route"}
{"timestamp":"2026-10-19T09:36:16.447Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/invoices/:id, GET} route"}
{"timestamp":"2026-10-19T09:36:16.447Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/invoices/:id, PUT} route"}
{"timestamp":"2026-10-19T09:36:16.447Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/invoices/:id, DELETE} route"}
{"timestamp":"2026-10-19T09:36:16.447Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/invoices/:id/mark-paid, PUT} route"}
{"timestamp":"2026-10-19T09:36:16.447Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/onboarding/generate-token, POST} route"}
{"timestamp":"2026-10-19T09:36:16.448Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/dashboard, GET} route"}
{"timestamp":"2026-10-19T09:36:16.448Z","level":"log","context":"RoutesResolver","message":"ResellerSubscriptionController {/reseller}:"}
{"timestamp":"2026-10-19T09:36:16.448Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/plans, POST} route"}
{"timestamp":"2026-10-19T09:36:16.448Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/plans, GET} route"}
{"timestamp":"2026-10-19T09:36:16.448Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/plans/:planId, GET} route"}
{"timestamp":"2026-10-19T09:36:16.448Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/plans/:planId, PUT} route"}
{"timestamp":"2026-10-19T09:36:16.448Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/plans/:planId, DELETE} route"}
{"timestamp":"2026-10-19T09:36:16.449Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/subscriptions/businesses/:businessId/subscription, POST} route"}
{"timestamp":"2026-10-19T09:36:16.449Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/subscriptions, GET} route"}
{"timestamp":"2026-10-19T09:36:16.449Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/subscriptions/businesses/:businessId/subscription, GET} route"}
{"timestamp":"2026-10-19T09:36:16.449Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/subscriptions/businesses/:businessId/subscription, PUT} route"}
{"timestamp":"2026-10-19T09:36:16.449Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/subscriptions/businesses/:businessId/subscription, DELETE} route"}
{"timestamp":"2026-10-19T09:36:16.449Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/subscriptions/businesses/:businessId/subscription/limits, GET} route"}
{"timestamp":"2026-10-19T09:36:16.450Z","level":"log","context":"RoutesResolver","message":"HealthController {/health}:"}
{"timestamp":"2026-10-19T09:36:16.450Z","level":"log","context":"RouterExplorer","message":"Mapped {/health, GET} route"}
{"timestamp":"2026-10-19T09:36:16.450Z","level":"log","context":"RouterExplorer","message":"Mapped {/health/test-logs, GET} route"}
{"timestamp":"2026-10-19T09:36:16.450Z","level":"log","context":"RoutesResolver","message":"AzureAdController {/azure-ad}:"}
{"timestamp":"2026-10-19T09:36:16.450Z","level":"log","context":"RouterExplorer","message":"Mapped {/azure-ad/config, POST} route"}
{"timestamp":"2026-10-19T09:36:16.450Z","level":"log","context":"RouterExplorer","message":"Mapped {/azure-ad/config, GET} route"}
{"timestamp":"2026-10-19T09:36:16.450Z","level":"log","context":"RouterExplorer","message":"Mapped {/azure-ad/test-connection, POST} route"}
{"timestamp":"2026-10-19T09:36:16.450Z","level":"log","context":"RouterExplorer","message":"Mapped {/azure-ad/sync, POST} route"}
{"timestamp":"2026-10-19T09:36:16.450Z","level":"log","context":"RoutesResolver","message":"ThreatsController {/threats}:"}
{"timestamp":"2026-10-19T09:36:16.451Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats, POST} route"}
{"timestamp":"2026-10-19T09:36:16.451Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats, GET} route"}
{"timestamp":"2026-10-19T09:36:16.451Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/chart-data, GET} route"}
{"timestamp":"2026-10-19T09:36:16.451Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/claude-search, POST} route"}
{"timestamp":"2026-10-19T09:36:16.451Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/claude-latest, POST} route"}
{"timestamp":"2026-10-19T09:36:16.451Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/claude-trending, POST} route"}
{"timestamp":"2026-10-19T09:36:16.452Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/claude-categories, POST} route"}
{"timestamp":"2026-10-19T09:36:16.452Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/claude-manual-search, POST} route"}
{"timestamp":"2026-10-19T09:36:16.452Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/claude-quick-search, POST} route"}
{"timestamp":"2026-10-19T09:36:16.452Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/scheduler-status, GET} route"}
{"timestamp":"2026-10-19T09:36:16.452Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/health-check, GET} route"}
{"timestamp":"2026-10-19T09:36:16.452Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/pause-scheduler, POST} route"}
{"timestamp":"2026-10-19T09:36:16.452Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/:id, GET} route"}
{"timestamp":"2026-10-19T09:36:16.453Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/:id, PATCH} route"}
{"timestamp":"2026-10-19T09:36:16.453Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/:id, DELETE} route"}
{"timestamp":"2026-10-19T09:36:16.453Z","level":"log","context":"RoutesResolver","message":"DomainController {/domains}:"}
{"timestamp":"2026-10-19T09:36:16.453Z","level":"log","context":"RouterExplorer","message":"Mapped {/domains, GET} route"}
{"timestamp":"2026-10-19T09:36:16.453Z","level":"log","context":"RouterExplorer","message":"Mapped {/domains/:id, GET} route"}
{"timestamp":"2026-10-19T09:36:16.453Z","level":"log","context":"RouterExplorer","message":"Mapped {/domains, POST} route"}
{"timestamp":"2026-10-19T09:36:16.453Z","level":"log","context":"RouterExplorer","message":"Mapped {/domains/:id, PUT} route"}
{"timestamp":"2026-10-19T09:36:16.454Z","level":"log","context":"RouterExplorer","message":"Mapped {/domains/:id, DELETE} route"}
{"timestamp":"2026-10-19T09:36:16.454Z","level":"log","context":"RouterExplorer","message":"Mapped {/domains/seed, POST} route"}
{"timestamp":"2026-10-19T09:36:16.454Z","level":"log","context":"RoutesResolver","message":"MspSubscriptionController {/msp-subscription}:"}
{"timestamp":"2026-10-19T09:36:16.454Z","level":"log","context":"RouterExplorer","message":"Mapped {/msp-subscription/current, GET} route"}
{"timestamp":"2026-10-19T09:36:16.454Z","level":"log","context":"RouterExplorer","message":"Mapped {/msp-subscription/invoices, GET} route"}
{"timestamp":"2026-10-19T09:36:16.454Z","level":"log","context":"RouterExplorer","message":"Mapped {/msp-subscription/invoice/:invoiceId/pdf, GET} route"}
{"timestamp":"2026-10-19T09:36:16.454Z","level":"log","context":"RoutesResolver","message":"MspSubscriptionController {/api/msp-subscription}:"}
{"timestamp":"2026-10-19T09:36:16.454Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/msp-subscription/current, GET} route"}
{"timestamp":"2026-10-19T09:36:16.455Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/msp-subscription/invoices, GET} route"}
{"timestamp":"2026-10-19T09:36:16.455Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/msp-subscription/invoice/:invoiceId/pdf, GET} route"}
{"timestamp":"2026-10-19T09:36:16.522Z","level":"log","context":"NestApplication","message":"Nest application successfully started"}
{"timestamp":"2026-10-19T09:36:16.536Z","level":"log","context":"Bootstrap","message":"Users API successfully started on port 3842"}
{"timestamp":"2026-10-19T09:36:16.536Z","level":"log","context":"SeedService","message":"🌱 Starting database seeding..."}
{"timestamp":"2026-10-19T09:36:16.542Z","level":"log","context":"SeedService","message":"Admin account already exists, skipping seed"}
{"timestamp":"2026-10-19T09:36:16.544Z","level":"log","context":"SeedService","message":"Reseller account already exists, skipping seed"}
{"timestamp":"2026-10-19T09:36:16.546Z","level":"log","context":"SeedService","message":"MSP account already exists, skipping seed"}
{"timestamp":"2026-10-19T09:36:16.546Z","level":"log","context":"SeedService","message":"✅ Database seeding completed successfully"}
{"timestamp":"2026-10-19T10:58:51.852Z","level":"warn","context":"LegacyRouteConverter","message":"Unsupported route path: \"/lp/*\". In previous versions, the symbols ?, *, and + were used to denote optional or repeating path parameters. The latest version of \"path-to-regexp\" now requires the use of named parameters. For example, instead of using a route like /users/* to capture all routes starting with \"/users\", you should use /users/*path. For more details, refer to the migration guide. Attempting to auto-convert..."}
{"timestamp":"2026-10-19T10:58:51.886Z","level":"log","context":"Bootstrap","message":"Starting Users API on port 3842..."}
{"timestamp":"2026-10-19T10:58:51.889Z","level":"log","context":"RoutesResolver","message":"UsersApiController {/}:"}
{"timestamp":"2026-10-19T10:58:51.893Z","level":"log","context":"RouterExplorer","message":"Mapped {/, GET} route"}
{"timestamp":"2026-10-19T10:58:51.893Z","level":"log","context":"RoutesResolver","message":"AuthController {/auth}:"}
{"timestamp":"2026-10-19T10:58:51.894Z","level":"log","context":"RouterExplorer","message":"Mapped {/auth/login, POST} route"}
{"timestamp":"2026-10-19T10:58:51.894Z","level":"log","context":"RouterExplorer","message":"Mapped {/auth/admin/login, POST} route"}
{"timestamp":"2026-10-19T10:58:51.895Z","level":"log","context":"RouterExplorer","message":"Mapped {/auth/send-otp, POST} route"}
{"timestamp":"2026-10-19T10:58:51.895Z","level":"log","context":"RouterExplorer","message":"Mapped {/auth/verify-otp, POST} route"}
{"timestamp":"2026-10-19T10:58:51.895Z","level":"log","context":"RouterExplorer","message":"Mapped {/auth/signup, POST} route"}
{"timestamp":"2026-10-19T10:58:51.896Z","level":"log","context":"RouterExplorer","message":"Mapped {/auth/subscription-status, GET} route"}
{"timestamp":"2026-10-19T10:58:51.896Z","level":"log","context":"RoutesResolver","message":"AdminMspController {/admin/msp}:"}
{"timestamp":"2026-10-19T10:58:51.896Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/msp, GET} route"}
{"timestamp":"2026-10-19T10:58:51.897Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/msp/:id, GET} route"}
{"timestamp":"2026-10-19T10:58:51.898Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/msp, POST} route"}
{"timestamp":"2026-10-19T10:58:51.898Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/msp/:id, PUT} route"}
{"timestamp":"2026-10-19T10:58:51.898Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/msp/:id, DELETE} route"}
{"timestamp":"2026-10-19T10:58:51.898Z","level":"log","context":"RoutesResolver","message":"AdminLicenseController {/admin/licenses}:"}
{"timestamp":"2026-10-19T10:58:51.899Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/licenses/summary, GET} route"}
{"timestamp":"2026-10-19T10:58:51.899Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/licenses/msp/:mspId, GET} route"}
{"timestamp":"2026-10-19T10:58:51.899Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/licenses/msp/:mspId, PUT} route"}
{"timestamp":"2026-10-19T10:58:51.899Z","level":"log","context":"RoutesResolver","message":"AdminImpersonationController {/admin/impersonation}:"}
{"timestamp":"2026-10-19T10:58:51.900Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/impersonation/msp-users, GET} route"}
{"timestamp":"2026-10-19T10:58:51.902Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/impersonation/impersonate, POST} route"}
{"timestamp":"2026-10-19T10:58:51.902Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/impersonation/stop, POST} route"}
{"timestamp":"2026-10-19T10:58:51.903Z","level":"log","context":"RoutesResolver","message":"AdminAiUsageController {/admin/ai-usage}:"}
{"timestamp":"2026-10-19T10:58:51.903Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-usage, GET} route"}
{"timestamp":"2026-10-19T10:58:51.903Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-usage/business/:businessId, GET} route"}
{"timestamp":"2026-10-19T10:58:51.903Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-usage/report/monthly, GET} route"}
{"timestamp":"2026-10-19T10:58:51.903Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-usage/pricing, GET} route"}
{"timestamp":"2026-10-19T10:58:51.904Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-usage/pricing, POST} route"}
{"timestamp":"2026-10-19T10:58:51.904Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-usage/credit/:businessId, PUT} route"}
{"timestamp":"2026-10-19T10:58:51.904Z","level":"log","context":"RoutesResolver","message":"AdminAiUsageController {/api/admin/ai-usage}:"}
{"timestamp":"2026-10-19T10:58:51.904Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-usage, GET} route"}
{"timestamp":"2026-10-19T10:58:51.904Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-usage/business/:businessId, GET} route"}
{"timestamp":"2026-10-19T10:58:51.905Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-usage/report/monthly, GET} route"}
{"timestamp":"2026-10-19T10:58:51.905Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-usage/pricing, GET} route"}
{"timestamp":"2026-10-19T10:58:51.905Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-usage/pricing, POST} route"}
{"timestamp":"2026-10-19T10:58:51.905Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-usage/credit/:businessId, PUT} route"}
{"timestamp":"2026-10-19T10:58:51.905Z","level":"log","context":"RoutesResolver","message":"AdminAiModelController {/admin/ai-models}:"}
{"timestamp":"2026-10-19T10:58:51.905Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models, POST} route"}
{"timestamp":"2026-10-19T10:58:51.906Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models, GET} route"}
{"timestamp":"2026-10-19T10:58:51.906Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/default, GET} route"}
{"timestamp":"2026-10-19T10:58:51.906Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/:id, GET} route"}
{"timestamp":"2026-10-19T10:58:51.906Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/:id, PUT} route"}
{"timestamp":"2026-10-19T10:58:51.906Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/:id, DELETE} route"}
{"timestamp":"2026-10-19T10:58:51.906Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/:id/set-default, POST} route"}
{"timestamp":"2026-10-19T10:58:51.907Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/assign-to-business, POST} route"}
{"timestamp":"2026-10-19T10:58:51.907Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/business/:businessId, GET} route"}
{"timestamp":"2026-10-19T10:58:51.907Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/:id/businesses, GET} route"}
{"timestamp":"2026-10-19T10:58:51.907Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/initialize-defaults, POST} route"}
{"timestamp":"2026-10-19T10:58:51.907Z","level":"log","context":"RoutesResolver","message":"AdminAiModelController {/api/admin/ai-models}:"}
{"timestamp":"2026-10-19T10:58:51.908Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models, POST} route"}
{"timestamp":"2026-10-19T10:58:51.908Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models, GET} route"}
{"timestamp":"2026-10-19T10:58:51.908Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/default, GET} route"}
{"timestamp":"2026-10-19T10:58:51.908Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/:id, GET} route"}
{"timestamp":"2026-10-19T10:58:51.908Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/:id, PUT} route"}
{"timestamp":"2026-10-19T10:58:51.908Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/:id, DELETE} route"}
{"timestamp":"2026-10-19T10:58:51.909Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/:id/set-default, POST} route"}
{"timestamp":"2026-10-19T10:58:51.909Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/assign-to-business, POST} route"}
{"timestamp":"2026-10-19T10:58:51.909Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/business/:businessId, GET} route"}
{"timestamp":"2026-10-19T10:58:51.909Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/:id/businesses, GET} route"}
{"timestamp":"2026-10-19T10:58:51.909Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/initialize-defaults, POST} route"}
{"timestamp":"2026-10-19T10:58:51.909Z","level":"log","context":"RoutesResolver","message":"AdminBusinessController {/admin/businesses}:"}
{"timestamp":"2026-10-19T10:58:51.910Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/businesses, GET} route"}
{"timestamp":"2026-10-19T10:58:51.910Z","level":"log","context":"RoutesResolver","message":"ResellerManagementController {/admin/resellers}:"}
{"timestamp":"2026-10-19T10:58:51.910Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/resellers, GET} route"}
{"timestamp":"2026-10-19T10:58:51.910Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/resellers/create-default, POST} route"}
{"timestamp":"2026-10-19T10:58:51.910Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/resellers, POST} route"}
{"timestamp":"2026-10-19T10:58:51.910Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/resellers/:id/toggle-status, PUT} route"}
{"timestamp":"2026-10-19T10:58:51.910Z","level":"log","context":"RoutesResolver","message":"SubscriptionController {/subscription}:"}
{"timestamp":"2026-10-19T10:58:51.911Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/plans, GET} route"}
{"timestamp":"2026-10-19T10:58:51.911Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/calculate-price, POST} route"}
{"timestamp":"2026-10-19T10:58:51.911Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/current, GET} route"}
{"timestamp":"2026-10-19T10:58:51.911Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/create, POST} route"}
{"timestamp":"2026-10-19T10:58:51.911Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/:id, PUT} route"}
{"timestamp":"2026-10-19T10:58:51.911Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/:id/cancel, DELETE} route"}
{"timestamp":"2026-10-19T10:58:51.912Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/sync/:stripeSubscriptionId, POST} route"}
{"timestamp":"2026-10-19T10:58:51.912Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/payments, GET} route"}
{"timestamp":"2026-10-19T10:58:51.912Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/payments/stats, GET} route"}
{"timestamp":"2026-10-19T10:58:51.912Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/payment/:id, GET} route"}
{"timestamp":"2026-10-19T10:58:51.912Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/payment-methods/attach, POST} route"}
{"timestamp":"2026-10-19T10:58:51.912Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/payment-methods/:paymentMethodId, DELETE} route"}
{"timestamp":"2026-10-19T10:58:51.913Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/payment-methods, GET} route"}
{"timestamp":"2026-10-19T10:58:51.913Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/setup-intent, POST} route"}
{"timestamp":"2026-10-19T10:58:51.913Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/update-employee-count, POST} route"}
{"timestamp":"2026-10-19T10:58:51.913Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/retry-payment/:subscriptionId, POST} route"}
{"timestamp":"2026-10-19T10:58:51.913Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/invoice/:invoiceId/pdf, GET} route"}
{"timestamp":"2026-10-19T10:58:51.913Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/preview-upgrade, POST} route"}
{"timestamp":"2026-10-19T10:58:51.913Z","level":"log","context":"RoutesResolver","message":"SubscriptionController {/api/subscription}:"}
{"timestamp":"2026-10-19T10:58:51.914Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/plans, GET} route"}
{"timestamp":"2026-10-19T10:58:51.914Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/calculate-price, POST} route"}
{"timestamp":"2026-10-19T10:58:51.914Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/current, GET} route"}
{"timestamp":"2026-10-19T10:58:51.914Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/create, POST} route"}
{"timestamp":"2026-10-19T10:58:51.914Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/:id, PUT} route"}
{"timestamp":"2026-10-19T10:58:51.914Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/:id/cancel, DELETE} route"}
{"timestamp":"2026-10-19T10:58:51.914Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/sync/:stripeSubscriptionId, POST} route"}
{"timestamp":"2026-10-19T10:58:51.915Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/payments, GET} route"}
{"timestamp":"2026-10-19T10:58:51.915Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/payments/stats, GET} route"}
{"timestamp":"2026-10-19T10:58:51.915Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/payment/:id, GET} route"}
{"timestamp":"2026-10-19T10:58:51.915Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/payment-methods/attach, POST} route"}
{"timestamp":"2026-10-19T10:58:51.915Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/payment-methods/:paymentMethodId, DELETE} route"}
{"timestamp":"2026-10-19T10:58:51.915Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/payment-methods, GET} route"}
{"timestamp":"2026-10-19T10:58:51.915Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/setup-intent, POST} route"}
{"timestamp":"2026-10-19T10:58:51.916Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/update-employee-count, POST} route"}
{"timestamp":"2026-10-19T10:58:51.916Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/retry-payment/:subscriptionId, POST} route"}
{"timestamp":"2026-10-19T10:58:51.916Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/invoice/:invoiceId/pdf, GET} route"}
{"timestamp":"2026-10-19T10:58:51.916Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/preview-upgrade, POST} route"}
{"timestamp":"2026-10-19T10:58:51.916Z","level":"log","context":"RoutesResolver","message":"StripeWebhookController {/stripe/webhook}:"}
{"timestamp":"2026-10-19T10:58:51.916Z","level":"log","context":"RouterExplorer","message":"Mapped {/stripe/webhook/test, GET} route"}
{"timestamp":"2026-10-19T10:58:51.916Z","level":"log","context":"RouterExplorer","message":"Mapped {/stripe/webhook, POST} route"}
{"timestamp":"2026-10-19T10:58:51.916Z","level":"log","context":"RoutesResolver","message":"EmailController {/email-templates}:"}
{"timestamp":"2026-10-19T10:58:51.917Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates/test, POST} route"}
{"timestamp":"2026-10-19T10:58:51.917Z","level":"log","context":"RoutesResolver","message":"EmployeeController {/employees}:"}
{"timestamp":"2026-10-19T10:58:51.917Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees, POST} route"}
{"timestamp":"2026-10-19T10:58:51.917Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees, GET} route"}
{"timestamp":"2026-10-19T10:58:51.917Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees/export, GET} route"}
{"timestamp":"2026-10-19T10:58:51.917Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees/risk-stats, GET} route"}
{"timestamp":"2026-10-19T10:58:51.917Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees/:id, GET} route"}
{"timestamp":"2026-10-19T10:58:51.918Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees/:id, PUT} route"}
{"timestamp":"2026-10-19T10:58:51.918Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees/:id, DELETE} route"}
{"timestamp":"2026-10-19T10:58:51.918Z","level":"log","context":"RoutesResolver","message":"GroupController {/groups}:"}
{"timestamp":"2026-10-19T10:58:51.918Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups, POST} route"}
{"timestamp":"2026-10-19T10:58:51.918Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups, GET} route"}
{"timestamp":"2026-10-19T10:58:51.918Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups/standard, GET} route"}
{"timestamp":"2026-10-19T10:58:51.918Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups/:id, GET} route"}
{"timestamp":"2026-10-19T10:58:51.919Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups/:id, PUT} route"}
{"timestamp":"2026-10-19T10:58:51.919Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups/:id, DELETE} route"}
{"timestamp":"2026-10-19T10:58:51.919Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups/:id/info, GET} route"}
{"timestamp":"2026-10-19T10:58:51.919Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups/:id/with-employees, GET} route"}
{"timestamp":"2026-10-19T10:58:51.919Z","level":"log","context":"RoutesResolver","message":"SenderProfileController {/sender-profiles}:"}
{"timestamp":"2026-10-19T10:58:51.919Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles, GET} route"}
{"timestamp":"2026-10-19T10:58:51.919Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles/:id, GET} route"}
{"timestamp":"2026-10-19T10:58:51.920Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles, POST} route"}
{"timestamp":"2026-10-19T10:58:51.920Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles/:id, PUT} route"}
{"timestamp":"2026-10-19T10:58:51.920Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles/:id, DELETE} route"}
{"timestamp":"2026-10-19T10:58:51.920Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles/:id/verify-domain, POST} route"}
{"timestamp":"2026-10-19T10:58:51.920Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles/domain-verification, GET} route"}
{"timestamp":"2026-10-19T10:58:51.920Z","level":"log","context":"RoutesResolver","message":"EmailTemplateController {/email-templates}:"}
{"timestamp":"2026-10-19T10:58:51.920Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates, GET} route"}
{"timestamp":"2026-10-19T10:58:51.921Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates/:id, GET} route"}
{"timestamp":"2026-10-19T10:58:51.921Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates, POST} route"}
{"timestamp":"2026-10-19T10:58:51.921Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates/:id, PUT} route"}
{"timestamp":"2026-10-19T10:58:51.921Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates/:id, DELETE} route"}
{"timestamp":"2026-10-19T10:58:51.921Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates/:id/duplicate, POST} route"}
{"timestamp":"2026-10-19T10:58:51.921Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates/:id/preview, GET} route"}
{"timestamp":"2026-10-19T10:58:51.921Z","level":"log","context":"RoutesResolver","message":"ScenarioController {/scenarios}:"}
{"timestamp":"2026-10-19T10:58:51.922Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios, POST} route"}
{"timestamp":"2026-10-19T10:58:51.922Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios/generate-content, POST} route"}
{"timestamp":"2026-10-19T10:58:51.922Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios, GET} route"}
{"timestamp":"2026-10-19T10:58:51.922Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios/:id, GET} route"}
{"timestamp":"2026-10-19T10:58:51.922Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios/:id, PUT} route"}
{"timestamp":"2026-10-19T10:58:51.922Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios/:id, DELETE} route"}
{"timestamp":"2026-10-19T10:58:51.922Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios/generate-from-json, POST} route"}
{"timestamp":"2026-10-19T10:58:51.923Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios/:id/save-as-custom-scenario, POST} route"}
{"timestamp":"2026-10-19T10:58:51.923Z","level":"log","context":"RoutesResolver","message":"CampaignController {/campaigns}:"}
{"timestamp":"2026-10-19T10:58:51.923Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns, POST} route"}
{"timestamp":"2026-10-19T10:58:51.923Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns, GET} route"}
{"timestamp":"2026-10-19T10:58:51.923Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id, GET} route"}
{"timestamp":"2026-10-19T10:58:51.923Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id/details, GET} route"}
{"timestamp":"2026-10-19T10:58:51.923Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id/employees, GET} route"}
{"timestamp":"2026-10-19T10:58:51.924Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id, PATCH} route"}
{"timestamp":"2026-10-19T10:58:51.924Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id/start, POST} route"}
{"timestamp":"2026-10-19T10:58:51.924Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id/stop, POST} route"}
{"timestamp":"2026-10-19T10:58:51.924Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id/duplicate, POST} route"}
{"timestamp":"2026-10-19T10:58:51.924Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id, DELETE} route"}
{"timestamp":"2026-10-19T10:58:51.925Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/auto-generate-program, POST} route"}
{"timestamp":"2026-10-19T10:58:51.925Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/generate-from-threat-intelligence, POST} route"}
{"timestamp":"2026-10-19T10:58:51.925Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id/risk-score, GET} route"}
{"timestamp":"2026-10-19T10:58:51.925Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/recalculate-risk-scores, POST} route"}
{"timestamp":"2026-10-19T10:58:51.925Z","level":"log","context":"RoutesResolver","message":"CampaignController {/api/campaigns}:"}
{"timestamp":"2026-10-19T10:58:51.925Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns, POST} route"}
{"timestamp":"2026-10-19T10:58:51.925Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns, GET} route"}
{"timestamp":"2026-10-19T10:58:51.925Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id, GET} route"}
{"timestamp":"2026-10-19T10:58:51.926Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id/details, GET} route"}
{"timestamp":"2026-10-19T10:58:51.926Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id/employees, GET} route"}
{"timestamp":"2026-10-19T10:58:51.926Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id, PATCH} route"}
{"timestamp":"2026-10-19T10:58:51.926Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id/start, POST} route"}
{"timestamp":"2026-10-19T10:58:51.926Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id/stop, POST} route"}
{"timestamp":"2026-10-19T10:58:51.926Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id/duplicate, POST} route"}
{"timestamp":"2026-10-19T10:58:51.926Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id, DELETE} route"}
{"timestamp":"2026-10-19T10:58:51.927Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/auto-generate-program, POST} route"}
{"timestamp":"2026-10-19T10:58:51.927Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/generate-from-threat-intelligence, POST} route"}
{"timestamp":"2026-10-19T10:58:51.927Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id/risk-score, GET} route"}
{"timestamp":"2026-10-19T10:58:51.927Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/recalculate-risk-scores, POST} route"}
{"timestamp":"2026-10-19T10:58:51.927Z","level":"log","context":"RoutesResolver","message":"NotificationsController {/notifications}:"}
{"timestamp":"2026-10-19T10:58:51.927Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications, POST} route"}
{"timestamp":"2026-10-19T10:58:51.928Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications, GET} route"}
{"timestamp":"2026-10-19T10:58:51.928Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/unread, GET} route"}
{"timestamp":"2026-10-19T10:58:51.928Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/unread-count, GET} route"}
{"timestamp":"2026-10-19T10:58:51.928Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/:id, GET} route"}
{"timestamp":"2026-10-19T10:58:51.928Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/:id, PATCH} route"}
{"timestamp":"2026-10-19T10:58:51.928Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/:id/read, PATCH} route"}
{"timestamp":"2026-10-19T10:58:51.928Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/mark-all-read, PATCH} route"}
{"timestamp":"2026-10-19T10:58:51.929Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/:id, DELETE} route"}
{"timestamp":"2026-10-19T10:58:51.929Z","level":"log","context":"RoutesResolver","message":"LandingPageController {/lp}:"}
{"timestamp":"2026-10-19T10:58:51.929Z","level":"log","context":"RouterExplorer","message":"Mapped {/lp/image, GET} route"}
{"timestamp":"2026-10-19T10:58:51.929Z","level":"log","context":"RouterExplorer","message":"Mapped {/lp/learning, GET} route"}
{"timestamp":"2026-10-19T10:58:51.929Z","level":"log","context":"RouterExplorer","message":"Mapped {/lp/submit, POST} route"}
{"timestamp":"2026-10-19T10:58:51.929Z","level":"log","context":"RouterExplorer","message":"Mapped {/lp/test, GET} route"}
{"timestamp":"2026-10-19T10:58:51.930Z","level":"warn","context":"LegacyRouteConverter","message":"Unsupported route path: \"/lp/*\". In previous versions, the symbols ?, *, and + were used to denote optional or repeating path parameters. The latest version of \"path-to-regexp\" now requires the use of named parameters. For example, instead of using a route like /users/* to capture all routes starting with \"/users\", you should use /users/*path. For more details, refer to the migration guide. Attempting to auto-convert..."}
{"timestamp":"2026-10-19T10:58:51.930Z","level":"log","context":"RouterExplorer","message":"Mapped {/lp/*, ALL} route"}
{"timestamp":"2026-10-19T10:58:51.930Z","level":"log","context":"RoutesResolver","message":"SupportController {/support}:"}
{"timestamp":"2026-10-19T10:58:51.931Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets, POST} route"}
{"timestamp":"2026-10-19T10:58:51.931Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets, GET} route"}
{"timestamp":"2026-10-19T10:58:51.931Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets/:id, GET} route"}
{"timestamp":"2026-10-19T10:58:51.931Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets/:id, PATCH} route"}
{"timestamp":"2026-10-19T10:58:51.931Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets/:id, DELETE} route"}
{"timestamp":"2026-10-19T10:58:51.931Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets/:id/messages, POST} route"}
{"timestamp":"2026-10-19T10:58:51.932Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets/:id/close, POST} route"}
{"timestamp":"2026-10-19T10:58:51.932Z","level":"log","context":"RoutesResolver","message":"BusninessMetricsController {/business-metrics}:"}
{"timestamp":"2026-10-19T10:58:51.932Z","level":"log","context":"RouterExplorer","message":"Mapped {/business-metrics, GET} route"}
{"timestamp":"2026-10-19T10:58:51.932Z","level":"log","context":"RoutesResolver","message":"UsersController {/users}:"}
{"timestamp":"2026-10-19T10:58:51.932Z","level":"log","context":"RouterExplorer","message":"Mapped {/users/:id, PUT} route"}
{"timestamp":"2026-10-19T10:58:51.932Z","level":"log","context":"RouterExplorer","message":"Mapped {/users/settings, GET} route"}
{"timestamp":"2026-10-19T10:58:51.932Z","level":"log","context":"RouterExplorer","message":"Mapped {/users/settings/general, PUT} route"}
{"timestamp":"2026-10-19T10:58:51.932Z","level":"log","context":"RouterExplorer","message":"Mapped {/users/company/settings, PUT} route"}
{"timestamp":"2026-10-19T10:58:51.933Z","level":"log","context":"RouterExplorer","message":"Mapped {/users/change-password, POST} route"}
{"timestamp":"2026-10-19T10:58:51.933Z","level":"log","context":"RouterExplorer","message":"Mapped {/users/localization/settings, PUT} route"}
{"timestamp":"2026-10-19T10:58:51.933Z","level":"log","context":"RoutesResolver","message":"PartnerController {/partner}:"}
{"timestamp":"2026-10-19T10:58:51.933Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses, POST} route"}
{"timestamp":"2026-10-19T10:58:51.933Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses, GET} route"}
{"timestamp":"2026-10-19T10:58:51.933Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses/:id, GET} route"}
{"timestamp":"2026-10-19T10:58:51.933Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses/:id, PUT} route"}
{"timestamp":"2026-10-19T10:58:51.934Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses/:id, DELETE} route"}
{"timestamp":"2026-10-19T10:58:51.934Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses/:id/impersonate, POST} route"}
{"timestamp":"2026-10-19T10:58:51.934Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses/stop-impersonation, POST} route"}
{"timestamp":"2026-10-19T10:58:51.934Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/license-usage, GET} route"}
{"timestamp":"2026-10-19T10:58:51.934Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/invoices, POST} route"}
{"timestamp":"2026-10-19T10:58:51.934Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/invoices, GET} route"}
{"timestamp":"2026-10-19T10:58:51.935Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/invoices/:id, GET} route"}
{"timestamp":"2026-10-19T10:58:51.935Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/invoices/:id, PUT} route"}
{"timestamp":"2026-10-19T10:58:51.935Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/invoices/:id, DELETE} route"}
{"timestamp":"2026-10-19T10:58:51.935Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/invoices/:id/mark-paid, PUT} route"}
{"timestamp":"2026-10-19T10:58:51.935Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/onboarding/generate-token, POST} route"}
{"timestamp":"2026-10-19T10:58:51.935Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/dashboard, GET} route"}
{"timestamp":"2026-10-19T10:58:51.935Z","level":"log","context":"RoutesResolver","message":"MspSubscriptionController {/partner/msp-subscriptions}:"}
{"timestamp":"2026-10-19T10:58:51.936Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/plans, POST} route"}
{"timestamp":"2026-10-19T10:58:51.936Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/plans, GET} route"}
{"timestamp":"2026-10-19T10:58:51.936Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/plans/:planId, GET} route"}
{"timestamp":"2026-10-19T10:58:51.936Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/plans/:planId, PUT} route"}
{"timestamp":"2026-10-19T10:58:51.936Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/plans/:planId, DELETE} route"}
{"timestamp":"2026-10-19T10:58:51.936Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/businesses/:businessId/subscription, POST} route"}
{"timestamp":"2026-10-19T10:58:51.936Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions, GET} route"}
{"timestamp":"2026-10-19T10:58:51.937Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/businesses/:businessId/subscription, GET} route"}
{"timestamp":"2026-10-19T10:58:51.937Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/businesses/:businessId/subscription, PUT} route"}
{"timestamp":"2026-10-19T10:58:51.937Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/businesses/:businessId/subscription, DELETE} route"}
{"timestamp":"2026-10-19T10:58:51.937Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/businesses/:businessId/subscription/limits, GET} route"}
{"timestamp":"2026-10-19T10:58:51.937Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/businesses/:businessId/subscription/change-plan, PUT} route"}
{"timestamp":"2026-10-19T10:58:51.937Z","level":"log","context":"RoutesResolver","message":"OnboardingController {/onboarding}:"}
{"timestamp":"2026-10-19T10:58:51.937Z","level":"log","context":"RouterExplorer","message":"Mapped {/onboarding/validate/:token, GET} route"}
{"timestamp":"2026-10-19T10:58:51.938Z","level":"log","context":"RouterExplorer","message":"Mapped {/onboarding/complete/:token, POST} route"}
{"timestamp":"2026-10-19T10:58:51.938Z","level":"log","context":"RoutesResolver","message":"ResellerController {/reseller}:"}
{"timestamp":"2026-10-19T10:58:51.938Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/businesses, POST} route"}
{"timestamp":"2026-10-19T10:58:51.938Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/businesses, GET} route"}
{"timestamp":"2026-10-19T10:58:51.938Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/businesses/:id, GET} route"}
{"timestamp":"2026-10-19T10:58:51.938Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/businesses/:id, PUT} route"}
{"timestamp":"2026-10-19T10:58:51.938Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/businesses/:id, DELETE} route"}
{"timestamp":"2026-10-19T10:58:51.939Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/license-usage, GET} route"}
{"timestamp":"2026-10-19T10:58:51.939Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/invoices, POST} route"}
{"timestamp":"2026-10-19T10:58:51.939Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/invoices, GET} route"}
{"timestamp":"2026-10-19T10:58:51.939Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/invoices/:id, GET} route"}
{"timestamp":"2026-10-19T10:58:51.939Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/invoices/:id, PUT} route"}
{"timestamp":"2026-10-19T10:58:51.939Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/invoices/:id, DELETE} route"}
{"timestamp":"2026-10-19T10:58:51.939Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/invoices/:id/mark-paid, PUT} route"}
{"timestamp":"2026-10-19T10:58:51.940Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/onboarding/generate-token, POST} route"}
{"timestamp":"2026-10-19T10:58:51.940Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/dashboard, GET} route"}
{"timestamp":"2026-10-19T10:58:51.940Z","level":"log","context":"RoutesResolver","message":"ResellerSubscriptionController {/reseller}:"}
{"timestamp":"2026-10-19T10:58:51.940Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/plans, POST} route"}
{"timestamp":"2026-10-19T10:58:51.940Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/plans, GET} route"}
{"timestamp":"2026-10-19T10:58:51.940Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/plans/:planId, GET} route"}
{"timestamp":"2026-10-19T10:58:51.940Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/plans/:planId, PUT} route"}
{"timestamp":"2026-10-19T10:58:51.941Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/plans/:planId, DELETE} route"}
{"timestamp":"2026-10-19T10:58:51.941Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/subscriptions/businesses/:businessId/subscription, POST} route"}
{"timestamp":"2026-10-19T10:58:51.941Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/subscriptions, GET} route"}
{"timestamp":"2026-10-19T10:58:51.941Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/subscriptions/businesses/:businessId/subscription, GET} route"}
{"timestamp":"2026-10-19T10:58:51.941Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/subscriptions/businesses/:businessId/subscription, PUT} route"}
{"timestamp":"2026-10-19T10:58:51.941Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/subscriptions/businesses/:businessId/subscription, DELETE} route"}
{"timestamp":"2026-10-19T10:58:51.941Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/subscriptions/businesses/:businessId/subscription/limits, GET} route"}
{"timestamp":"2026-10-19T10:58:51.942Z","level":"log","context":"RoutesResolver","message":"HealthController {/health}:"}
{"timestamp":"2026-10-19T10:58:51.942Z","level":"log","context":"RouterExplorer","message":"Mapped {/health, GET} route"}
{"timestamp":"2026-10-19T10:58:51.942Z","level":"log","context":"RouterExplorer","message":"Mapped {/health/test-logs, GET} route"}
{"timestamp":"2026-10-19T10:58:51.942Z","level":"log","context":"RoutesResolver","message":"AzureAdController {/azure-ad}:"}
{"timestamp":"2026-10-19T10:58:51.942Z","level":"log","context":"RouterExplorer","message":"Mapped {/azure-ad/config, POST} route"}
{"timestamp":"2026-10-19T10:58:51.942Z","level":"log","context":"RouterExplorer","message":"Mapped {/azure-ad/config, GET} route"}
{"timestamp":"2026-10-19T10:58:51.942Z","level":"log","context":"RouterExplorer","message":"Mapped {/azure-ad/test-connection, POST} route"}
{"timestamp":"2026-10-19T10:58:51.942Z","level":"log","context":"RouterExplorer","message":"Mapped {/azure-ad/sync, POST} route"}
{"timestamp":"2026-10-19T10:58:51.942Z","level":"log","context":"RoutesResolver","message":"ThreatsController {/threats}:"}
{"timestamp":"2026-10-19T10:58:51.943Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats, POST} route"}
{"timestamp":"2026-10-19T10:58:51.943Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats, GET} route"}
{"timestamp":"2026-10-19T10:58:51.943Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/chart-data, GET} route"}
{"timestamp":"2026-10-19T10:58:51.943Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/claude-search, POST} route"}
{"timestamp":"2026-10-19T10:58:51.943Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/claude-latest, POST} route"}
{"timestamp":"2026-10-19T10:58:51.943Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/claude-trending, POST} route"}
{"timestamp":"2026-10-19T10:58:51.944Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/claude-categories, POST} route"}
{"timestamp":"2026-10-19T10:58:51.944Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/claude-manual-search, POST} route"}
{"timestamp":"2026-10-19T10:58:51.944Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/claude-quick-search, POST} route"}
{"timestamp":"2026-10-19T10:58:51.944Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/scheduler-status, GET} route"}
{"timestamp":"2026-10-19T10:58:51.944Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/health-check, GET} route"}
{"timestamp":"2026-10-19T10:58:51.944Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/pause-scheduler, POST} route"}
{"timestamp":"2026-10-19T10:58:51.944Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/:id, GET} route"}
{"timestamp":"2026-10-19T10:58:51.945Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/:id, PATCH} route"}
{"timestamp":"2026-10-19T10:58:51.945Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/:id, DELETE} route"}
{"timestamp":"2026-10-19T10:58:51.945Z","level":"log","context":"RoutesResolver","message":"DomainController {/domains}:"}
{"timestamp":"2026-10-19T10:58:51.945Z","level":"log","context":"RouterExplorer","message":"Mapped {/domains, GET} route"}
{"timestamp":"2026-10-19T10:58:51.945Z","level":"log","context":"RouterExplorer","message":"Mapped {/domains/:id, GET} route"}
{"timestamp":"2026-10-19T10:58:51.945Z","level":"log","context":"RouterExplorer","message":"Mapped {/domains, POST} route"}
{"timestamp":"2026-10-19T10:58:51.945Z","level":"log","context":"RouterExplorer","message":"Mapped {/domains/:id, PUT} route"}
{"timestamp":"2026-10-19T10:58:51.945Z","level":"log","context":"RouterExplorer","message":"Mapped {/domains/:id, DELETE} route"}
{"timestamp":"2026-10-19T10:58:51.946Z","level":"log","context":"RouterExplorer","message":"Mapped {/domains/seed, POST} route"}
{"timestamp":"2026-10-19T10:58:51.946Z","level":"log","context":"RoutesResolver","message":"MspSubscriptionController {/msp-subscription}:"}
{"timestamp":"2026-10-19T10:58:51.946Z","level":"log","context":"RouterExplorer","message":"Mapped {/msp-subscription/current, GET} route"}
{"timestamp":"2026-10-19T10:58:51.946Z","level":"log","context":"RouterExplorer","message":"Mapped {/msp-subscription/invoices, GET} route"}
{"timestamp":"2026-10-19T10:58:51.946Z","level":"log","context":"RouterExplorer","message":"Mapped {/msp-subscription/invoice/:invoiceId/pdf, GET} route"}
{"timestamp":"2026-10-19T10:58:51.946Z","level":"log","context":"RoutesResolver","message":"MspSubscriptionController {/api/msp-subscription}:"}
{"timestamp":"2026-10-19T10:58:51.946Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/msp-subscription/current, GET} route"}
{"timestamp":"2026-10-19T10:58:51.947Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/msp-subscription/invoices, GET} route"}
{"timestamp":"2026-10-19T10:58:51.947Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/msp-subscription/invoice/:invoiceId/pdf, GET} route"}
{"timestamp":"2026-10-19T10:58:52.010Z","level":"log","context":"NestApplication","message":"Nest application successfully started"}
{"timestamp":"2026-10-19T10:58:52.016Z","level":"log","context":"Bootstrap","message":"Users API successfully started on port 3842"}
{"timestamp":"2026-10-19T10:58:52.016Z","level":"log","context":"SeedService","message":"🌱 Starting database seeding..."}
{"timestamp":"2026-10-19T10:58:52.021Z","level":"log","context":"SeedService","message":"Admin account already exists, skipping seed"}
{"timestamp":"2026-10-19T10:58:52.024Z","level":"log","context":"SeedService","message":"Reseller account already exists, skipping seed"}
{"timestamp":"2026-10-19T10:58:52.025Z","level":"log","context":"SeedService","message":"MSP account already exists, skipping seed"}
{"timestamp":"2026-10-19T10:58:52.025Z","level":"log","context":"SeedService","message":"✅ Database seeding completed successfully"}
{"timestamp":"2026-10-19T13:49:14.309Z","level":"warn","context":"LegacyRouteConverter","message":"Unsupported route path: \"/lp/*\". In previous versions, the symbols ?, *, and + were used to denote optional or repeating path parameters. The latest version of \"path-to-regexp\" now requires the use of named parameters. For example, instead of using a route like /users/* to capture all routes starting with \"/users\", you should use /users/*path. For more details, refer to the migration guide. Attempting to auto-convert..."}
{"timestamp":"2026-10-19T13:49:14.344Z","level":"log","context":"Bootstrap","message":"Starting Users API on port 3842..."}
{"timestamp":"2026-10-19T13:49:14.347Z","level":"log","context":"RoutesResolver","message":"UsersApiController {/}:"}
{"timestamp":"2026-10-19T13:49:14.350Z","level":"log","context":"RouterExplorer","message":"Mapped {/, GET} route"}
{"timestamp":"2026-10-19T13:49:14.351Z","level":"log","context":"RoutesResolver","message":"AuthController {/auth}:"}
{"timestamp":"2026-10-19T13:49:14.351Z","level":"log","context":"RouterExplorer","message":"Mapped {/auth/login, POST} route"}
{"timestamp":"2026-10-19T13:49:14.352Z","level":"log","context":"RouterExplorer","message":"Mapped {/auth/admin/login, POST} route"}
{"timestamp":"2026-10-19T13:49:14.352Z","level":"log","context":"RouterExplorer","message":"Mapped {/auth/send-otp, POST} route"}
{"timestamp":"2026-10-19T13:49:14.353Z","level":"log","context":"RouterExplorer","message":"Mapped {/auth/verify-otp, POST} route"}
{"timestamp":"2026-10-19T13:49:14.353Z","level":"log","context":"RouterExplorer","message":"Mapped {/auth/signup, POST} route"}
{"timestamp":"2026-10-19T13:49:14.353Z","level":"log","context":"RouterExplorer","message":"Mapped {/auth/subscription-status, GET} route"}
{"timestamp":"2026-10-19T13:49:14.353Z","level":"log","context":"RoutesResolver","message":"AdminMspController {/admin/msp}:"}
{"timestamp":"2026-10-19T13:49:14.354Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/msp, GET} route"}
{"timestamp":"2026-10-19T13:49:14.355Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/msp/:id, GET} route"}
{"timestamp":"2026-10-19T13:49:14.355Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/msp, POST} route"}
{"timestamp":"2026-10-19T13:49:14.355Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/msp/:id, PUT} route"}
{"timestamp":"2026-10-19T13:49:14.356Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/msp/:id, DELETE} route"}
{"timestamp":"2026-10-19T13:49:14.356Z","level":"log","context":"RoutesResolver","message":"AdminLicenseController {/admin/licenses}:"}
{"timestamp":"2026-10-19T13:49:14.356Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/licenses/summary, GET} route"}
{"timestamp":"2026-10-19T13:49:14.356Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/licenses/msp/:mspId, GET} route"}
{"timestamp":"2026-10-19T13:49:14.357Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/licenses/msp/:mspId, PUT} route"}
{"timestamp":"2026-10-19T13:49:14.357Z","level":"log","context":"RoutesResolver","message":"AdminImpersonationController {/admin/impersonation}:"}
{"timestamp":"2026-10-19T13:49:14.357Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/impersonation/msp-users, GET} route"}
{"timestamp":"2026-10-19T13:49:14.357Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/impersonation/impersonate, POST} route"}
{"timestamp":"2026-10-19T13:49:14.360Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/impersonation/stop, POST} route"}
{"timestamp":"2026-10-19T13:49:14.360Z","level":"log","context":"RoutesResolver","message":"AdminAiUsageController {/admin/ai-usage}:"}
{"timestamp":"2026-10-19T13:49:14.361Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-usage, GET} route"}
{"timestamp":"2026-10-19T13:49:14.361Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-usage/business/:businessId, GET} route"}
{"timestamp":"2026-10-19T13:49:14.361Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-usage/report/monthly, GET} route"}
{"timestamp":"2026-10-19T13:49:14.361Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-usage/pricing, GET} route"}
{"timestamp":"2026-10-19T13:49:14.361Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-usage/pricing, POST} route"}
{"timestamp":"2026-10-19T13:49:14.362Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-usage/credit/:businessId, PUT} route"}
{"timestamp":"2026-10-19T13:49:14.362Z","level":"log","context":"RoutesResolver","message":"AdminAiUsageController {/api/admin/ai-usage}:"}
{"timestamp":"2026-10-19T13:49:14.362Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-usage, GET} route"}
{"timestamp":"2026-10-19T13:49:14.362Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-usage/business/:businessId, GET} route"}
{"timestamp":"2026-10-19T13:49:14.362Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-usage/report/monthly, GET} route"}
{"timestamp":"2026-10-19T13:49:14.362Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-usage/pricing, GET} route"}
{"timestamp":"2026-10-19T13:49:14.363Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-usage/pricing, POST} route"}
{"timestamp":"2026-10-19T13:49:14.363Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-usage/credit/:businessId, PUT} route"}
{"timestamp":"2026-10-19T13:49:14.363Z","level":"log","context":"RoutesResolver","message":"AdminAiModelController {/admin/ai-models}:"}
{"timestamp":"2026-10-19T13:49:14.363Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models, POST} route"}
{"timestamp":"2026-10-19T13:49:14.363Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models, GET} route"}
{"timestamp":"2026-10-19T13:49:14.363Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/default, GET} route"}
{"timestamp":"2026-10-19T13:49:14.364Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/:id, GET} route"}
{"timestamp":"2026-10-19T13:49:14.364Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/:id, PUT} route"}
{"timestamp":"2026-10-19T13:49:14.364Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/:id, DELETE} route"}
{"timestamp":"2026-10-19T13:49:14.364Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/:id/set-default, POST} route"}
{"timestamp":"2026-10-19T13:49:14.364Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/assign-to-business, POST} route"}
{"timestamp":"2026-10-19T13:49:14.364Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/business/:businessId, GET} route"}
{"timestamp":"2026-10-19T13:49:14.365Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/:id/businesses, GET} route"}
{"timestamp":"2026-10-19T13:49:14.365Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/initialize-defaults, POST} route"}
{"timestamp":"2026-10-19T13:49:14.365Z","level":"log","context":"RoutesResolver","message":"AdminAiModelController {/api/admin/ai-models}:"}
{"timestamp":"2026-10-19T13:49:14.365Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models, POST} route"}
{"timestamp":"2026-10-19T13:49:14.365Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models, GET} route"}
{"timestamp":"2026-10-19T13:49:14.365Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/default, GET} route"}
{"timestamp":"2026-10-19T13:49:14.366Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/:id, GET} route"}
{"timestamp":"2026-10-19T13:49:14.366Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/:id, PUT} route"}
{"timestamp":"2026-10-19T13:49:14.366Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/:id, DELETE} route"}
{"timestamp":"2026-10-19T13:49:14.366Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/:id/set-default, POST} route"}
{"timestamp":"2026-10-19T13:49:14.366Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/assign-to-business, POST} route"}
{"timestamp":"2026-10-19T13:49:14.366Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/business/:businessId, GET} route"}
{"timestamp":"2026-10-19T13:49:14.367Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/:id/businesses, GET} route"}
{"timestamp":"2026-10-19T13:49:14.367Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/initialize-defaults, POST} route"}
{"timestamp":"2026-10-19T13:49:14.367Z","level":"log","context":"RoutesResolver","message":"AdminBusinessController {/admin/businesses}:"}
{"timestamp":"2026-10-19T13:49:14.367Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/businesses, GET} route"}
{"timestamp":"2026-10-19T13:49:14.367Z","level":"log","context":"RoutesResolver","message":"ResellerManagementController {/admin/resellers}:"}
{"timestamp":"2026-10-19T13:49:14.367Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/resellers, GET} route"}
{"timestamp":"2026-10-19T13:49:14.368Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/resellers/create-default, POST} route"}
{"timestamp":"2026-10-19T13:49:14.368Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/resellers, POST} route"}
{"timestamp":"2026-10-19T13:49:14.368Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/resellers/:id/toggle-status, PUT} route"}
{"timestamp":"2026-10-19T13:49:14.368Z","level":"log","context":"RoutesResolver","message":"SubscriptionController {/subscription}:"}
{"timestamp":"2026-10-19T13:49:14.368Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/plans, GET} route"}
{"timestamp":"2026-10-19T13:49:14.368Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/calculate-price, POST} route"}
{"timestamp":"2026-10-19T13:49:14.369Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/current, GET} route"}
{"timestamp":"2026-10-19T13:49:14.369Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/create, POST} route"}
{"timestamp":"2026-10-19T13:49:14.369Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/:id, PUT} route"}
{"timestamp":"2026-10-19T13:49:14.369Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/:id/cancel, DELETE} route"}
{"timestamp":"2026-10-19T13:49:14.369Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/sync/:stripeSubscriptionId, POST} route"}
{"timestamp":"2026-10-19T13:49:14.369Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/payments, GET} route"}
{"timestamp":"2026-10-19T13:49:14.369Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/payments/stats, GET} route"}
{"timestamp":"2026-10-19T13:49:14.370Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/payment/:id, GET} route"}
{"timestamp":"2026-10-19T13:49:14.370Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/payment-methods/attach, POST} route"}
{"timestamp":"2026-10-19T13:49:14.370Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/payment-methods/:paymentMethodId, DELETE} route"}
{"timestamp":"2026-10-19T13:49:14.370Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/payment-methods, GET} route"}
{"timestamp":"2026-10-19T13:49:14.370Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/setup-intent, POST} route"}
{"timestamp":"2026-10-19T13:49:14.370Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/update-employee-count, POST} route"}
{"timestamp":"2026-10-19T13:49:14.371Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/retry-payment/:subscriptionId, POST} route"}
{"timestamp":"2026-10-19T13:49:14.371Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/invoice/:invoiceId/pdf, GET} route"}
{"timestamp":"2026-10-19T13:49:14.371Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/preview-upgrade, POST} route"}
{"timestamp":"2026-10-19T13:49:14.371Z","level":"log","context":"RoutesResolver","message":"SubscriptionController {/api/subscription}:"}
{"timestamp":"2026-10-19T13:49:14.371Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/plans, GET} route"}
{"timestamp":"2026-10-19T13:49:14.371Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/calculate-price, POST} route"}
{"timestamp":"2026-10-19T13:49:14.371Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/current, GET} route"}
{"timestamp":"2026-10-19T13:49:14.372Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/create, POST} route"}
{"timestamp":"2026-10-19T13:49:14.372Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/:id, PUT} route"}
{"timestamp":"2026-10-19T13:49:14.372Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/:id/cancel, DELETE} route"}
{"timestamp":"2026-10-19T13:49:14.372Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/sync/:stripeSubscriptionId, POST} route"}
{"timestamp":"2026-10-19T13:49:14.372Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/payments, GET} route"}
{"timestamp":"2026-10-19T13:49:14.372Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/payments/stats, GET} route"}
{"timestamp":"2026-10-19T13:49:14.373Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/payment/:id, GET} route"}
{"timestamp":"2026-10-19T13:49:14.373Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/payment-methods/attach, POST} route"}
{"timestamp":"2026-10-19T13:49:14.373Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/payment-methods/:paymentMethodId, DELETE} route"}
{"timestamp":"2026-10-19T13:49:14.373Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/payment-methods, GET} route"}
{"timestamp":"2026-10-19T13:49:14.373Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/setup-intent, POST} route"}
{"timestamp":"2026-10-19T13:49:14.373Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/update-employee-count, POST} route"}
{"timestamp":"2026-10-19T13:49:14.373Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/retry-payment/:subscriptionId, POST} route"}
{"timestamp":"2026-10-19T13:49:14.374Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/invoice/:invoiceId/pdf, GET} route"}
{"timestamp":"2026-10-19T13:49:14.374Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/preview-upgrade, POST} route"}
{"timestamp":"2026-10-19T13:49:14.374Z","level":"log","context":"RoutesResolver","message":"StripeWebhookController {/stripe/webhook}:"}
{"timestamp":"2026-10-19T13:49:14.374Z","level":"log","context":"RouterExplorer","message":"Mapped {/stripe/webhook/test, GET} route"}
{"timestamp":"2026-10-19T13:49:14.374Z","level":"log","context":"RouterExplorer","message":"Mapped {/stripe/webhook, POST} route"}
{"timestamp":"2026-10-19T13:49:14.374Z","level":"log","context":"RoutesResolver","message":"EmailController {/email-templates}:"}
{"timestamp":"2026-10-19T13:49:14.374Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates/test, POST} route"}
{"timestamp":"2026-10-19T13:49:14.374Z","level":"log","context":"RoutesResolver","message":"EmployeeController {/employees}:"}
{"timestamp":"2026-10-19T13:49:14.375Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees, POST} route"}
{"timestamp":"2026-10-19T13:49:14.375Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees, GET} route"}
{"timestamp":"2026-10-19T13:49:14.375Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees/export, GET} route"}
{"timestamp":"2026-10-19T13:49:14.375Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees/risk-stats, GET} route"}
{"timestamp":"2026-10-19T13:49:14.375Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees/:id, GET} route"}
{"timestamp":"2026-10-19T13:49:14.375Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees/:id, PUT} route"}
{"timestamp":"2026-10-19T13:49:14.376Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees/:id, DELETE} route"}
{"timestamp":"2026-10-19T13:49:14.376Z","level":"log","context":"RoutesResolver","message":"GroupController {/groups}:"}
{"timestamp":"2026-10-19T13:49:14.376Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups, POST} route"}
{"timestamp":"2026-10-19T13:49:14.376Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups, GET} route"}
{"timestamp":"2026-10-19T13:49:14.376Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups/standard, GET} route"}
{"timestamp":"2026-10-19T13:49:14.376Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups/:id, GET} route"}
{"timestamp":"2026-10-19T13:49:14.376Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups/:id, PUT} route"}
{"timestamp":"2026-10-19T13:49:14.377Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups/:id, DELETE} route"}
{"timestamp":"2026-10-19T13:49:14.377Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups/:id/info, GET} route"}
{"timestamp":"2026-10-19T13:49:14.377Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups/:id/with-employees, GET} route"}
{"timestamp":"2026-10-19T13:49:14.377Z","level":"log","context":"RoutesResolver","message":"SenderProfileController {/sender-profiles}:"}
{"timestamp":"2026-10-19T13:49:14.377Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles, GET} route"}
{"timestamp":"2026-10-19T13:49:14.377Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles/:id, GET} route"}
{"timestamp":"2026-10-19T13:49:14.378Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles, POST} route"}
{"timestamp":"2026-10-19T13:49:14.378Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles/:id, PUT} route"}
{"timestamp":"2026-10-19T13:49:14.378Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles/:id, DELETE} route"}
{"timestamp":"2026-10-19T13:49:14.378Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles/:id/verify-domain, POST} route"}
{"timestamp":"2026-10-19T13:49:14.378Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles/domain-verification, GET} route"}
{"timestamp":"2026-10-19T13:49:14.378Z","level":"log","context":"RoutesResolver","message":"EmailTemplateController {/email-templates}:"}
{"timestamp":"2026-10-19T13:49:14.378Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates, GET} route"}
{"timestamp":"2026-10-19T13:49:14.379Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates/:id, GET} route"}
{"timestamp":"2026-10-19T13:49:14.379Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates, POST} route"}
{"timestamp":"2026-10-19T13:49:14.379Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates/:id, PUT} route"}
{"timestamp":"2026-10-19T13:49:14.379Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates/:id, DELETE} route"}
{"timestamp":"2026-10-19T13:49:14.379Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates/:id/duplicate, POST} route"}
{"timestamp":"2026-10-19T13:49:14.379Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates/:id/preview, GET} route"}
{"timestamp":"2026-10-19T13:49:14.379Z","level":"log","context":"RoutesResolver","message":"ScenarioController {/scenarios}:"}
{"timestamp":"2026-10-19T13:49:14.380Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios, POST} route"}
{"timestamp":"2026-10-19T13:49:14.380Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios/generate-content, POST} route"}
{"timestamp":"2026-10-19T13:49:14.380Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios, GET} route"}
{"timestamp":"2026-10-19T13:49:14.380Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios/:id, GET} route"}
{"timestamp":"2026-10-19T13:49:14.380Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios/:id, PUT} route"}
{"timestamp":"2026-10-19T13:49:14.380Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios/:id, DELETE} route"}
{"timestamp":"2026-10-19T13:49:14.381Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios/generate-from-json, POST} route"}
{"timestamp":"2026-10-19T13:49:14.381Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios/:id/save-as-custom-scenario, POST} route"}
{"timestamp":"2026-10-19T13:49:14.381Z","level":"log","context":"RoutesResolver","message":"CampaignController {/campaigns}:"}
{"timestamp":"2026-10-19T13:49:14.381Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns, POST} route"}
{"timestamp":"2026-10-19T13:49:14.381Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns, GET} route"}
{"timestamp":"2026-10-19T13:49:14.381Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id, GET} route"}
{"timestamp":"2026-10-19T13:49:14.381Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id/details, GET} route"}
{"timestamp":"2026-10-19T13:49:14.382Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id/employees, GET} route"}
{"timestamp":"2026-10-19T13:49:14.382Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id, PATCH} route"}
{"timestamp":"2026-10-19T13:49:14.382Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id/start, POST} route"}
{"timestamp":"2026-10-19T13:49:14.382Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id/stop, POST} route"}
{"timestamp":"2026-10-19T13:49:14.382Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id/duplicate, POST} route"}
{"timestamp":"2026-10-19T13:49:14.383Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id, DELETE} route"}
{"timestamp":"2026-10-19T13:49:14.383Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/auto-generate-program, POST} route"}
{"timestamp":"2026-10-19T13:49:14.383Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/generate-from-threat-intelligence, POST} route"}
{"timestamp":"2026-10-19T13:49:14.383Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id/risk-score, GET} route"}
{"timestamp":"2026-10-19T13:49:14.383Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/recalculate-risk-scores, POST} route"}
{"timestamp":"2026-10-19T13:49:14.383Z","level":"log","context":"RoutesResolver","message":"CampaignController {/api/campaigns}:"}
{"timestamp":"2026-10-19T13:49:14.383Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns, POST} route"}
{"timestamp":"2026-10-19T13:49:14.384Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns, GET} route"}
{"timestamp":"2026-10-19T13:49:14.384Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id, GET} route"}
{"timestamp":"2026-10-19T13:49:14.384Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id/details, GET} route"}
{"timestamp":"2026-10-19T13:49:14.384Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id/employees, GET} route"}
{"timestamp":"2026-10-19T13:49:14.384Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id, PATCH} route"}
{"timestamp":"2026-10-19T13:49:14.384Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id/start, POST} route"}
{"timestamp":"2026-10-19T13:49:14.385Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id/stop, POST} route"}
{"timestamp":"2026-10-19T13:49:14.385Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id/duplicate, POST} route"}
{"timestamp":"2026-10-19T13:49:14.385Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id, DELETE} route"}
{"timestamp":"2026-10-19T13:49:14.385Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/auto-generate-program, POST} route"}
{"timestamp":"2026-10-19T13:49:14.385Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/generate-from-threat-intelligence, POST} route"}
{"timestamp":"2026-10-19T13:49:14.385Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id/risk-score, GET} route"}
{"timestamp":"2026-10-19T13:49:14.385Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/recalculate-risk-scores, POST} route"}
{"timestamp":"2026-10-19T13:49:14.385Z","level":"log","context":"RoutesResolver","message":"NotificationsController {/notifications}:"}
{"timestamp":"2026-10-19T13:49:14.386Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications, POST} route"}
{"timestamp":"2026-10-19T13:49:14.386Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications, GET} route"}
{"timestamp":"2026-10-19T13:49:14.386Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/unread, GET} route"}
{"timestamp":"2026-10-19T13:49:14.386Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/unread-count, GET} route"}
{"timestamp":"2026-10-19T13:49:14.386Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/:id, GET} route"}
{"timestamp":"2026-10-19T13:49:14.387Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/:id, PATCH} route"}
{"timestamp":"2026-10-19T13:49:14.387Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/:id/read, PATCH} route"}
{"timestamp":"2026-10-19T13:49:14.387Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/mark-all-read, PATCH} route"}
{"timestamp":"2026-10-19T13:49:14.387Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/:id, DELETE} route"}
{"timestamp":"2026-10-19T13:49:14.387Z","level":"log","context":"RoutesResolver","message":"LandingPageController {/lp}:"}
{"timestamp":"2026-10-19T13:49:14.388Z","level":"log","context":"RouterExplorer","message":"Mapped {/lp/image, GET} route"}
{"timestamp":"2026-10-19T13:49:14.388Z","level":"log","context":"RouterExplorer","message":"Mapped {/lp/learning, GET} route"}
{"timestamp":"2026-10-19T13:49:14.388Z","level":"log","context":"RouterExplorer","message":"Mapped {/lp/submit, POST} route"}
{"timestamp":"2026-10-19T13:49:14.388Z","level":"log","context":"RouterExplorer","message":"Mapped {/lp/test, GET} route"}
{"timestamp":"2026-10-19T13:49:14.388Z","level":"warn","context":"LegacyRouteConverter","message":"Unsupported route path: \"/lp/*\". In previous versions, the symbols ?, *, and + were used to denote optional or repeating path parameters. The latest version of \"path-to-regexp\" now requires the use of named parameters. For example, instead of using a route like /users/* to capture all routes starting with \"/users\", you should use /users/*path. For more details, refer to the migration guide. Attempting to auto-convert..."}
{"timestamp":"2026-10-19T13:49:14.389Z","level":"log","context":"RouterExplorer","message":"Mapped {/lp/*, ALL} route"}
{"timestamp":"2026-10-19T13:49:14.389Z","level":"log","context":"RoutesResolver","message":"SupportController {/support}:"}
{"timestamp":"2026-10-19T13:49:14.389Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets, POST} route"}
{"timestamp":"2026-10-19T13:49:14.389Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets, GET} route"}
{"timestamp":"2026-10-19T13:49:14.390Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets/:id, GET} route"}
{"timestamp":"2026-10-19T13:49:14.390Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets/:id, PATCH} route"}
{"timestamp":"2026-10-19T13:49:14.390Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets/:id, DELETE} route"}
{"timestamp":"2026-10-19T13:49:14.390Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets/:id/messages, POST} route"}
{"timestamp":"2026-10-19T13:49:14.390Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets/:id/close, POST} route"}
{"timestamp":"2026-10-19T13:49:14.390Z","level":"log","context":"RoutesResolver","message":"BusninessMetricsController {/business-metrics}:"}
{"timestamp":"2026-10-19T13:49:14.391Z","level":"log","context":"RouterExplorer","message":"Mapped {/business-metrics, GET} route"}
{"timestamp":"2026-10-19T13:49:14.391Z","level":"log","context":"RoutesResolver","message":"UsersController {/users}:"}
{"timestamp":"2026-10-19T13:49:14.391Z","level":"log","context":"RouterExplorer","message":"Mapped {/users/:id, PUT} route"}
{"timestamp":"2026-10-19T13:49:14.391Z","level":"log","context":"RouterExplorer","message":"Mapped {/users/settings, GET} route"}
{"timestamp":"2026-10-19T13:49:14.391Z","level":"log","context":"RouterExplorer","message":"Mapped {/users/settings/general, PUT} route"}
{"timestamp":"2026-10-19T13:49:14.391Z","level":"log","context":"RouterExplorer","message":"Mapped {/users/company/settings, PUT} route"}
{"timestamp":"2026-10-19T13:49:14.392Z","level":"log","context":"RouterExplorer","message":"Mapped {/users/change-password, POST} route"}
{"timestamp":"2026-10-19T13:49:14.392Z","level":"log","context":"RouterExplorer","message":"Mapped {/users/localization/settings, PUT} route"}
{"timestamp":"2026-10-19T13:49:14.392Z","level":"log","context":"RoutesResolver","message":"PartnerController {/partner}:"}
{"timestamp":"2026-10-19T13:49:14.392Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses, POST} route"}
{"timestamp":"2026-10-19T13:49:14.392Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses, GET} route"}
{"timestamp":"2026-10-19T13:49:14.392Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses/:id, GET} route"}
{"timestamp":"2026-10-19T13:49:14.392Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses/:id, PUT} route"}
{"timestamp":"2026-10-19T13:49:14.393Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses/:id, DELETE} route"}
{"timestamp":"2026-10-19T13:49:14.393Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses/:id/impersonate, POST} route"}
{"timestamp":"2026-10-19T13:49:14.393Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses/stop-impersonation, POST} route"}
{"timestamp":"2026-10-19T13:49:14.393Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/license-usage, GET} route"}
{"timestamp":"2026-10-19T13:49:14.393Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/invoices, POST} route"}
{"timestamp":"2026-10-19T13:49:14.393Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/invoices, GET} route"}
{"timestamp":"2026-10-19T13:49:14.394Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/invoices/:id, GET} route"}
{"timestamp":"2026-10-19T13:49:14.394Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/invoices/:id, PUT} route"}
{"timestamp":"2026-10-19T13:49:14.394Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/invoices/:id, DELETE} route"}
{"timestamp":"2026-10-19T13:49:14.394Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/invoices/:id/mark-paid, PUT} route"}
{"timestamp":"2026-10-19T13:49:14.394Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/onboarding/generate-token, POST} route"}
{"timestamp":"2026-10-19T13:49:14.394Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/dashboard, GET} route"}
{"timestamp":"2026-10-19T13:49:14.394Z","level":"log","context":"RoutesResolver","message":"MspSubscriptionController {/partner/msp-subscriptions}:"}
{"timestamp":"2026-10-19T13:49:14.395Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/plans, POST} route"}
{"timestamp":"2026-10-19T13:49:14.395Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/plans, GET} route"}
{"timestamp":"2026-10-19T13:49:14.395Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/plans/:planId, GET} route"}
{"timestamp":"2026-10-19T13:49:14.395Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/plans/:planId, PUT} route"}
{"timestamp":"2026-10-19T13:49:14.395Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/plans/:planId, DELETE} route"}
{"timestamp":"2026-10-19T13:49:14.395Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/businesses/:businessId/subscription, POST} route"}
{"timestamp":"2026-10-19T13:49:14.396Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions, GET} route"}
{"timestamp":"2026-10-19T13:49:14.396Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/businesses/:businessId/subscription, GET} route"}
{"timestamp":"2026-10-19T13:49:14.396Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/businesses/:businessId/subscription, PUT} route"}
{"timestamp":"2026-10-19T13:49:14.396Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/businesses/:businessId/subscription, DELETE} route"}
{"timestamp":"2026-10-19T13:49:14.396Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/businesses/:businessId/subscription/limits, GET} route"}
{"timestamp":"2026-10-19T13:49:14.396Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/businesses/:businessId/subscription/change-plan, PUT} route"}
{"timestamp":"2026-10-19T13:49:14.397Z","level":"log","context":"RoutesResolver","message":"OnboardingController {/onboarding}:"}
{"timestamp":"2026-10-19T13:49:14.397Z","level":"log","context":"RouterExplorer","message":"Mapped {/onboarding/validate/:token, GET} route"}
{"timestamp":"2026-10-19T13:49:14.397Z","level":"log","context":"RouterExplorer","message":"Mapped {/onboarding/complete/:token, POST} route"}
{"timestamp":"2026-10-19T13:49:14.397Z","level":"log","context":"RoutesResolver","message":"ResellerController {/reseller}:"}
{"timestamp":"2026-10-19T13:49:14.397Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/businesses, POST} route"}
{"timestamp":"2026-10-19T13:49:14.397Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/businesses, GET} route"}
{"timestamp":"2026-10-19T13:49:14.397Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/businesses/:id, GET} route"}
{"timestamp":"2026-10-19T13:49:14.398Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/businesses/:id, PUT} route"}
{"timestamp":"2026-10-19T13:49:14.398Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/businesses/:id, DELETE} route"}
{"timestamp":"2026-10-19T13:49:14.398Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/license-usage, GET} route"}
{"timestamp":"2026-10-19T13:49:14.398Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/invoices, POST} route"}
{"timestamp":"2026-10-19T13:49:14.398Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/invoices, GET} route"}
{"timestamp":"2026-10-19T13:49:14.398Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/invoices/:id, GET} route"}
{"timestamp":"2026-10-19T13:49:14.398Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/invoices/:id, PUT} route"}
{"timestamp":"2026-10-19T13:49:14.399Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/invoices/:id, DELETE} route"}
{"timestamp":"2026-10-19T13:49:14.399Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/invoices/:id/mark-paid, PUT} route"}
{"timestamp":"2026-10-19T13:49:14.399Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/onboarding/generate-token, POST} route"}
{"timestamp":"2026-10-19T13:49:14.399Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/dashboard, GET} route"}
{"timestamp":"2026-10-19T13:49:14.399Z","level":"log","context":"RoutesResolver","message":"ResellerSubscriptionController {/reseller}:"}
{"timestamp":"2026-10-19T13:49:14.399Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/plans, POST} route"}
{"timestamp":"2026-10-19T13:49:14.399Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/plans, GET} route"}
{"timestamp":"2026-10-19T13:49:14.400Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/plans/:planId, GET} route"}
{"timestamp":"2026-10-19T13:49:14.400Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/plans/:planId, PUT} route"}
{"timestamp":"2026-10-19T13:49:14.400Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/plans/:planId, DELETE} route"}
{"timestamp":"2026-10-19T13:49:14.400Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/subscriptions/businesses/:businessId/subscription, POST} route"}
{"timestamp":"2026-10-19T13:49:14.400Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/subscriptions, GET} route"}
{"timestamp":"2026-10-19T13:49:14.400Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/subscriptions/businesses/:businessId/subscription, GET} route"}
{"timestamp":"2026-10-19T13:49:14.401Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/subscriptions/businesses/:businessId/subscription, PUT} route"}
{"timestamp":"2026-10-19T13:49:14.401Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/subscriptions/businesses/:businessId/subscription, DELETE} route"}
{"timestamp":"2026-10-19T13:49:14.401Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/subscriptions/businesses/:businessId/subscription/limits, GET} route"}
{"timestamp":"2026-10-19T13:49:14.401Z","level":"log","context":"RoutesResolver","message":"HealthController {/health}:"}
{"timestamp":"2026-10-19T13:49:14.401Z","level":"log","context":"RouterExplorer","message":"Mapped {/health, GET} route"}
{"timestamp":"2026-10-19T13:49:14.401Z","level":"log","context":"RouterExplorer","message":"Mapped {/health/test-logs, GET} route"}
{"timestamp":"2026-10-19T13:49:14.401Z","level":"log","context":"RoutesResolver","message":"AzureAdController {/azure-ad}:"}
{"timestamp":"2026-10-19T13:49:14.401Z","level":"log","context":"RouterExplorer","message":"Mapped {/azure-ad/config, POST} route"}
{"timestamp":"2026-10-19T13:49:14.402Z","level":"log","context":"RouterExplorer","message":"Mapped {/azure-ad/config, GET} route"}
{"timestamp":"2026-10-19T13:49:14.402Z","level":"log","context":"RouterExplorer","message":"Mapped {/azure-ad/test-connection, POST} route"}
{"timestamp":"2026-10-19T13:49:14.402Z","level":"log","context":"RouterExplorer","message":"Mapped {/azure-ad/sync, POST} route"}
{"timestamp":"2026-10-19T13:49:14.402Z","level":"log","context":"RoutesResolver","message":"ThreatsController {/threats}:"}
{"timestamp":"2026-10-19T13:49:14.402Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats, POST} route"}
{"timestamp":"2026-10-19T13:49:14.402Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats, GET} route"}
{"timestamp":"2026-10-19T13:49:14.402Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/chart-data, GET} route"}
{"timestamp":"2026-10-19T13:49:14.402Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/claude-search, POST} route"}
{"timestamp":"2026-10-19T13:49:14.403Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/claude-latest, POST} route"}
{"timestamp":"2026-10-19T13:49:14.403Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/claude-trending, POST} route"}
{"timestamp":"2026-10-19T13:49:14.403Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/claude-categories, POST} route"}
{"timestamp":"2026-10-19T13:49:14.403Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/claude-manual-search, POST} route"}
{"timestamp":"2026-10-19T13:49:14.403Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/claude-quick-search, POST} route"}
{"timestamp":"2026-10-19T13:49:14.403Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/scheduler-status, GET} route"}
{"timestamp":"2026-10-19T13:49:14.403Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/health-check, GET} route"}
{"timestamp":"2026-10-19T13:49:14.404Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/pause-scheduler, POST} route"}
{"timestamp":"2026-10-19T13:49:14.404Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/:id, GET} route"}
{"timestamp":"2026-10-19T13:49:14.404Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/:id, PATCH} route"}
{"timestamp":"2026-10-19T13:49:14.404Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/:id, DELETE} route"}
{"timestamp":"2026-10-19T13:49:14.404Z","level":"log","context":"RoutesResolver","message":"DomainController {/domains}:"}
{"timestamp":"2026-10-19T13:49:14.404Z","level":"log","context":"RouterExplorer","message":"Mapped {/domains, GET} route"}
{"timestamp":"2026-10-19T13:49:14.404Z","level":"log","context":"RouterExplorer","message":"Mapped {/domains/:id, GET} route"}
{"timestamp":"2026-10-19T13:49:14.405Z","level":"log","context":"RouterExplorer","message":"Mapped {/domains, POST} route"}
{"timestamp":"2026-10-19T13:49:14.405Z","level":"log","context":"RouterExplorer","message":"Mapped {/domains/:id, PUT} route"}
{"timestamp":"2026-10-19T13:49:14.405Z","level":"log","context":"RouterExplorer","message":"Mapped {/domains/:id, DELETE} route"}
{"timestamp":"2026-10-19T13:49:14.405Z","level":"log","context":"RouterExplorer","message":"Mapped {/domains/seed, POST} route"}
{"timestamp":"2026-10-19T13:49:14.405Z","level":"log","context":"RoutesResolver","message":"MspSubscriptionController {/msp-subscription}:"}
{"timestamp":"2026-10-19T13:49:14.405Z","level":"log","context":"RouterExplorer","message":"Mapped {/msp-subscription/current, GET} route"}
{"timestamp":"2026-10-19T13:49:14.405Z","level":"log","context":"RouterExplorer","message":"Mapped {/msp-subscription/invoices, GET} route"}
{"timestamp":"2026-10-19T13:49:14.406Z","level":"log","context":"RouterExplorer","message":"Mapped {/msp-subscription/invoice/:invoiceId/pdf, GET} route"}
{"timestamp":"2026-10-19T13:49:14.406Z","level":"log","context":"RoutesResolver","message":"MspSubscriptionController {/api/msp-subscription}:"}
{"timestamp":"2026-10-19T13:49:14.406Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/msp-subscription/current, GET} route"}
{"timestamp":"2026-10-19T13:49:14.406Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/msp-subscription/invoices, GET} route"}
{"timestamp":"2026-10-19T13:49:14.406Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/msp-subscription/invoice/:invoiceId/pdf, GET} route"}
{"timestamp":"2026-10-19T13:49:14.470Z","level":"log","context":"NestApplication","message":"Nest application successfully started"}
{"timestamp":"2026-10-19T13:49:14.490Z","level":"log","context":"Bootstrap","message":"Users API successfully started on port 3842"}
{"timestamp":"2026-10-19T13:49:14.491Z","level":"log","context":"SeedService","message":"🌱 Starting database seeding..."}
{"timestamp":"2026-10-19T13:49:14.497Z","level":"log","context":"SeedService","message":"Admin account already exists, skipping seed"}
{"timestamp":"2026-10-19T13:49:14.499Z","level":"log","context":"SeedService","message":"Reseller account already exists, skipping seed"}
{"timestamp":"2026-10-19T13:49:14.501Z","level":"log","context":"SeedService","message":"MSP account already exists, skipping seed"}
{"timestamp":"2026-10-19T13:49:14.501Z","level":"log","context":"SeedService","message":"✅ Database seeding completed successfully"}
{"timestamp":"2026-10-19T13:49:14.534Z","level":"log","context":"UsersApiController","message":"Hello endpoint accessed"}
{"timestamp":"2026-10-19T14:00:27.465Z","level":"log","context":"UsersApiController","message":"Hello endpoint accessed"}
{"timestamp":"2026-10-19T14:31:09.959Z","level":"warn","context":"LegacyRouteConverter","message":"Unsupported route path: \"/lp/*\". In previous versions, the symbols ?, *, and + were used to denote optional or repeating path parameters. The latest version of \"path-to-regexp\" now requires the use of named parameters. For example, instead of using a route like /users/* to capture all routes starting with \"/users\", you should use /users/*path. For more details, refer to the migration guide. Attempting to auto-convert..."}
{"timestamp":"2026-10-19T14:31:09.998Z","level":"log","context":"Bootstrap","message":"Starting Users API on port 3842..."}
{"timestamp":"2026-10-19T14:31:10.002Z","level":"log","context":"RoutesResolver","message":"UsersApiController {/}:"}
{"timestamp":"2026-10-19T14:31:10.006Z","level":"log","context":"RouterExplorer","message":"Mapped {/, GET} route"}
{"timestamp":"2026-10-19T14:31:10.006Z","level":"log","context":"RoutesResolver","message":"AuthController {/auth}:"}
{"timestamp":"2026-10-19T14:31:10.007Z","level":"log","context":"RouterExplorer","message":"Mapped {/auth/login, POST} route"}
{"timestamp":"2026-10-19T14:31:10.008Z","level":"log","context":"RouterExplorer","message":"Mapped {/auth/admin/login, POST} route"}
{"timestamp":"2026-10-19T14:31:10.008Z","level":"log","context":"RouterExplorer","message":"Mapped {/auth/send-otp, POST} route"}
{"timestamp":"2026-10-19T14:31:10.009Z","level":"log","context":"RouterExplorer","message":"Mapped {/auth/verify-otp, POST} route"}
{"timestamp":"2026-10-19T14:31:10.009Z","level":"log","context":"RouterExplorer","message":"Mapped {/auth/signup, POST} route"}
{"timestamp":"2026-10-19T14:31:10.010Z","level":"log","context":"RouterExplorer","message":"Mapped {/auth/subscription-status, GET} route"}
{"timestamp":"2026-10-19T14:31:10.010Z","level":"log","context":"RoutesResolver","message":"AdminMspController {/admin/msp}:"}
{"timestamp":"2026-10-19T14:31:10.011Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/msp, GET} route"}
{"timestamp":"2026-10-19T14:31:10.012Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/msp/:id, GET} route"}
{"timestamp":"2026-10-19T14:31:10.012Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/msp, POST} route"}
{"timestamp":"2026-10-19T14:31:10.013Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/msp/:id, PUT} route"}
{"timestamp":"2026-10-19T14:31:10.013Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/msp/:id, DELETE} route"}
{"timestamp":"2026-10-19T14:31:10.013Z","level":"log","context":"RoutesResolver","message":"AdminLicenseController {/admin/licenses}:"}
{"timestamp":"2026-10-19T14:31:10.013Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/licenses/summary, GET} route"}
{"timestamp":"2026-10-19T14:31:10.014Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/licenses/msp/:mspId, GET} route"}
{"timestamp":"2026-10-19T14:31:10.014Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/licenses/msp/:mspId, PUT} route"}
{"timestamp":"2026-10-19T14:31:10.014Z","level":"log","context":"RoutesResolver","message":"AdminImpersonationController {/admin/impersonation}:"}
{"timestamp":"2026-10-19T14:31:10.014Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/impersonation/msp-users, GET} route"}
{"timestamp":"2026-10-19T14:31:10.015Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/impersonation/impersonate, POST} route"}
{"timestamp":"2026-10-19T14:31:10.017Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/impersonation/stop, POST} route"}
{"timestamp":"2026-10-19T14:31:10.018Z","level":"log","context":"RoutesResolver","message":"AdminAiUsageController {/admin/ai-usage}:"}
{"timestamp":"2026-10-19T14:31:10.018Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-usage, GET} route"}
{"timestamp":"2026-10-19T14:31:10.018Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-usage/business/:businessId, GET} route"}
{"timestamp":"2026-10-19T14:31:10.018Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-usage/report/monthly, GET} route"}
{"timestamp":"2026-10-19T14:31:10.019Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-usage/pricing, GET} route"}
{"timestamp":"2026-10-19T14:31:10.019Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-usage/pricing, POST} route"}
{"timestamp":"2026-10-19T14:31:10.019Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-usage/credit/:businessId, PUT} route"}
{"timestamp":"2026-10-19T14:31:10.019Z","level":"log","context":"RoutesResolver","message":"AdminAiUsageController {/api/admin/ai-usage}:"}
{"timestamp":"2026-10-19T14:31:10.019Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-usage, GET} route"}
{"timestamp":"2026-10-19T14:31:10.020Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-usage/business/:businessId, GET} route"}
{"timestamp":"2026-10-19T14:31:10.020Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-usage/report/monthly, GET} route"}
{"timestamp":"2026-10-19T14:31:10.020Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-usage/pricing, GET} route"}
{"timestamp":"2026-10-19T14:31:10.020Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-usage/pricing, POST} route"}
{"timestamp":"2026-10-19T14:31:10.020Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-usage/credit/:businessId, PUT} route"}
{"timestamp":"2026-10-19T14:31:10.020Z","level":"log","context":"RoutesResolver","message":"AdminAiModelController {/admin/ai-models}:"}
{"timestamp":"2026-10-19T14:31:10.021Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models, POST} route"}
{"timestamp":"2026-10-19T14:31:10.021Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models, GET} route"}
{"timestamp":"2026-10-19T14:31:10.021Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/default, GET} route"}
{"timestamp":"2026-10-19T14:31:10.021Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/:id, GET} route"}
{"timestamp":"2026-10-19T14:31:10.021Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/:id, PUT} route"}
{"timestamp":"2026-10-19T14:31:10.022Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/:id, DELETE} route"}
{"timestamp":"2026-10-19T14:31:10.022Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/:id/set-default, POST} route"}
{"timestamp":"2026-10-19T14:31:10.022Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/assign-to-business, POST} route"}
{"timestamp":"2026-10-19T14:31:10.022Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/business/:businessId, GET} route"}
{"timestamp":"2026-10-19T14:31:10.023Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/:id/businesses, GET} route"}
{"timestamp":"2026-10-19T14:31:10.023Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/initialize-defaults, POST} route"}
{"timestamp":"2026-10-19T14:31:10.023Z","level":"log","context":"RoutesResolver","message":"AdminAiModelController {/api/admin/ai-models}:"}
{"timestamp":"2026-10-19T14:31:10.023Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models, POST} route"}
{"timestamp":"2026-10-19T14:31:10.023Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models, GET} route"}
{"timestamp":"2026-10-19T14:31:10.023Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/default, GET} route"}
{"timestamp":"2026-10-19T14:31:10.024Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/:id, GET} route"}
{"timestamp":"2026-10-19T14:31:10.024Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/:id, PUT} route"}
{"timestamp":"2026-10-19T14:31:10.024Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/:id, DELETE} route"}
{"timestamp":"2026-10-19T14:31:10.024Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/:id/set-default, POST} route"}
{"timestamp":"2026-10-19T14:31:10.024Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/assign-to-business, POST} route"}
{"timestamp":"2026-10-19T14:31:10.025Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/business/:businessId, GET} route"}
{"timestamp":"2026-10-19T14:31:10.025Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/:id/businesses, GET} route"}
{"timestamp":"2026-10-19T14:31:10.025Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/initialize-defaults, POST} route"}
{"timestamp":"2026-10-19T14:31:10.025Z","level":"log","context":"RoutesResolver","message":"AdminBusinessController {/admin/businesses}:"}
{"timestamp":"2026-10-19T14:31:10.025Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/businesses, GET} route"}
{"timestamp":"2026-10-19T14:31:10.025Z","level":"log","context":"RoutesResolver","message":"ResellerManagementController {/admin/resellers}:"}
{"timestamp":"2026-10-19T14:31:10.026Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/resellers, GET} route"}
{"timestamp":"2026-10-19T14:31:10.026Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/resellers/create-default, POST} route"}
{"timestamp":"2026-10-19T14:31:10.026Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/resellers, POST} route"}
{"timestamp":"2026-10-19T14:31:10.026Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/resellers/:id/toggle-status, PUT} route"}
{"timestamp":"2026-10-19T14:31:10.026Z","level":"log","context":"RoutesResolver","message":"SubscriptionController {/subscription}:"}
{"timestamp":"2026-10-19T14:31:10.027Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/plans, GET} route"}
{"timestamp":"2026-10-19T14:31:10.027Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/calculate-price, POST} route"}
{"timestamp":"2026-10-19T14:31:10.027Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/current, GET} route"}
{"timestamp":"2026-10-19T14:31:10.027Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/create, POST} route"}
{"timestamp":"2026-10-19T14:31:10.027Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/:id, PUT} route"}
{"timestamp":"2026-10-19T14:31:10.027Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/:id/cancel, DELETE} route"}
{"timestamp":"2026-10-19T14:31:10.028Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/sync/:stripeSubscriptionId, POST} route"}
{"timestamp":"2026-10-19T14:31:10.028Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/payments, GET} route"}
{"timestamp":"2026-10-19T14:31:10.028Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/payments/stats, GET} route"}
{"timestamp":"2026-10-19T14:31:10.028Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/payment/:id, GET} route"}
{"timestamp":"2026-10-19T14:31:10.028Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/payment-methods/attach, POST} route"}
{"timestamp":"2026-10-19T14:31:10.029Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/payment-methods/:paymentMethodId, DELETE} route"}
{"timestamp":"2026-10-19T14:31:10.029Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/payment-methods, GET} route"}
{"timestamp":"2026-10-19T14:31:10.029Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/setup-intent, POST} route"}
{"timestamp":"2026-10-19T14:31:10.029Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/update-employee-count, POST} route"}
{"timestamp":"2026-10-19T14:31:10.029Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/retry-payment/:subscriptionId, POST} route"}
{"timestamp":"2026-10-19T14:31:10.029Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/invoice/:invoiceId/pdf, GET} route"}
{"timestamp":"2026-10-19T14:31:10.030Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/preview-upgrade, POST} route"}
{"timestamp":"2026-10-19T14:31:10.030Z","level":"log","context":"RoutesResolver","message":"SubscriptionController {/api/subscription}:"}
{"timestamp":"2026-10-19T14:31:10.030Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/plans, GET} route"}
{"timestamp":"2026-10-19T14:31:10.030Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/calculate-price, POST} route"}
{"timestamp":"2026-10-19T14:31:10.030Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/current, GET} route"}
{"timestamp":"2026-10-19T14:31:10.030Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/create, POST} route"}
{"timestamp":"2026-10-19T14:31:10.031Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/:id, PUT} route"}
{"timestamp":"2026-10-19T14:31:10.031Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/:id/cancel, DELETE} route"}
{"timestamp":"2026-10-19T14:31:10.031Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/sync/:stripeSubscriptionId, POST} route"}
{"timestamp":"2026-10-19T14:31:10.031Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/payments, GET} route"}
{"timestamp":"2026-10-19T14:31:10.031Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/payments/stats, GET} route"}
{"timestamp":"2026-10-19T14:31:10.031Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/payment/:id, GET} route"}
{"timestamp":"2026-10-19T14:31:10.031Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/payment-methods/attach, POST} route"}
{"timestamp":"2026-10-19T14:31:10.032Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/payment-methods/:paymentMethodId, DELETE} route"}
{"timestamp":"2026-10-19T14:31:10.032Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/payment-methods, GET} route"}
{"timestamp":"2026-10-19T14:31:10.032Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/setup-intent, POST} route"}
{"timestamp":"2026-10-19T14:31:10.032Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/update-employee-count, POST} route"}
{"timestamp":"2026-10-19T14:31:10.032Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/retry-payment/:subscriptionId, POST} route"}
{"timestamp":"2026-10-19T14:31:10.032Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/invoice/:invoiceId/pdf, GET} route"}
{"timestamp":"2026-10-19T14:31:10.033Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/preview-upgrade, POST} route"}
{"timestamp":"2026-10-19T14:31:10.033Z","level":"log","context":"RoutesResolver","message":"StripeWebhookController {/stripe/webhook}:"}
{"timestamp":"2026-10-19T14:31:10.033Z","level":"log","context":"RouterExplorer","message":"Mapped {/stripe/webhook/test, GET} route"}
{"timestamp":"2026-10-19T14:31:10.033Z","level":"log","context":"RouterExplorer","message":"Mapped {/stripe/webhook, POST} route"}
{"timestamp":"2026-10-19T14:31:10.033Z","level":"log","context":"RoutesResolver","message":"EmailController {/email-templates}:"}
{"timestamp":"2026-10-19T14:31:10.033Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates/test, POST} route"}
{"timestamp":"2026-10-19T14:31:10.033Z","level":"log","context":"RoutesResolver","message":"EmployeeController {/employees}:"}
{"timestamp":"2026-10-19T14:31:10.034Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees, POST} route"}
{"timestamp":"2026-10-19T14:31:10.034Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees, GET} route"}
{"timestamp":"2026-10-19T14:31:10.034Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees/export, GET} route"}
{"timestamp":"2026-10-19T14:31:10.034Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees/risk-stats, GET} route"}
{"timestamp":"2026-10-19T14:31:10.034Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees/:id, GET} route"}
{"timestamp":"2026-10-19T14:31:10.034Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees/:id, PUT} route"}
{"timestamp":"2026-10-19T14:31:10.035Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees/:id, DELETE} route"}
{"timestamp":"2026-10-19T14:31:10.035Z","level":"log","context":"RoutesResolver","message":"GroupController {/groups}:"}
{"timestamp":"2026-10-19T14:31:10.035Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups, POST} route"}
{"timestamp":"2026-10-19T14:31:10.035Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups, GET} route"}
{"timestamp":"2026-10-19T14:31:10.035Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups/standard, GET} route"}
{"timestamp":"2026-10-19T14:31:10.035Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups/:id, GET} route"}
{"timestamp":"2026-10-19T14:31:10.036Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups/:id, PUT} route"}
{"timestamp":"2026-10-19T14:31:10.036Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups/:id, DELETE} route"}
{"timestamp":"2026-10-19T14:31:10.036Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups/:id/info, GET} route"}
{"timestamp":"2026-10-19T14:31:10.036Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups/:id/with-employees, GET} route"}
{"timestamp":"2026-10-19T14:31:10.036Z","level":"log","context":"RoutesResolver","message":"SenderProfileController {/sender-profiles}:"}
{"timestamp":"2026-10-19T14:31:10.036Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles, GET} route"}
{"timestamp":"2026-10-19T14:31:10.037Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles/:id, GET} route"}
{"timestamp":"2026-10-19T14:31:10.037Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles, POST} route"}
{"timestamp":"2026-10-19T14:31:10.037Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles/:id, PUT} route"}
{"timestamp":"2026-10-19T14:31:10.037Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles/:id, DELETE} route"}
{"timestamp":"2026-10-19T14:31:10.037Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles/:id/verify-domain, POST} route"}
{"timestamp":"2026-10-19T14:31:10.037Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles/domain-verification, GET} route"}
{"timestamp":"2026-10-19T14:31:10.037Z","level":"log","context":"RoutesResolver","message":"EmailTemplateController {/email-templates}:"}
{"timestamp":"2026-10-19T14:31:10.038Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates, GET} route"}
{"timestamp":"2026-10-19T14:31:10.038Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates/:id, GET} route"}
{"timestamp":"2026-10-19T14:31:10.038Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates, POST} route"}
{"timestamp":"2026-10-19T14:31:10.038Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates/:id, PUT} route"}
{"timestamp":"2026-10-19T14:31:10.038Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates/:id, DELETE} route"}
{"timestamp":"2026-10-19T14:31:10.039Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates/:id/duplicate, POST} route"}
{"timestamp":"2026-10-19T14:31:10.039Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates/:id/preview, GET} route"}
{"timestamp":"2026-10-19T14:31:10.039Z","level":"log","context":"RoutesResolver","message":"ScenarioController {/scenarios}:"}
{"timestamp":"2026-10-19T14:31:10.039Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios, POST} route"}
{"timestamp":"2026-10-19T14:31:10.039Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios/generate-content, POST} route"}
{"timestamp":"2026-10-19T14:31:10.039Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios, GET} route"}
{"timestamp":"2026-10-19T14:31:10.040Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios/:id, GET} route"}
{"timestamp":"2026-10-19T14:31:10.040Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios/:id, PUT} route"}
{"timestamp":"2026-10-19T14:31:10.040Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios/:id, DELETE} route"}
{"timestamp":"2026-10-19T14:31:10.040Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios/generate-from-json, POST} route"}
{"timestamp":"2026-10-19T14:31:10.040Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios/:id/save-as-custom-scenario, POST} route"}
{"timestamp":"2026-10-19T14:31:10.040Z","level":"log","context":"RoutesResolver","message":"CampaignController {/campaigns}:"}
{"timestamp":"2026-10-19T14:31:10.041Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns, POST} route"}
{"timestamp":"2026-10-19T14:31:10.041Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns, GET} route"}
{"timestamp":"2026-10-19T14:31:10.041Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id, GET} route"}
{"timestamp":"2026-10-19T14:31:10.041Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id/details, GET} route"}
{"timestamp":"2026-10-19T14:31:10.041Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id/employees, GET} route"}
{"timestamp":"2026-10-19T14:31:10.042Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id, PATCH} route"}
{"timestamp":"2026-10-19T14:31:10.042Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id/start, POST} route"}
{"timestamp":"2026-10-19T14:31:10.042Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id/stop, POST} route"}
{"timestamp":"2026-10-19T14:31:10.042Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id/duplicate, POST} route"}
{"timestamp":"2026-10-19T14:31:10.042Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id, DELETE} route"}
{"timestamp":"2026-10-19T14:31:10.042Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/auto-generate-program, POST} route"}
{"timestamp":"2026-10-19T14:31:10.043Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/generate-from-threat-intelligence, POST} route"}
{"timestamp":"2026-10-19T14:31:10.043Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id/risk-score, GET} route"}
{"timestamp":"2026-10-19T14:31:10.043Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/recalculate-risk-scores, POST} route"}
{"timestamp":"2026-10-19T14:31:10.043Z","level":"log","context":"RoutesResolver","message":"CampaignController {/api/campaigns}:"}
{"timestamp":"2026-10-19T14:31:10.043Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns, POST} route"}
{"timestamp":"2026-10-19T14:31:10.043Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns, GET} route"}
{"timestamp":"2026-10-19T14:31:10.043Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id, GET} route"}
{"timestamp":"2026-10-19T14:31:10.044Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id/details, GET} route"}
{"timestamp":"2026-10-19T14:31:10.044Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id/employees, GET} route"}
{"timestamp":"2026-10-19T14:31:10.044Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id, PATCH} route"}
{"timestamp":"2026-10-19T14:31:10.044Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id/start, POST} route"}
{"timestamp":"2026-10-19T14:31:10.044Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id/stop, POST} route"}
{"timestamp":"2026-10-19T14:31:10.044Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id/duplicate, POST} route"}
{"timestamp":"2026-10-19T14:31:10.045Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id, DELETE} route"}
{"timestamp":"2026-10-19T14:31:10.045Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/auto-generate-program, POST} route"}
{"timestamp":"2026-10-19T14:31:10.045Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/generate-from-threat-intelligence, POST} route"}
{"timestamp":"2026-10-19T14:31:10.045Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id/risk-score, GET} route"}
{"timestamp":"2026-10-19T14:31:10.045Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/recalculate-risk-scores, POST} route"}
{"timestamp":"2026-10-19T14:31:10.045Z","level":"log","context":"RoutesResolver","message":"NotificationsController {/notifications}:"}
{"timestamp":"2026-10-19T14:31:10.046Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications, POST} route"}
{"timestamp":"2026-10-19T14:31:10.046Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications, GET} route"}
{"timestamp":"2026-10-19T14:31:10.046Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/unread, GET} route"}
{"timestamp":"2026-10-19T14:31:10.046Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/unread-count, GET} route"}
{"timestamp":"2026-10-19T14:31:10.046Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/:id, GET} route"}
{"timestamp":"2026-10-19T14:31:10.047Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/:id, PATCH} route"}
{"timestamp":"2026-10-19T14:31:10.047Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/:id/read, PATCH} route"}
{"timestamp":"2026-10-19T14:31:10.047Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/mark-all-read, PATCH} route"}
{"timestamp":"2026-10-19T14:31:10.047Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/:id, DELETE} route"}
{"timestamp":"2026-10-19T14:31:10.048Z","level":"log","context":"RoutesResolver","message":"LandingPageController {/lp}:"}
{"timestamp":"2026-10-19T14:31:10.048Z","level":"log","context":"RouterExplorer","message":"Mapped {/lp/image, GET} route"}
{"timestamp":"2026-10-19T14:31:10.048Z","level":"log","context":"RouterExplorer","message":"Mapped {/lp/learning, GET} route"}
{"timestamp":"2026-10-19T14:31:10.048Z","level":"log","context":"RouterExplorer","message":"Mapped {/lp/submit, POST} route"}
{"timestamp":"2026-10-19T14:31:10.048Z","level":"log","context":"RouterExplorer","message":"Mapped {/lp/test, GET} route"}
{"timestamp":"2026-10-19T14:31:10.048Z","level":"warn","context":"LegacyRouteConverter","message":"Unsupported route path: \"/lp/*\". In previous versions, the symbols ?, *, and + were used to denote optional or repeating path parameters. The latest version of \"path-to-regexp\" now requires the use of named parameters. For example, instead of using a route like /users/* to capture all routes starting with \"/users\", you should use /users/*path. For more details, refer to the migration guide. Attempting to auto-convert..."}
{"timestamp":"2026-10-19T14:31:10.049Z","level":"log","context":"RouterExplorer","message":"Mapped {/lp/*, ALL} route"}
{"timestamp":"2026-10-19T14:31:10.049Z","level":"log","context":"RoutesResolver","message":"SupportController {/support}:"}
{"timestamp":"2026-10-19T14:31:10.050Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets, POST} route"}
{"timestamp":"2026-10-19T14:31:10.050Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets, GET} route"}
{"timestamp":"2026-10-19T14:31:10.050Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets/:id, GET} route"}
{"timestamp":"2026-10-19T14:31:10.050Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets/:id, PATCH} route"}
{"timestamp":"2026-10-19T14:31:10.050Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets/:id, DELETE} route"}
{"timestamp":"2026-10-19T14:31:10.051Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets/:id/messages, POST} route"}
{"timestamp":"2026-10-19T14:31:10.051Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets/:id/close, POST} route"}
{"timestamp":"2026-10-19T14:31:10.051Z","level":"log","context":"RoutesResolver","message":"BusninessMetricsController {/business-metrics}:"}
{"timestamp":"2026-10-19T14:31:10.051Z","level":"log","context":"RouterExplorer","message":"Mapped {/business-metrics, GET} route"}
{"timestamp":"2026-10-19T14:31:10.051Z","level":"log","context":"RoutesResolver","message":"UsersController {/users}:"}
{"timestamp":"2026-10-19T14:31:10.051Z","level":"log","context":"RouterExplorer","message":"Mapped {/users/:id, PUT} route"}
{"timestamp":"2026-10-19T14:31:10.052Z","level":"log","context":"RouterExplorer","message":"Mapped {/users/settings, GET} route"}
{"timestamp":"2026-10-19T14:31:10.052Z","level":"log","context":"RouterExplorer","message":"Mapped {/users/settings/general, PUT} route"}
{"timestamp":"2026-10-19T14:31:10.052Z","level":"log","context":"RouterExplorer","message":"Mapped {/users/company/settings, PUT} route"}
{"timestamp":"2026-10-19T14:31:10.052Z","level":"log","context":"RouterExplorer","message":"Mapped {/users/change-password, POST} route"}
{"timestamp":"2026-10-19T14:31:10.052Z","level":"log","context":"RouterExplorer","message":"Mapped {/users/localization/settings, PUT} route"}
{"timestamp":"2026-10-19T14:31:10.052Z","level":"log","context":"RoutesResolver","message":"PartnerController {/partner}:"}
{"timestamp":"2026-10-19T14:31:10.053Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses, POST} route"}
{"timestamp":"2026-10-19T14:31:10.053Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses, GET} route"}
{"timestamp":"2026-10-19T14:31:10.053Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses/:id, GET} route"}
{"timestamp":"2026-10-19T14:31:10.053Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses/:id, PUT} route"}
{"timestamp":"2026-10-19T14:31:10.053Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses/:id, DELETE} route"}
{"timestamp":"2026-10-19T14:31:10.054Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses/:id/impersonate, POST} route"}
{"timestamp":"2026-10-19T14:31:10.054Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses/stop-impersonation, POST} route"}
{"timestamp":"2026-10-19T14:31:10.054Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/license-usage, GET} route"}
{"timestamp":"2026-10-19T14:31:10.054Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/invoices, POST} route"}
{"timestamp":"2026-10-19T14:31:10.054Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/invoices, GET} route"}
{"timestamp":"2026-10-19T14:31:10.054Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/invoices/:id, GET} route"}
{"timestamp":"2026-10-19T14:31:10.055Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/invoices/:id, PUT} route"}
{"timestamp":"2026-10-19T14:31:10.055Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/invoices/:id, DELETE} route"}
{"timestamp":"2026-10-19T14:31:10.055Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/invoices/:id/mark-paid, PUT} route"}
{"timestamp":"2026-10-19T14:31:10.055Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/onboarding/generate-token, POST} route"}
{"timestamp":"2026-10-19T14:31:10.055Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/dashboard, GET} route"}
{"timestamp":"2026-10-19T14:31:10.055Z","level":"log","context":"RoutesResolver","message":"MspSubscriptionController {/partner/msp-subscriptions}:"}
{"timestamp":"2026-10-19T14:31:10.056Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/plans, POST} route"}
{"timestamp":"2026-10-19T14:31:10.056Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/plans, GET} route"}
{"timestamp":"2026-10-19T14:31:10.056Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/plans/:planId, GET} route"}
{"timestamp":"2026-10-19T14:31:10.056Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/plans/:planId, PUT} route"}
{"timestamp":"2026-10-19T14:31:10.056Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/plans/:planId, DELETE} route"}
{"timestamp":"2026-10-19T14:31:10.056Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/businesses/:businessId/subscription, POST} route"}
{"timestamp":"2026-10-19T14:31:10.057Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions, GET} route"}
{"timestamp":"2026-10-19T14:31:10.057Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/businesses/:businessId/subscription, GET} route"}
{"timestamp":"2026-10-19T14:31:10.057Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/businesses/:businessId/subscription, PUT} route"}
{"timestamp":"2026-10-19T14:31:10.057Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/businesses/:businessId/subscription, DELETE} route"}
{"timestamp":"2026-10-19T14:31:10.057Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/businesses/:businessId/subscription/limits, GET} route"}
{"timestamp":"2026-10-19T14:31:10.058Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/businesses/:businessId/subscription/change-plan, PUT} route"}
{"timestamp":"2026-10-19T14:31:10.058Z","level":"log","context":"RoutesResolver","message":"OnboardingController {/onboarding}:"}
{"timestamp":"2026-10-19T14:31:10.058Z","level":"log","context":"RouterExplorer","message":"Mapped {/onboarding/validate/:token, GET} route"}
{"timestamp":"2026-10-19T14:31:10.058Z","level":"log","context":"RouterExplorer","message":"Mapped {/onboarding/complete/:token, POST} route"}
{"timestamp":"2026-10-19T14:31:10.058Z","level":"log","context":"RoutesResolver","message":"ResellerController {/reseller}:"}
{"timestamp":"2026-10-19T14:31:10.058Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/businesses, POST} route"}
{"timestamp":"2026-10-19T14:31:10.058Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/businesses, GET} route"}
{"timestamp":"2026-10-19T14:31:10.059Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/businesses/:id, GET} route"}
{"timestamp":"2026-10-19T14:31:10.059Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/businesses/:id, PUT} route"}
{"timestamp":"2026-10-19T14:31:10.059Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/businesses/:id, DELETE} route"}
{"timestamp":"2026-10-19T14:31:10.059Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/license-usage, GET} route"}
{"timestamp":"2026-10-19T14:31:10.059Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/invoices, POST} route"}
{"timestamp":"2026-10-19T14:31:10.059Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/invoices, GET} route"}
{"timestamp":"2026-10-19T14:31:10.060Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/invoices/:id, GET} route"}
{"timestamp":"2026-10-19T14:31:10.060Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/invoices/:id, PUT} route"}
{"timestamp":"2026-10-19T14:31:10.060Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/invoices/:id, DELETE} route"}
{"timestamp":"2026-10-19T14:31:10.060Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/invoices/:id/mark-paid, PUT} route"}
{"timestamp":"2026-10-19T14:31:10.060Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/onboarding/generate-token, POST} route"}
{"timestamp":"2026-10-19T14:31:10.061Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/dashboard, GET} route"}
{"timestamp":"2026-10-19T14:31:10.061Z","level":"log","context":"RoutesResolver","message":"ResellerSubscriptionController {/reseller}:"}
{"timestamp":"2026-10-19T14:31:10.061Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/plans, POST} route"}
{"timestamp":"2026-10-19T14:31:10.061Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/plans, GET} route"}
{"timestamp":"2026-10-19T14:31:10.061Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/plans/:planId, GET} route"}
{"timestamp":"2026-10-19T14:31:10.061Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/plans/:planId, PUT} route"}
{"timestamp":"2026-10-19T14:31:10.061Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/plans/:planId, DELETE} route"}
{"timestamp":"2026-10-19T14:31:10.062Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/subscriptions/businesses/:businessId/subscription, POST} route"}
{"timestamp":"2026-10-19T14:31:10.062Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/subscriptions, GET} route"}
{"timestamp":"2026-10-19T14:31:10.062Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/subscriptions/businesses/:businessId/subscription, GET} route"}
{"timestamp":"2026-10-19T14:31:10.062Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/subscriptions/businesses/:businessId/subscription, PUT} route"}
{"timestamp":"2026-10-19T14:31:10.062Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/subscriptions/businesses/:businessId/subscription, DELETE} route"}
{"timestamp":"2026-10-19T14:31:10.063Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/subscriptions/businesses/:businessId/subscription/limits, GET} route"}
{"timestamp":"2026-10-19T14:31:10.063Z","level":"log","context":"RoutesResolver","message":"HealthController {/health}:"}
{"timestamp":"2026-10-19T14:31:10.063Z","level":"log","context":"RouterExplorer","message":"Mapped {/health, GET} route"}
{"timestamp":"2026-10-19T14:31:10.063Z","level":"log","context":"RouterExplorer","message":"Mapped {/health/test-logs, GET} route"}
{"timestamp":"2026-10-19T14:31:10.063Z","level":"log","context":"RoutesResolver","message":"AzureAdController {/azure-ad}:"}
{"timestamp":"2026-10-19T14:31:10.063Z","level":"log","context":"RouterExplorer","message":"Mapped {/azure-ad/config, POST} route"}
{"timestamp":"2026-10-19T14:31:10.063Z","level":"log","context":"RouterExplorer","message":"Mapped {/azure-ad/config, GET} route"}
{"timestamp":"2026-10-19T14:31:10.064Z","level":"log","context":"RouterExplorer","message":"Mapped {/azure-ad/test-connection, POST} route"}
{"timestamp":"2026-10-19T14:31:10.064Z","level":"log","context":"RouterExplorer","message":"Mapped {/azure-ad/sync, POST} route"}
{"timestamp":"2026-10-19T14:31:10.064Z","level":"log","context":"RoutesResolver","message":"ThreatsController {/threats}:"}
{"timestamp":"2026-10-19T14:31:10.064Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats, POST} route"}
{"timestamp":"2026-10-19T14:31:10.064Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats, GET} route"}
{"timestamp":"2026-10-19T14:31:10.064Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/chart-data, GET} route"}
{"timestamp":"2026-10-19T14:31:10.064Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/claude-search, POST} route"}
{"timestamp":"2026-10-19T14:31:10.065Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/claude-latest, POST} route"}
{"timestamp":"2026-10-19T14:31:10.065Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/claude-trending, POST} route"}
{"timestamp":"2026-10-19T14:31:10.065Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/claude-categories, POST} route"}
{"timestamp":"2026-10-19T14:31:10.065Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/claude-manual-search, POST} route"}
{"timestamp":"2026-10-19T14:31:10.065Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/claude-quick-search, POST} route"}
{"timestamp":"2026-10-19T14:31:10.066Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/scheduler-status, GET} route"}
{"timestamp":"2026-10-19T14:31:10.066Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/health-check, GET} route"}
{"timestamp":"2026-10-19T14:31:10.066Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/pause-scheduler, POST} route"}
{"timestamp":"2026-10-19T14:31:10.066Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/:id, GET} route"}
{"timestamp":"2026-10-19T14:31:10.066Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/:id, PATCH} route"}
{"timestamp":"2026-10-19T14:31:10.066Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/:id, DELETE} route"}
{"timestamp":"2026-10-19T14:31:10.066Z","level":"log","context":"RoutesResolver","message":"DomainController {/domains}:"}
{"timestamp":"2026-10-19T14:31:10.067Z","level":"log","context":"RouterExplorer","message":"Mapped {/domains, GET} route"}
{"timestamp":"2026-10-19T14:31:10.067Z","level":"log","context":"RouterExplorer","message":"Mapped {/domains/:id, GET} route"}
{"timestamp":"2026-10-19T14:31:10.067Z","level":"log","context":"RouterExplorer","message":"Mapped {/domains, POST} route"}
{"timestamp":"2026-10-19T14:31:10.067Z","level":"log","context":"RouterExplorer","message":"Mapped {/domains/:id, PUT} route"}
{"timestamp":"2026-10-19T14:31:10.067Z","level":"log","context":"RouterExplorer","message":"Mapped {/domains/:id, DELETE} route"}
{"timestamp":"2026-10-19T14:31:10.067Z","level":"log","context":"RouterExplorer","message":"Mapped {/domains/seed, POST} route"}
{"timestamp":"2026-10-19T14:31:10.068Z","level":"log","context":"RoutesResolver","message":"MspSubscriptionController {/msp-subscription}:"}
{"timestamp":"2026-10-19T14:31:10.068Z","level":"log","context":"RouterExplorer","message":"Mapped {/msp-subscription/current, GET} route"}
{"timestamp":"2026-10-19T14:31:10.068Z","level":"log","context":"RouterExplorer","message":"Mapped {/msp-subscription/invoices, GET} route"}
{"timestamp":"2026-10-19T14:31:10.068Z","level":"log","context":"RouterExplorer","message":"Mapped {/msp-subscription/invoice/:invoiceId/pdf, GET} route"}
{"timestamp":"2026-10-19T14:31:10.068Z","level":"log","context":"RoutesResolver","message":"MspSubscriptionController {/api/msp-subscription}:"}
{"timestamp":"2026-10-19T14:31:10.068Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/msp-subscription/current, GET} route"}
{"timestamp":"2026-10-19T14:31:10.069Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/msp-subscription/invoices, GET} route"}
{"timestamp":"2026-10-19T14:31:10.069Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/msp-subscription/invoice/:invoiceId/pdf, GET} route"}
{"timestamp":"2026-10-19T14:31:10.147Z","level":"log","context":"NestApplication","message":"Nest application successfully started"}
{"timestamp":"2026-10-19T14:31:10.199Z","level":"log","context":"Bootstrap","message":"Users API successfully started on port 3842"}
{"timestamp":"2026-10-19T14:31:10.199Z","level":"log","context":"SeedService","message":"🌱 Starting database seeding..."}
{"timestamp":"2026-10-19T14:31:10.205Z","level":"log","context":"SeedService","message":"Admin account already exists, skipping seed"}
{"timestamp":"2026-10-19T14:31:10.208Z","level":"log","context":"SeedService","message":"Reseller account already exists, skipping seed"}
{"timestamp":"2026-10-19T14:31:10.209Z","level":"log","context":"SeedService","message":"MSP account already exists, skipping seed"}
{"timestamp":"2026-10-19T14:31:10.209Z","level":"log","context":"SeedService","message":"✅ Database seeding completed successfully"}
{"timestamp":"2026-10-19T14:56:20.990Z","level":"warn","context":"LegacyRouteConverter","message":"Unsupported route path: \"/lp/*\". In previous versions, the symbols ?, *, and + were used to denote optional or repeating path parameters. The latest version of \"path-to-regexp\" now requires the use of named parameters. For example, instead of using a route like /users/* to capture all routes starting with \"/users\", you should use /users/*path. For more details, refer to the migration guide. Attempting to auto-convert..."}
{"timestamp":"2026-10-19T14:56:21.032Z","level":"log","context":"Bootstrap","message":"Starting Users API on port 3842..."}
{"timestamp":"2026-10-19T14:56:21.035Z","level":"log","context":"RoutesResolver","message":"UsersApiController {/}:"}
{"timestamp":"2026-10-19T14:56:21.039Z","level":"log","context":"RouterExplorer","message":"Mapped {/, GET} route"}
{"timestamp":"2026-10-19T14:56:21.039Z","level":"log","context":"RoutesResolver","message":"AuthController {/auth}:"}
{"timestamp":"2026-10-19T14:56:21.039Z","level":"log","context":"RouterExplorer","message":"Mapped {/auth/login, POST} route"}
{"timestamp":"2026-10-19T14:56:21.040Z","level":"log","context":"RouterExplorer","message":"Mapped {/auth/admin/login, POST} route"}
{"timestamp":"2026-10-19T14:56:21.041Z","level":"log","context":"RouterExplorer","message":"Mapped {/auth/send-otp, POST} route"}
{"timestamp":"2026-10-19T14:56:21.041Z","level":"log","context":"RouterExplorer","message":"Mapped {/auth/verify-otp, POST} route"}
{"timestamp":"2026-10-19T14:56:21.041Z","level":"log","context":"RouterExplorer","message":"Mapped {/auth/signup, POST} route"}
{"timestamp":"2026-10-19T14:56:21.042Z","level":"log","context":"RouterExplorer","message":"Mapped {/auth/subscription-status, GET} route"}
{"timestamp":"2026-10-19T14:56:21.042Z","level":"log","context":"RoutesResolver","message":"AdminMspController {/admin/msp}:"}
{"timestamp":"2026-10-19T14:56:21.042Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/msp, GET} route"}
{"timestamp":"2026-10-19T14:56:21.043Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/msp/:id, GET} route"}
{"timestamp":"2026-10-19T14:56:21.044Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/msp, POST} route"}
{"timestamp":"2026-10-19T14:56:21.044Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/msp/:id, PUT} route"}
{"timestamp":"2026-10-19T14:56:21.044Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/msp/:id, DELETE} route"}
{"timestamp":"2026-10-19T14:56:21.044Z","level":"log","context":"RoutesResolver","message":"AdminLicenseController {/admin/licenses}:"}
{"timestamp":"2026-10-19T14:56:21.045Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/licenses/summary, GET} route"}
{"timestamp":"2026-10-19T14:56:21.045Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/licenses/msp/:mspId, GET} route"}
{"timestamp":"2026-10-19T14:56:21.045Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/licenses/msp/:mspId, PUT} route"}
{"timestamp":"2026-10-19T14:56:21.045Z","level":"log","context":"RoutesResolver","message":"AdminImpersonationController {/admin/impersonation}:"}
{"timestamp":"2026-10-19T14:56:21.045Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/impersonation/msp-users, GET} route"}
{"timestamp":"2026-10-19T14:56:21.046Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/impersonation/impersonate, POST} route"}
{"timestamp":"2026-10-19T14:56:21.046Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/impersonation/stop, POST} route"}
{"timestamp":"2026-10-19T14:56:21.046Z","level":"log","context":"RoutesResolver","message":"AdminAiUsageController {/admin/ai-usage}:"}
{"timestamp":"2026-10-19T14:56:21.046Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-usage, GET} route"}
{"timestamp":"2026-10-19T14:56:21.047Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-usage/business/:businessId, GET} route"}
{"timestamp":"2026-10-19T14:56:21.049Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-usage/report/monthly, GET} route"}
{"timestamp":"2026-10-19T14:56:21.050Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-usage/pricing, GET} route"}
{"timestamp":"2026-10-19T14:56:21.050Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-usage/pricing, POST} route"}
{"timestamp":"2026-10-19T14:56:21.050Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-usage/credit/:businessId, PUT} route"}
{"timestamp":"2026-10-19T14:56:21.050Z","level":"log","context":"RoutesResolver","message":"AdminAiUsageController {/api/admin/ai-usage}:"}
{"timestamp":"2026-10-19T14:56:21.050Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-usage, GET} route"}
{"timestamp":"2026-10-19T14:56:21.051Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-usage/business/:businessId, GET} route"}
{"timestamp":"2026-10-19T14:56:21.051Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-usage/report/monthly, GET} route"}
{"timestamp":"2026-10-19T14:56:21.051Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-usage/pricing, GET} route"}
{"timestamp":"2026-10-19T14:56:21.051Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-usage/pricing, POST} route"}
{"timestamp":"2026-10-19T14:56:21.051Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-usage/credit/:businessId, PUT} route"}
{"timestamp":"2026-10-19T14:56:21.051Z","level":"log","context":"RoutesResolver","message":"AdminAiModelController {/admin/ai-models}:"}
{"timestamp":"2026-10-19T14:56:21.052Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models, POST} route"}
{"timestamp":"2026-10-19T14:56:21.052Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models, GET} route"}
{"timestamp":"2026-10-19T14:56:21.052Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/default, GET} route"}
{"timestamp":"2026-10-19T14:56:21.052Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/:id, GET} route"}
{"timestamp":"2026-10-19T14:56:21.052Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/:id, PUT} route"}
{"timestamp":"2026-10-19T14:56:21.053Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/:id, DELETE} route"}
{"timestamp":"2026-10-19T14:56:21.053Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/:id/set-default, POST} route"}
{"timestamp":"2026-10-19T14:56:21.053Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/assign-to-business, POST} route"}
{"timestamp":"2026-10-19T14:56:21.053Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/business/:businessId, GET} route"}
{"timestamp":"2026-10-19T14:56:21.054Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/:id/businesses, GET} route"}
{"timestamp":"2026-10-19T14:56:21.054Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/initialize-defaults, POST} route"}
{"timestamp":"2026-10-19T14:56:21.054Z","level":"log","context":"RoutesResolver","message":"AdminAiModelController {/api/admin/ai-models}:"}
{"timestamp":"2026-10-19T14:56:21.054Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models, POST} route"}
{"timestamp":"2026-10-19T14:56:21.054Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models, GET} route"}
{"timestamp":"2026-10-19T14:56:21.055Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/default, GET} route"}
{"timestamp":"2026-10-19T14:56:21.055Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/:id, GET} route"}
{"timestamp":"2026-10-19T14:56:21.055Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/:id, PUT} route"}
{"timestamp":"2026-10-19T14:56:21.055Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/:id, DELETE} route"}
{"timestamp":"2026-10-19T14:56:21.055Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/:id/set-default, POST} route"}
{"timestamp":"2026-10-19T14:56:21.055Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/assign-to-business, POST} route"}
{"timestamp":"2026-10-19T14:56:21.055Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/business/:businessId, GET} route"}
{"timestamp":"2026-10-19T14:56:21.056Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/:id/businesses, GET} route"}
{"timestamp":"2026-10-19T14:56:21.056Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/initialize-defaults, POST} route"}
{"timestamp":"2026-10-19T14:56:21.056Z","level":"log","context":"RoutesResolver","message":"AdminBusinessController {/admin/businesses}:"}
{"timestamp":"2026-10-19T14:56:21.056Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/businesses, GET} route"}
{"timestamp":"2026-10-19T14:56:21.056Z","level":"log","context":"RoutesResolver","message":"ResellerManagementController {/admin/resellers}:"}
{"timestamp":"2026-10-19T14:56:21.056Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/resellers, GET} route"}
{"timestamp":"2026-10-19T14:56:21.057Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/resellers/create-default, POST} route"}
{"timestamp":"2026-10-19T14:56:21.057Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/resellers, POST} route"}
{"timestamp":"2026-10-19T14:56:21.057Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/resellers/:id/toggle-status, PUT} route"}
{"timestamp":"2026-10-19T14:56:21.057Z","level":"log","context":"RoutesResolver","message":"SubscriptionController {/subscription}:"}
{"timestamp":"2026-10-19T14:56:21.057Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/plans, GET} route"}
{"timestamp":"2026-10-19T14:56:21.057Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/calculate-price, POST} route"}
{"timestamp":"2026-10-19T14:56:21.058Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/current, GET} route"}
{"timestamp":"2026-10-19T14:56:21.058Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/create, POST} route"}
{"timestamp":"2026-10-19T14:56:21.058Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/:id, PUT} route"}
{"timestamp":"2026-10-19T14:56:21.058Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/:id/cancel, DELETE} route"}
{"timestamp":"2026-10-19T14:56:21.058Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/sync/:stripeSubscriptionId, POST} route"}
{"timestamp":"2026-10-19T14:56:21.058Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/payments, GET} route"}
{"timestamp":"2026-10-19T14:56:21.059Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/payments/stats, GET} route"}
{"timestamp":"2026-10-19T14:56:21.059Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/payment/:id, GET} route"}
{"timestamp":"2026-10-19T14:56:21.059Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/payment-methods/attach, POST} route"}
{"timestamp":"2026-10-19T14:56:21.059Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/payment-methods/:paymentMethodId, DELETE} route"}
{"timestamp":"2026-10-19T14:56:21.059Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/payment-methods, GET} route"}
{"timestamp":"2026-10-19T14:56:21.059Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/setup-intent, POST} route"}
{"timestamp":"2026-10-19T14:56:21.059Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/update-employee-count, POST} route"}
{"timestamp":"2026-10-19T14:56:21.060Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/retry-payment/:subscriptionId, POST} route"}
{"timestamp":"2026-10-19T14:56:21.060Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/invoice/:invoiceId/pdf, GET} route"}
{"timestamp":"2026-10-19T14:56:21.060Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/preview-upgrade, POST} route"}
{"timestamp":"2026-10-19T14:56:21.060Z","level":"log","context":"RoutesResolver","message":"SubscriptionController {/api/subscription}:"}
{"timestamp":"2026-10-19T14:56:21.060Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/plans, GET} route"}
{"timestamp":"2026-10-19T14:56:21.060Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/calculate-price, POST} route"}
{"timestamp":"2026-10-19T14:56:21.060Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/current, GET} route"}
{"timestamp":"2026-10-19T14:56:21.061Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/create, POST} route"}
{"timestamp":"2026-10-19T14:56:21.061Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/:id, PUT} route"}
{"timestamp":"2026-10-19T14:56:21.061Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/:id/cancel, DELETE} route"}
{"timestamp":"2026-10-19T14:56:21.061Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/sync/:stripeSubscriptionId, POST} route"}
{"timestamp":"2026-10-19T14:56:21.061Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/payments, GET} route"}
{"timestamp":"2026-10-19T14:56:21.061Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/payments/stats, GET} route"}
{"timestamp":"2026-10-19T14:56:21.062Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/payment/:id, GET} route"}
{"timestamp":"2026-10-19T14:56:21.062Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/payment-methods/attach, POST} route"}
{"timestamp":"2026-10-19T14:56:21.062Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/payment-methods/:paymentMethodId, DELETE} route"}
{"timestamp":"2026-10-19T14:56:21.062Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/payment-methods, GET} route"}
{"timestamp":"2026-10-19T14:56:21.062Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/setup-intent, POST} route"}
{"timestamp":"2026-10-19T14:56:21.062Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/update-employee-count, POST} route"}
{"timestamp":"2026-10-19T14:56:21.062Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/retry-payment/:subscriptionId, POST} route"}
{"timestamp":"2026-10-19T14:56:21.063Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/invoice/:invoiceId/pdf, GET} route"}
{"timestamp":"2026-10-19T14:56:21.063Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/preview-upgrade, POST} route"}
{"timestamp":"2026-10-19T14:56:21.063Z","level":"log","context":"RoutesResolver","message":"StripeWebhookController {/stripe/webhook}:"}
{"timestamp":"2026-10-19T14:56:21.063Z","level":"log","context":"RouterExplorer","message":"Mapped {/stripe/webhook/test, GET} route"}
{"timestamp":"2026-10-19T14:56:21.063Z","level":"log","context":"RouterExplorer","message":"Mapped {/stripe/webhook, POST} route"}
{"timestamp":"2026-10-19T14:56:21.063Z","level":"log","context":"RoutesResolver","message":"EmailController {/email-templates}:"}
{"timestamp":"2026-10-19T14:56:21.063Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates/test, POST} route"}
{"timestamp":"2026-10-19T14:56:21.063Z","level":"log","context":"RoutesResolver","message":"EmployeeController {/employees}:"}
{"timestamp":"2026-10-19T14:56:21.064Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees, POST} route"}
{"timestamp":"2026-10-19T14:56:21.064Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees, GET} route"}
{"timestamp":"2026-10-19T14:56:21.064Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees/export, GET} route"}
{"timestamp":"2026-10-19T14:56:21.064Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees/risk-stats, GET} route"}
{"timestamp":"2026-10-19T14:56:21.064Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees/:id, GET} route"}
{"timestamp":"2026-10-19T14:56:21.064Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees/:id, PUT} route"}
{"timestamp":"2026-10-19T14:56:21.065Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees/:id, DELETE} route"}
{"timestamp":"2026-10-19T14:56:21.065Z","level":"log","context":"RoutesResolver","message":"GroupController {/groups}:"}
{"timestamp":"2026-10-19T14:56:21.065Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups, POST} route"}
{"timestamp":"2026-10-19T14:56:21.065Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups, GET} route"}
{"timestamp":"2026-10-19T14:56:21.065Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups/standard, GET} route"}
{"timestamp":"2026-10-19T14:56:21.065Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups/:id, GET} route"}
{"timestamp":"2026-10-19T14:56:21.065Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups/:id, PUT} route"}
{"timestamp":"2026-10-19T14:56:21.066Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups/:id, DELETE} route"}
{"timestamp":"2026-10-19T14:56:21.066Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups/:id/info, GET} route"}
{"timestamp":"2026-10-19T14:56:21.066Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups/:id/with-employees, GET} route"}
{"timestamp":"2026-10-19T14:56:21.066Z","level":"log","context":"RoutesResolver","message":"SenderProfileController {/sender-profiles}:"}
{"timestamp":"2026-10-19T14:56:21.066Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles, GET} route"}
{"timestamp":"2026-10-19T14:56:21.066Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles/:id, GET} route"}
{"timestamp":"2026-10-19T14:56:21.067Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles, POST} route"}
{"timestamp":"2026-10-19T14:56:21.067Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles/:id, PUT} route"}
{"timestamp":"2026-10-19T14:56:21.067Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles/:id, DELETE} route"}
{"timestamp":"2026-10-19T14:56:21.067Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles/:id/verify-domain, POST} route"}
{"timestamp":"2026-10-19T14:56:21.067Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles/domain-verification, GET} route"}
{"timestamp":"2026-10-19T14:56:21.067Z","level":"log","context":"RoutesResolver","message":"EmailTemplateController {/email-templates}:"}
{"timestamp":"2026-10-19T14:56:21.067Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates, GET} route"}
{"timestamp":"2026-10-19T14:56:21.068Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates/:id, GET} route"}
{"timestamp":"2026-10-19T14:56:21.068Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates, POST} route"}
{"timestamp":"2026-10-19T14:56:21.068Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates/:id, PUT} route"}
{"timestamp":"2026-10-19T14:56:21.068Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates/:id, DELETE} route"}
{"timestamp":"2026-10-19T14:56:21.068Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates/:id/duplicate, POST} route"}
{"timestamp":"2026-10-19T14:56:21.068Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates/:id/preview, GET} route"}
{"timestamp":"2026-10-19T14:56:21.068Z","level":"log","context":"RoutesResolver","message":"ScenarioController {/scenarios}:"}
{"timestamp":"2026-10-19T14:56:21.069Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios, POST} route"}
{"timestamp":"2026-10-19T14:56:21.069Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios/generate-content, POST} route"}
{"timestamp":"2026-10-19T14:56:21.069Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios, GET} route"}
{"timestamp":"2026-10-19T14:56:21.069Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios/:id, GET} route"}
{"timestamp":"2026-10-19T14:56:21.069Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios/:id, PUT} route"}
{"timestamp":"2026-10-19T14:56:21.069Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios/:id, DELETE} route"}
{"timestamp":"2026-10-19T14:56:21.070Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios/generate-from-json, POST} route"}
{"timestamp":"2026-10-19T14:56:21.070Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios/:id/save-as-custom-scenario, POST} route"}
{"timestamp":"2026-10-19T14:56:21.070Z","level":"log","context":"RoutesResolver","message":"CampaignController {/campaigns}:"}
{"timestamp":"2026-10-19T14:56:21.070Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns, POST} route"}
{"timestamp":"2026-10-19T14:56:21.070Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns, GET} route"}
{"timestamp":"2026-10-19T14:56:21.070Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id, GET} route"}
{"timestamp":"2026-10-19T14:56:21.070Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id/details, GET} route"}
{"timestamp":"2026-10-19T14:56:21.071Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id/employees, GET} route"}
{"timestamp":"2026-10-19T14:56:21.071Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id, PATCH} route"}
{"timestamp":"2026-10-19T14:56:21.071Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id/start, POST} route"}
{"timestamp":"2026-10-19T14:56:21.071Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id/stop, POST} route"}
{"timestamp":"2026-10-19T14:56:21.071Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id/duplicate, POST} route"}
{"timestamp":"2026-10-19T14:56:21.072Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id, DELETE} route"}
{"timestamp":"2026-10-19T14:56:21.072Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/auto-generate-program, POST} route"}
{"timestamp":"2026-10-19T14:56:21.072Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/generate-from-threat-intelligence, POST} route"}
{"timestamp":"2026-10-19T14:56:21.072Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id/risk-score, GET} route"}
{"timestamp":"2026-10-19T14:56:21.072Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/recalculate-risk-scores, POST} route"}
{"timestamp":"2026-10-19T14:56:21.072Z","level":"log","context":"RoutesResolver","message":"CampaignController {/api/campaigns}:"}
{"timestamp":"2026-10-19T14:56:21.072Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns, POST} route"}
{"timestamp":"2026-10-19T14:56:21.073Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns, GET} route"}
{"timestamp":"2026-10-19T14:56:21.073Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id, GET} route"}
{"timestamp":"2026-10-19T14:56:21.073Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id/details, GET} route"}
{"timestamp":"2026-10-19T14:56:21.073Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id/employees, GET} route"}
{"timestamp":"2026-10-19T14:56:21.073Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id, PATCH} route"}
{"timestamp":"2026-10-19T14:56:21.073Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id/start, POST} route"}
{"timestamp":"2026-10-19T14:56:21.073Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id/stop, POST} route"}
{"timestamp":"2026-10-19T14:56:21.074Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id/duplicate, POST} route"}
{"timestamp":"2026-10-19T14:56:21.074Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id, DELETE} route"}
{"timestamp":"2026-10-19T14:56:21.074Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/auto-generate-program, POST} route"}
{"timestamp":"2026-10-19T14:56:21.074Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/generate-from-threat-intelligence, POST} route"}
{"timestamp":"2026-10-19T14:56:21.074Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id/risk-score, GET} route"}
{"timestamp":"2026-10-19T14:56:21.074Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/recalculate-risk-scores, POST} route"}
{"timestamp":"2026-10-19T14:56:21.074Z","level":"log","context":"RoutesResolver","message":"NotificationsController {/notifications}:"}
{"timestamp":"2026-10-19T14:56:21.075Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications, POST} route"}
{"timestamp":"2026-10-19T14:56:21.075Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications, GET} route"}
{"timestamp":"2026-10-19T14:56:21.075Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/unread, GET} route"}
{"timestamp":"2026-10-19T14:56:21.075Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/unread-count, GET} route"}
{"timestamp":"2026-10-19T14:56:21.075Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/:id, GET} route"}
{"timestamp":"2026-10-19T14:56:21.076Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/:id, PATCH} route"}
{"timestamp":"2026-10-19T14:56:21.076Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/:id/read, PATCH} route"}
{"timestamp":"2026-10-19T14:56:21.076Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/mark-all-read, PATCH} route"}
{"timestamp":"2026-10-19T14:56:21.076Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/:id, DELETE} route"}
{"timestamp":"2026-10-19T14:56:21.076Z","level":"log","context":"RoutesResolver","message":"LandingPageController {/lp}:"}
{"timestamp":"2026-10-19T14:56:21.077Z","level":"log","context":"RouterExplorer","message":"Mapped {/lp/image, GET} route"}
{"timestamp":"2026-10-19T14:56:21.077Z","level":"log","context":"RouterExplorer","message":"Mapped {/lp/learning, GET} route"}
{"timestamp":"2026-10-19T14:56:21.077Z","level":"log","context":"RouterExplorer","message":"Mapped {/lp/submit, POST} route"}
{"timestamp":"2026-10-19T14:56:21.077Z","level":"log","context":"RouterExplorer","message":"Mapped {/lp/test, GET} route"}
{"timestamp":"2026-10-19T14:56:21.077Z","level":"warn","context":"LegacyRouteConverter","message":"Unsupported route path: \"/lp/*\". In previous versions, the symbols ?, *, and + were used to denote optional or repeating path parameters. The latest version of \"path-to-regexp\" now requires the use of named parameters. For example, instead of using a route like /users/* to capture all routes starting with \"/users\", you should use /users/*path. For more details, refer to the migration guide. Attempting to auto-convert..."}
{"timestamp":"2026-10-19T14:56:21.078Z","level":"log","context":"RouterExplorer","message":"Mapped {/lp/*, ALL} route"}
{"timestamp":"2026-10-19T14:56:21.078Z","level":"log","context":"RoutesResolver","message":"SupportController {/support}:"}
{"timestamp":"2026-10-19T14:56:21.078Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets, POST} route"}
{"timestamp":"2026-10-19T14:56:21.078Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets, GET} route"}
{"timestamp":"2026-10-19T14:56:21.079Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets/:id, GET} route"}
{"timestamp":"2026-10-19T14:56:21.079Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets/:id, PATCH} route"}
{"timestamp":"2026-10-19T14:56:21.079Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets/:id, DELETE} route"}
{"timestamp":"2026-10-19T14:56:21.079Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets/:id/messages, POST} route"}
{"timestamp":"2026-10-19T14:56:21.079Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets/:id/close, POST} route"}
{"timestamp":"2026-10-19T14:56:21.079Z","level":"log","context":"RoutesResolver","message":"BusninessMetricsController {/business-metrics}:"}
{"timestamp":"2026-10-19T14:56:21.080Z","level":"log","context":"RouterExplorer","message":"Mapped {/business-metrics, GET} route"}
{"timestamp":"2026-10-19T14:56:21.080Z","level":"log","context":"RoutesResolver","message":"UsersController {/users}:"}
{"timestamp":"2026-10-19T14:56:21.080Z","level":"log","context":"RouterExplorer","message":"Mapped {/users/:id, PUT} route"}
{"timestamp":"2026-10-19T14:56:21.080Z","level":"log","context":"RouterExplorer","message":"Mapped {/users/settings, GET} route"}
{"timestamp":"2026-10-19T14:56:21.081Z","level":"log","context":"RouterExplorer","message":"Mapped {/users/settings/general, PUT} route"}
{"timestamp":"2026-10-19T14:56:21.081Z","level":"log","context":"RouterExplorer","message":"Mapped {/users/company/settings, PUT} route"}
{"timestamp":"2026-10-19T14:56:21.081Z","level":"log","context":"RouterExplorer","message":"Mapped {/users/change-password, POST} route"}
{"timestamp":"2026-10-19T14:56:21.081Z","level":"log","context":"RouterExplorer","message":"Mapped {/users/localization/settings, PUT} route"}
{"timestamp":"2026-10-19T14:56:21.081Z","level":"log","context":"RoutesResolver","message":"PartnerController {/partner}:"}
{"timestamp":"2026-10-19T14:56:21.081Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses, POST} route"}
{"timestamp":"2026-10-19T14:56:21.082Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses, GET} route"}
{"timestamp":"2026-10-19T14:56:21.082Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses/:id, GET} route"}
{"timestamp":"2026-10-19T14:56:21.082Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses/:id, PUT} route"}
{"timestamp":"2026-10-19T14:56:21.082Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses/:id, DELETE} route"}
{"timestamp":"2026-10-19T14:56:21.082Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses/:id/impersonate, POST} route"}
{"timestamp":"2026-10-19T14:56:21.082Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses/stop-impersonation, POST} route"}
{"timestamp":"2026-10-19T14:56:21.083Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/license-usage, GET} route"}
{"timestamp":"2026-10-19T14:56:21.083Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/invoices, POST} route"}
{"timestamp":"2026-10-19T14:56:21.083Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/invoices, GET} route"}
{"timestamp":"2026-10-19T14:56:21.083Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/invoices/:id, GET} route"}
{"timestamp":"2026-10-19T14:56:21.083Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/invoices/:id, PUT} route"}
{"timestamp":"2026-10-19T14:56:21.083Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/invoices/:id, DELETE} route"}
{"timestamp":"2026-10-19T14:56:21.084Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/invoices/:id/mark-paid, PUT} route"}
{"timestamp":"2026-10-19T14:56:21.084Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/onboarding/generate-token, POST} route"}
{"timestamp":"2026-10-19T14:56:21.084Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/dashboard, GET} route"}
{"timestamp":"2026-10-19T14:56:21.084Z","level":"log","context":"RoutesResolver","message":"MspSubscriptionController {/partner/msp-subscriptions}:"}
{"timestamp":"2026-10-19T14:56:21.084Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/plans, POST} route"}
{"timestamp":"2026-10-19T14:56:21.084Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/plans, GET} route"}
{"timestamp":"2026-10-19T14:56:21.084Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/plans/:planId, GET} route"}
{"timestamp":"2026-10-19T14:56:21.085Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/plans/:planId, PUT} route"}
{"timestamp":"2026-10-19T14:56:21.085Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/plans/:planId, DELETE} route"}
{"timestamp":"2026-10-19T14:56:21.085Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/businesses/:businessId/subscription, POST} route"}
{"timestamp":"2026-10-19T14:56:21.085Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions, GET} route"}
{"timestamp":"2026-10-19T14:56:21.085Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/businesses/:businessId/subscription, GET} route"}
{"timestamp":"2026-10-19T14:56:21.086Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/businesses/:businessId/subscription, PUT} route"}
{"timestamp":"2026-10-19T14:56:21.086Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/businesses/:businessId/subscription, DELETE} route"}
{"timestamp":"2026-10-19T14:56:21.086Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/businesses/:businessId/subscription/limits, GET} route"}
{"timestamp":"2026-10-19T14:56:21.086Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/businesses/:businessId/subscription/change-plan, PUT} route"}
{"timestamp":"2026-10-19T14:56:21.086Z","level":"log","context":"RoutesResolver","message":"OnboardingController {/onboarding}:"}
{"timestamp":"2026-10-19T14:56:21.086Z","level":"log","context":"RouterExplorer","message":"Mapped {/onboarding/validate/:token, GET} route"}
{"timestamp":"2026-10-19T14:56:21.086Z","level":"log","context":"RouterExplorer","message":"Mapped {/onboarding/complete/:token, POST} route"}
{"timestamp":"2026-10-19T14:56:21.086Z","level":"log","context":"RoutesResolver","message":"ResellerController {/reseller}:"}
{"timestamp":"2026-10-19T14:56:21.087Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/businesses, POST} route"}
{"timestamp":"2026-10-19T14:56:21.087Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/businesses, GET} route"}
{"timestamp":"2026-10-19T14:56:21.087Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/businesses/:id, GET} route"}
{"timestamp":"2026-10-19T14:56:21.087Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/businesses/:id, PUT} route"}
{"timestamp":"2026-10-19T14:56:21.087Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/businesses/:id, DELETE} route"}
{"timestamp":"2026-10-19T14:56:21.088Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/license-usage, GET} route"}
{"timestamp":"2026-10-19T14:56:21.088Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/invoices, POST} route"}
{"timestamp":"2026-10-19T14:56:21.088Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/invoices, GET} route"}
{"timestamp":"2026-10-19T14:56:21.088Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/invoices/:id, GET} route"}
{"timestamp":"2026-10-19T14:56:21.088Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/invoices/:id, PUT} route"}
{"timestamp":"2026-10-19T14:56:21.088Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/invoices/:id, DELETE} route"}
{"timestamp":"2026-10-19T14:56:21.088Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/invoices/:id/mark-paid, PUT} route"}
{"timestamp":"2026-10-19T14:56:21.089Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/onboarding/generate-token, POST} route"}
{"timestamp":"2026-10-19T14:56:21.089Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/dashboard, GET} route"}
{"timestamp":"2026-10-19T14:56:21.089Z","level":"log","context":"RoutesResolver","message":"ResellerSubscriptionController {/reseller}:"}
{"timestamp":"2026-10-19T14:56:21.089Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/plans, POST} route"}
{"timestamp":"2026-10-19T14:56:21.089Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/plans, GET} route"}
{"timestamp":"2026-10-19T14:56:21.089Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/plans/:planId, GET} route"}
{"timestamp":"2026-10-19T14:56:21.089Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/plans/:planId, PUT} route"}
{"timestamp":"2026-10-19T14:56:21.090Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/plans/:planId, DELETE} route"}
{"timestamp":"2026-10-19T14:56:21.090Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/subscriptions/businesses/:businessId/subscription, POST} route"}
{"timestamp":"2026-10-19T14:56:21.090Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/subscriptions, GET} route"}
{"timestamp":"2026-10-19T14:56:21.090Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/subscriptions/businesses/:businessId/subscription, GET} route"}
{"timestamp":"2026-10-19T14:56:21.090Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/subscriptions/businesses/:businessId/subscription, PUT} route"}
{"timestamp":"2026-10-19T14:56:21.090Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/subscriptions/businesses/:businessId/subscription, DELETE} route"}
{"timestamp":"2026-10-19T14:56:21.091Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/subscriptions/businesses/:businessId/subscription/limits, GET} route"}
{"timestamp":"2026-10-19T14:56:21.091Z","level":"log","context":"RoutesResolver","message":"HealthController {/health}:"}
{"timestamp":"2026-10-19T14:56:21.091Z","level":"log","context":"RouterExplorer","message":"Mapped {/health, GET} route"}
{"timestamp":"2026-10-19T14:56:21.091Z","level":"log","context":"RouterExplorer","message":"Mapped {/health/test-logs, GET} route"}
{"timestamp":"2026-10-19T14:56:21.091Z","level":"log","context":"RoutesResolver","message":"AzureAdController {/azure-ad}:"}
{"timestamp":"2026-10-19T14:56:21.091Z","level":"log","context":"RouterExplorer","message":"Mapped {/azure-ad/config, POST} route"}
{"timestamp":"2026-10-19T14:56:21.091Z","level":"log","context":"RouterExplorer","message":"Mapped {/azure-ad/config, GET} route"}
{"timestamp":"2026-10-19T14:56:21.092Z","level":"log","context":"RouterExplorer","message":"Mapped {/azure-ad/test-connection, POST} route"}
{"timestamp":"2026-10-19T14:56:21.092Z","level":"log","context":"RouterExplorer","message":"Mapped {/azure-ad/sync, POST} route"}
{"timestamp":"2026-10-19T14:56:21.092Z","level":"log","context":"RoutesResolver","message":"ThreatsController {/threats}:"}
{"timestamp":"2026-10-19T14:56:21.092Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats, POST} route"}
{"timestamp":"2026-10-19T14:56:21.092Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats, GET} route"}
{"timestamp":"2026-10-19T14:56:21.092Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/chart-data, GET} route"}
{"timestamp":"2026-10-19T14:56:21.092Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/claude-search, POST} route"}
{"timestamp":"2026-10-19T14:56:21.093Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/claude-latest, POST} route"}
{"timestamp":"2026-10-19T14:56:21.093Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/claude-trending, POST} route"}
{"timestamp":"2026-10-19T14:56:21.093Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/claude-categories, POST} route"}
{"timestamp":"2026-10-19T14:56:21.093Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/claude-manual-search, POST} route"}
{"timestamp":"2026-10-19T14:56:21.093Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/claude-quick-search, POST} route"}
{"timestamp":"2026-10-19T14:56:21.093Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/scheduler-status, GET} route"}
{"timestamp":"2026-10-19T14:56:21.094Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/health-check, GET} route"}
{"timestamp":"2026-10-19T14:56:21.094Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/pause-scheduler, POST} route"}
{"timestamp":"2026-10-19T14:56:21.094Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/:id, GET} route"}
{"timestamp":"2026-10-19T14:56:21.094Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/:id, PATCH} route"}
{"timestamp":"2026-10-19T14:56:21.094Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/:id, DELETE} route"}
{"timestamp":"2026-10-19T14:56:21.094Z","level":"log","context":"RoutesResolver","message":"DomainController {/domains}:"}
{"timestamp":"2026-10-19T14:56:21.094Z","level":"log","context":"RouterExplorer","message":"Mapped {/domains, GET} route"}
{"timestamp":"2026-10-19T14:56:21.095Z","level":"log","context":"RouterExplorer","message":"Mapped {/domains/:id, GET} route"}
{"timestamp":"2026-10-19T14:56:21.095Z","level":"log","context":"RouterExplorer","message":"Mapped {/domains, POST} route"}
{"timestamp":"2026-10-19T14:56:21.095Z","level":"log","context":"RouterExplorer","message":"Mapped {/domains/:id, PUT} route"}
{"timestamp":"2026-10-19T14:56:21.095Z","level":"log","context":"RouterExplorer","message":"Mapped {/domains/:id, DELETE} route"}
{"timestamp":"2026-10-19T14:56:21.095Z","level":"log","context":"RouterExplorer","message":"Mapped {/domains/seed, POST} route"}
{"timestamp":"2026-10-19T14:56:21.095Z","level":"log","context":"RoutesResolver","message":"MspSubscriptionController {/msp-subscription}:"}
{"timestamp":"2026-10-19T14:56:21.095Z","level":"log","context":"RouterExplorer","message":"Mapped {/msp-subscription/current, GET} route"}
{"timestamp":"2026-10-19T14:56:21.096Z","level":"log","context":"RouterExplorer","message":"Mapped {/msp-subscription/invoices, GET} route"}
{"timestamp":"2026-10-19T14:56:21.096Z","level":"log","context":"RouterExplorer","message":"Mapped {/msp-subscription/invoice/:invoiceId/pdf, GET} route"}
{"timestamp":"2026-10-19T14:56:21.096Z","level":"log","context":"RoutesResolver","message":"MspSubscriptionController {/api/msp-subscription}:"}
{"timestamp":"2026-10-19T14:56:21.096Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/msp-subscription/current, GET} route"}
{"timestamp":"2026-10-19T14:56:21.096Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/msp-subscription/invoices, GET} route"}
{"timestamp":"2026-10-19T14:56:21.096Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/msp-subscription/invoice/:invoiceId/pdf, GET} route"}
{"timestamp":"2026-10-19T14:56:21.172Z","level":"log","context":"NestApplication","message":"Nest application successfully started"}
{"timestamp":"2026-10-19T14:56:21.179Z","level":"log","context":"Bootstrap","message":"Users API successfully started on port 3842"}
{"timestamp":"2026-10-19T14:56:21.179Z","level":"log","context":"SeedService","message":"🌱 Starting database seeding..."}
{"timestamp":"2026-10-19T14:56:21.186Z","level":"log","context":"SeedService","message":"Admin account already exists, skipping seed"}
{"timestamp":"2026-10-19T14:56:21.188Z","level":"log","context":"SeedService","message":"Reseller account already exists, skipping seed"}
{"timestamp":"2026-10-19T14:56:21.190Z","level":"log","context":"SeedService","message":"MSP account already exists, skipping seed"}
{"timestamp":"2026-10-19T14:56:21.190Z","level":"log","context":"SeedService","message":"✅ Database seeding completed successfully"}
{"timestamp":"2026-10-19T17:59:11.944Z","level":"warn","context":"LegacyRouteConverter","message":"Unsupported route path: \"/lp/*\". In previous versions, the symbols ?, *, and + were used to denote optional or repeating path parameters. The latest version of \"path-to-regexp\" now requires the use of named parameters. For example, instead of using a route like /users/* to capture all routes starting with \"/users\", you should use /users/*path. For more details, refer to the migration guide. Attempting to auto-convert..."}
{"timestamp":"2026-10-19T17:59:11.978Z","level":"log","context":"Bootstrap","message":"Starting Users API on port 3842..."}
{"timestamp":"2026-10-19T17:59:11.981Z","level":"log","context":"RoutesResolver","message":"UsersApiController {/}:"}
{"timestamp":"2026-10-19T17:59:11.984Z","level":"log","context":"RouterExplorer","message":"Mapped {/, GET} route"}
{"timestamp":"2026-10-19T17:59:11.985Z","level":"log","context":"RoutesResolver","message":"AuthController {/auth}:"}
{"timestamp":"2026-10-19T17:59:11.985Z","level":"log","context":"RouterExplorer","message":"Mapped {/auth/login, POST} route"}
{"timestamp":"2026-10-19T17:59:11.986Z","level":"log","context":"RouterExplorer","message":"Mapped {/auth/admin/login, POST} route"}
{"timestamp":"2026-10-19T17:59:11.986Z","level":"log","context":"RouterExplorer","message":"Mapped {/auth/send-otp, POST} route"}
{"timestamp":"2026-10-19T17:59:11.987Z","level":"log","context":"RouterExplorer","message":"Mapped {/auth/verify-otp, POST} route"}
{"timestamp":"2026-10-19T17:59:11.987Z","level":"log","context":"RouterExplorer","message":"Mapped {/auth/signup, POST} route"}
{"timestamp":"2026-10-19T17:59:11.988Z","level":"log","context":"RouterExplorer","message":"Mapped {/auth/subscription-status, GET} route"}
{"timestamp":"2026-10-19T17:59:11.988Z","level":"log","context":"RoutesResolver","message":"AdminMspController {/admin/msp}:"}
{"timestamp":"2026-10-19T17:59:11.988Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/msp, GET} route"}
{"timestamp":"2026-10-19T17:59:11.989Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/msp/:id, GET} route"}
{"timestamp":"2026-10-19T17:59:11.989Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/msp, POST} route"}
{"timestamp":"2026-10-19T17:59:11.990Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/msp/:id, PUT} route"}
{"timestamp":"2026-10-19T17:59:11.990Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/msp/:id, DELETE} route"}
{"timestamp":"2026-10-19T17:59:11.990Z","level":"log","context":"RoutesResolver","message":"AdminLicenseController {/admin/licenses}:"}
{"timestamp":"2026-10-19T17:59:11.990Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/licenses/summary, GET} route"}
{"timestamp":"2026-10-19T17:59:11.991Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/licenses/msp/:mspId, GET} route"}
{"timestamp":"2026-10-19T17:59:11.991Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/licenses/msp/:mspId, PUT} route"}
{"timestamp":"2026-10-19T17:59:11.991Z","level":"log","context":"RoutesResolver","message":"AdminImpersonationController {/admin/impersonation}:"}
{"timestamp":"2026-10-19T17:59:11.991Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/impersonation/msp-users, GET} route"}
{"timestamp":"2026-10-19T17:59:11.993Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/impersonation/impersonate, POST} route"}
{"timestamp":"2026-10-19T17:59:11.994Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/impersonation/stop, POST} route"}
{"timestamp":"2026-10-19T17:59:11.994Z","level":"log","context":"RoutesResolver","message":"AdminAiUsageController {/admin/ai-usage}:"}
{"timestamp":"2026-10-19T17:59:11.994Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-usage, GET} route"}
{"timestamp":"2026-10-19T17:59:11.994Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-usage/business/:businessId, GET} route"}
{"timestamp":"2026-10-19T17:59:11.994Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-usage/report/monthly, GET} route"}
{"timestamp":"2026-10-19T17:59:11.995Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-usage/pricing, GET} route"}
{"timestamp":"2026-10-19T17:59:11.995Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-usage/pricing, POST} route"}
{"timestamp":"2026-10-19T17:59:11.995Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-usage/credit/:businessId, PUT} route"}
{"timestamp":"2026-10-19T17:59:11.995Z","level":"log","context":"RoutesResolver","message":"AdminAiUsageController {/api/admin/ai-usage}:"}
{"timestamp":"2026-10-19T17:59:11.995Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-usage, GET} route"}
{"timestamp":"2026-10-19T17:59:11.995Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-usage/business/:businessId, GET} route"}
{"timestamp":"2026-10-19T17:59:11.996Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-usage/report/monthly, GET} route"}
{"timestamp":"2026-10-19T17:59:11.996Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-usage/pricing, GET} route"}
{"timestamp":"2026-10-19T17:59:11.996Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-usage/pricing, POST} route"}
{"timestamp":"2026-10-19T17:59:11.996Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-usage/credit/:businessId, PUT} route"}
{"timestamp":"2026-10-19T17:59:11.996Z","level":"log","context":"RoutesResolver","message":"AdminAiModelController {/admin/ai-models}:"}
{"timestamp":"2026-10-19T17:59:11.996Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models, POST} route"}
{"timestamp":"2026-10-19T17:59:11.997Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models, GET} route"}
{"timestamp":"2026-10-19T17:59:11.997Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/default, GET} route"}
{"timestamp":"2026-10-19T17:59:11.997Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/:id, GET} route"}
{"timestamp":"2026-10-19T17:59:11.997Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/:id, PUT} route"}
{"timestamp":"2026-10-19T17:59:11.997Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/:id, DELETE} route"}
{"timestamp":"2026-10-19T17:59:11.997Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/:id/set-default, POST} route"}
{"timestamp":"2026-10-19T17:59:11.998Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/assign-to-business, POST} route"}
{"timestamp":"2026-10-19T17:59:11.998Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/business/:businessId, GET} route"}
{"timestamp":"2026-10-19T17:59:11.998Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/:id/businesses, GET} route"}
{"timestamp":"2026-10-19T17:59:11.998Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/initialize-defaults, POST} route"}
{"timestamp":"2026-10-19T17:59:11.998Z","level":"log","context":"RoutesResolver","message":"AdminAiModelController {/api/admin/ai-models}:"}
{"timestamp":"2026-10-19T17:59:11.998Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models, POST} route"}
{"timestamp":"2026-10-19T17:59:11.999Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models, GET} route"}
{"timestamp":"2026-10-19T17:59:11.999Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/default, GET} route"}
{"timestamp":"2026-10-19T17:59:11.999Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/:id, GET} route"}
{"timestamp":"2026-10-19T17:59:11.999Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/:id, PUT} route"}
{"timestamp":"2026-10-19T17:59:11.999Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/:id, DELETE} route"}
{"timestamp":"2026-10-19T17:59:11.999Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/:id/set-default, POST} route"}
{"timestamp":"2026-10-19T17:59:12.000Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/assign-to-business, POST} route"}
{"timestamp":"2026-10-19T17:59:12.000Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/business/:businessId, GET} route"}
{"timestamp":"2026-10-19T17:59:12.000Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/:id/businesses, GET} route"}
{"timestamp":"2026-10-19T17:59:12.000Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/initialize-defaults, POST} route"}
{"timestamp":"2026-10-19T17:59:12.000Z","level":"log","context":"RoutesResolver","message":"AdminBusinessController {/admin/businesses}:"}
{"timestamp":"2026-10-19T17:59:12.000Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/businesses, GET} route"}
{"timestamp":"2026-10-19T17:59:12.001Z","level":"log","context":"RoutesResolver","message":"ResellerManagementController {/admin/resellers}:"}
{"timestamp":"2026-10-19T17:59:12.001Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/resellers, GET} route"}
{"timestamp":"2026-10-19T17:59:12.001Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/resellers/create-default, POST} route"}
{"timestamp":"2026-10-19T17:59:12.001Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/resellers, POST} route"}
{"timestamp":"2026-10-19T17:59:12.001Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/resellers/:id/toggle-status, PUT} route"}
{"timestamp":"2026-10-19T17:59:12.001Z","level":"log","context":"RoutesResolver","message":"SubscriptionController {/subscription}:"}
{"timestamp":"2026-10-19T17:59:12.001Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/plans, GET} route"}
{"timestamp":"2026-10-19T17:59:12.002Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/calculate-price, POST} route"}
{"timestamp":"2026-10-19T17:59:12.002Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/current, GET} route"}
{"timestamp":"2026-10-19T17:59:12.002Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/create, POST} route"}
{"timestamp":"2026-10-19T17:59:12.002Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/:id, PUT} route"}
{"timestamp":"2026-10-19T17:59:12.002Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/:id/cancel, DELETE} route"}
{"timestamp":"2026-10-19T17:59:12.002Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/sync/:stripeSubscriptionId, POST} route"}
{"timestamp":"2026-10-19T17:59:12.003Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/payments, GET} route"}
{"timestamp":"2026-10-19T17:59:12.003Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/payments/stats, GET} route"}
{"timestamp":"2026-10-19T17:59:12.003Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/payment/:id, GET} route"}
{"timestamp":"2026-10-19T17:59:12.003Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/payment-methods/attach, POST} route"}
{"timestamp":"2026-10-19T17:59:12.003Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/payment-methods/:paymentMethodId, DELETE} route"}
{"timestamp":"2026-10-19T17:59:12.003Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/payment-methods, GET} route"}
{"timestamp":"2026-10-19T17:59:12.003Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/setup-intent, POST} route"}
{"timestamp":"2026-10-19T17:59:12.004Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/update-employee-count, POST} route"}
{"timestamp":"2026-10-19T17:59:12.004Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/retry-payment/:subscriptionId, POST} route"}
{"timestamp":"2026-10-19T17:59:12.004Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/invoice/:invoiceId/pdf, GET} route"}
{"timestamp":"2026-10-19T17:59:12.004Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/preview-upgrade, POST} route"}
{"timestamp":"2026-10-19T17:59:12.004Z","level":"log","context":"RoutesResolver","message":"SubscriptionController {/api/subscription}:"}
{"timestamp":"2026-10-19T17:59:12.004Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/plans, GET} route"}
{"timestamp":"2026-10-19T17:59:12.004Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/calculate-price, POST} route"}
{"timestamp":"2026-10-19T17:59:12.005Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/current, GET} route"}
{"timestamp":"2026-10-19T17:59:12.005Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/create, POST} route"}
{"timestamp":"2026-10-19T17:59:12.005Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/:id, PUT} route"}
{"timestamp":"2026-10-19T17:59:12.005Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/:id/cancel, DELETE} route"}
{"timestamp":"2026-10-19T17:59:12.005Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/sync/:stripeSubscriptionId, POST} route"}
{"timestamp":"2026-10-19T17:59:12.006Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/payments, GET} route"}
{"timestamp":"2026-10-19T17:59:12.006Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/payments/stats, GET} route"}
{"timestamp":"2026-10-19T17:59:12.006Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/payment/:id, GET} route"}
{"timestamp":"2026-10-19T17:59:12.006Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/payment-methods/attach, POST} route"}
{"timestamp":"2026-10-19T17:59:12.006Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/payment-methods/:paymentMethodId, DELETE} route"}
{"timestamp":"2026-10-19T17:59:12.006Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/payment-methods, GET} route"}
{"timestamp":"2026-10-19T17:59:12.006Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/setup-intent, POST} route"}
{"timestamp":"2026-10-19T17:59:12.007Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/update-employee-count, POST} route"}
{"timestamp":"2026-10-19T17:59:12.007Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/retry-payment/:subscriptionId, POST} route"}
{"timestamp":"2026-10-19T17:59:12.007Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/invoice/:invoiceId/pdf, GET} route"}
{"timestamp":"2026-10-19T17:59:12.007Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/preview-upgrade, POST} route"}
{"timestamp":"2026-10-19T17:59:12.007Z","level":"log","context":"RoutesResolver","message":"StripeWebhookController {/stripe/webhook}:"}
{"timestamp":"2026-10-19T17:59:12.007Z","level":"log","context":"RouterExplorer","message":"Mapped {/stripe/webhook/test, GET} route"}
{"timestamp":"2026-10-19T17:59:12.008Z","level":"log","context":"RouterExplorer","message":"Mapped {/stripe/webhook, POST} route"}
{"timestamp":"2026-10-19T17:59:12.008Z","level":"log","context":"RoutesResolver","message":"EmailController {/email-templates}:"}
{"timestamp":"2026-10-19T17:59:12.008Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates/test, POST} route"}
{"timestamp":"2026-10-19T17:59:12.008Z","level":"log","context":"RoutesResolver","message":"EmployeeController {/employees}:"}
{"timestamp":"2026-10-19T17:59:12.008Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees, POST} route"}
{"timestamp":"2026-10-19T17:59:12.008Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees, GET} route"}
{"timestamp":"2026-10-19T17:59:12.009Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees/export, GET} route"}
{"timestamp":"2026-10-19T17:59:12.009Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees/risk-stats, GET} route"}
{"timestamp":"2026-10-19T17:59:12.009Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees/:id, GET} route"}
{"timestamp":"2026-10-19T17:59:12.009Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees/:id, PUT} route"}
{"timestamp":"2026-10-19T17:59:12.009Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees/:id, DELETE} route"}
{"timestamp":"2026-10-19T17:59:12.009Z","level":"log","context":"RoutesResolver","message":"GroupController {/groups}:"}
{"timestamp":"2026-10-19T17:59:12.010Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups, POST} route"}
{"timestamp":"2026-10-19T17:59:12.010Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups, GET} route"}
{"timestamp":"2026-10-19T17:59:12.010Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups/standard, GET} route"}
{"timestamp":"2026-10-19T17:59:12.010Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups/:id, GET} route"}
{"timestamp":"2026-10-19T17:59:12.010Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups/:id, PUT} route"}
{"timestamp":"2026-10-19T17:59:12.010Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups/:id, DELETE} route"}
{"timestamp":"2026-10-19T17:59:12.011Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups/:id/info, GET} route"}
{"timestamp":"2026-10-19T17:59:12.011Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups/:id/with-employees, GET} route"}
{"timestamp":"2026-10-19T17:59:12.011Z","level":"log","context":"RoutesResolver","message":"SenderProfileController {/sender-profiles}:"}
{"timestamp":"2026-10-19T17:59:12.011Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles, GET} route"}
{"timestamp":"2026-10-19T17:59:12.011Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles/:id, GET} route"}
{"timestamp":"2026-10-19T17:59:12.011Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles, POST} route"}
{"timestamp":"2026-10-19T17:59:12.012Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles/:id, PUT} route"}
{"timestamp":"2026-10-19T17:59:12.012Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles/:id, DELETE} route"}
{"timestamp":"2026-10-19T17:59:12.012Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles/:id/verify-domain, POST} route"}
{"timestamp":"2026-10-19T17:59:12.012Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles/domain-verification, GET} route"}
{"timestamp":"2026-10-19T17:59:12.012Z","level":"log","context":"RoutesResolver","message":"EmailTemplateController {/email-templates}:"}
{"timestamp":"2026-10-19T17:59:12.012Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates, GET} route"}
{"timestamp":"2026-10-19T17:59:12.013Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates/:id, GET} route"}
{"timestamp":"2026-10-19T17:59:12.013Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates, POST} route"}
{"timestamp":"2026-10-19T17:59:12.013Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates/:id, PUT} route"}
{"timestamp":"2026-10-19T17:59:12.013Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates/:id, DELETE} route"}
{"timestamp":"2026-10-19T17:59:12.013Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates/:id/duplicate, POST} route"}
{"timestamp":"2026-10-19T17:59:12.014Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates/:id/preview, GET} route"}
{"timestamp":"2026-10-19T17:59:12.014Z","level":"log","context":"RoutesResolver","message":"ScenarioController {/scenarios}:"}
{"timestamp":"2026-10-19T17:59:12.014Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios, POST} route"}
{"timestamp":"2026-10-19T17:59:12.014Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios/generate-content, POST} route"}
{"timestamp":"2026-10-19T17:59:12.014Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios, GET} route"}
{"timestamp":"2026-10-19T17:59:12.014Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios/:id, GET} route"}
{"timestamp":"2026-10-19T17:59:12.015Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios/:id, PUT} route"}
{"timestamp":"2026-10-19T17:59:12.015Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios/:id, DELETE} route"}
{"timestamp":"2026-10-19T17:59:12.015Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios/generate-from-json, POST} route"}
{"timestamp":"2026-10-19T17:59:12.015Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios/:id/save-as-custom-scenario, POST} route"}
{"timestamp":"2026-10-19T17:59:12.015Z","level":"log","context":"RoutesResolver","message":"CampaignController {/campaigns}:"}
{"timestamp":"2026-10-19T17:59:12.015Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns, POST} route"}
{"timestamp":"2026-10-19T17:59:12.016Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns, GET} route"}
{"timestamp":"2026-10-19T17:59:12.016Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id, GET} route"}
{"timestamp":"2026-10-19T17:59:12.016Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id/details, GET} route"}
{"timestamp":"2026-10-19T17:59:12.016Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id/employees, GET} route"}
{"timestamp":"2026-10-19T17:59:12.016Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id, PATCH} route"}
{"timestamp":"2026-10-19T17:59:12.017Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id/start, POST} route"}
{"timestamp":"2026-10-19T17:59:12.017Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id/stop, POST} route"}
{"timestamp":"2026-10-19T17:59:12.017Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id/duplicate, POST} route"}
{"timestamp":"2026-10-19T17:59:12.017Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id, DELETE} route"}
{"timestamp":"2026-10-19T17:59:12.017Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/auto-generate-program, POST} route"}
{"timestamp":"2026-10-19T17:59:12.018Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/generate-from-threat-intelligence, POST} route"}
{"timestamp":"2026-10-19T17:59:12.018Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id/risk-score, GET} route"}
{"timestamp":"2026-10-19T17:59:12.018Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/recalculate-risk-scores, POST} route"}
{"timestamp":"2026-10-19T17:59:12.018Z","level":"log","context":"RoutesResolver","message":"CampaignController {/api/campaigns}:"}
{"timestamp":"2026-10-19T17:59:12.018Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns, POST} route"}
{"timestamp":"2026-10-19T17:59:12.018Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns, GET} route"}
{"timestamp":"2026-10-19T17:59:12.018Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id, GET} route"}
{"timestamp":"2026-10-19T17:59:12.019Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id/details, GET} route"}
{"timestamp":"2026-10-19T17:59:12.019Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id/employees, GET} route"}
{"timestamp":"2026-10-19T17:59:12.019Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id, PATCH} route"}
{"timestamp":"2026-10-19T17:59:12.019Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id/start, POST} route"}
{"timestamp":"2026-10-19T17:59:12.019Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id/stop, POST} route"}
{"timestamp":"2026-10-19T17:59:12.020Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id/duplicate, POST} route"}
{"timestamp":"2026-10-19T17:59:12.020Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id, DELETE} route"}
{"timestamp":"2026-10-19T17:59:12.020Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/auto-generate-program, POST} route"}
{"timestamp":"2026-10-19T17:59:12.020Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/generate-from-threat-intelligence, POST} route"}
{"timestamp":"2026-10-19T17:59:12.020Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id/risk-score, GET} route"}
{"timestamp":"2026-10-19T17:59:12.020Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/recalculate-risk-scores, POST} route"}
{"timestamp":"2026-10-19T17:59:12.020Z","level":"log","context":"RoutesResolver","message":"NotificationsController {/notifications}:"}
{"timestamp":"2026-10-19T17:59:12.021Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications, POST} route"}
{"timestamp":"2026-10-19T17:59:12.021Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications, GET} route"}
{"timestamp":"2026-10-19T17:59:12.021Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/unread, GET} route"}
{"timestamp":"2026-10-19T17:59:12.021Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/unread-count, GET} route"}
{"timestamp":"2026-10-19T17:59:12.021Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/:id, GET} route"}
{"timestamp":"2026-10-19T17:59:12.022Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/:id, PATCH} route"}
{"timestamp":"2026-10-19T17:59:12.022Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/:id/read, PATCH} route"}
{"timestamp":"2026-10-19T17:59:12.022Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/mark-all-read, PATCH} route"}
{"timestamp":"2026-10-19T17:59:12.022Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/:id, DELETE} route"}
{"timestamp":"2026-10-19T17:59:12.023Z","level":"log","context":"RoutesResolver","message":"LandingPageController {/lp}:"}
{"timestamp":"2026-10-19T17:59:12.023Z","level":"log","context":"RouterExplorer","message":"Mapped {/lp/image, GET} route"}
{"timestamp":"2026-10-19T17:59:12.023Z","level":"log","context":"RouterExplorer","message":"Mapped {/lp/learning, GET} route"}
{"timestamp":"2026-10-19T17:59:12.023Z","level":"log","context":"RouterExplorer","message":"Mapped {/lp/submit, POST} route"}
{"timestamp":"2026-10-19T17:59:12.023Z","level":"log","context":"RouterExplorer","message":"Mapped {/lp/test, GET} route"}
{"timestamp":"2026-10-19T17:59:12.023Z","level":"warn","context":"LegacyRouteConverter","message":"Unsupported route path: \"/lp/*\". In previous versions, the symbols ?, *, and + were used to denote optional or repeating path parameters. The latest version of \"path-to-regexp\" now requires the use of named parameters. For example, instead of using a route like /users/* to capture all routes starting with \"/users\", you should use /users/*path. For more details, refer to the migration guide. Attempting to auto-convert..."}
{"timestamp":"2026-10-19T17:59:12.024Z","level":"log","context":"RouterExplorer","message":"Mapped {/lp/*, ALL} route"}
{"timestamp":"2026-10-19T17:59:12.024Z","level":"log","context":"RoutesResolver","message":"SupportController {/support}:"}
{"timestamp":"2026-10-19T17:59:12.024Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets, POST} route"}
{"timestamp":"2026-10-19T17:59:12.025Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets, GET} route"}
{"timestamp":"2026-10-19T17:59:12.025Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets/:id, GET} route"}
{"timestamp":"2026-10-19T17:59:12.025Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets/:id, PATCH} route"}
{"timestamp":"2026-10-19T17:59:12.025Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets/:id, DELETE} route"}
{"timestamp":"2026-10-19T17:59:12.025Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets/:id/messages, POST} route"}
{"timestamp":"2026-10-19T17:59:12.025Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets/:id/close, POST} route"}
{"timestamp":"2026-10-19T17:59:12.026Z","level":"log","context":"RoutesResolver","message":"BusninessMetricsController {/business-metrics}:"}
{"timestamp":"2026-10-19T17:59:12.026Z","level":"log","context":"RouterExplorer","message":"Mapped {/business-metrics, GET} route"}
{"timestamp":"2026-10-19T17:59:12.026Z","level":"log","context":"RoutesResolver","message":"UsersController {/users}:"}
{"timestamp":"2026-10-19T17:59:12.026Z","level":"log","context":"RouterExplorer","message":"Mapped {/users/:id, PUT} route"}
{"timestamp":"2026-10-19T17:59:12.026Z","level":"log","context":"RouterExplorer","message":"Mapped {/users/settings, GET} route"}
{"timestamp":"2026-10-19T17:59:12.026Z","level":"log","context":"RouterExplorer","message":"Mapped {/users/settings/general, PUT} route"}
{"timestamp":"2026-10-19T17:59:12.026Z","level":"log","context":"RouterExplorer","message":"Mapped {/users/company/settings, PUT} route"}
{"timestamp":"2026-10-19T17:59:12.027Z","level":"log","context":"RouterExplorer","message":"Mapped {/users/change-password, POST} route"}
{"timestamp":"2026-10-19T17:59:12.027Z","level":"log","context":"RouterExplorer","message":"Mapped {/users/localization/settings, PUT} route"}
{"timestamp":"2026-10-19T17:59:12.027Z","level":"log","context":"RoutesResolver","message":"PartnerController {/partner}:"}
{"timestamp":"2026-10-19T17:59:12.027Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses, POST} route"}
{"timestamp":"2026-10-19T17:59:12.027Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses, GET} route"}
{"timestamp":"2026-10-19T17:59:12.027Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses/:id, GET} route"}
{"timestamp":"2026-10-19T17:59:12.027Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses/:id, PUT} route"}
{"timestamp":"2026-10-19T17:59:12.028Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses/:id, DELETE} route"}
{"timestamp":"2026-10-19T17:59:12.028Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses/:id/impersonate, POST} route"}
{"timestamp":"2026-10-19T17:59:12.028Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses/stop-impersonation, POST} route"}
{"timestamp":"2026-10-19T17:59:12.028Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/license-usage, GET} route"}
{"timestamp":"2026-10-19T17:59:12.028Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/invoices, POST} route"}
{"timestamp":"2026-10-19T17:59:12.028Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/invoices, GET} route"}
{"timestamp":"2026-10-19T17:59:12.028Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/invoices/:id, GET} route"}
{"timestamp":"2026-10-19T17:59:12.029Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/invoices/:id, PUT} route"}
{"timestamp":"2026-10-19T17:59:12.029Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/invoices/:id, DELETE} route"}
{"timestamp":"2026-10-19T17:59:12.029Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/invoices/:id/mark-paid, PUT} route"}
{"timestamp":"2026-10-19T17:59:12.029Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/onboarding/generate-token, POST} route"}
{"timestamp":"2026-10-19T17:59:12.029Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/dashboard, GET} route"}
{"timestamp":"2026-10-19T17:59:12.029Z","level":"log","context":"RoutesResolver","message":"MspSubscriptionController {/partner/msp-subscriptions}:"}
{"timestamp":"2026-10-19T17:59:12.029Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/plans, POST} route"}
{"timestamp":"2026-10-19T17:59:12.030Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/plans, GET} route"}
{"timestamp":"2026-10-19T17:59:12.030Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/plans/:planId, GET} route"}
{"timestamp":"2026-10-19T17:59:12.030Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/plans/:planId, PUT} route"}
{"timestamp":"2026-10-19T17:59:12.030Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/plans/:planId, DELETE} route"}
{"timestamp":"2026-10-19T17:59:12.030Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/businesses/:businessId/subscription, POST} route"}
{"timestamp":"2026-10-19T17:59:12.030Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions, GET} route"}
{"timestamp":"2026-10-19T17:59:12.031Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/businesses/:businessId/subscription, GET} route"}
{"timestamp":"2026-10-19T17:59:12.031Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/businesses/:businessId/subscription, PUT} route"}
{"timestamp":"2026-10-19T17:59:12.031Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/businesses/:businessId/subscription, DELETE} route"}
{"timestamp":"2026-10-19T17:59:12.031Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/businesses/:businessId/subscription/limits, GET} route"}
{"timestamp":"2026-10-19T17:59:12.031Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/businesses/:businessId/subscription/change-plan, PUT} route"}
{"timestamp":"2026-10-19T17:59:12.031Z","level":"log","context":"RoutesResolver","message":"OnboardingController {/onboarding}:"}
{"timestamp":"2026-10-19T17:59:12.031Z","level":"log","context":"RouterExplorer","message":"Mapped {/onboarding/validate/:token, GET} route"}
{"timestamp":"2026-10-19T17:59:12.032Z","level":"log","context":"RouterExplorer","message":"Mapped {/onboarding/complete/:token, POST} route"}
{"timestamp":"2026-10-19T17:59:12.032Z","level":"log","context":"RoutesResolver","message":"ResellerController {/reseller}:"}
{"timestamp":"2026-10-19T17:59:12.032Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/businesses, POST} route"}
{"timestamp":"2026-10-19T17:59:12.032Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/businesses, GET} route"}
{"timestamp":"2026-10-19T17:59:12.032Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/businesses/:id, GET} route"}
{"timestamp":"2026-10-19T17:59:12.032Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/businesses/:id, PUT} route"}
{"timestamp":"2026-10-19T17:59:12.032Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/businesses/:id, DELETE} route"}
{"timestamp":"2026-10-19T17:59:12.033Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/license-usage, GET} route"}
{"timestamp":"2026-10-19T17:59:12.033Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/invoices, POST} route"}
{"timestamp":"2026-10-19T17:59:12.033Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/invoices, GET} route"}
{"timestamp":"2026-10-19T17:59:12.033Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/invoices/:id, GET} route"}
{"timestamp":"2026-10-19T17:59:12.033Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/invoices/:id, PUT} route"}
{"timestamp":"2026-10-19T17:59:12.033Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/invoices/:id, DELETE} route"}
{"timestamp":"2026-10-19T17:59:12.033Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/invoices/:id/mark-paid, PUT} route"}
{"timestamp":"2026-10-19T17:59:12.034Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/onboarding/generate-token, POST} route"}
{"timestamp":"2026-10-19T17:59:12.034Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/dashboard, GET} route"}
{"timestamp":"2026-10-19T17:59:12.034Z","level":"log","context":"RoutesResolver","message":"ResellerSubscriptionController {/reseller}:"}
{"timestamp":"2026-10-19T17:59:12.034Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/plans, POST} route"}
{"timestamp":"2026-10-19T17:59:12.034Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/plans, GET} route"}
{"timestamp":"2026-10-19T17:59:12.034Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/plans/:planId, GET} route"}
{"timestamp":"2026-10-19T17:59:12.034Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/plans/:planId, PUT} route"}
{"timestamp":"2026-10-19T17:59:12.035Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/plans/:planId, DELETE} route"}
{"timestamp":"2026-10-19T17:59:12.035Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/subscriptions/businesses/:businessId/subscription, POST} route"}
{"timestamp":"2026-10-19T17:59:12.035Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/subscriptions, GET} route"}
{"timestamp":"2026-10-19T17:59:12.035Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/subscriptions/businesses/:businessId/subscription, GET} route"}
{"timestamp":"2026-10-19T17:59:12.035Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/subscriptions/businesses/:businessId/subscription, PUT} route"}
{"timestamp":"2026-10-19T17:59:12.035Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/subscriptions/businesses/:businessId/subscription, DELETE} route"}
{"timestamp":"2026-10-19T17:59:12.036Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/subscriptions/businesses/:businessId/subscription/limits, GET} route"}
{"timestamp":"2026-10-19T17:59:12.036Z","level":"log","context":"RoutesResolver","message":"HealthController {/health}:"}
{"timestamp":"2026-10-19T17:59:12.036Z","level":"log","context":"RouterExplorer","message":"Mapped {/health, GET} route"}
{"timestamp":"2026-10-19T17:59:12.036Z","level":"log","context":"RouterExplorer","message":"Mapped {/health/test-logs, GET} route"}
{"timestamp":"2026-10-19T17:59:12.036Z","level":"log","context":"RoutesResolver","message":"AzureAdController {/azure-ad}:"}
{"timestamp":"2026-10-19T17:59:12.036Z","level":"log","context":"RouterExplorer","message":"Mapped {/azure-ad/config, POST} route"}
{"timestamp":"2026-10-19T17:59:12.036Z","level":"log","context":"RouterExplorer","message":"Mapped {/azure-ad/config, GET} route"}
{"timestamp":"2026-10-19T17:59:12.036Z","level":"log","context":"RouterExplorer","message":"Mapped {/azure-ad/test-connection, POST} route"}
{"timestamp":"2026-10-19T17:59:12.037Z","level":"log","context":"RouterExplorer","message":"Mapped {/azure-ad/sync, POST} route"}
{"timestamp":"2026-10-19T17:59:12.037Z","level":"log","context":"RoutesResolver","message":"ThreatsController {/threats}:"}
{"timestamp":"2026-10-19T17:59:12.037Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats, POST} route"}
{"timestamp":"2026-10-19T17:59:12.037Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats, GET} route"}
{"timestamp":"2026-10-19T17:59:12.037Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/chart-data, GET} route"}
{"timestamp":"2026-10-19T17:59:12.037Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/claude-search, POST} route"}
{"timestamp":"2026-10-19T17:59:12.037Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/claude-latest, POST} route"}
{"timestamp":"2026-10-19T17:59:12.038Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/claude-trending, POST} route"}
{"timestamp":"2026-10-19T17:59:12.038Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/claude-categories, POST} route"}
{"timestamp":"2026-10-19T17:59:12.038Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/claude-manual-search, POST} route"}
{"timestamp":"2026-10-19T17:59:12.038Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/claude-quick-search, POST} route"}
{"timestamp":"2026-10-19T17:59:12.038Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/scheduler-status, GET} route"}
{"timestamp":"2026-10-19T17:59:12.038Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/health-check, GET} route"}
{"timestamp":"2026-10-19T17:59:12.039Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/pause-scheduler, POST} route"}
{"timestamp":"2026-10-19T17:59:12.039Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/:id, GET} route"}
{"timestamp":"2026-10-19T17:59:12.039Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/:id, PATCH} route"}
{"timestamp":"2026-10-19T17:59:12.039Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/:id, DELETE} route"}
{"timestamp":"2026-10-19T17:59:12.039Z","level":"log","context":"RoutesResolver","message":"DomainController {/domains}:"}
{"timestamp":"2026-10-19T17:59:12.039Z","level":"log","context":"RouterExplorer","message":"Mapped {/domains, GET} route"}
{"timestamp":"2026-10-19T17:59:12.039Z","level":"log","context":"RouterExplorer","message":"Mapped {/domains/:id, GET} route"}
{"timestamp":"2026-10-19T17:59:12.040Z","level":"log","context":"RouterExplorer","message":"Mapped {/domains, POST} route"}
{"timestamp":"2026-10-19T17:59:12.040Z","level":"log","context":"RouterExplorer","message":"Mapped {/domains/:id, PUT} route"}
{"timestamp":"2026-10-19T17:59:12.040Z","level":"log","context":"RouterExplorer","message":"Mapped {/domains/:id, DELETE} route"}
{"timestamp":"2026-10-19T17:59:12.040Z","level":"log","context":"RouterExplorer","message":"Mapped {/domains/seed, POST} route"}
{"timestamp":"2026-10-19T17:59:12.040Z","level":"log","context":"RoutesResolver","message":"MspSubscriptionController {/msp-subscription}:"}
{"timestamp":"2026-10-19T17:59:12.040Z","level":"log","context":"RouterExplorer","message":"Mapped {/msp-subscription/current, GET} route"}
{"timestamp":"2026-10-19T17:59:12.040Z","level":"log","context":"RouterExplorer","message":"Mapped {/msp-subscription/invoices, GET} route"}
{"timestamp":"2026-10-19T17:59:12.041Z","level":"log","context":"RouterExplorer","message":"Mapped {/msp-subscription/invoice/:invoiceId/pdf, GET} route"}
{"timestamp":"2026-10-19T17:59:12.041Z","level":"log","context":"RoutesResolver","message":"MspSubscriptionController {/api/msp-subscription}:"}
{"timestamp":"2026-10-19T17:59:12.041Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/msp-subscription/current, GET} route"}
{"timestamp":"2026-10-19T17:59:12.041Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/msp-subscription/invoices, GET} route"}
{"timestamp":"2026-10-19T17:59:12.041Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/msp-subscription/invoice/:invoiceId/pdf, GET} route"}
{"timestamp":"2026-10-19T17:59:12.106Z","level":"log","context":"NestApplication","message":"Nest application successfully started"}
{"timestamp":"2026-10-19T17:59:12.115Z","level":"log","context":"Bootstrap","message":"Users API successfully started on port 3842"}
{"timestamp":"2026-10-19T17:59:12.115Z","level":"log","context":"SeedService","message":"🌱 Starting database seeding..."}
{"timestamp":"2026-10-19T17:59:12.120Z","level":"log","context":"SeedService","message":"Admin account already exists, skipping seed"}
{"timestamp":"2026-10-19T17:59:12.123Z","level":"log","context":"SeedService","message":"Reseller account already exists, skipping seed"}
{"timestamp":"2026-10-19T17:59:12.124Z","level":"log","context":"SeedService","message":"MSP account already exists, skipping seed"}
{"timestamp":"2026-10-19T17:59:12.124Z","level":"log","context":"SeedService","message":"✅ Database seeding completed successfully"}
{"timestamp":"2026-10-19T18:00:00.027Z","level":"log","context":"CampaignSchedulerService","message":"Running daily campaign scheduling job"}
{"timestamp":"2026-10-19T18:00:00.035Z","level":"log","context":"CampaignEmailSenderService","message":"Running minutely campaign email sender job"}
{"timestamp":"2026-10-19T18:00:00.046Z","level":"log","context":"CampaignSchedulerService","message":"Running daily campaign scheduling job"}
{"timestamp":"2026-10-19T18:00:00.051Z","level":"log","context":"CampaignEmailSenderService","message":"Running minutely campaign email sender job"}
{"timestamp":"2026-10-19T18:00:00.081Z","level":"log","context":"CampaignEmailSenderService","message":"Found 0 clicked emails that need training emails"}
{"timestamp":"2026-10-19T18:00:00.085Z","level":"log","context":"CampaignEmailSenderService","message":"Found 0 clicked emails that need training emails"}
{"timestamp":"2026-10-19T18:32:54.181Z","level":"warn","context":"LegacyRouteConverter","message":"Unsupported route path: \"/lp/*\". In previous versions, the symbols ?, *, and + were used to denote optional or repeating path parameters. The latest version of \"path-to-regexp\" now requires the use of named parameters. For example, instead of using a route like /users/* to capture all routes starting with \"/users\", you should use /users/*path. For more details, refer to the migration guide. Attempting to auto-convert..."}
{"timestamp":"2026-10-19T18:32:54.217Z","level":"log","context":"Bootstrap","message":"Starting Users API on port 3842..."}
{"timestamp":"2026-10-19T18:32:54.220Z","level":"log","context":"RoutesResolver","message":"UsersApiController {/}:"}
{"timestamp":"2026-10-19T18:32:54.224Z","level":"log","context":"RouterExplorer","message":"Mapped {/, GET} route"}
{"timestamp":"2026-10-19T18:32:54.224Z","level":"log","context":"RoutesResolver","message":"AuthController {/auth}:"}
{"timestamp":"2026-10-19T18:32:54.225Z","level":"log","context":"RouterExplorer","message":"Mapped {/auth/login, POST} route"}
{"timestamp":"2026-10-19T18:32:54.225Z","level":"log","context":"RouterExplorer","message":"Mapped {/auth/admin/login, POST} route"}
{"timestamp":"2026-10-19T18:32:54.226Z","level":"log","context":"RouterExplorer","message":"Mapped {/auth/send-otp, POST} route"}
{"timestamp":"2026-10-19T18:32:54.226Z","level":"log","context":"RouterExplorer","message":"Mapped {/auth/verify-otp, POST} route"}
{"timestamp":"2026-10-19T18:32:54.226Z","level":"log","context":"RouterExplorer","message":"Mapped {/auth/signup, POST} route"}
{"timestamp":"2026-10-19T18:32:54.227Z","level":"log","context":"RouterExplorer","message":"Mapped {/auth/subscription-status, GET} route"}
{"timestamp":"2026-10-19T18:32:54.227Z","level":"log","context":"RoutesResolver","message":"AdminMspController {/admin/msp}:"}
{"timestamp":"2026-10-19T18:32:54.227Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/msp, GET} route"}
{"timestamp":"2026-10-19T18:32:54.228Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/msp/:id, GET} route"}
{"timestamp":"2026-10-19T18:32:54.229Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/msp, POST} route"}
{"timestamp":"2026-10-19T18:32:54.229Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/msp/:id, PUT} route"}
{"timestamp":"2026-10-19T18:32:54.229Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/msp/:id, DELETE} route"}
{"timestamp":"2026-10-19T18:32:54.229Z","level":"log","context":"RoutesResolver","message":"AdminLicenseController {/admin/licenses}:"}
{"timestamp":"2026-10-19T18:32:54.230Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/licenses/summary, GET} route"}
{"timestamp":"2026-10-19T18:32:54.230Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/licenses/msp/:mspId, GET} route"}
{"timestamp":"2026-10-19T18:32:54.232Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/licenses/msp/:mspId, PUT} route"}
{"timestamp":"2026-10-19T18:32:54.232Z","level":"log","context":"RoutesResolver","message":"AdminImpersonationController {/admin/impersonation}:"}
{"timestamp":"2026-10-19T18:32:54.233Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/impersonation/msp-users, GET} route"}
{"timestamp":"2026-10-19T18:32:54.233Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/impersonation/impersonate, POST} route"}
{"timestamp":"2026-10-19T18:32:54.233Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/impersonation/stop, POST} route"}
{"timestamp":"2026-10-19T18:32:54.233Z","level":"log","context":"RoutesResolver","message":"AdminAiUsageController {/admin/ai-usage}:"}
{"timestamp":"2026-10-19T18:32:54.233Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-usage, GET} route"}
{"timestamp":"2026-10-19T18:32:54.234Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-usage/business/:businessId, GET} route"}
{"timestamp":"2026-10-19T18:32:54.234Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-usage/report/monthly, GET} route"}
{"timestamp":"2026-10-19T18:32:54.234Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-usage/pricing, GET} route"}
{"timestamp":"2026-10-19T18:32:54.234Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-usage/pricing, POST} route"}
{"timestamp":"2026-10-19T18:32:54.234Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-usage/credit/:businessId, PUT} route"}
{"timestamp":"2026-10-19T18:32:54.234Z","level":"log","context":"RoutesResolver","message":"AdminAiUsageController {/api/admin/ai-usage}:"}
{"timestamp":"2026-10-19T18:32:54.235Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-usage, GET} route"}
{"timestamp":"2026-10-19T18:32:54.235Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-usage/business/:businessId, GET} route"}
{"timestamp":"2026-10-19T18:32:54.235Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-usage/report/monthly, GET} route"}
{"timestamp":"2026-10-19T18:32:54.235Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-usage/pricing, GET} route"}
{"timestamp":"2026-10-19T18:32:54.235Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-usage/pricing, POST} route"}
{"timestamp":"2026-10-19T18:32:54.235Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-usage/credit/:businessId, PUT} route"}
{"timestamp":"2026-10-19T18:32:54.235Z","level":"log","context":"RoutesResolver","message":"AdminAiModelController {/admin/ai-models}:"}
{"timestamp":"2026-10-19T18:32:54.236Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models, POST} route"}
{"timestamp":"2026-10-19T18:32:54.236Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models, GET} route"}
{"timestamp":"2026-10-19T18:32:54.236Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/default, GET} route"}
{"timestamp":"2026-10-19T18:32:54.236Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/:id, GET} route"}
{"timestamp":"2026-10-19T18:32:54.236Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/:id, PUT} route"}
{"timestamp":"2026-10-19T18:32:54.237Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/:id, DELETE} route"}
{"timestamp":"2026-10-19T18:32:54.237Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/:id/set-default, POST} route"}
{"timestamp":"2026-10-19T18:32:54.237Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/assign-to-business, POST} route"}
{"timestamp":"2026-10-19T18:32:54.237Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/business/:businessId, GET} route"}
{"timestamp":"2026-10-19T18:32:54.237Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/:id/businesses, GET} route"}
{"timestamp":"2026-10-19T18:32:54.237Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/initialize-defaults, POST} route"}
{"timestamp":"2026-10-19T18:32:54.238Z","level":"log","context":"RoutesResolver","message":"AdminAiModelController {/api/admin/ai-models}:"}
{"timestamp":"2026-10-19T18:32:54.238Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models, POST} route"}
{"timestamp":"2026-10-19T18:32:54.238Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models, GET} route"}
{"timestamp":"2026-10-19T18:32:54.238Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/default, GET} route"}
{"timestamp":"2026-10-19T18:32:54.238Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/:id, GET} route"}
{"timestamp":"2026-10-19T18:32:54.238Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/:id, PUT} route"}
{"timestamp":"2026-10-19T18:32:54.238Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/:id, DELETE} route"}
{"timestamp":"2026-10-19T18:32:54.239Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/:id/set-default, POST} route"}
{"timestamp":"2026-10-19T18:32:54.239Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/assign-to-business, POST} route"}
{"timestamp":"2026-10-19T18:32:54.239Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/business/:businessId, GET} route"}
{"timestamp":"2026-10-19T18:42:22.058Z","level":"warn","context":"LegacyRouteConverter","message":"Unsupported route path: \"/lp/*\". In previous versions, the symbols ?, *, and + were used to denote optional or repeating path parameters. The latest version of \"path-to-regexp\" now requires the use of named parameters. For example, instead of using a route like /users/* to capture all routes starting with \"/users\", you should use /users/*path. For more details, refer to the migration guide. Attempting to auto-convert..."}
{"timestamp":"2026-10-19T18:42:22.092Z","level":"log","context":"Bootstrap","message":"Starting Users API on port 3842..."}
{"timestamp":"2026-10-19T18:42:22.095Z","level":"log","context":"RoutesResolver","message":"UsersApiController {/}:"}
{"timestamp":"2026-10-19T18:42:22.099Z","level":"log","context":"RouterExplorer","message":"Mapped {/, GET} route"}
{"timestamp":"2026-10-19T18:42:22.099Z","level":"log","context":"RoutesResolver","message":"AuthController {/auth}:"}
{"timestamp":"2026-10-19T18:42:22.100Z","level":"log","context":"RouterExplorer","message":"Mapped {/auth/login, POST} route"}
{"timestamp":"2026-10-19T18:42:22.100Z","level":"log","context":"RouterExplorer","message":"Mapped {/auth/admin/login, POST} route"}
{"timestamp":"2026-10-19T18:42:22.101Z","level":"log","context":"RouterExplorer","message":"Mapped {/auth/send-otp, POST} route"}
{"timestamp":"2026-10-19T18:42:22.101Z","level":"log","context":"RouterExplorer","message":"Mapped {/auth/verify-otp, POST} route"}
{"timestamp":"2026-10-19T18:42:22.101Z","level":"log","context":"RouterExplorer","message":"Mapped {/auth/signup, POST} route"}
{"timestamp":"2026-10-19T18:42:22.102Z","level":"log","context":"RouterExplorer","message":"Mapped {/auth/subscription-status, GET} route"}
{"timestamp":"2026-10-19T18:42:22.102Z","level":"log","context":"RoutesResolver","message":"AdminMspController {/admin/msp}:"}
{"timestamp":"2026-10-19T18:42:22.103Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/msp, GET} route"}
{"timestamp":"2026-10-19T18:42:22.103Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/msp/:id, GET} route"}
{"timestamp":"2026-10-19T18:42:22.104Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/msp, POST} route"}
{"timestamp":"2026-10-19T18:42:22.104Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/msp/:id, PUT} route"}
{"timestamp":"2026-10-19T18:42:22.105Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/msp/:id, DELETE} route"}
{"timestamp":"2026-10-19T18:42:22.105Z","level":"log","context":"RoutesResolver","message":"AdminLicenseController {/admin/licenses}:"}
{"timestamp":"2026-10-19T18:42:22.105Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/licenses/summary, GET} route"}
{"timestamp":"2026-10-19T18:42:22.105Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/licenses/msp/:mspId, GET} route"}
{"timestamp":"2026-10-19T18:42:22.105Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/licenses/msp/:mspId, PUT} route"}
{"timestamp":"2026-10-19T18:42:22.105Z","level":"log","context":"RoutesResolver","message":"AdminImpersonationController {/admin/impersonation}:"}
{"timestamp":"2026-10-19T18:42:22.106Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/impersonation/msp-users, GET} route"}
{"timestamp":"2026-10-19T18:42:22.106Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/impersonation/impersonate, POST} route"}
{"timestamp":"2026-10-19T18:42:22.106Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/impersonation/stop, POST} route"}
{"timestamp":"2026-10-19T18:42:22.106Z","level":"log","context":"RoutesResolver","message":"AdminAiUsageController {/admin/ai-usage}:"}
{"timestamp":"2026-10-19T18:42:22.107Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-usage, GET} route"}
{"timestamp":"2026-10-19T18:42:22.110Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-usage/business/:businessId, GET} route"}
{"timestamp":"2026-10-19T18:42:22.110Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-usage/report/monthly, GET} route"}
{"timestamp":"2026-10-19T18:42:22.110Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-usage/pricing, GET} route"}
{"timestamp":"2026-10-19T18:42:22.110Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-usage/pricing, POST} route"}
{"timestamp":"2026-10-19T18:42:22.110Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-usage/credit/:businessId, PUT} route"}
{"timestamp":"2026-10-19T18:42:22.110Z","level":"log","context":"RoutesResolver","message":"AdminAiUsageController {/api/admin/ai-usage}:"}
{"timestamp":"2026-10-19T18:42:22.111Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-usage, GET} route"}
{"timestamp":"2026-10-19T18:42:22.111Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-usage/business/:businessId, GET} route"}
{"timestamp":"2026-10-19T18:42:22.111Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-usage/report/monthly, GET} route"}
{"timestamp":"2026-10-19T18:42:22.111Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-usage/pricing, GET} route"}
{"timestamp":"2026-10-19T18:42:22.111Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-usage/pricing, POST} route"}
{"timestamp":"2026-10-19T18:42:22.111Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-usage/credit/:businessId, PUT} route"}
{"timestamp":"2026-10-19T18:42:22.111Z","level":"log","context":"RoutesResolver","message":"AdminAiModelController {/admin/ai-models}:"}
{"timestamp":"2026-10-19T18:42:22.112Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models, POST} route"}
{"timestamp":"2026-10-19T18:42:22.112Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models, GET} route"}
{"timestamp":"2026-10-19T18:42:22.112Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/default, GET} route"}
{"timestamp":"2026-10-19T18:42:22.112Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/:id, GET} route"}
{"timestamp":"2026-10-19T18:42:22.112Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/:id, PUT} route"}
{"timestamp":"2026-10-19T18:42:22.113Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/:id, DELETE} route"}
{"timestamp":"2026-10-19T18:42:22.113Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/:id/set-default, POST} route"}
{"timestamp":"2026-10-19T18:42:22.113Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/assign-to-business, POST} route"}
{"timestamp":"2026-10-19T18:42:22.113Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/business/:businessId, GET} route"}
{"timestamp":"2026-10-19T18:42:22.113Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/:id/businesses, GET} route"}
{"timestamp":"2026-10-19T18:42:22.113Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/initialize-defaults, POST} route"}
{"timestamp":"2026-10-19T18:42:22.113Z","level":"log","context":"RoutesResolver","message":"AdminAiModelController {/api/admin/ai-models}:"}
{"timestamp":"2026-10-19T18:42:22.114Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models, POST} route"}
{"timestamp":"2026-10-19T18:42:22.114Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models, GET} route"}
{"timestamp":"2026-10-19T18:42:22.114Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/default, GET} route"}
{"timestamp":"2026-10-19T18:42:22.114Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/:id, GET} route"}
{"timestamp":"2026-10-19T18:42:22.114Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/:id, PUT} route"}
{"timestamp":"2026-10-19T18:42:22.114Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/:id, DELETE} route"}
{"timestamp":"2026-10-19T18:42:22.115Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/:id/set-default, POST} route"}
{"timestamp":"2026-10-19T18:42:22.115Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/assign-to-business, POST} route"}
{"timestamp":"2026-10-19T18:42:22.115Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/business/:businessId, GET} route"}
{"timestamp":"2026-10-19T18:42:22.115Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/:id/businesses, GET} route"}
{"timestamp":"2026-10-19T18:42:22.115Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/initialize-defaults, POST} route"}
{"timestamp":"2026-10-19T18:42:22.115Z","level":"log","context":"RoutesResolver","message":"AdminBusinessController {/admin/businesses}:"}
{"timestamp":"2026-10-19T18:42:22.116Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/businesses, GET} route"}
{"timestamp":"2026-10-19T18:42:22.116Z","level":"log","context":"RoutesResolver","message":"ResellerManagementController {/admin/resellers}:"}
{"timestamp":"2026-10-19T18:42:22.116Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/resellers, GET} route"}
{"timestamp":"2026-10-19T18:42:22.116Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/resellers/create-default, POST} route"}
{"timestamp":"2026-10-19T18:42:22.116Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/resellers, POST} route"}
{"timestamp":"2026-10-19T18:42:22.116Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/resellers/:id/toggle-status, PUT} route"}
{"timestamp":"2026-10-19T18:42:22.116Z","level":"log","context":"RoutesResolver","message":"SubscriptionController {/subscription}:"}
{"timestamp":"2026-10-19T18:42:22.117Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/plans, GET} route"}
{"timestamp":"2026-10-19T18:42:22.117Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/calculate-price, POST} route"}
{"timestamp":"2026-10-19T18:42:22.117Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/current, GET} route"}
{"timestamp":"2026-10-19T18:42:22.117Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/create, POST} route"}
{"timestamp":"2026-10-19T18:42:22.117Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/:id, PUT} route"}
{"timestamp":"2026-10-19T18:42:22.117Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/:id/cancel, DELETE} route"}
{"timestamp":"2026-10-19T18:42:22.118Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/sync/:stripeSubscriptionId, POST} route"}
{"timestamp":"2026-10-19T18:42:22.118Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/payments, GET} route"}
{"timestamp":"2026-10-19T18:42:22.118Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/payments/stats, GET} route"}
{"timestamp":"2026-10-19T18:42:22.118Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/payment/:id, GET} route"}
{"timestamp":"2026-10-19T18:42:22.118Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/payment-methods/attach, POST} route"}
{"timestamp":"2026-10-19T18:42:22.118Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/payment-methods/:paymentMethodId, DELETE} route"}
{"timestamp":"2026-10-19T18:42:22.118Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/payment-methods, GET} route"}
{"timestamp":"2026-10-19T18:42:22.119Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/setup-intent, POST} route"}
{"timestamp":"2026-10-19T18:42:22.119Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/update-employee-count, POST} route"}
{"timestamp":"2026-10-19T18:42:22.119Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/retry-payment/:subscriptionId, POST} route"}
{"timestamp":"2026-10-19T18:42:22.119Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/invoice/:invoiceId/pdf, GET} route"}
{"timestamp":"2026-10-19T18:42:22.119Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/preview-upgrade, POST} route"}
{"timestamp":"2026-10-19T18:42:22.119Z","level":"log","context":"RoutesResolver","message":"SubscriptionController {/api/subscription}:"}
{"timestamp":"2026-10-19T18:42:22.120Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/plans, GET} route"}
{"timestamp":"2026-10-19T18:42:22.120Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/calculate-price, POST} route"}
{"timestamp":"2026-10-19T18:42:22.120Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/current, GET} route"}
{"timestamp":"2026-10-19T18:42:22.120Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/create, POST} route"}
{"timestamp":"2026-10-19T18:42:22.120Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/:id, PUT} route"}
{"timestamp":"2026-10-19T18:42:22.120Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/:id/cancel, DELETE} route"}
{"timestamp":"2026-10-19T18:42:22.120Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/sync/:stripeSubscriptionId, POST} route"}
{"timestamp":"2026-10-19T18:42:22.121Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/payments, GET} route"}
{"timestamp":"2026-10-19T18:42:22.121Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/payments/stats, GET} route"}
{"timestamp":"2026-10-19T18:42:22.121Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/payment/:id, GET} route"}
{"timestamp":"2026-10-19T18:42:22.121Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/payment-methods/attach, POST} route"}
{"timestamp":"2026-10-19T18:42:22.121Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/payment-methods/:paymentMethodId, DELETE} route"}
{"timestamp":"2026-10-19T18:42:22.121Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/payment-methods, GET} route"}
{"timestamp":"2026-10-19T18:42:22.121Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/setup-intent, POST} route"}
{"timestamp":"2026-10-19T18:42:22.122Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/update-employee-count, POST} route"}
{"timestamp":"2026-10-19T18:42:22.122Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/retry-payment/:subscriptionId, POST} route"}
{"timestamp":"2026-10-19T18:42:22.122Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/invoice/:invoiceId/pdf, GET} route"}
{"timestamp":"2026-10-19T18:42:22.122Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/preview-upgrade, POST} route"}
{"timestamp":"2026-10-19T18:42:22.122Z","level":"log","context":"RoutesResolver","message":"StripeWebhookController {/stripe/webhook}:"}
{"timestamp":"2026-10-19T18:42:22.122Z","level":"log","context":"RouterExplorer","message":"Mapped {/stripe/webhook/test, GET} route"}
{"timestamp":"2026-10-19T18:42:22.123Z","level":"log","context":"RouterExplorer","message":"Mapped {/stripe/webhook, POST} route"}
{"timestamp":"2026-10-19T18:42:22.123Z","level":"log","context":"RoutesResolver","message":"EmailController {/email-templates}:"}
{"timestamp":"2026-10-19T18:42:22.123Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates/test, POST} route"}
{"timestamp":"2026-10-19T18:42:22.123Z","level":"log","context":"RoutesResolver","message":"EmployeeController {/employees}:"}
{"timestamp":"2026-10-19T18:42:22.123Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees, POST} route"}
{"timestamp":"2026-10-19T18:42:22.123Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees, GET} route"}
{"timestamp":"2026-10-19T18:42:22.123Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees/export, GET} route"}
{"timestamp":"2026-10-19T18:42:22.123Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees/risk-stats, GET} route"}
{"timestamp":"2026-10-19T18:42:22.124Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees/:id, GET} route"}
{"timestamp":"2026-10-19T18:42:22.124Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees/:id, PUT} route"}
{"timestamp":"2026-10-19T18:42:22.124Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees/:id, DELETE} route"}
{"timestamp":"2026-10-19T18:42:22.124Z","level":"log","context":"RoutesResolver","message":"GroupController {/groups}:"}
{"timestamp":"2026-10-19T18:42:22.124Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups, POST} route"}
{"timestamp":"2026-10-19T18:42:22.124Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups, GET} route"}
{"timestamp":"2026-10-19T18:42:22.125Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups/standard, GET} route"}
{"timestamp":"2026-10-19T18:42:22.125Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups/:id, GET} route"}
{"timestamp":"2026-10-19T18:42:22.125Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups/:id, PUT} route"}
{"timestamp":"2026-10-19T18:42:22.125Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups/:id, DELETE} route"}
{"timestamp":"2026-10-19T18:42:22.125Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups/:id/info, GET} route"}
{"timestamp":"2026-10-19T18:42:22.125Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups/:id/with-employees, GET} route"}
{"timestamp":"2026-10-19T18:42:22.125Z","level":"log","context":"RoutesResolver","message":"SenderProfileController {/sender-profiles}:"}
{"timestamp":"2026-10-19T18:42:22.125Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles, GET} route"}
{"timestamp":"2026-10-19T18:42:22.126Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles/:id, GET} route"}
{"timestamp":"2026-10-19T18:42:22.126Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles, POST} route"}
{"timestamp":"2026-10-19T18:42:22.126Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles/:id, PUT} route"}
{"timestamp":"2026-10-19T18:42:22.126Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles/:id, DELETE} route"}
{"timestamp":"2026-10-19T18:42:22.126Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles/:id/verify-domain, POST} route"}
{"timestamp":"2026-10-19T18:42:22.126Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles/domain-verification, GET} route"}
{"timestamp":"2026-10-19T18:42:22.126Z","level":"log","context":"RoutesResolver","message":"EmailTemplateController {/email-templates}:"}
{"timestamp":"2026-10-19T18:42:22.127Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates, GET} route"}
{"timestamp":"2026-10-19T18:42:22.127Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates/:id, GET} route"}
{"timestamp":"2026-10-19T18:42:22.127Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates, POST} route"}
{"timestamp":"2026-10-19T18:42:22.127Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates/:id, PUT} route"}
{"timestamp":"2026-10-19T18:42:22.127Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates/:id, DELETE} route"}
{"timestamp":"2026-10-19T18:42:22.127Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates/:id/duplicate, POST} route"}
{"timestamp":"2026-10-19T18:42:22.128Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates/:id/preview, GET} route"}
{"timestamp":"2026-10-19T18:42:22.128Z","level":"log","context":"RoutesResolver","message":"ScenarioController {/scenarios}:"}
{"timestamp":"2026-10-19T18:42:22.128Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios, POST} route"}
{"timestamp":"2026-10-19T18:42:22.128Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios/generate-content, POST} route"}
{"timestamp":"2026-10-19T18:42:22.128Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios, GET} route"}
{"timestamp":"2026-10-19T18:42:22.128Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios/:id, GET} route"}
{"timestamp":"2026-10-19T18:42:22.128Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios/:id, PUT} route"}
{"timestamp":"2026-10-19T18:42:22.128Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios/:id, DELETE} route"}
{"timestamp":"2026-10-19T18:42:22.129Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios/generate-from-json, POST} route"}
{"timestamp":"2026-10-19T18:42:22.129Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios/:id/save-as-custom-scenario, POST} route"}
{"timestamp":"2026-10-19T18:42:22.129Z","level":"log","context":"RoutesResolver","message":"CampaignController {/campaigns}:"}
{"timestamp":"2026-10-19T18:42:22.129Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns, POST} route"}
{"timestamp":"2026-10-19T18:42:22.129Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns, GET} route"}
{"timestamp":"2026-10-19T18:42:22.129Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id, GET} route"}
{"timestamp":"2026-10-19T18:42:22.129Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id/details, GET} route"}
{"timestamp":"2026-10-19T18:42:22.130Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id/employees, GET} route"}
{"timestamp":"2026-10-19T18:42:22.130Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id, PATCH} route"}
{"timestamp":"2026-10-19T18:42:22.130Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id/start, POST} route"}
{"timestamp":"2026-10-19T18:42:22.130Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id/stop, POST} route"}
{"timestamp":"2026-10-19T18:42:22.130Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id/duplicate, POST} route"}
{"timestamp":"2026-10-19T18:42:22.130Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id, DELETE} route"}
{"timestamp":"2026-10-19T18:42:22.131Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/auto-generate-program, POST} route"}
{"timestamp":"2026-10-19T18:42:22.131Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/generate-from-threat-intelligence, POST} route"}
{"timestamp":"2026-10-19T18:42:22.131Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id/risk-score, GET} route"}
{"timestamp":"2026-10-19T18:42:22.131Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/recalculate-risk-scores, POST} route"}
{"timestamp":"2026-10-19T18:42:22.131Z","level":"log","context":"RoutesResolver","message":"CampaignController {/api/campaigns}:"}
{"timestamp":"2026-10-19T18:42:22.131Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns, POST} route"}
{"timestamp":"2026-10-19T18:42:22.131Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns, GET} route"}
{"timestamp":"2026-10-19T18:42:22.132Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id, GET} route"}
{"timestamp":"2026-10-19T18:42:22.132Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id/details, GET} route"}
{"timestamp":"2026-10-19T18:42:22.132Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id/employees, GET} route"}
{"timestamp":"2026-10-19T18:42:22.132Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id, PATCH} route"}
{"timestamp":"2026-10-19T18:42:22.132Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id/start, POST} route"}
{"timestamp":"2026-10-19T18:42:22.132Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id/stop, POST} route"}
{"timestamp":"2026-10-19T18:42:22.132Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id/duplicate, POST} route"}
{"timestamp":"2026-10-19T18:42:22.133Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id, DELETE} route"}
{"timestamp":"2026-10-19T18:42:22.133Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/auto-generate-program, POST} route"}
{"timestamp":"2026-10-19T18:42:22.133Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/generate-from-threat-intelligence, POST} route"}
{"timestamp":"2026-10-19T18:42:22.133Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id/risk-score, GET} route"}
{"timestamp":"2026-10-19T18:42:22.133Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/recalculate-risk-scores, POST} route"}
{"timestamp":"2026-10-19T18:42:22.133Z","level":"log","context":"RoutesResolver","message":"NotificationsController {/notifications}:"}
{"timestamp":"2026-10-19T18:42:22.133Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications, POST} route"}
{"timestamp":"2026-10-19T18:42:22.134Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications, GET} route"}
{"timestamp":"2026-10-19T18:42:22.134Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/unread, GET} route"}
{"timestamp":"2026-10-19T18:42:22.134Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/unread-count, GET} route"}
{"timestamp":"2026-10-19T18:42:22.134Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/:id, GET} route"}
{"timestamp":"2026-10-19T18:42:22.134Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/:id, PATCH} route"}
{"timestamp":"2026-10-19T18:42:22.134Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/:id/read, PATCH} route"}
{"timestamp":"2026-10-19T18:42:22.134Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/mark-all-read, PATCH} route"}
{"timestamp":"2026-10-19T18:42:22.135Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/:id, DELETE} route"}
{"timestamp":"2026-10-19T18:42:22.135Z","level":"log","context":"RoutesResolver","message":"LandingPageController {/lp}:"}
{"timestamp":"2026-10-19T18:42:22.135Z","level":"log","context":"RouterExplorer","message":"Mapped {/lp/image, GET} route"}
{"timestamp":"2026-10-19T18:42:22.135Z","level":"log","context":"RouterExplorer","message":"Mapped {/lp/learning, GET} route"}
{"timestamp":"2026-10-19T18:42:22.135Z","level":"log","context":"RouterExplorer","message":"Mapped {/lp/submit, POST} route"}
{"timestamp":"2026-10-19T18:42:22.136Z","level":"log","context":"RouterExplorer","message":"Mapped {/lp/test, GET} route"}
{"timestamp":"2026-10-19T18:42:22.136Z","level":"warn","context":"LegacyRouteConverter","message":"Unsupported route path: \"/lp/*\". In previous versions, the symbols ?, *, and + were used to denote optional or repeating path parameters. The latest version of \"path-to-regexp\" now requires the use of named parameters. For example, instead of using a route like /users/* to capture all routes starting with \"/users\", you should use /users/*path. For more details, refer to the migration guide. Attempting to auto-convert..."}
{"timestamp":"2026-10-19T18:42:22.136Z","level":"log","context":"RouterExplorer","message":"Mapped {/lp/*, ALL} route"}
{"timestamp":"2026-10-19T18:42:22.137Z","level":"log","context":"RoutesResolver","message":"SupportController {/support}:"}
{"timestamp":"2026-10-19T18:42:22.137Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets, POST} route"}
{"timestamp":"2026-10-19T18:42:22.137Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets, GET} route"}
{"timestamp":"2026-10-19T18:42:22.137Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets/:id, GET} route"}
{"timestamp":"2026-10-19T18:42:22.137Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets/:id, PATCH} route"}
{"timestamp":"2026-10-19T18:42:22.137Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets/:id, DELETE} route"}
{"timestamp":"2026-10-19T18:42:22.138Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets/:id/messages, POST} route"}
{"timestamp":"2026-10-19T18:42:22.138Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets/:id/close, POST} route"}
{"timestamp":"2026-10-19T18:42:22.138Z","level":"log","context":"RoutesResolver","message":"BusninessMetricsController {/business-metrics}:"}
{"timestamp":"2026-10-19T18:42:22.138Z","level":"log","context":"RouterExplorer","message":"Mapped {/business-metrics, GET} route"}
{"timestamp":"2026-10-19T18:42:22.138Z","level":"log","context":"RoutesResolver","message":"UsersController {/users}:"}
{"timestamp":"2026-10-19T18:42:22.138Z","level":"log","context":"RouterExplorer","message":"Mapped {/users/:id, PUT} route"}
{"timestamp":"2026-10-19T18:42:22.138Z","level":"log","context":"RouterExplorer","message":"Mapped {/users/settings, GET} route"}
{"timestamp":"2026-10-19T18:42:22.139Z","level":"log","context":"RouterExplorer","message":"Mapped {/users/settings/general, PUT} route"}
{"timestamp":"2026-10-19T18:42:22.139Z","level":"log","context":"RouterExplorer","message":"Mapped {/users/company/settings, PUT} route"}
{"timestamp":"2026-10-19T18:42:22.139Z","level":"log","context":"RouterExplorer","message":"Mapped {/users/change-password, POST} route"}
{"timestamp":"2026-10-19T18:42:22.139Z","level":"log","context":"RouterExplorer","message":"Mapped {/users/localization/settings, PUT} route"}
{"timestamp":"2026-10-19T18:42:22.139Z","level":"log","context":"RoutesResolver","message":"PartnerController {/partner}:"}
{"timestamp":"2026-10-19T18:42:22.139Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses, POST} route"}
{"timestamp":"2026-10-19T18:42:22.140Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses, GET} route"}
{"timestamp":"2026-10-19T18:42:22.140Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses/:id, GET} route"}
{"timestamp":"2026-10-19T18:42:22.140Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses/:id, PUT} route"}
{"timestamp":"2026-10-19T18:42:22.140Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses/:id, DELETE} route"}
{"timestamp":"2026-10-19T18:42:22.140Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses/:id/impersonate, POST} route"}
{"timestamp":"2026-10-19T18:42:22.140Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses/stop-impersonation, POST} route"}
{"timestamp":"2026-10-19T18:42:22.141Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/license-usage, GET} route"}
{"timestamp":"2026-10-19T18:42:22.141Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/invoices, POST} route"}
{"timestamp":"2026-10-19T18:42:22.141Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/invoices, GET} route"}
{"timestamp":"2026-10-19T18:42:22.141Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/invoices/:id, GET} route"}
{"timestamp":"2026-10-19T18:42:22.141Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/invoices/:id, PUT} route"}
{"timestamp":"2026-10-19T18:42:22.141Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/invoices/:id, DELETE} route"}
{"timestamp":"2026-10-19T18:42:22.142Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/invoices/:id/mark-paid, PUT} route"}
{"timestamp":"2026-10-19T18:42:22.142Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/onboarding/generate-token, POST} route"}
{"timestamp":"2026-10-19T18:42:22.142Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/dashboard, GET} route"}
{"timestamp":"2026-10-19T18:42:22.142Z","level":"log","context":"RoutesResolver","message":"MspSubscriptionController {/partner/msp-subscriptions}:"}
{"timestamp":"2026-10-19T18:42:22.142Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/plans, POST} route"}
{"timestamp":"2026-10-19T18:42:22.142Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/plans, GET} route"}
{"timestamp":"2026-10-19T18:42:22.143Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/plans/:planId, GET} route"}
{"timestamp":"2026-10-19T18:42:22.143Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/plans/:planId, PUT} route"}
{"timestamp":"2026-10-19T18:42:22.143Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/plans/:planId, DELETE} route"}
{"timestamp":"2026-10-19T18:42:22.143Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/businesses/:businessId/subscription, POST} route"}
{"timestamp":"2026-10-19T18:42:22.143Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions, GET} route"}
{"timestamp":"2026-10-19T18:42:22.143Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/businesses/:businessId/subscription, GET} route"}
{"timestamp":"2026-10-19T18:42:22.144Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/businesses/:businessId/subscription, PUT} route"}
{"timestamp":"2026-10-19T18:42:22.144Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/businesses/:businessId/subscription, DELETE} route"}
{"timestamp":"2026-10-19T18:42:22.144Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/businesses/:businessId/subscription/limits, GET} route"}
{"timestamp":"2026-10-19T18:42:22.144Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/businesses/:businessId/subscription/change-plan, PUT} route"}
{"timestamp":"2026-10-19T18:42:22.144Z","level":"log","context":"RoutesResolver","message":"OnboardingController {/onboarding}:"}
{"timestamp":"2026-10-19T18:42:22.145Z","level":"log","context":"RouterExplorer","message":"Mapped {/onboarding/validate/:token, GET} route"}
{"timestamp":"2026-10-19T18:42:22.145Z","level":"log","context":"RouterExplorer","message":"Mapped {/onboarding/complete/:token, POST} route"}
{"timestamp":"2026-10-19T18:42:22.145Z","level":"log","context":"RoutesResolver","message":"ResellerController {/reseller}:"}
{"timestamp":"2026-10-19T18:42:22.145Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/businesses, POST} route"}
{"timestamp":"2026-10-19T18:42:22.145Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/businesses, GET} route"}
{"timestamp":"2026-10-19T18:42:22.145Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/businesses/:id, GET} route"}
{"timestamp":"2026-10-19T18:42:22.145Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/businesses/:id, PUT} route"}
{"timestamp":"2026-10-19T18:42:22.146Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/businesses/:id, DELETE} route"}
{"timestamp":"2026-10-19T18:42:22.146Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/license-usage, GET} route"}
{"timestamp":"2026-10-19T18:42:22.146Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/invoices, POST} route"}
{"timestamp":"2026-10-19T18:42:22.146Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/invoices, GET} route"}
{"timestamp":"2026-10-19T18:42:22.146Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/invoices/:id, GET} route"}
{"timestamp":"2026-10-19T18:42:22.146Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/invoices/:id, PUT} route"}
{"timestamp":"2026-10-19T18:42:22.147Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/invoices/:id, DELETE} route"}
{"timestamp":"2026-10-19T18:42:22.147Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/invoices/:id/mark-paid, PUT} route"}
{"timestamp":"2026-10-19T18:42:22.147Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/onboarding/generate-token, POST} route"}
{"timestamp":"2026-10-19T18:42:22.147Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/dashboard, GET} route"}
{"timestamp":"2026-10-19T18:42:22.147Z","level":"log","context":"RoutesResolver","message":"ResellerSubscriptionController {/reseller}:"}
{"timestamp":"2026-10-19T18:42:22.147Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/plans, POST} route"}
{"timestamp":"2026-10-19T18:42:22.148Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/plans, GET} route"}
{"timestamp":"2026-10-19T18:42:22.148Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/plans/:planId, GET} route"}
{"timestamp":"2026-10-19T18:42:22.148Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/plans/:planId, PUT} route"}
{"timestamp":"2026-10-19T18:42:22.148Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/plans/:planId, DELETE} route"}
{"timestamp":"2026-10-19T18:42:22.148Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/subscriptions/businesses/:businessId/subscription, POST} route"}
{"timestamp":"2026-10-19T18:42:22.148Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/subscriptions, GET} route"}
{"timestamp":"2026-10-19T18:42:22.149Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/subscriptions/businesses/:businessId/subscription, GET} route"}
{"timestamp":"2026-10-19T18:42:22.149Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/subscriptions/businesses/:businessId/subscription, PUT} route"}
{"timestamp":"2026-10-19T18:42:22.149Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/subscriptions/businesses/:businessId/subscription, DELETE} route"}
{"timestamp":"2026-10-19T18:42:22.149Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/subscriptions/businesses/:businessId/subscription/limits, GET} route"}
{"timestamp":"2026-10-19T18:42:22.149Z","level":"log","context":"RoutesResolver","message":"HealthController {/health}:"}
{"timestamp":"2026-10-19T18:42:22.149Z","level":"log","context":"RouterExplorer","message":"Mapped {/health, GET} route"}
{"timestamp":"2026-10-19T18:42:22.150Z","level":"log","context":"RouterExplorer","message":"Mapped {/health/test-logs, GET} route"}
{"timestamp":"2026-10-19T18:42:22.150Z","level":"log","context":"RoutesResolver","message":"AzureAdController {/azure-ad}:"}
{"timestamp":"2026-10-19T18:42:22.150Z","level":"log","context":"RouterExplorer","message":"Mapped {/azure-ad/config, POST} route"}
{"timestamp":"2026-10-19T18:42:22.150Z","level":"log","context":"RouterExplorer","message":"Mapped {/azure-ad/config, GET} route"}
{"timestamp":"2026-10-19T18:42:22.150Z","level":"log","context":"RouterExplorer","message":"Mapped {/azure-ad/test-connection, POST} route"}
{"timestamp":"2026-10-19T18:42:22.150Z","level":"log","context":"RouterExplorer","message":"Mapped {/azure-ad/sync, POST} route"}
{"timestamp":"2026-10-19T18:42:22.150Z","level":"log","context":"RoutesResolver","message":"ThreatsController {/threats}:"}
{"timestamp":"2026-10-19T18:42:22.151Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats, POST} route"}
{"timestamp":"2026-10-19T18:42:22.151Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats, GET} route"}
{"timestamp":"2026-10-19T18:42:22.151Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/chart-data, GET} route"}
{"timestamp":"2026-10-19T18:42:22.151Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/claude-search, POST} route"}
{"timestamp":"2026-10-19T18:42:22.151Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/claude-latest, POST} route"}
{"timestamp":"2026-10-19T18:42:22.151Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/claude-trending, POST} route"}
{"timestamp":"2026-10-19T18:42:22.151Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/claude-categories, POST} route"}
{"timestamp":"2026-10-19T18:42:22.152Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/claude-manual-search, POST} route"}
{"timestamp":"2026-10-19T18:42:22.152Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/claude-quick-search, POST} route"}
{"timestamp":"2026-10-19T18:42:22.152Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/scheduler-status, GET} route"}
{"timestamp":"2026-10-19T18:42:22.152Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/health-check, GET} route"}
{"timestamp":"2026-10-19T18:42:22.152Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/pause-scheduler, POST} route"}
{"timestamp":"2026-10-19T18:42:22.152Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/:id, GET} route"}
{"timestamp":"2026-10-19T18:42:22.153Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/:id, PATCH} route"}
{"timestamp":"2026-10-19T18:42:22.153Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/:id, DELETE} route"}
{"timestamp":"2026-10-19T18:42:22.153Z","level":"log","context":"RoutesResolver","message":"DomainController {/domains}:"}
{"timestamp":"2026-10-19T18:42:22.153Z","level":"log","context":"RouterExplorer","message":"Mapped {/domains, GET} route"}
{"timestamp":"2026-10-19T18:42:22.153Z","level":"log","context":"RouterExplorer","message":"Mapped {/domains/:id, GET} route"}
{"timestamp":"2026-10-19T18:42:22.153Z","level":"log","context":"RouterExplorer","message":"Mapped {/domains, POST} route"}
{"timestamp":"2026-10-19T18:42:22.153Z","level":"log","context":"RouterExplorer","message":"Mapped {/domains/:id, PUT} route"}
{"timestamp":"2026-10-19T18:42:22.154Z","level":"log","context":"RouterExplorer","message":"Mapped {/domains/:id, DELETE} route"}
{"timestamp":"2026-10-19T18:42:22.154Z","level":"log","context":"RouterExplorer","message":"Mapped {/domains/seed, POST} route"}
{"timestamp":"2026-10-19T18:42:22.154Z","level":"log","context":"RoutesResolver","message":"MspSubscriptionController {/msp-subscription}:"}
{"timestamp":"2026-10-19T18:42:22.154Z","level":"log","context":"RouterExplorer","message":"Mapped {/msp-subscription/current, GET} route"}
{"timestamp":"2026-10-19T18:42:22.154Z","level":"log","context":"RouterExplorer","message":"Mapped {/msp-subscription/invoices, GET} route"}
{"timestamp":"2026-10-19T18:42:22.154Z","level":"log","context":"RouterExplorer","message":"Mapped {/msp-subscription/invoice/:invoiceId/pdf, GET} route"}
{"timestamp":"2026-10-19T18:42:22.154Z","level":"log","context":"RoutesResolver","message":"MspSubscriptionController {/api/msp-subscription}:"}
{"timestamp":"2026-10-19T18:42:22.154Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/msp-subscription/current, GET} route"}
{"timestamp":"2026-10-19T18:42:22.155Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/msp-subscription/invoices, GET} route"}
{"timestamp":"2026-10-19T18:42:22.155Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/msp-subscription/invoice/:invoiceId/pdf, GET} route"}
{"timestamp":"2026-10-19T18:42:22.223Z","level":"log","context":"NestApplication","message":"Nest application successfully started"}
{"timestamp":"2026-10-19T18:42:22.245Z","level":"log","context":"Bootstrap","message":"Users API successfully started on port 3842"}
{"timestamp":"2026-10-19T18:42:22.245Z","level":"log","context":"SeedService","message":"🌱 Starting database seeding..."}
{"timestamp":"2026-10-19T18:42:22.252Z","level":"log","context":"SeedService","message":"Admin account already exists, skipping seed"}
{"timestamp":"2026-10-19T18:42:22.254Z","level":"log","context":"SeedService","message":"Reseller account already exists, skipping seed"}
{"timestamp":"2026-10-19T18:42:22.256Z","level":"log","context":"SeedService","message":"MSP account already exists, skipping seed"}
{"timestamp":"2026-10-19T18:42:22.256Z","level":"log","context":"SeedService","message":"✅ Database seeding completed successfully"}
{"timestamp":"2026-10-19T18:42:22.286Z","level":"log","context":"UsersApiController","message":"Hello endpoint accessed"}
{"timestamp":"2026-10-19T20:45:15.480Z","level":"warn","context":"LegacyRouteConverter","message":"Unsupported route path: \"/lp/*\". In previous versions, the symbols ?, *, and + were used to denote optional or repeating path parameters. The latest version of \"path-to-regexp\" now requires the use of named parameters. For example, instead of using a route like /users/* to capture all routes starting with \"/users\", you should use /users/*path. For more details, refer to the migration guide. Attempting to auto-convert..."}
{"timestamp":"2026-10-19T20:45:15.516Z","level":"log","context":"Bootstrap","message":"Starting Users API on port 3842..."}
{"timestamp":"2026-10-19T20:45:15.519Z","level":"log","context":"RoutesResolver","message":"UsersApiController {/}:"}
{"timestamp":"2026-10-19T20:45:15.522Z","level":"log","context":"RouterExplorer","message":"Mapped {/, GET} route"}
{"timestamp":"2026-10-19T20:45:15.523Z","level":"log","context":"RoutesResolver","message":"AuthController {/auth}:"}
{"timestamp":"2026-10-19T20:45:15.523Z","level":"log","context":"RouterExplorer","message":"Mapped {/auth/login, POST} route"}
{"timestamp":"2026-10-19T20:45:15.524Z","level":"log","context":"RouterExplorer","message":"Mapped {/auth/admin/login, POST} route"}
{"timestamp":"2026-10-19T20:45:15.524Z","level":"log","context":"RouterExplorer","message":"Mapped {/auth/send-otp, POST} route"}
{"timestamp":"2026-10-19T20:45:15.525Z","level":"log","context":"RouterExplorer","message":"Mapped {/auth/verify-otp, POST} route"}
{"timestamp":"2026-10-19T20:45:15.525Z","level":"log","context":"RouterExplorer","message":"Mapped {/auth/signup, POST} route"}
{"timestamp":"2026-10-19T20:45:15.526Z","level":"log","context":"RouterExplorer","message":"Mapped {/auth/subscription-status, GET} route"}
{"timestamp":"2026-10-19T20:45:15.526Z","level":"log","context":"RoutesResolver","message":"AdminMspController {/admin/msp}:"}
{"timestamp":"2026-10-19T20:45:15.526Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/msp, GET} route"}
{"timestamp":"2026-10-19T20:45:15.527Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/msp/:id, GET} route"}
{"timestamp":"2026-10-19T20:45:15.528Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/msp, POST} route"}
{"timestamp":"2026-10-19T20:45:15.528Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/msp/:id, PUT} route"}
{"timestamp":"2026-10-19T20:45:15.528Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/msp/:id, DELETE} route"}
{"timestamp":"2026-10-19T20:45:15.528Z","level":"log","context":"RoutesResolver","message":"AdminLicenseController {/admin/licenses}:"}
{"timestamp":"2026-10-19T20:45:15.529Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/licenses/summary, GET} route"}
{"timestamp":"2026-10-19T20:45:15.529Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/licenses/msp/:mspId, GET} route"}
{"timestamp":"2026-10-19T20:45:15.529Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/licenses/msp/:mspId, PUT} route"}
{"timestamp":"2026-10-19T20:45:15.529Z","level":"log","context":"RoutesResolver","message":"AdminImpersonationController {/admin/impersonation}:"}
{"timestamp":"2026-10-19T20:45:15.532Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/impersonation/msp-users, GET} route"}
{"timestamp":"2026-10-19T20:45:15.533Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/impersonation/impersonate, POST} route"}
{"timestamp":"2026-10-19T20:45:15.533Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/impersonation/stop, POST} route"}
{"timestamp":"2026-10-19T20:45:15.533Z","level":"log","context":"RoutesResolver","message":"AdminAiUsageController {/admin/ai-usage}:"}
{"timestamp":"2026-10-19T20:45:15.534Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-usage, GET} route"}
{"timestamp":"2026-10-19T20:45:15.534Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-usage/business/:businessId, GET} route"}
{"timestamp":"2026-10-19T20:45:15.534Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-usage/report/monthly, GET} route"}
{"timestamp":"2026-10-19T20:45:15.534Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-usage/pricing, GET} route"}
{"timestamp":"2026-10-19T20:45:15.534Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-usage/pricing, POST} route"}
{"timestamp":"2026-10-19T20:45:15.535Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-usage/credit/:businessId, PUT} route"}
{"timestamp":"2026-10-19T20:45:15.535Z","level":"log","context":"RoutesResolver","message":"AdminAiUsageController {/api/admin/ai-usage}:"}
{"timestamp":"2026-10-19T20:45:15.535Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-usage, GET} route"}
{"timestamp":"2026-10-19T20:45:15.535Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-usage/business/:businessId, GET} route"}
{"timestamp":"2026-10-19T20:45:15.535Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-usage/report/monthly, GET} route"}
{"timestamp":"2026-10-19T20:45:15.535Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-usage/pricing, GET} route"}
{"timestamp":"2026-10-19T20:45:15.535Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-usage/pricing, POST} route"}
{"timestamp":"2026-10-19T20:45:15.536Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-usage/credit/:businessId, PUT} route"}
{"timestamp":"2026-10-19T20:45:15.536Z","level":"log","context":"RoutesResolver","message":"AdminAiModelController {/admin/ai-models}:"}
{"timestamp":"2026-10-19T20:45:15.536Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models, POST} route"}
{"timestamp":"2026-10-19T20:45:15.536Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models, GET} route"}
{"timestamp":"2026-10-19T20:45:15.536Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/default, GET} route"}
{"timestamp":"2026-10-19T20:45:15.536Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/:id, GET} route"}
{"timestamp":"2026-10-19T20:45:15.537Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/:id, PUT} route"}
{"timestamp":"2026-10-19T20:45:15.537Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/:id, DELETE} route"}
{"timestamp":"2026-10-19T20:45:15.537Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/:id/set-default, POST} route"}
{"timestamp":"2026-10-19T20:45:15.537Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/assign-to-business, POST} route"}
{"timestamp":"2026-10-19T20:45:15.537Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/business/:businessId, GET} route"}
{"timestamp":"2026-10-19T20:45:15.538Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/:id/businesses, GET} route"}
{"timestamp":"2026-10-19T20:45:15.538Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/initialize-defaults, POST} route"}
{"timestamp":"2026-10-19T20:45:15.538Z","level":"log","context":"RoutesResolver","message":"AdminAiModelController {/api/admin/ai-models}:"}
{"timestamp":"2026-10-19T20:45:15.538Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models, POST} route"}
{"timestamp":"2026-10-19T20:45:15.538Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models, GET} route"}
{"timestamp":"2026-10-19T20:45:15.538Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/default, GET} route"}
{"timestamp":"2026-10-19T20:45:15.539Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/:id, GET} route"}
{"timestamp":"2026-10-19T20:45:15.539Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/:id, PUT} route"}
{"timestamp":"2026-10-19T20:45:15.539Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/:id, DELETE} route"}
{"timestamp":"2026-10-19T20:45:15.539Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/:id/set-default, POST} route"}
{"timestamp":"2026-10-19T20:45:15.539Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/assign-to-business, POST} route"}
{"timestamp":"2026-10-19T20:45:15.539Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/business/:businessId, GET} route"}
{"timestamp":"2026-10-19T20:45:15.540Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/:id/businesses, GET} route"}
{"timestamp":"2026-10-19T20:45:15.540Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/initialize-defaults, POST} route"}
{"timestamp":"2026-10-19T20:45:15.540Z","level":"log","context":"RoutesResolver","message":"AdminBusinessController {/admin/businesses}:"}
{"timestamp":"2026-10-19T20:45:15.540Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/businesses, GET} route"}
{"timestamp":"2026-10-19T20:45:15.540Z","level":"log","context":"RoutesResolver","message":"ResellerManagementController {/admin/resellers}:"}
{"timestamp":"2026-10-19T20:45:15.540Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/resellers, GET} route"}
{"timestamp":"2026-10-19T20:45:15.540Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/resellers/create-default, POST} route"}
{"timestamp":"2026-10-19T20:45:15.541Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/resellers, POST} route"}
{"timestamp":"2026-10-19T20:45:15.541Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/resellers/:id/toggle-status, PUT} route"}
{"timestamp":"2026-10-19T20:45:15.541Z","level":"log","context":"RoutesResolver","message":"SubscriptionController {/subscription}:"}
{"timestamp":"2026-10-19T20:45:15.541Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/plans, GET} route"}
{"timestamp":"2026-10-19T20:45:15.541Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/calculate-price, POST} route"}
{"timestamp":"2026-10-19T20:45:15.541Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/current, GET} route"}
{"timestamp":"2026-10-19T20:45:15.542Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/create, POST} route"}
{"timestamp":"2026-10-19T20:45:15.542Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/:id, PUT} route"}
{"timestamp":"2026-10-19T20:45:15.542Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/:id/cancel, DELETE} route"}
{"timestamp":"2026-10-19T20:45:15.542Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/sync/:stripeSubscriptionId, POST} route"}
{"timestamp":"2026-10-19T20:45:15.542Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/payments, GET} route"}
{"timestamp":"2026-10-19T20:45:15.542Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/payments/stats, GET} route"}
{"timestamp":"2026-10-19T20:45:15.543Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/payment/:id, GET} route"}
{"timestamp":"2026-10-19T20:45:15.543Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/payment-methods/attach, POST} route"}
{"timestamp":"2026-10-19T20:45:15.543Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/payment-methods/:paymentMethodId, DELETE} route"}
{"timestamp":"2026-10-19T20:45:15.543Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/payment-methods, GET} route"}
{"timestamp":"2026-10-19T20:45:15.543Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/setup-intent, POST} route"}
{"timestamp":"2026-10-19T20:45:15.543Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/update-employee-count, POST} route"}
{"timestamp":"2026-10-19T20:45:15.543Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/retry-payment/:subscriptionId, POST} route"}
{"timestamp":"2026-10-19T20:45:15.544Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/invoice/:invoiceId/pdf, GET} route"}
{"timestamp":"2026-10-19T20:45:15.544Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/preview-upgrade, POST} route"}
{"timestamp":"2026-10-19T20:45:15.544Z","level":"log","context":"RoutesResolver","message":"SubscriptionController {/api/subscription}:"}
{"timestamp":"2026-10-19T20:45:15.544Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/plans, GET} route"}
{"timestamp":"2026-10-19T20:45:15.544Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/calculate-price, POST} route"}
{"timestamp":"2026-10-19T20:45:15.544Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/current, GET} route"}
{"timestamp":"2026-10-19T20:45:15.544Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/create, POST} route"}
{"timestamp":"2026-10-19T20:45:15.545Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/:id, PUT} route"}
{"timestamp":"2026-10-19T20:45:15.545Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/:id/cancel, DELETE} route"}
{"timestamp":"2026-10-19T20:45:15.545Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/sync/:stripeSubscriptionId, POST} route"}
{"timestamp":"2026-10-19T20:45:15.545Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/payments, GET} route"}
{"timestamp":"2026-10-19T20:45:15.545Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/payments/stats, GET} route"}
{"timestamp":"2026-10-19T20:45:15.545Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/payment/:id, GET} route"}
{"timestamp":"2026-10-19T20:45:15.545Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/payment-methods/attach, POST} route"}
{"timestamp":"2026-10-19T20:45:15.546Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/payment-methods/:paymentMethodId, DELETE} route"}
{"timestamp":"2026-10-19T20:45:15.546Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/payment-methods, GET} route"}
{"timestamp":"2026-10-19T20:45:15.546Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/setup-intent, POST} route"}
{"timestamp":"2026-10-19T20:45:15.546Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/update-employee-count, POST} route"}
{"timestamp":"2026-10-19T20:45:15.546Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/retry-payment/:subscriptionId, POST} route"}
{"timestamp":"2026-10-19T20:45:15.546Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/invoice/:invoiceId/pdf, GET} route"}
{"timestamp":"2026-10-19T20:45:15.546Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/preview-upgrade, POST} route"}
{"timestamp":"2026-10-19T20:45:15.546Z","level":"log","context":"RoutesResolver","message":"StripeWebhookController {/stripe/webhook}:"}
{"timestamp":"2026-10-19T20:45:15.547Z","level":"log","context":"RouterExplorer","message":"Mapped {/stripe/webhook/test, GET} route"}
{"timestamp":"2026-10-19T20:45:15.547Z","level":"log","context":"RouterExplorer","message":"Mapped {/stripe/webhook, POST} route"}
{"timestamp":"2026-10-19T20:45:15.547Z","level":"log","context":"RoutesResolver","message":"EmailController {/email-templates}:"}
{"timestamp":"2026-10-19T20:45:15.547Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates/test, POST} route"}
{"timestamp":"2026-10-19T20:45:15.547Z","level":"log","context":"RoutesResolver","message":"EmployeeController {/employees}:"}
{"timestamp":"2026-10-19T20:45:15.547Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees, POST} route"}
{"timestamp":"2026-10-19T20:45:15.547Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees, GET} route"}
{"timestamp":"2026-10-19T20:45:15.548Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees/export, GET} route"}
{"timestamp":"2026-10-19T20:45:15.548Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees/risk-stats, GET} route"}
{"timestamp":"2026-10-19T20:45:15.548Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees/:id, GET} route"}
{"timestamp":"2026-10-19T20:45:15.548Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees/:id, PUT} route"}
{"timestamp":"2026-10-19T20:45:15.548Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees/:id, DELETE} route"}
{"timestamp":"2026-10-19T20:45:15.548Z","level":"log","context":"RoutesResolver","message":"GroupController {/groups}:"}
{"timestamp":"2026-10-19T20:45:15.548Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups, POST} route"}
{"timestamp":"2026-10-19T20:45:15.549Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups, GET} route"}
{"timestamp":"2026-10-19T20:45:15.549Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups/standard, GET} route"}
{"timestamp":"2026-10-19T20:45:15.549Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups/:id, GET} route"}
{"timestamp":"2026-10-19T20:45:15.549Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups/:id, PUT} route"}
{"timestamp":"2026-10-19T20:45:15.549Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups/:id, DELETE} route"}
{"timestamp":"2026-10-19T20:45:15.549Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups/:id/info, GET} route"}
{"timestamp":"2026-10-19T20:45:15.550Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups/:id/with-employees, GET} route"}
{"timestamp":"2026-10-19T20:45:15.550Z","level":"log","context":"RoutesResolver","message":"SenderProfileController {/sender-profiles}:"}
{"timestamp":"2026-10-19T20:45:15.550Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles, GET} route"}
{"timestamp":"2026-10-19T20:45:15.550Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles/:id, GET} route"}
{"timestamp":"2026-10-19T20:45:15.550Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles, POST} route"}
{"timestamp":"2026-10-19T20:45:15.550Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles/:id, PUT} route"}
{"timestamp":"2026-10-19T20:45:15.550Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles/:id, DELETE} route"}
{"timestamp":"2026-10-19T20:45:15.551Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles/:id/verify-domain, POST} route"}
{"timestamp":"2026-10-19T20:45:15.551Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles/domain-verification, GET} route"}
{"timestamp":"2026-10-19T20:45:15.551Z","level":"log","context":"RoutesResolver","message":"EmailTemplateController {/email-templates}:"}
{"timestamp":"2026-10-19T20:45:15.551Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates, GET} route"}
{"timestamp":"2026-10-19T20:45:15.551Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates/:id, GET} route"}
{"timestamp":"2026-10-19T20:45:15.551Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates, POST} route"}
{"timestamp":"2026-10-19T20:45:15.551Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates/:id, PUT} route"}
{"timestamp":"2026-10-19T20:45:15.552Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates/:id, DELETE} route"}
{"timestamp":"2026-10-19T20:45:15.552Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates/:id/duplicate, POST} route"}
{"timestamp":"2026-10-19T20:45:15.552Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates/:id/preview, GET} route"}
{"timestamp":"2026-10-19T20:45:15.552Z","level":"log","context":"RoutesResolver","message":"ScenarioController {/scenarios}:"}
{"timestamp":"2026-10-19T20:45:15.552Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios, POST} route"}
{"timestamp":"2026-10-19T20:45:15.552Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios/generate-content, POST} route"}
{"timestamp":"2026-10-19T20:45:15.552Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios, GET} route"}
{"timestamp":"2026-10-19T20:45:15.553Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios/:id, GET} route"}
{"timestamp":"2026-10-19T20:45:15.553Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios/:id, PUT} route"}
{"timestamp":"2026-10-19T20:45:15.553Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios/:id, DELETE} route"}
{"timestamp":"2026-10-19T20:45:15.553Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios/generate-from-json, POST} route"}
{"timestamp":"2026-10-19T20:45:15.553Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios/:id/save-as-custom-scenario, POST} route"}
{"timestamp":"2026-10-19T20:45:15.553Z","level":"log","context":"RoutesResolver","message":"CampaignController {/campaigns}:"}
{"timestamp":"2026-10-19T20:45:15.553Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns, POST} route"}
{"timestamp":"2026-10-19T20:45:15.554Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns, GET} route"}
{"timestamp":"2026-10-19T20:45:15.554Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id, GET} route"}
{"timestamp":"2026-10-19T20:45:15.554Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id/details, GET} route"}
{"timestamp":"2026-10-19T20:45:15.554Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id/employees, GET} route"}
{"timestamp":"2026-10-19T20:45:15.554Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id, PATCH} route"}
{"timestamp":"2026-10-19T20:45:15.554Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id/start, POST} route"}
{"timestamp":"2026-10-19T20:45:15.555Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id/stop, POST} route"}
{"timestamp":"2026-10-19T20:45:15.555Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id/duplicate, POST} route"}
{"timestamp":"2026-10-19T20:45:15.555Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id, DELETE} route"}
{"timestamp":"2026-10-19T20:45:15.555Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/auto-generate-program, POST} route"}
{"timestamp":"2026-10-19T20:45:15.555Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/generate-from-threat-intelligence, POST} route"}
{"timestamp":"2026-10-19T20:45:15.555Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id/risk-score, GET} route"}
{"timestamp":"2026-10-19T20:45:15.556Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/recalculate-risk-scores, POST} route"}
{"timestamp":"2026-10-19T20:45:15.556Z","level":"log","context":"RoutesResolver","message":"CampaignController {/api/campaigns}:"}
{"timestamp":"2026-10-19T20:45:15.556Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns, POST} route"}
{"timestamp":"2026-10-19T20:45:15.556Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns, GET} route"}
{"timestamp":"2026-10-19T20:45:15.556Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id, GET} route"}
{"timestamp":"2026-10-19T20:45:15.556Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id/details, GET} route"}
{"timestamp":"2026-10-19T20:45:15.556Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id/employees, GET} route"}
{"timestamp":"2026-10-19T20:45:15.556Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id, PATCH} route"}
{"timestamp":"2026-10-19T20:45:15.557Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id/start, POST} route"}
{"timestamp":"2026-10-19T20:45:15.557Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id/stop, POST} route"}
{"timestamp":"2026-10-19T20:45:15.557Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id/duplicate, POST} route"}
{"timestamp":"2026-10-19T20:45:15.557Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id, DELETE} route"}
{"timestamp":"2026-10-19T20:45:15.557Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/auto-generate-program, POST} route"}
{"timestamp":"2026-10-19T20:45:15.557Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/generate-from-threat-intelligence, POST} route"}
{"timestamp":"2026-10-19T20:45:15.557Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id/risk-score, GET} route"}
{"timestamp":"2026-10-19T20:45:15.558Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/recalculate-risk-scores, POST} route"}
{"timestamp":"2026-10-19T20:45:15.558Z","level":"log","context":"RoutesResolver","message":"NotificationsController {/notifications}:"}
{"timestamp":"2026-10-19T20:45:15.558Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications, POST} route"}
{"timestamp":"2026-10-19T20:45:15.558Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications, GET} route"}
{"timestamp":"2026-10-19T20:45:15.558Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/unread, GET} route"}
{"timestamp":"2026-10-19T20:45:15.558Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/unread-count, GET} route"}
{"timestamp":"2026-10-19T20:45:15.558Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/:id, GET} route"}
{"timestamp":"2026-10-19T20:45:15.559Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/:id, PATCH} route"}
{"timestamp":"2026-10-19T20:45:15.559Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/:id/read, PATCH} route"}
{"timestamp":"2026-10-19T20:45:15.559Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/mark-all-read, PATCH} route"}
{"timestamp":"2026-10-19T20:45:15.559Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/:id, DELETE} route"}
{"timestamp":"2026-10-19T20:45:15.559Z","level":"log","context":"RoutesResolver","message":"LandingPageController {/lp}:"}
{"timestamp":"2026-10-19T20:45:15.560Z","level":"log","context":"RouterExplorer","message":"Mapped {/lp/image, GET} route"}
{"timestamp":"2026-10-19T20:45:15.560Z","level":"log","context":"RouterExplorer","message":"Mapped {/lp/learning, GET} route"}
{"timestamp":"2026-10-19T20:45:15.560Z","level":"log","context":"RouterExplorer","message":"Mapped {/lp/submit, POST} route"}
{"timestamp":"2026-10-19T20:45:15.560Z","level":"log","context":"RouterExplorer","message":"Mapped {/lp/test, GET} route"}
{"timestamp":"2026-10-19T20:45:15.560Z","level":"warn","context":"LegacyRouteConverter","message":"Unsupported route path: \"/lp/*\". In previous versions, the symbols ?, *, and + were used to denote optional or repeating path parameters. The latest version of \"path-to-regexp\" now requires the use of named parameters. For example, instead of using a route like /users/* to capture all routes starting with \"/users\", you should use /users/*path. For more details, refer to the migration guide. Attempting to auto-convert..."}
{"timestamp":"2026-10-19T20:45:15.561Z","level":"log","context":"RouterExplorer","message":"Mapped {/lp/*, ALL} route"}
{"timestamp":"2026-10-19T20:45:15.561Z","level":"log","context":"RoutesResolver","message":"SupportController {/support}:"}
{"timestamp":"2026-10-19T20:45:15.561Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets, POST} route"}
{"timestamp":"2026-10-19T20:45:15.561Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets, GET} route"}
{"timestamp":"2026-10-19T20:45:15.561Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets/:id, GET} route"}
{"timestamp":"2026-10-19T20:45:15.562Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets/:id, PATCH} route"}
{"timestamp":"2026-10-19T20:45:15.562Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets/:id, DELETE} route"}
{"timestamp":"2026-10-19T20:45:15.562Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets/:id/messages, POST} route"}
{"timestamp":"2026-10-19T20:45:15.562Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets/:id/close, POST} route"}
{"timestamp":"2026-10-19T20:45:15.562Z","level":"log","context":"RoutesResolver","message":"BusninessMetricsController {/business-metrics}:"}
{"timestamp":"2026-10-19T20:45:15.562Z","level":"log","context":"RouterExplorer","message":"Mapped {/business-metrics, GET} route"}
{"timestamp":"2026-10-19T20:45:15.562Z","level":"log","context":"RoutesResolver","message":"UsersController {/users}:"}
{"timestamp":"2026-10-19T20:45:15.563Z","level":"log","context":"RouterExplorer","message":"Mapped {/users/:id, PUT} route"}
{"timestamp":"2026-10-19T20:45:15.563Z","level":"log","context":"RouterExplorer","message":"Mapped {/users/settings, GET} route"}
{"timestamp":"2026-10-19T20:45:15.563Z","level":"log","context":"RouterExplorer","message":"Mapped {/users/settings/general, PUT} route"}
{"timestamp":"2026-10-19T20:45:15.563Z","level":"log","context":"RouterExplorer","message":"Mapped {/users/company/settings, PUT} route"}
{"timestamp":"2026-10-19T20:45:15.563Z","level":"log","context":"RouterExplorer","message":"Mapped {/users/change-password, POST} route"}
{"timestamp":"2026-10-19T20:45:15.563Z","level":"log","context":"RouterExplorer","message":"Mapped {/users/localization/settings, PUT} route"}
{"timestamp":"2026-10-19T20:45:15.563Z","level":"log","context":"RoutesResolver","message":"PartnerController {/partner}:"}
{"timestamp":"2026-10-19T20:45:15.564Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses, POST} route"}
{"timestamp":"2026-10-19T20:45:15.564Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses, GET} route"}
{"timestamp":"2026-10-19T20:45:15.564Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses/:id, GET} route"}
{"timestamp":"2026-10-19T20:45:15.564Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses/:id, PUT} route"}
{"timestamp":"2026-10-19T20:45:15.564Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses/:id, DELETE} route"}
{"timestamp":"2026-10-19T20:45:15.564Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses/:id/impersonate, POST} route"}
{"timestamp":"2026-10-19T20:45:15.564Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses/stop-impersonation, POST} route"}
{"timestamp":"2026-10-19T20:45:15.565Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/license-usage, GET} route"}
{"timestamp":"2026-10-19T20:45:15.565Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/invoices, POST} route"}
{"timestamp":"2026-10-19T20:45:15.565Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/invoices, GET} route"}
{"timestamp":"2026-10-19T20:45:15.565Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/invoices/:id, GET} route"}
{"timestamp":"2026-10-19T20:45:15.565Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/invoices/:id, PUT} route"}
{"timestamp":"2026-10-19T20:45:15.565Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/invoices/:id, DELETE} route"}
{"timestamp":"2026-10-19T20:45:15.566Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/invoices/:id/mark-paid, PUT} route"}
{"timestamp":"2026-10-19T20:45:15.566Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/onboarding/generate-token, POST} route"}
{"timestamp":"2026-10-19T20:45:15.566Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/dashboard, GET} route"}
{"timestamp":"2026-10-19T20:45:15.566Z","level":"log","context":"RoutesResolver","message":"MspSubscriptionController {/partner/msp-subscriptions}:"}
{"timestamp":"2026-10-19T20:45:15.566Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/plans, POST} route"}
{"timestamp":"2026-10-19T20:45:15.566Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/plans, GET} route"}
{"timestamp":"2026-10-19T20:45:15.566Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/plans/:planId, GET} route"}
{"timestamp":"2026-10-19T20:45:15.567Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/plans/:planId, PUT} route"}
{"timestamp":"2026-10-19T20:45:15.567Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/plans/:planId, DELETE} route"}
{"timestamp":"2026-10-19T20:45:15.567Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/businesses/:businessId/subscription, POST} route"}
{"timestamp":"2026-10-19T20:45:15.567Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions, GET} route"}
{"timestamp":"2026-10-19T20:45:15.567Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/businesses/:businessId/subscription, GET} route"}
{"timestamp":"2026-10-19T20:45:15.567Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/businesses/:businessId/subscription, PUT} route"}
{"timestamp":"2026-10-19T20:45:15.567Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/businesses/:businessId/subscription, DELETE} route"}
{"timestamp":"2026-10-19T20:45:15.568Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/businesses/:businessId/subscription/limits, GET} route"}
{"timestamp":"2026-10-19T20:45:15.568Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/businesses/:businessId/subscription/change-plan, PUT} route"}
{"timestamp":"2026-10-19T20:45:15.568Z","level":"log","context":"RoutesResolver","message":"OnboardingController {/onboarding}:"}
{"timestamp":"2026-10-19T20:45:15.568Z","level":"log","context":"RouterExplorer","message":"Mapped {/onboarding/validate/:token, GET} route"}
{"timestamp":"2026-10-19T20:45:15.568Z","level":"log","context":"RouterExplorer","message":"Mapped {/onboarding/complete/:token, POST} route"}
{"timestamp":"2026-10-19T20:45:15.568Z","level":"log","context":"RoutesResolver","message":"ResellerController {/reseller}:"}
{"timestamp":"2026-10-19T20:45:15.568Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/businesses, POST} route"}
{"timestamp":"2026-10-19T20:45:15.569Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/businesses, GET} route"}
{"timestamp":"2026-10-19T20:45:15.569Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/businesses/:id, GET} route"}
{"timestamp":"2026-10-19T20:45:15.569Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/businesses/:id, PUT} route"}
{"timestamp":"2026-10-19T20:45:15.569Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/businesses/:id, DELETE} route"}
{"timestamp":"2026-10-19T20:45:15.569Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/license-usage, GET} route"}
{"timestamp":"2026-10-19T20:45:15.569Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/invoices, POST} route"}
{"timestamp":"2026-10-19T20:45:15.569Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/invoices, GET} route"}
{"timestamp":"2026-10-19T20:45:15.570Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/invoices/:id, GET} route"}
{"timestamp":"2026-10-19T20:45:15.570Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/invoices/:id, PUT} route"}
{"timestamp":"2026-10-19T20:45:15.570Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/invoices/:id, DELETE} route"}
{"timestamp":"2026-10-19T20:45:15.570Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/invoices/:id/mark-paid, PUT} route"}
{"timestamp":"2026-10-19T20:45:15.570Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/onboarding/generate-token, POST} route"}
{"timestamp":"2026-10-19T20:45:15.570Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/dashboard, GET} route"}
{"timestamp":"2026-10-19T20:45:15.570Z","level":"log","context":"RoutesResolver","message":"ResellerSubscriptionController {/reseller}:"}
{"timestamp":"2026-10-19T20:45:15.571Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/plans, POST} route"}
{"timestamp":"2026-10-19T20:45:15.571Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/plans, GET} route"}
{"timestamp":"2026-10-19T20:45:15.571Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/plans/:planId, GET} route"}
{"timestamp":"2026-10-19T20:45:15.571Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/plans/:planId, PUT} route"}
{"timestamp":"2026-10-19T20:45:15.571Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/plans/:planId, DELETE} route"}
{"timestamp":"2026-10-19T20:45:15.571Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/subscriptions/businesses/:businessId/subscription, POST} route"}
{"timestamp":"2026-10-19T20:45:15.571Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/subscriptions, GET} route"}
{"timestamp":"2026-10-19T20:45:15.572Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/subscriptions/businesses/:businessId/subscription, GET} route"}
{"timestamp":"2026-10-19T20:45:15.572Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/subscriptions/businesses/:businessId/subscription, PUT} route"}
{"timestamp":"2026-10-19T20:45:15.572Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/subscriptions/businesses/:businessId/subscription, DELETE} route"}
{"timestamp":"2026-10-19T20:45:15.572Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/subscriptions/businesses/:businessId/subscription/limits, GET} route"}
{"timestamp":"2026-10-19T20:45:15.572Z","level":"log","context":"RoutesResolver","message":"HealthController {/health}:"}
{"timestamp":"2026-10-19T20:45:15.572Z","level":"log","context":"RouterExplorer","message":"Mapped {/health, GET} route"}
{"timestamp":"2026-10-19T20:45:15.572Z","level":"log","context":"RouterExplorer","message":"Mapped {/health/test-logs, GET} route"}
{"timestamp":"2026-10-19T20:45:15.572Z","level":"log","context":"RoutesResolver","message":"AzureAdController {/azure-ad}:"}
{"timestamp":"2026-10-19T20:45:15.573Z","level":"log","context":"RouterExplorer","message":"Mapped {/azure-ad/config, POST} route"}
{"timestamp":"2026-10-19T20:45:15.573Z","level":"log","context":"RouterExplorer","message":"Mapped {/azure-ad/config, GET} route"}
{"timestamp":"2026-10-19T20:45:15.573Z","level":"log","context":"RouterExplorer","message":"Mapped {/azure-ad/test-connection, POST} route"}
{"timestamp":"2026-10-19T20:45:15.573Z","level":"log","context":"RouterExplorer","message":"Mapped {/azure-ad/sync, POST} route"}
{"timestamp":"2026-10-19T20:45:15.573Z","level":"log","context":"RoutesResolver","message":"ThreatsController {/threats}:"}
{"timestamp":"2026-10-19T20:45:15.573Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats, POST} route"}
{"timestamp":"2026-10-19T20:45:15.573Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats, GET} route"}
{"timestamp":"2026-10-19T20:45:15.573Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/chart-data, GET} route"}
{"timestamp":"2026-10-19T20:45:15.574Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/claude-search, POST} route"}
{"timestamp":"2026-10-19T20:45:15.574Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/claude-latest, POST} route"}
{"timestamp":"2026-10-19T20:45:15.574Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/claude-trending, POST} route"}
{"timestamp":"2026-10-19T20:45:15.574Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/claude-categories, POST} route"}
{"timestamp":"2026-10-19T20:45:15.574Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/claude-manual-search, POST} route"}
{"timestamp":"2026-10-19T20:45:15.574Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/claude-quick-search, POST} route"}
{"timestamp":"2026-10-19T20:45:15.574Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/scheduler-status, GET} route"}
{"timestamp":"2026-10-19T20:45:15.575Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/health-check, GET} route"}
{"timestamp":"2026-10-19T20:45:15.575Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/pause-scheduler, POST} route"}
{"timestamp":"2026-10-19T20:45:15.575Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/:id, GET} route"}
{"timestamp":"2026-10-19T20:45:15.575Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/:id, PATCH} route"}
{"timestamp":"2026-10-19T20:45:15.575Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/:id, DELETE} route"}
{"timestamp":"2026-10-19T20:45:15.575Z","level":"log","context":"RoutesResolver","message":"DomainController {/domains}:"}
{"timestamp":"2026-10-19T20:45:15.575Z","level":"log","context":"RouterExplorer","message":"Mapped {/domains, GET} route"}
{"timestamp":"2026-10-19T20:45:15.575Z","level":"log","context":"RouterExplorer","message":"Mapped {/domains/:id, GET} route"}
{"timestamp":"2026-10-19T20:45:15.576Z","level":"log","context":"RouterExplorer","message":"Mapped {/domains, POST} route"}
{"timestamp":"2026-10-19T20:45:15.576Z","level":"log","context":"RouterExplorer","message":"Mapped {/domains/:id, PUT} route"}
{"timestamp":"2026-10-19T20:45:15.576Z","level":"log","context":"RouterExplorer","message":"Mapped {/domains/:id, DELETE} route"}
{"timestamp":"2026-10-19T20:45:15.576Z","level":"log","context":"RouterExplorer","message":"Mapped {/domains/seed, POST} route"}
{"timestamp":"2026-10-19T20:45:15.576Z","level":"log","context":"RoutesResolver","message":"MspSubscriptionController {/msp-subscription}:"}
{"timestamp":"2026-10-19T20:45:15.576Z","level":"log","context":"RouterExplorer","message":"Mapped {/msp-subscription/current, GET} route"}
{"timestamp":"2026-10-19T20:45:15.576Z","level":"log","context":"RouterExplorer","message":"Mapped {/msp-subscription/invoices, GET} route"}
{"timestamp":"2026-10-19T20:45:15.577Z","level":"log","context":"RouterExplorer","message":"Mapped {/msp-subscription/invoice/:invoiceId/pdf, GET} route"}
{"timestamp":"2026-10-19T20:45:15.577Z","level":"log","context":"RoutesResolver","message":"MspSubscriptionController {/api/msp-subscription}:"}
{"timestamp":"2026-10-19T20:45:15.577Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/msp-subscription/current, GET} route"}
{"timestamp":"2026-10-19T20:45:15.577Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/msp-subscription/invoices, GET} route"}
{"timestamp":"2026-10-19T20:45:15.577Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/msp-subscription/invoice/:invoiceId/pdf, GET} route"}
{"timestamp":"2026-10-19T20:45:15.643Z","level":"log","context":"NestApplication","message":"Nest application successfully started"}
{"timestamp":"2026-10-19T20:45:15.664Z","level":"log","context":"Bootstrap","message":"Users API successfully started on port 3842"}
{"timestamp":"2026-10-19T20:45:15.665Z","level":"log","context":"SeedService","message":"🌱 Starting database seeding..."}
{"timestamp":"2026-10-19T20:45:15.671Z","level":"log","context":"SeedService","message":"Admin account already exists, skipping seed"}
{"timestamp":"2026-10-19T20:45:15.673Z","level":"log","context":"SeedService","message":"Reseller account already exists, skipping seed"}
{"timestamp":"2026-10-19T20:45:15.675Z","level":"log","context":"SeedService","message":"MSP account already exists, skipping seed"}
{"timestamp":"2026-10-19T20:45:15.675Z","level":"log","context":"SeedService","message":"✅ Database seeding completed successfully"}
{"timestamp":"2026-10-19T20:45:15.711Z","level":"log","context":"UsersApiController","message":"Hello endpoint accessed"}
{"timestamp":"2026-10-19T22:12:47.704Z","level":"warn","context":"LegacyRouteConverter","message":"Unsupported route path: \"/lp/*\". In previous versions, the symbols ?, *, and + were used to denote optional or repeating path parameters. The latest version of \"path-to-regexp\" now requires the use of named parameters. For example, instead of using a route like /users/* to capture all routes starting with \"/users\", you should use /users/*path. For more details, refer to the migration guide. Attempting to auto-convert..."}
{"timestamp":"2026-10-19T22:12:47.737Z","level":"log","context":"Bootstrap","message":"Starting Users API on port 3842..."}
{"timestamp":"2026-10-19T22:12:47.740Z","level":"log","context":"RoutesResolver","message":"UsersApiController {/}:"}
{"timestamp":"2026-10-19T22:12:47.743Z","level":"log","context":"RouterExplorer","message":"Mapped {/, GET} route"}
{"timestamp":"2026-10-19T22:12:47.743Z","level":"log","context":"RoutesResolver","message":"AuthController {/auth}:"}
{"timestamp":"2026-10-19T22:12:47.744Z","level":"log","context":"RouterExplorer","message":"Mapped {/auth/login, POST} route"}
{"timestamp":"2026-10-19T22:12:47.744Z","level":"log","context":"RouterExplorer","message":"Mapped {/auth/admin/login, POST} route"}
{"timestamp":"2026-10-19T22:12:47.745Z","level":"log","context":"RouterExplorer","message":"Mapped {/auth/send-otp, POST} route"}
{"timestamp":"2026-10-19T22:12:47.745Z","level":"log","context":"RouterExplorer","message":"Mapped {/auth/verify-otp, POST} route"}
{"timestamp":"2026-10-19T22:12:47.745Z","level":"log","context":"RouterExplorer","message":"Mapped {/auth/signup, POST} route"}
{"timestamp":"2026-10-19T22:12:47.746Z","level":"log","context":"RouterExplorer","message":"Mapped {/auth/subscription-status, GET} route"}
{"timestamp":"2026-10-19T22:12:47.746Z","level":"log","context":"RoutesResolver","message":"AdminMspController {/admin/msp}:"}
{"timestamp":"2026-10-19T22:12:47.747Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/msp, GET} route"}
{"timestamp":"2026-10-19T22:12:47.747Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/msp/:id, GET} route"}
{"timestamp":"2026-10-19T22:12:47.748Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/msp, POST} route"}
{"timestamp":"2026-10-19T22:12:47.748Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/msp/:id, PUT} route"}
{"timestamp":"2026-10-19T22:12:47.748Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/msp/:id, DELETE} route"}
{"timestamp":"2026-10-19T22:12:47.748Z","level":"log","context":"RoutesResolver","message":"AdminLicenseController {/admin/licenses}:"}
{"timestamp":"2026-10-19T22:12:47.749Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/licenses/summary, GET} route"}
{"timestamp":"2026-10-19T22:12:47.749Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/licenses/msp/:mspId, GET} route"}
{"timestamp":"2026-10-19T22:12:47.749Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/licenses/msp/:mspId, PUT} route"}
{"timestamp":"2026-10-19T22:12:47.749Z","level":"log","context":"RoutesResolver","message":"AdminImpersonationController {/admin/impersonation}:"}
{"timestamp":"2026-10-19T22:12:47.752Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/impersonation/msp-users, GET} route"}
{"timestamp":"2026-10-19T22:12:47.752Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/impersonation/impersonate, POST} route"}
{"timestamp":"2026-10-19T22:12:47.752Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/impersonation/stop, POST} route"}
{"timestamp":"2026-10-19T22:12:47.752Z","level":"log","context":"RoutesResolver","message":"AdminAiUsageController {/admin/ai-usage}:"}
{"timestamp":"2026-10-19T22:12:47.753Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-usage, GET} route"}
{"timestamp":"2026-10-19T22:12:47.753Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-usage/business/:businessId, GET} route"}
{"timestamp":"2026-10-19T22:12:47.753Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-usage/report/monthly, GET} route"}
{"timestamp":"2026-10-19T22:12:47.753Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-usage/pricing, GET} route"}
{"timestamp":"2026-10-19T22:12:47.753Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-usage/pricing, POST} route"}
{"timestamp":"2026-10-19T22:12:47.754Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-usage/credit/:businessId, PUT} route"}
{"timestamp":"2026-10-19T22:12:47.754Z","level":"log","context":"RoutesResolver","message":"AdminAiUsageController {/api/admin/ai-usage}:"}
{"timestamp":"2026-10-19T22:12:47.754Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-usage, GET} route"}
{"timestamp":"2026-10-19T22:12:47.754Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-usage/business/:businessId, GET} route"}
{"timestamp":"2026-10-19T22:12:47.754Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-usage/report/monthly, GET} route"}
{"timestamp":"2026-10-19T22:12:47.754Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-usage/pricing, GET} route"}
{"timestamp":"2026-10-19T22:12:47.755Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-usage/pricing, POST} route"}
{"timestamp":"2026-10-19T22:12:47.755Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-usage/credit/:businessId, PUT} route"}
{"timestamp":"2026-10-19T22:12:47.755Z","level":"log","context":"RoutesResolver","message":"AdminAiModelController {/admin/ai-models}:"}
{"timestamp":"2026-10-19T22:12:47.755Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models, POST} route"}
{"timestamp":"2026-10-19T22:12:47.755Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models, GET} route"}
{"timestamp":"2026-10-19T22:12:47.755Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/default, GET} route"}
{"timestamp":"2026-10-19T22:12:47.756Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/:id, GET} route"}
{"timestamp":"2026-10-19T22:12:47.756Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/:id, PUT} route"}
{"timestamp":"2026-10-19T22:12:47.756Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/:id, DELETE} route"}
{"timestamp":"2026-10-19T22:12:47.756Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/:id/set-default, POST} route"}
{"timestamp":"2026-10-19T22:12:47.756Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/assign-to-business, POST} route"}
{"timestamp":"2026-10-19T22:12:47.756Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/business/:businessId, GET} route"}
{"timestamp":"2026-10-19T22:12:47.757Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/:id/businesses, GET} route"}
{"timestamp":"2026-10-19T22:12:47.757Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/initialize-defaults, POST} route"}
{"timestamp":"2026-10-19T22:12:47.757Z","level":"log","context":"RoutesResolver","message":"AdminAiModelController {/api/admin/ai-models}:"}
{"timestamp":"2026-10-19T22:12:47.757Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models, POST} route"}
{"timestamp":"2026-10-19T22:12:47.757Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models, GET} route"}
{"timestamp":"2026-10-19T22:12:47.758Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/default, GET} route"}
{"timestamp":"2026-10-19T22:12:47.758Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/:id, GET} route"}
{"timestamp":"2026-10-19T22:12:47.758Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/:id, PUT} route"}
{"timestamp":"2026-10-19T22:12:47.758Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/:id, DELETE} route"}
{"timestamp":"2026-10-19T22:12:47.758Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/:id/set-default, POST} route"}
{"timestamp":"2026-10-19T22:12:47.758Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/assign-to-business, POST} route"}
{"timestamp":"2026-10-19T22:12:47.759Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/business/:businessId, GET} route"}
{"timestamp":"2026-10-19T22:12:47.759Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/:id/businesses, GET} route"}
{"timestamp":"2026-10-19T22:12:47.759Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/initialize-defaults, POST} route"}
{"timestamp":"2026-10-19T22:12:47.759Z","level":"log","context":"RoutesResolver","message":"AdminBusinessController {/admin/businesses}:"}
{"timestamp":"2026-10-19T22:12:47.759Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/businesses, GET} route"}
{"timestamp":"2026-10-19T22:12:47.759Z","level":"log","context":"RoutesResolver","message":"ResellerManagementController {/admin/resellers}:"}
{"timestamp":"2026-10-19T22:12:47.759Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/resellers, GET} route"}
{"timestamp":"2026-10-19T22:12:47.760Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/resellers/create-default, POST} route"}
{"timestamp":"2026-10-19T22:12:47.760Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/resellers, POST} route"}
{"timestamp":"2026-10-19T22:12:47.760Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/resellers/:id/toggle-status, PUT} route"}
{"timestamp":"2026-10-19T22:12:47.760Z","level":"log","context":"RoutesResolver","message":"SubscriptionController {/subscription}:"}
{"timestamp":"2026-10-19T22:12:47.760Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/plans, GET} route"}
{"timestamp":"2026-10-19T22:12:47.760Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/calculate-price, POST} route"}
{"timestamp":"2026-10-19T22:12:47.761Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/current, GET} route"}
{"timestamp":"2026-10-19T22:12:47.761Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/create, POST} route"}
{"timestamp":"2026-10-19T22:12:47.761Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/:id, PUT} route"}
{"timestamp":"2026-10-19T22:12:47.761Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/:id/cancel, DELETE} route"}
{"timestamp":"2026-10-19T22:12:47.761Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/sync/:stripeSubscriptionId, POST} route"}
{"timestamp":"2026-10-19T22:12:47.761Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/payments, GET} route"}
{"timestamp":"2026-10-19T22:12:47.761Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/payments/stats, GET} route"}
{"timestamp":"2026-10-19T22:12:47.762Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/payment/:id, GET} route"}
{"timestamp":"2026-10-19T22:12:47.762Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/payment-methods/attach, POST} route"}
{"timestamp":"2026-10-19T22:12:47.762Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/payment-methods/:paymentMethodId, DELETE} route"}
{"timestamp":"2026-10-19T22:12:47.762Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/payment-methods, GET} route"}
{"timestamp":"2026-10-19T22:12:47.762Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/setup-intent, POST} route"}
{"timestamp":"2026-10-19T22:12:47.762Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/update-employee-count, POST} route"}
{"timestamp":"2026-10-19T22:12:47.762Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/retry-payment/:subscriptionId, POST} route"}
{"timestamp":"2026-10-19T22:12:47.763Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/invoice/:invoiceId/pdf, GET} route"}
{"timestamp":"2026-10-19T22:12:47.763Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/preview-upgrade, POST} route"}
{"timestamp":"2026-10-19T22:12:47.763Z","level":"log","context":"RoutesResolver","message":"SubscriptionController {/api/subscription}:"}
{"timestamp":"2026-10-19T22:12:47.763Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/plans, GET} route"}
{"timestamp":"2026-10-19T22:12:47.763Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/calculate-price, POST} route"}
{"timestamp":"2026-10-19T22:12:47.763Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/current, GET} route"}
{"timestamp":"2026-10-19T22:12:47.763Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/create, POST} route"}
{"timestamp":"2026-10-19T22:12:47.764Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/:id, PUT} route"}
{"timestamp":"2026-10-19T22:12:47.764Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/:id/cancel, DELETE} route"}
{"timestamp":"2026-10-19T22:12:47.764Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/sync/:stripeSubscriptionId, POST} route"}
{"timestamp":"2026-10-19T22:12:47.764Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/payments, GET} route"}
{"timestamp":"2026-10-19T22:12:47.764Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/payments/stats, GET} route"}
{"timestamp":"2026-10-19T22:12:47.764Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/payment/:id, GET} route"}
{"timestamp":"2026-10-19T22:12:47.764Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/payment-methods/attach, POST} route"}
{"timestamp":"2026-10-19T22:12:47.765Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/payment-methods/:paymentMethodId, DELETE} route"}
{"timestamp":"2026-10-19T22:12:47.765Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/payment-methods, GET} route"}
{"timestamp":"2026-10-19T22:12:47.765Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/setup-intent, POST} route"}
{"timestamp":"2026-10-19T22:12:47.765Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/update-employee-count, POST} route"}
{"timestamp":"2026-10-19T22:12:47.765Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/retry-payment/:subscriptionId, POST} route"}
{"timestamp":"2026-10-19T22:12:47.765Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/invoice/:invoiceId/pdf, GET} route"}
{"timestamp":"2026-10-19T22:12:47.765Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/preview-upgrade, POST} route"}
{"timestamp":"2026-10-19T22:12:47.765Z","level":"log","context":"RoutesResolver","message":"StripeWebhookController {/stripe/webhook}:"}
{"timestamp":"2026-10-19T22:12:47.766Z","level":"log","context":"RouterExplorer","message":"Mapped {/stripe/webhook/test, GET} route"}
{"timestamp":"2026-10-19T22:12:47.766Z","level":"log","context":"RouterExplorer","message":"Mapped {/stripe/webhook, POST} route"}
{"timestamp":"2026-10-19T22:12:47.766Z","level":"log","context":"RoutesResolver","message":"EmailController {/email-templates}:"}
{"timestamp":"2026-10-19T22:12:47.766Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates/test, POST} route"}
{"timestamp":"2026-10-19T22:12:47.766Z","level":"log","context":"RoutesResolver","message":"EmployeeController {/employees}:"}
{"timestamp":"2026-10-19T22:12:47.766Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees, POST} route"}
{"timestamp":"2026-10-19T22:12:47.766Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees, GET} route"}
{"timestamp":"2026-10-19T22:12:47.767Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees/export, GET} route"}
{"timestamp":"2026-10-19T22:12:47.767Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees/risk-stats, GET} route"}
{"timestamp":"2026-10-19T22:12:47.767Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees/:id, GET} route"}
{"timestamp":"2026-10-19T22:12:47.767Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees/:id, PUT} route"}
{"timestamp":"2026-10-19T22:12:47.767Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees/:id, DELETE} route"}
{"timestamp":"2026-10-19T22:12:47.767Z","level":"log","context":"RoutesResolver","message":"GroupController {/groups}:"}
{"timestamp":"2026-10-19T22:12:47.767Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups, POST} route"}
{"timestamp":"2026-10-19T22:12:47.767Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups, GET} route"}
{"timestamp":"2026-10-19T22:12:47.768Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups/standard, GET} route"}
{"timestamp":"2026-10-19T22:12:47.768Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups/:id, GET} route"}
{"timestamp":"2026-10-19T22:12:47.768Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups/:id, PUT} route"}
{"timestamp":"2026-10-19T22:12:47.768Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups/:id, DELETE} route"}
{"timestamp":"2026-10-19T22:12:47.768Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups/:id/info, GET} route"}
{"timestamp":"2026-10-19T22:12:47.768Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups/:id/with-employees, GET} route"}
{"timestamp":"2026-10-19T22:12:47.768Z","level":"log","context":"RoutesResolver","message":"SenderProfileController {/sender-profiles}:"}
{"timestamp":"2026-10-19T22:12:47.769Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles, GET} route"}
{"timestamp":"2026-10-19T22:12:47.769Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles/:id, GET} route"}
{"timestamp":"2026-10-19T22:12:47.769Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles, POST} route"}
{"timestamp":"2026-10-19T22:12:47.769Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles/:id, PUT} route"}
{"timestamp":"2026-10-19T22:12:47.769Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles/:id, DELETE} route"}
{"timestamp":"2026-10-19T22:12:47.769Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles/:id/verify-domain, POST} route"}
{"timestamp":"2026-10-19T22:12:47.769Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles/domain-verification, GET} route"}
{"timestamp":"2026-10-19T22:12:47.770Z","level":"log","context":"RoutesResolver","message":"EmailTemplateController {/email-templates}:"}
{"timestamp":"2026-10-19T22:12:47.770Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates, GET} route"}
{"timestamp":"2026-10-19T22:12:47.770Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates/:id, GET} route"}
{"timestamp":"2026-10-19T22:12:47.770Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates, POST} route"}
{"timestamp":"2026-10-19T22:12:47.770Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates/:id, PUT} route"}
{"timestamp":"2026-10-19T22:12:47.770Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates/:id, DELETE} route"}
{"timestamp":"2026-10-19T22:12:47.770Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates/:id/duplicate, POST} route"}
{"timestamp":"2026-10-19T22:12:47.771Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates/:id/preview, GET} route"}
{"timestamp":"2026-10-19T22:12:47.771Z","level":"log","context":"RoutesResolver","message":"ScenarioController {/scenarios}:"}
{"timestamp":"2026-10-19T22:12:47.771Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios, POST} route"}
{"timestamp":"2026-10-19T22:12:47.771Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios/generate-content, POST} route"}
{"timestamp":"2026-10-19T22:12:47.771Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios, GET} route"}
{"timestamp":"2026-10-19T22:12:47.771Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios/:id, GET} route"}
{"timestamp":"2026-10-19T22:12:47.772Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios/:id, PUT} route"}
{"timestamp":"2026-10-19T22:12:47.772Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios/:id, DELETE} route"}
{"timestamp":"2026-10-19T22:12:47.772Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios/generate-from-json, POST} route"}
{"timestamp":"2026-10-19T22:12:47.772Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios/:id/save-as-custom-scenario, POST} route"}
{"timestamp":"2026-10-19T22:12:47.772Z","level":"log","context":"RoutesResolver","message":"CampaignController {/campaigns}:"}
{"timestamp":"2026-10-19T22:12:47.772Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns, POST} route"}
{"timestamp":"2026-10-19T22:12:47.772Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns, GET} route"}
{"timestamp":"2026-10-19T22:12:47.773Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id, GET} route"}
{"timestamp":"2026-10-19T22:12:47.773Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id/details, GET} route"}
{"timestamp":"2026-10-19T22:12:47.773Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id/employees, GET} route"}
{"timestamp":"2026-10-19T22:12:47.773Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id, PATCH} route"}
{"timestamp":"2026-10-19T22:12:47.773Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id/start, POST} route"}
{"timestamp":"2026-10-19T22:12:47.773Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id/stop, POST} route"}
{"timestamp":"2026-10-19T22:12:47.774Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id/duplicate, POST} route"}
{"timestamp":"2026-10-19T22:12:47.774Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id, DELETE} route"}
{"timestamp":"2026-10-19T22:12:47.774Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/auto-generate-program, POST} route"}
{"timestamp":"2026-10-19T22:12:47.774Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/generate-from-threat-intelligence, POST} route"}
{"timestamp":"2026-10-19T22:12:47.774Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id/risk-score, GET} route"}
{"timestamp":"2026-10-19T22:12:47.774Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/recalculate-risk-scores, POST} route"}
{"timestamp":"2026-10-19T22:12:47.774Z","level":"log","context":"RoutesResolver","message":"CampaignController {/api/campaigns}:"}
{"timestamp":"2026-10-19T22:12:47.774Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns, POST} route"}
{"timestamp":"2026-10-19T22:12:47.775Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns, GET} route"}
{"timestamp":"2026-10-19T22:12:47.775Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id, GET} route"}
{"timestamp":"2026-10-19T22:12:47.775Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id/details, GET} route"}
{"timestamp":"2026-10-19T22:12:47.775Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id/employees, GET} route"}
{"timestamp":"2026-10-19T22:12:47.775Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id, PATCH} route"}
{"timestamp":"2026-10-19T22:12:47.775Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id/start, POST} route"}
{"timestamp":"2026-10-19T22:12:47.775Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id/stop, POST} route"}
{"timestamp":"2026-10-19T22:12:47.776Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id/duplicate, POST} route"}
{"timestamp":"2026-10-19T22:12:47.776Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id, DELETE} route"}
{"timestamp":"2026-10-19T22:12:47.776Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/auto-generate-program, POST} route"}
{"timestamp":"2026-10-19T22:12:47.776Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/generate-from-threat-intelligence, POST} route"}
{"timestamp":"2026-10-19T22:12:47.776Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id/risk-score, GET} route"}
{"timestamp":"2026-10-19T22:12:47.776Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/recalculate-risk-scores, POST} route"}
{"timestamp":"2026-10-19T22:12:47.776Z","level":"log","context":"RoutesResolver","message":"NotificationsController {/notifications}:"}
{"timestamp":"2026-10-19T22:12:47.777Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications, POST} route"}
{"timestamp":"2026-10-19T22:12:47.777Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications, GET} route"}
{"timestamp":"2026-10-19T22:12:47.777Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/unread, GET} route"}
{"timestamp":"2026-10-19T22:12:47.777Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/unread-count, GET} route"}
{"timestamp":"2026-10-19T22:12:47.777Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/:id, GET} route"}
{"timestamp":"2026-10-19T22:12:47.777Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/:id, PATCH} route"}
{"timestamp":"2026-10-19T22:12:47.778Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/:id/read, PATCH} route"}
{"timestamp":"2026-10-19T22:12:47.778Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/mark-all-read, PATCH} route"}
{"timestamp":"2026-10-19T22:12:47.778Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/:id, DELETE} route"}
{"timestamp":"2026-10-19T22:12:47.778Z","level":"log","context":"RoutesResolver","message":"LandingPageController {/lp}:"}
{"timestamp":"2026-10-19T22:12:47.778Z","level":"log","context":"RouterExplorer","message":"Mapped {/lp/image, GET} route"}
{"timestamp":"2026-10-19T22:12:47.778Z","level":"log","context":"RouterExplorer","message":"Mapped {/lp/learning, GET} route"}
{"timestamp":"2026-10-19T22:12:47.779Z","level":"log","context":"RouterExplorer","message":"Mapped {/lp/submit, POST} route"}
{"timestamp":"2026-10-19T22:12:47.779Z","level":"log","context":"RouterExplorer","message":"Mapped {/lp/test, GET} route"}
{"timestamp":"2026-10-19T22:12:47.779Z","level":"warn","context":"LegacyRouteConverter","message":"Unsupported route path: \"/lp/*\". In previous versions, the symbols ?, *, and + were used to denote optional or repeating path parameters. The latest version of \"path-to-regexp\" now requires the use of named parameters. For example, instead of using a route like /users/* to capture all routes starting with \"/users\", you should use /users/*path. For more details, refer to the migration guide. Attempting to auto-convert..."}
{"timestamp":"2026-10-19T22:12:47.780Z","level":"log","context":"RouterExplorer","message":"Mapped {/lp/*, ALL} route"}
{"timestamp":"2026-10-19T22:12:47.780Z","level":"log","context":"RoutesResolver","message":"SupportController {/support}:"}
{"timestamp":"2026-10-19T22:12:47.780Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets, POST} route"}
{"timestamp":"2026-10-19T22:12:47.780Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets, GET} route"}
{"timestamp":"2026-10-19T22:12:47.780Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets/:id, GET} route"}
{"timestamp":"2026-10-19T22:12:47.780Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets/:id, PATCH} route"}
{"timestamp":"2026-10-19T22:12:47.780Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets/:id, DELETE} route"}
{"timestamp":"2026-10-19T22:12:47.781Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets/:id/messages, POST} route"}
{"timestamp":"2026-10-19T22:12:47.781Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets/:id/close, POST} route"}
{"timestamp":"2026-10-19T22:12:47.781Z","level":"log","context":"RoutesResolver","message":"BusninessMetricsController {/business-metrics}:"}
{"timestamp":"2026-10-19T22:12:47.781Z","level":"log","context":"RouterExplorer","message":"Mapped {/business-metrics, GET} route"}
{"timestamp":"2026-10-19T22:12:47.781Z","level":"log","context":"RoutesResolver","message":"UsersController {/users}:"}
{"timestamp":"2026-10-19T22:12:47.781Z","level":"log","context":"RouterExplorer","message":"Mapped {/users/:id, PUT} route"}
{"timestamp":"2026-10-19T22:12:47.781Z","level":"log","context":"RouterExplorer","message":"Mapped {/users/settings, GET} route"}
{"timestamp":"2026-10-19T22:12:47.782Z","level":"log","context":"RouterExplorer","message":"Mapped {/users/settings/general, PUT} route"}
{"timestamp":"2026-10-19T22:12:47.782Z","level":"log","context":"RouterExplorer","message":"Mapped {/users/company/settings, PUT} route"}
{"timestamp":"2026-10-19T22:12:47.782Z","level":"log","context":"RouterExplorer","message":"Mapped {/users/change-password, POST} route"}
{"timestamp":"2026-10-19T22:12:47.782Z","level":"log","context":"RouterExplorer","message":"Mapped {/users/localization/settings, PUT} route"}
{"timestamp":"2026-10-19T22:12:47.782Z","level":"log","context":"RoutesResolver","message":"PartnerController {/partner}:"}
{"timestamp":"2026-10-19T22:12:47.782Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses, POST} route"}
{"timestamp":"2026-10-19T22:12:47.782Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses, GET} route"}
{"timestamp":"2026-10-19T22:12:47.783Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses/:id, GET} route"}
{"timestamp":"2026-10-19T22:12:47.783Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses/:id, PUT} route"}
{"timestamp":"2026-10-19T22:12:47.783Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses/:id, DELETE} route"}
{"timestamp":"2026-10-19T22:12:47.783Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses/:id/impersonate, POST} route"}
{"timestamp":"2026-10-19T22:12:47.783Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses/stop-impersonation, POST} route"}
{"timestamp":"2026-10-19T22:12:47.783Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/license-usage, GET} route"}
{"timestamp":"2026-10-19T22:12:47.784Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/invoices, POST} route"}
{"timestamp":"2026-10-19T22:12:47.784Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/invoices, GET} route"}
{"timestamp":"2026-10-19T22:12:47.784Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/invoices/:id, GET} route"}
{"timestamp":"2026-10-19T22:12:47.784Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/invoices/:id, PUT} route"}
{"timestamp":"2026-10-19T22:12:47.784Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/invoices/:id, DELETE} route"}
{"timestamp":"2026-10-19T22:12:47.784Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/invoices/:id/mark-paid, PUT} route"}
{"timestamp":"2026-10-19T22:12:47.784Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/onboarding/generate-token, POST} route"}
{"timestamp":"2026-10-19T22:12:47.785Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/dashboard, GET} route"}
{"timestamp":"2026-10-19T22:12:47.785Z","level":"log","context":"RoutesResolver","message":"MspSubscriptionController {/partner/msp-subscriptions}:"}
{"timestamp":"2026-10-19T22:12:47.785Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/plans, POST} route"}
{"timestamp":"2026-10-19T22:12:47.785Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/plans, GET} route"}
{"timestamp":"2026-10-19T22:12:47.785Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/plans/:planId, GET} route"}
{"timestamp":"2026-10-19T22:12:47.785Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/plans/:planId, PUT} route"}
{"timestamp":"2026-10-19T22:12:47.785Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/plans/:planId, DELETE} route"}
{"timestamp":"2026-10-19T22:12:47.786Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/businesses/:businessId/subscription, POST} route"}
{"timestamp":"2026-10-19T22:12:47.786Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions, GET} route"}
{"timestamp":"2026-10-19T22:12:47.786Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/businesses/:businessId/subscription, GET} route"}
{"timestamp":"2026-10-19T22:12:47.786Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/businesses/:businessId/subscription, PUT} route"}
{"timestamp":"2026-10-19T22:12:47.786Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/businesses/:businessId/subscription, DELETE} route"}
{"timestamp":"2026-10-19T22:12:47.786Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/businesses/:businessId/subscription/limits, GET} route"}
{"timestamp":"2026-10-19T22:12:47.786Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/businesses/:businessId/subscription/change-plan, PUT} route"}
{"timestamp":"2026-10-19T22:12:47.787Z","level":"log","context":"RoutesResolver","message":"OnboardingController {/onboarding}:"}
{"timestamp":"2026-10-19T22:12:47.787Z","level":"log","context":"RouterExplorer","message":"Mapped {/onboarding/validate/:token, GET} route"}
{"timestamp":"2026-10-19T22:12:47.787Z","level":"log","context":"RouterExplorer","message":"Mapped {/onboarding/complete/:token, POST} route"}
{"timestamp":"2026-10-19T22:12:47.787Z","level":"log","context":"RoutesResolver","message":"ResellerController {/reseller}:"}
{"timestamp":"2026-10-19T22:12:47.787Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/businesses, POST} route"}
{"timestamp":"2026-10-19T22:12:47.787Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/businesses, GET} route"}
{"timestamp":"2026-10-19T22:12:47.787Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/businesses/:id, GET} route"}
{"timestamp":"2026-10-19T22:12:47.788Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/businesses/:id, PUT} route"}
{"timestamp":"2026-10-19T22:12:47.788Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/businesses/:id, DELETE} route"}
{"timestamp":"2026-10-19T22:12:47.788Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/license-usage, GET} route"}
{"timestamp":"2026-10-19T22:12:47.788Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/invoices, POST} route"}
{"timestamp":"2026-10-19T22:12:47.788Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/invoices, GET} route"}
{"timestamp":"2026-10-19T22:12:47.788Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/invoices/:id, GET} route"}
{"timestamp":"2026-10-19T22:12:47.788Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/invoices/:id, PUT} route"}
{"timestamp":"2026-10-19T22:12:47.788Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/invoices/:id, DELETE} route"}
{"timestamp":"2026-10-19T22:12:47.789Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/invoices/:id/mark-paid, PUT} route"}
{"timestamp":"2026-10-19T22:12:47.789Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/onboarding/generate-token, POST} route"}
{"timestamp":"2026-10-19T22:12:47.789Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/dashboard, GET} route"}
{"timestamp":"2026-10-19T22:12:47.789Z","level":"log","context":"RoutesResolver","message":"ResellerSubscriptionController {/reseller}:"}
{"timestamp":"2026-10-19T22:12:47.789Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/plans, POST} route"}
{"timestamp":"2026-10-19T22:12:47.789Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/plans, GET} route"}
{"timestamp":"2026-10-19T22:12:47.789Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/plans/:planId, GET} route"}
{"timestamp":"2026-10-19T22:12:47.790Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/plans/:planId, PUT} route"}
{"timestamp":"2026-10-19T22:12:47.790Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/plans/:planId, DELETE} route"}
{"timestamp":"2026-10-19T22:12:47.790Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/subscriptions/businesses/:businessId/subscription, POST} route"}
{"timestamp":"2026-10-19T22:12:47.790Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/subscriptions, GET} route"}
{"timestamp":"2026-10-19T22:12:47.790Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/subscriptions/businesses/:businessId/subscription, GET} route"}
{"timestamp":"2026-10-19T22:12:47.790Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/subscriptions/businesses/:businessId/subscription, PUT} route"}
{"timestamp":"2026-10-19T22:12:47.790Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/subscriptions/businesses/:businessId/subscription, DELETE} route"}
{"timestamp":"2026-10-19T22:12:47.791Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/subscriptions/businesses/:businessId/subscription/limits, GET} route"}
{"timestamp":"2026-10-19T22:12:47.791Z","level":"log","context":"RoutesResolver","message":"HealthController {/health}:"}
{"timestamp":"2026-10-19T22:12:47.791Z","level":"log","context":"RouterExplorer","message":"Mapped {/health, GET} route"}
{"timestamp":"2026-10-19T22:12:47.791Z","level":"log","context":"RouterExplorer","message":"Mapped {/health/test-logs, GET} route"}
{"timestamp":"2026-10-19T22:12:47.791Z","level":"log","context":"RoutesResolver","message":"AzureAdController {/azure-ad}:"}
{"timestamp":"2026-10-19T22:12:47.791Z","level":"log","context":"RouterExplorer","message":"Mapped {/azure-ad/config, POST} route"}
{"timestamp":"2026-10-19T22:12:47.791Z","level":"log","context":"RouterExplorer","message":"Mapped {/azure-ad/config, GET} route"}
{"timestamp":"2026-10-19T22:12:47.791Z","level":"log","context":"RouterExplorer","message":"Mapped {/azure-ad/test-connection, POST} route"}
{"timestamp":"2026-10-19T22:12:47.792Z","level":"log","context":"RouterExplorer","message":"Mapped {/azure-ad/sync, POST} route"}
{"timestamp":"2026-10-19T22:12:47.792Z","level":"log","context":"RoutesResolver","message":"ThreatsController {/threats}:"}
{"timestamp":"2026-10-19T22:12:47.792Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats, POST} route"}
{"timestamp":"2026-10-19T22:12:47.792Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats, GET} route"}
{"timestamp":"2026-10-19T22:12:47.792Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/chart-data, GET} route"}
{"timestamp":"2026-10-19T22:12:47.792Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/claude-search, POST} route"}
{"timestamp":"2026-10-19T22:12:47.792Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/claude-latest, POST} route"}
{"timestamp":"2026-10-19T22:12:47.792Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/claude-trending, POST} route"}
{"timestamp":"2026-10-19T22:12:47.793Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/claude-categories, POST} route"}
{"timestamp":"2026-10-19T22:12:47.793Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/claude-manual-search, POST} route"}
{"timestamp":"2026-10-19T22:12:47.793Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/claude-quick-search, POST} route"}
{"timestamp":"2026-10-19T22:12:47.793Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/scheduler-status, GET} route"}
{"timestamp":"2026-10-19T22:12:47.793Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/health-check, GET} route"}
{"timestamp":"2026-10-19T22:12:47.793Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/pause-scheduler, POST} route"}
{"timestamp":"2026-10-19T22:12:47.793Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/:id, GET} route"}
{"timestamp":"2026-10-19T22:12:47.794Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/:id, PATCH} route"}
{"timestamp":"2026-10-19T22:12:47.794Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/:id, DELETE} route"}
{"timestamp":"2026-10-19T22:12:47.794Z","level":"log","context":"RoutesResolver","message":"DomainController {/domains}:"}
{"timestamp":"2026-10-19T22:12:47.794Z","level":"log","context":"RouterExplorer","message":"Mapped {/domains, GET} route"}
{"timestamp":"2026-10-19T22:12:47.794Z","level":"log","context":"RouterExplorer","message":"Mapped {/domains/:id, GET} route"}
{"timestamp":"2026-10-19T22:12:47.794Z","level":"log","context":"RouterExplorer","message":"Mapped {/domains, POST} route"}
{"timestamp":"2026-10-19T22:12:47.794Z","level":"log","context":"RouterExplorer","message":"Mapped {/domains/:id, PUT} route"}
{"timestamp":"2026-10-19T22:12:47.795Z","level":"log","context":"RouterExplorer","message":"Mapped {/domains/:id, DELETE} route"}
{"timestamp":"2026-10-19T22:12:47.795Z","level":"log","context":"RouterExplorer","message":"Mapped {/domains/seed, POST} route"}
{"timestamp":"2026-10-19T22:12:47.795Z","level":"log","context":"RoutesResolver","message":"MspSubscriptionController {/msp-subscription}:"}
{"timestamp":"2026-10-19T22:12:47.795Z","level":"log","context":"RouterExplorer","message":"Mapped {/msp-subscription/current, GET} route"}
{"timestamp":"2026-10-19T22:12:47.795Z","level":"log","context":"RouterExplorer","message":"Mapped {/msp-subscription/invoices, GET} route"}
{"timestamp":"2026-10-19T22:12:47.795Z","level":"log","context":"RouterExplorer","message":"Mapped {/msp-subscription/invoice/:invoiceId/pdf, GET} route"}
{"timestamp":"2026-10-19T22:12:47.795Z","level":"log","context":"RoutesResolver","message":"MspSubscriptionController {/api/msp-subscription}:"}
{"timestamp":"2026-10-19T22:12:47.795Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/msp-subscription/current, GET} route"}
{"timestamp":"2026-10-19T22:12:47.795Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/msp-subscription/invoices, GET} route"}
{"timestamp":"2026-10-19T22:12:47.796Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/msp-subscription/invoice/:invoiceId/pdf, GET} route"}
{"timestamp":"2026-10-19T22:12:47.872Z","level":"log","context":"NestApplication","message":"Nest application successfully started"}
{"timestamp":"2026-10-19T22:12:47.888Z","level":"log","context":"Bootstrap","message":"Users API successfully started on port 3842"}
{"timestamp":"2026-10-19T22:12:47.889Z","level":"log","context":"SeedService","message":"🌱 Starting database seeding..."}
{"timestamp":"2026-10-19T22:12:47.891Z","level":"log","context":"SeedService","message":"Admin account already exists, skipping seed"}
{"timestamp":"2026-10-19T22:12:47.894Z","level":"log","context":"SeedService","message":"Reseller account already exists, skipping seed"}
{"timestamp":"2026-10-19T22:12:47.895Z","level":"log","context":"SeedService","message":"MSP account already exists, skipping seed"}
{"timestamp":"2026-10-19T22:12:47.895Z","level":"log","context":"SeedService","message":"✅ Database seeding completed successfully"}
{"timestamp":"2026-10-20T01:27:13.310Z","level":"warn","context":"LegacyRouteConverter","message":"Unsupported route path: \"/lp/*\". In previous versions, the symbols ?, *, and + were used to denote optional or repeating path parameters. The latest version of \"path-to-regexp\" now requires the use of named parameters. For example, instead of using a route like /users/* to capture all routes starting with \"/users\", you should use /users/*path. For more details, refer to the migration guide. Attempting to auto-convert..."}
{"timestamp":"2026-10-20T01:27:13.354Z","level":"log","context":"Bootstrap","message":"Starting Users API on port 3842..."}
{"timestamp":"2026-10-20T01:27:13.357Z","level":"log","context":"RoutesResolver","message":"UsersApiController {/}:"}
{"timestamp":"2026-10-20T01:27:13.361Z","level":"log","context":"RouterExplorer","message":"Mapped {/, GET} route"}
{"timestamp":"2026-10-20T01:27:13.361Z","level":"log","context":"RoutesResolver","message":"AuthController {/auth}:"}
{"timestamp":"2026-10-20T01:27:13.362Z","level":"log","context":"RouterExplorer","message":"Mapped {/auth/login, POST} route"}
{"timestamp":"2026-10-20T01:27:13.363Z","level":"log","context":"RouterExplorer","message":"Mapped {/auth/admin/login, POST} route"}
{"timestamp":"2026-10-20T01:27:13.363Z","level":"log","context":"RouterExplorer","message":"Mapped {/auth/send-otp, POST} route"}
{"timestamp":"2026-10-20T01:27:13.364Z","level":"log","context":"RouterExplorer","message":"Mapped {/auth/verify-otp, POST} route"}
{"timestamp":"2026-10-20T01:27:13.364Z","level":"log","context":"RouterExplorer","message":"Mapped {/auth/signup, POST} route"}
{"timestamp":"2026-10-20T01:27:13.365Z","level":"log","context":"RouterExplorer","message":"Mapped {/auth/subscription-status, GET} route"}
{"timestamp":"2026-10-20T01:27:13.365Z","level":"log","context":"RoutesResolver","message":"AdminMspController {/admin/msp}:"}
{"timestamp":"2026-10-20T01:27:13.365Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/msp, GET} route"}
{"timestamp":"2026-10-20T01:27:13.366Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/msp/:id, GET} route"}
{"timestamp":"2026-10-20T01:27:13.367Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/msp, POST} route"}
{"timestamp":"2026-10-20T01:27:13.367Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/msp/:id, PUT} route"}
{"timestamp":"2026-10-20T01:27:13.368Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/msp/:id, DELETE} route"}
{"timestamp":"2026-10-20T01:27:13.368Z","level":"log","context":"RoutesResolver","message":"AdminLicenseController {/admin/licenses}:"}
{"timestamp":"2026-10-20T01:27:13.368Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/licenses/summary, GET} route"}
{"timestamp":"2026-10-20T01:27:13.368Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/licenses/msp/:mspId, GET} route"}
{"timestamp":"2026-10-20T01:27:13.369Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/licenses/msp/:mspId, PUT} route"}
{"timestamp":"2026-10-20T01:27:13.369Z","level":"log","context":"RoutesResolver","message":"AdminImpersonationController {/admin/impersonation}:"}
{"timestamp":"2026-10-20T01:27:13.369Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/impersonation/msp-users, GET} route"}
{"timestamp":"2026-10-20T01:27:13.369Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/impersonation/impersonate, POST} route"}
{"timestamp":"2026-10-20T01:27:13.372Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/impersonation/stop, POST} route"}
{"timestamp":"2026-10-20T01:27:13.372Z","level":"log","context":"RoutesResolver","message":"AdminAiUsageController {/admin/ai-usage}:"}
{"timestamp":"2026-10-20T01:27:13.372Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-usage, GET} route"}
{"timestamp":"2026-10-20T01:27:13.373Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-usage/business/:businessId, GET} route"}
{"timestamp":"2026-10-20T01:27:13.373Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-usage/report/monthly, GET} route"}
{"timestamp":"2026-10-20T01:27:13.373Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-usage/pricing, GET} route"}
{"timestamp":"2026-10-20T01:27:13.373Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-usage/pricing, POST} route"}
{"timestamp":"2026-10-20T01:27:13.374Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-usage/credit/:businessId, PUT} route"}
{"timestamp":"2026-10-20T01:27:13.374Z","level":"log","context":"RoutesResolver","message":"AdminAiUsageController {/api/admin/ai-usage}:"}
{"timestamp":"2026-10-20T01:27:13.374Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-usage, GET} route"}
{"timestamp":"2026-10-20T01:27:13.374Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-usage/business/:businessId, GET} route"}
{"timestamp":"2026-10-20T01:27:13.374Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-usage/report/monthly, GET} route"}
{"timestamp":"2026-10-20T01:27:13.374Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-usage/pricing, GET} route"}
{"timestamp":"2026-10-20T01:27:13.375Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-usage/pricing, POST} route"}
{"timestamp":"2026-10-20T01:27:13.375Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-usage/credit/:businessId, PUT} route"}
{"timestamp":"2026-10-20T01:27:13.375Z","level":"log","context":"RoutesResolver","message":"AdminAiModelController {/admin/ai-models}:"}
{"timestamp":"2026-10-20T01:27:13.375Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models, POST} route"}
{"timestamp":"2026-10-20T01:27:13.375Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models, GET} route"}
{"timestamp":"2026-10-20T01:27:13.375Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/default, GET} route"}
{"timestamp":"2026-10-20T01:27:13.376Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/:id, GET} route"}
{"timestamp":"2026-10-20T01:27:13.376Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/:id, PUT} route"}
{"timestamp":"2026-10-20T01:27:13.376Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/:id, DELETE} route"}
{"timestamp":"2026-10-20T01:27:13.376Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/:id/set-default, POST} route"}
{"timestamp":"2026-10-20T01:27:13.376Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/assign-to-business, POST} route"}
{"timestamp":"2026-10-20T01:27:13.377Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/business/:businessId, GET} route"}
{"timestamp":"2026-10-20T01:27:13.377Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/:id/businesses, GET} route"}
{"timestamp":"2026-10-20T01:27:13.377Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/initialize-defaults, POST} route"}
{"timestamp":"2026-10-20T01:27:13.377Z","level":"log","context":"RoutesResolver","message":"AdminAiModelController {/api/admin/ai-models}:"}
{"timestamp":"2026-10-20T01:27:13.377Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models, POST} route"}
{"timestamp":"2026-10-20T01:27:13.378Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models, GET} route"}
{"timestamp":"2026-10-20T01:27:13.378Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/default, GET} route"}
{"timestamp":"2026-10-20T01:27:13.378Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/:id, GET} route"}
{"timestamp":"2026-10-20T01:27:13.378Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/:id, PUT} route"}
{"timestamp":"2026-10-20T01:27:13.378Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/:id, DELETE} route"}
{"timestamp":"2026-10-20T01:27:13.378Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/:id/set-default, POST} route"}
{"timestamp":"2026-10-20T01:27:13.379Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/assign-to-business, POST} route"}
{"timestamp":"2026-10-20T01:27:13.379Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/business/:businessId, GET} route"}
{"timestamp":"2026-10-20T01:27:13.379Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/:id/businesses, GET} route"}
{"timestamp":"2026-10-20T01:27:13.379Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/initialize-defaults, POST} route"}
{"timestamp":"2026-10-20T01:27:13.379Z","level":"log","context":"RoutesResolver","message":"AdminBusinessController {/admin/businesses}:"}
{"timestamp":"2026-10-20T01:27:13.380Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/businesses, GET} route"}
{"timestamp":"2026-10-20T01:27:13.380Z","level":"log","context":"RoutesResolver","message":"ResellerManagementController {/admin/resellers}:"}
{"timestamp":"2026-10-20T01:27:13.380Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/resellers, GET} route"}
{"timestamp":"2026-10-20T01:27:13.380Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/resellers/create-default, POST} route"}
{"timestamp":"2026-10-20T01:27:13.380Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/resellers, POST} route"}
{"timestamp":"2026-10-20T01:27:13.380Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/resellers/:id/toggle-status, PUT} route"}
{"timestamp":"2026-10-20T01:27:13.381Z","level":"log","context":"RoutesResolver","message":"SubscriptionController {/subscription}:"}
{"timestamp":"2026-10-20T01:27:13.381Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/plans, GET} route"}
{"timestamp":"2026-10-20T01:27:13.381Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/calculate-price, POST} route"}
{"timestamp":"2026-10-20T01:27:13.381Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/current, GET} route"}
{"timestamp":"2026-10-20T01:27:13.381Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/create, POST} route"}
{"timestamp":"2026-10-20T01:27:13.382Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/:id, PUT} route"}
{"timestamp":"2026-10-20T01:27:13.382Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/:id/cancel, DELETE} route"}
{"timestamp":"2026-10-20T01:27:13.382Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/sync/:stripeSubscriptionId, POST} route"}
{"timestamp":"2026-10-20T01:27:13.382Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/payments, GET} route"}
{"timestamp":"2026-10-20T01:27:13.382Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/payments/stats, GET} route"}
{"timestamp":"2026-10-20T01:27:13.382Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/payment/:id, GET} route"}
{"timestamp":"2026-10-20T01:27:13.383Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/payment-methods/attach, POST} route"}
{"timestamp":"2026-10-20T01:27:13.383Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/payment-methods/:paymentMethodId, DELETE} route"}
{"timestamp":"2026-10-20T01:27:13.383Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/payment-methods, GET} route"}
{"timestamp":"2026-10-20T01:27:13.383Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/setup-intent, POST} route"}
{"timestamp":"2026-10-20T01:27:13.383Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/update-employee-count, POST} route"}
{"timestamp":"2026-10-20T01:27:13.383Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/retry-payment/:subscriptionId, POST} route"}
{"timestamp":"2026-10-20T01:27:13.384Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/invoice/:invoiceId/pdf, GET} route"}
{"timestamp":"2026-10-20T01:27:13.384Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/preview-upgrade, POST} route"}
{"timestamp":"2026-10-20T01:27:13.384Z","level":"log","context":"RoutesResolver","message":"SubscriptionController {/api/subscription}:"}
{"timestamp":"2026-10-20T01:27:13.384Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/plans, GET} route"}
{"timestamp":"2026-10-20T01:27:13.384Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/calculate-price, POST} route"}
{"timestamp":"2026-10-20T01:27:13.384Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/current, GET} route"}
{"timestamp":"2026-10-20T01:27:13.385Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/create, POST} route"}
{"timestamp":"2026-10-20T01:27:13.385Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/:id, PUT} route"}
{"timestamp":"2026-10-20T01:27:13.385Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/:id/cancel, DELETE} route"}
{"timestamp":"2026-10-20T01:27:13.385Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/sync/:stripeSubscriptionId, POST} route"}
{"timestamp":"2026-10-20T01:27:13.385Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/payments, GET} route"}
{"timestamp":"2026-10-20T01:27:13.385Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/payments/stats, GET} route"}
{"timestamp":"2026-10-20T01:27:13.386Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/payment/:id, GET} route"}
{"timestamp":"2026-10-20T01:27:13.386Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/payment-methods/attach, POST} route"}
{"timestamp":"2026-10-20T01:27:13.386Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/payment-methods/:paymentMethodId, DELETE} route"}
{"timestamp":"2026-10-20T01:27:13.386Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/payment-methods, GET} route"}
{"timestamp":"2026-10-20T01:27:13.386Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/setup-intent, POST} route"}
{"timestamp":"2026-10-20T01:27:13.386Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/update-employee-count, POST} route"}
{"timestamp":"2026-10-20T01:27:13.386Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/retry-payment/:subscriptionId, POST} route"}
{"timestamp":"2026-10-20T01:27:13.387Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/invoice/:invoiceId/pdf, GET} route"}
{"timestamp":"2026-10-20T01:27:13.387Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/preview-upgrade, POST} route"}
{"timestamp":"2026-10-20T01:27:13.387Z","level":"log","context":"RoutesResolver","message":"StripeWebhookController {/stripe/webhook}:"}
{"timestamp":"2026-10-20T01:27:13.387Z","level":"log","context":"RouterExplorer","message":"Mapped {/stripe/webhook/test, GET} route"}
{"timestamp":"2026-10-20T01:27:13.387Z","level":"log","context":"RouterExplorer","message":"Mapped {/stripe/webhook, POST} route"}
{"timestamp":"2026-10-20T01:27:13.387Z","level":"log","context":"RoutesResolver","message":"EmailController {/email-templates}:"}
{"timestamp":"2026-10-20T01:27:13.388Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates/test, POST} route"}
{"timestamp":"2026-10-20T01:27:13.388Z","level":"log","context":"RoutesResolver","message":"EmployeeController {/employees}:"}
{"timestamp":"2026-10-20T01:27:13.388Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees, POST} route"}
{"timestamp":"2026-10-20T01:27:13.388Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees, GET} route"}
{"timestamp":"2026-10-20T01:27:13.388Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees/export, GET} route"}
{"timestamp":"2026-10-20T01:27:13.388Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees/risk-stats, GET} route"}
{"timestamp":"2026-10-20T01:27:13.388Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees/:id, GET} route"}
{"timestamp":"2026-10-20T01:27:13.389Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees/:id, PUT} route"}
{"timestamp":"2026-10-20T01:27:13.389Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees/:id, DELETE} route"}
{"timestamp":"2026-10-20T01:27:13.389Z","level":"log","context":"RoutesResolver","message":"GroupController {/groups}:"}
{"timestamp":"2026-10-20T01:27:13.389Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups, POST} route"}
{"timestamp":"2026-10-20T01:27:13.389Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups, GET} route"}
{"timestamp":"2026-10-20T01:27:13.389Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups/standard, GET} route"}
{"timestamp":"2026-10-20T01:27:13.390Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups/:id, GET} route"}
{"timestamp":"2026-10-20T01:27:13.390Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups/:id, PUT} route"}
{"timestamp":"2026-10-20T01:27:13.390Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups/:id, DELETE} route"}
{"timestamp":"2026-10-20T01:27:13.390Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups/:id/info, GET} route"}
{"timestamp":"2026-10-20T01:27:13.390Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups/:id/with-employees, GET} route"}
{"timestamp":"2026-10-20T01:27:13.390Z","level":"log","context":"RoutesResolver","message":"SenderProfileController {/sender-profiles}:"}
{"timestamp":"2026-10-20T01:27:13.391Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles, GET} route"}
{"timestamp":"2026-10-20T01:27:13.391Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles/:id, GET} route"}
{"timestamp":"2026-10-20T01:27:13.391Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles, POST} route"}
{"timestamp":"2026-10-20T01:27:13.391Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles/:id, PUT} route"}
{"timestamp":"2026-10-20T01:27:13.391Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles/:id, DELETE} route"}
{"timestamp":"2026-10-20T01:27:13.391Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles/:id/verify-domain, POST} route"}
{"timestamp":"2026-10-20T01:27:13.392Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles/domain-verification, GET} route"}
{"timestamp":"2026-10-20T01:27:13.392Z","level":"log","context":"RoutesResolver","message":"EmailTemplateController {/email-templates}:"}
{"timestamp":"2026-10-20T01:27:13.392Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates, GET} route"}
{"timestamp":"2026-10-20T01:27:13.392Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates/:id, GET} route"}
{"timestamp":"2026-10-20T01:27:13.392Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates, POST} route"}
{"timestamp":"2026-10-20T01:27:13.392Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates/:id, PUT} route"}
{"timestamp":"2026-10-20T01:27:13.393Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates/:id, DELETE} route"}
{"timestamp":"2026-10-20T01:27:13.393Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates/:id/duplicate, POST} route"}
{"timestamp":"2026-10-20T01:27:13.393Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates/:id/preview, GET} route"}
{"timestamp":"2026-10-20T01:27:13.393Z","level":"log","context":"RoutesResolver","message":"ScenarioController {/scenarios}:"}
{"timestamp":"2026-10-20T01:27:13.393Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios, POST} route"}
{"timestamp":"2026-10-20T01:27:13.393Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios/generate-content, POST} route"}
{"timestamp":"2026-10-20T01:27:13.393Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios, GET} route"}
{"timestamp":"2026-10-20T01:27:13.394Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios/:id, GET} route"}
{"timestamp":"2026-10-20T01:27:13.394Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios/:id, PUT} route"}
{"timestamp":"2026-10-20T01:27:13.394Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios/:id, DELETE} route"}
{"timestamp":"2026-10-20T01:27:13.394Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios/generate-from-json, POST} route"}
{"timestamp":"2026-10-20T01:27:13.394Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios/:id/save-as-custom-scenario, POST} route"}
{"timestamp":"2026-10-20T01:27:13.394Z","level":"log","context":"RoutesResolver","message":"CampaignController {/campaigns}:"}
{"timestamp":"2026-10-20T01:27:13.395Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns, POST} route"}
{"timestamp":"2026-10-20T01:27:13.395Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns, GET} route"}
{"timestamp":"2026-10-20T01:27:13.395Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id, GET} route"}
{"timestamp":"2026-10-20T01:27:13.395Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id/details, GET} route"}
{"timestamp":"2026-10-20T01:27:13.395Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id/employees, GET} route"}
{"timestamp":"2026-10-20T01:27:13.396Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id, PATCH} route"}
{"timestamp":"2026-10-20T01:27:13.396Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id/start, POST} route"}
{"timestamp":"2026-10-20T01:27:13.396Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id/stop, POST} route"}
{"timestamp":"2026-10-20T01:27:13.396Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id/duplicate, POST} route"}
{"timestamp":"2026-10-20T01:27:13.396Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id, DELETE} route"}
{"timestamp":"2026-10-20T01:27:13.396Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/auto-generate-program, POST} route"}
{"timestamp":"2026-10-20T01:27:13.397Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/generate-from-threat-intelligence, POST} route"}
{"timestamp":"2026-10-20T01:27:13.397Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id/risk-score, GET} route"}
{"timestamp":"2026-10-20T01:27:13.397Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/recalculate-risk-scores, POST} route"}
{"timestamp":"2026-10-20T01:27:13.397Z","level":"log","context":"RoutesResolver","message":"CampaignController {/api/campaigns}:"}
{"timestamp":"2026-10-20T01:27:13.397Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns, POST} route"}
{"timestamp":"2026-10-20T01:27:13.397Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns, GET} route"}
{"timestamp":"2026-10-20T01:27:13.398Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id, GET} route"}
{"timestamp":"2026-10-20T01:27:13.398Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id/details, GET} route"}
{"timestamp":"2026-10-20T01:27:13.398Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id/employees, GET} route"}
{"timestamp":"2026-10-20T01:27:13.398Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id, PATCH} route"}
{"timestamp":"2026-10-20T01:27:13.398Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id/start, POST} route"}
{"timestamp":"2026-10-20T01:27:13.398Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id/stop, POST} route"}
{"timestamp":"2026-10-20T01:27:13.399Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id/duplicate, POST} route"}
{"timestamp":"2026-10-20T01:27:13.399Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id, DELETE} route"}
{"timestamp":"2026-10-20T01:27:13.399Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/auto-generate-program, POST} route"}
{"timestamp":"2026-10-20T01:27:13.399Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/generate-from-threat-intelligence, POST} route"}
{"timestamp":"2026-10-20T01:27:13.399Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id/risk-score, GET} route"}
{"timestamp":"2026-10-20T01:27:13.399Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/recalculate-risk-scores, POST} route"}
{"timestamp":"2026-10-20T01:27:13.399Z","level":"log","context":"RoutesResolver","message":"NotificationsController {/notifications}:"}
{"timestamp":"2026-10-20T01:27:13.400Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications, POST} route"}
{"timestamp":"2026-10-20T01:27:13.400Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications, GET} route"}
{"timestamp":"2026-10-20T01:27:13.400Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/unread, GET} route"}
{"timestamp":"2026-10-20T01:27:13.400Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/unread-count, GET} route"}
{"timestamp":"2026-10-20T01:27:13.400Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/:id, GET} route"}
{"timestamp":"2026-10-20T01:27:13.401Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/:id, PATCH} route"}
{"timestamp":"2026-10-20T01:27:13.401Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/:id/read, PATCH} route"}
{"timestamp":"2026-10-20T01:27:13.401Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/mark-all-read, PATCH} route"}
{"timestamp":"2026-10-20T01:27:13.401Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/:id, DELETE} route"}
{"timestamp":"2026-10-20T01:27:13.401Z","level":"log","context":"RoutesResolver","message":"LandingPageController {/lp}:"}
{"timestamp":"2026-10-20T01:27:13.402Z","level":"log","context":"RouterExplorer","message":"Mapped {/lp/image, GET} route"}
{"timestamp":"2026-10-20T01:27:13.402Z","level":"log","context":"RouterExplorer","message":"Mapped {/lp/learning, GET} route"}
{"timestamp":"2026-10-20T01:27:13.402Z","level":"log","context":"RouterExplorer","message":"Mapped {/lp/submit, POST} route"}
{"timestamp":"2026-10-20T01:27:13.402Z","level":"log","context":"RouterExplorer","message":"Mapped {/lp/test, GET} route"}
{"timestamp":"2026-10-20T01:27:13.402Z","level":"warn","context":"LegacyRouteConverter","message":"Unsupported route path: \"/lp/*\". In previous versions, the symbols ?, *, and + were used to denote optional or repeating path parameters. The latest version of \"path-to-regexp\" now requires the use of named parameters. For example, instead of using a route like /users/* to capture all routes starting with \"/users\", you should use /users/*path. For more details, refer to the migration guide. Attempting to auto-convert..."}
{"timestamp":"2026-10-20T01:27:13.403Z","level":"log","context":"RouterExplorer","message":"Mapped {/lp/*, ALL} route"}
{"timestamp":"2026-10-20T01:27:13.403Z","level":"log","context":"RoutesResolver","message":"SupportController {/support}:"}
{"timestamp":"2026-10-20T01:27:13.403Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets, POST} route"}
{"timestamp":"2026-10-20T01:27:13.404Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets, GET} route"}
{"timestamp":"2026-10-20T01:27:13.404Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets/:id, GET} route"}
{"timestamp":"2026-10-20T01:27:13.404Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets/:id, PATCH} route"}
{"timestamp":"2026-10-20T01:27:13.404Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets/:id, DELETE} route"}
{"timestamp":"2026-10-20T01:27:13.404Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets/:id/messages, POST} route"}
{"timestamp":"2026-10-20T01:27:13.405Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets/:id/close, POST} route"}
{"timestamp":"2026-10-20T01:27:13.405Z","level":"log","context":"RoutesResolver","message":"BusninessMetricsController {/business-metrics}:"}
{"timestamp":"2026-10-20T01:27:13.405Z","level":"log","context":"RouterExplorer","message":"Mapped {/business-metrics, GET} route"}
{"timestamp":"2026-10-20T01:27:13.405Z","level":"log","context":"RoutesResolver","message":"UsersController {/users}:"}
{"timestamp":"2026-10-20T01:27:13.405Z","level":"log","context":"RouterExplorer","message":"Mapped {/users/:id, PUT} route"}
{"timestamp":"2026-10-20T01:27:13.405Z","level":"log","context":"RouterExplorer","message":"Mapped {/users/settings, GET} route"}
{"timestamp":"2026-10-20T01:27:13.405Z","level":"log","context":"RouterExplorer","message":"Mapped {/users/settings/general, PUT} route"}
{"timestamp":"2026-10-20T01:27:13.406Z","level":"log","context":"RouterExplorer","message":"Mapped {/users/company/settings, PUT} route"}
{"timestamp":"2026-10-20T01:27:13.406Z","level":"log","context":"RouterExplorer","message":"Mapped {/users/change-password, POST} route"}
{"timestamp":"2026-10-20T01:27:13.406Z","level":"log","context":"RouterExplorer","message":"Mapped {/users/localization/settings, PUT} route"}
{"timestamp":"2026-10-20T01:27:13.406Z","level":"log","context":"RoutesResolver","message":"PartnerController {/partner}:"}
{"timestamp":"2026-10-20T01:27:13.406Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses, POST} route"}
{"timestamp":"2026-10-20T01:27:13.407Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses, GET} route"}
{"timestamp":"2026-10-20T01:27:13.407Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses/:id, GET} route"}
{"timestamp":"2026-10-20T01:27:13.407Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses/:id, PUT} route"}
{"timestamp":"2026-10-20T01:27:13.407Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses/:id, DELETE} route"}
{"timestamp":"2026-10-20T01:27:13.407Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses/:id/impersonate, POST} route"}
{"timestamp":"2026-10-20T01:27:13.407Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses/stop-impersonation, POST} route"}
{"timestamp":"2026-10-20T01:27:13.408Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/license-usage, GET} route"}
{"timestamp":"2026-10-20T01:27:13.408Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/invoices, POST} route"}
{"timestamp":"2026-10-20T01:27:13.408Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/invoices, GET} route"}
{"timestamp":"2026-10-20T01:27:13.408Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/invoices/:id, GET} route"}
{"timestamp":"2026-10-20T01:27:13.408Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/invoices/:id, PUT} route"}
{"timestamp":"2026-10-20T01:27:13.408Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/invoices/:id, DELETE} route"}
{"timestamp":"2026-10-20T01:27:13.409Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/invoices/:id/mark-paid, PUT} route"}
{"timestamp":"2026-10-20T01:27:13.409Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/onboarding/generate-token, POST} route"}
{"timestamp":"2026-10-20T01:27:13.409Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/dashboard, GET} route"}
{"timestamp":"2026-10-20T01:27:13.409Z","level":"log","context":"RoutesResolver","message":"MspSubscriptionController {/partner/msp-subscriptions}:"}
{"timestamp":"2026-10-20T01:27:13.409Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/plans, POST} route"}
{"timestamp":"2026-10-20T01:27:13.409Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/plans, GET} route"}
{"timestamp":"2026-10-20T01:27:13.410Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/plans/:planId, GET} route"}
{"timestamp":"2026-10-20T01:27:13.410Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/plans/:planId, PUT} route"}
{"timestamp":"2026-10-20T01:27:13.410Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/plans/:planId, DELETE} route"}
{"timestamp":"2026-10-20T01:27:13.410Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/businesses/:businessId/subscription, POST} route"}
{"timestamp":"2026-10-20T01:27:13.410Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions, GET} route"}
{"timestamp":"2026-10-20T01:27:13.411Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/businesses/:businessId/subscription, GET} route"}
{"timestamp":"2026-10-20T01:27:13.411Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/businesses/:businessId/subscription, PUT} route"}
{"timestamp":"2026-10-20T01:27:13.411Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/businesses/:businessId/subscription, DELETE} route"}
{"timestamp":"2026-10-20T01:27:13.411Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/businesses/:businessId/subscription/limits, GET} route"}
{"timestamp":"2026-10-20T01:27:13.411Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/businesses/:businessId/subscription/change-plan, PUT} route"}
{"timestamp":"2026-10-20T01:27:13.411Z","level":"log","context":"RoutesResolver","message":"OnboardingController {/onboarding}:"}
{"timestamp":"2026-10-20T01:27:13.412Z","level":"log","context":"RouterExplorer","message":"Mapped {/onboarding/validate/:token, GET} route"}
{"timestamp":"2026-10-20T01:27:13.412Z","level":"log","context":"RouterExplorer","message":"Mapped {/onboarding/complete/:token, POST} route"}
{"timestamp":"2026-10-20T01:27:13.412Z","level":"log","context":"RoutesResolver","message":"ResellerController {/reseller}:"}
{"timestamp":"2026-10-20T01:27:13.412Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/businesses, POST} route"}
{"timestamp":"2026-10-20T01:27:13.412Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/businesses, GET} route"}
{"timestamp":"2026-10-20T01:27:13.412Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/businesses/:id, GET} route"}
{"timestamp":"2026-10-20T01:27:13.413Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/businesses/:id, PUT} route"}
{"timestamp":"2026-10-20T01:27:13.413Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/businesses/:id, DELETE} route"}
{"timestamp":"2026-10-20T01:27:13.413Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/license-usage, GET} route"}
{"timestamp":"2026-10-20T01:27:13.413Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/invoices, POST} route"}
{"timestamp":"2026-10-20T01:27:13.413Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/invoices, GET} route"}
{"timestamp":"2026-10-20T01:27:13.413Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/invoices/:id, GET} route"}
{"timestamp":"2026-10-20T01:27:13.413Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/invoices/:id, PUT} route"}
{"timestamp":"2026-10-20T01:27:13.414Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/invoices/:id, DELETE} route"}
{"timestamp":"2026-10-20T01:27:13.414Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/invoices/:id/mark-paid, PUT} route"}
{"timestamp":"2026-10-20T01:27:13.414Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/onboarding/generate-token, POST} route"}
{"timestamp":"2026-10-20T01:27:13.414Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/dashboard, GET} route"}
{"timestamp":"2026-10-20T01:27:13.414Z","level":"log","context":"RoutesResolver","message":"ResellerSubscriptionController {/reseller}:"}
{"timestamp":"2026-10-20T01:27:13.415Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/plans, POST} route"}
{"timestamp":"2026-10-20T01:27:13.415Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/plans, GET} route"}
{"timestamp":"2026-10-20T01:27:13.415Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/plans/:planId, GET} route"}
{"timestamp":"2026-10-20T01:27:13.415Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/plans/:planId, PUT} route"}
{"timestamp":"2026-10-20T01:27:13.415Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/plans/:planId, DELETE} route"}
{"timestamp":"2026-10-20T01:27:13.415Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/subscriptions/businesses/:businessId/subscription, POST} route"}
{"timestamp":"2026-10-20T01:27:13.416Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/subscriptions, GET} route"}
{"timestamp":"2026-10-20T01:27:13.416Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/subscriptions/businesses/:businessId/subscription, GET} route"}
{"timestamp":"2026-10-20T01:27:13.416Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/subscriptions/businesses/:businessId/subscription, PUT} route"}
{"timestamp":"2026-10-20T01:27:13.416Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/subscriptions/businesses/:businessId/subscription, DELETE} route"}
{"timestamp":"2026-10-20T01:27:13.416Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/subscriptions/businesses/:businessId/subscription/limits, GET} route"}
{"timestamp":"2026-10-20T01:27:13.416Z","level":"log","context":"RoutesResolver","message":"HealthController {/health}:"}
{"timestamp":"2026-10-20T01:27:13.417Z","level":"log","context":"RouterExplorer","message":"Mapped {/health, GET} route"}
{"timestamp":"2026-10-20T01:27:13.417Z","level":"log","context":"RouterExplorer","message":"Mapped {/health/test-logs, GET} route"}
{"timestamp":"2026-10-20T01:27:13.417Z","level":"log","context":"RoutesResolver","message":"AzureAdController {/azure-ad}:"}
{"timestamp":"2026-10-20T01:27:13.417Z","level":"log","context":"RouterExplorer","message":"Mapped {/azure-ad/config, POST} route"}
{"timestamp":"2026-10-20T01:27:13.417Z","level":"log","context":"RouterExplorer","message":"Mapped {/azure-ad/config, GET} route"}
{"timestamp":"2026-10-20T01:27:13.417Z","level":"log","context":"RouterExplorer","message":"Mapped {/azure-ad/test-connection, POST} route"}
{"timestamp":"2026-10-20T01:27:13.418Z","level":"log","context":"RouterExplorer","message":"Mapped {/azure-ad/sync, POST} route"}
{"timestamp":"2026-10-20T01:27:13.418Z","level":"log","context":"RoutesResolver","message":"ThreatsController {/threats}:"}
{"timestamp":"2026-10-20T01:27:13.418Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats, POST} route"}
{"timestamp":"2026-10-20T01:27:13.418Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats, GET} route"}
{"timestamp":"2026-10-20T01:27:13.418Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/chart-data, GET} route"}
{"timestamp":"2026-10-20T01:27:13.418Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/claude-search, POST} route"}
{"timestamp":"2026-10-20T01:27:13.418Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/claude-latest, POST} route"}
{"timestamp":"2026-10-20T01:27:13.419Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/claude-trending, POST} route"}
{"timestamp":"2026-10-20T01:27:13.419Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/claude-categories, POST} route"}
{"timestamp":"2026-10-20T01:27:13.419Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/claude-manual-search, POST} route"}
{"timestamp":"2026-10-20T01:27:13.419Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/claude-quick-search, POST} route"}
{"timestamp":"2026-10-20T01:27:13.419Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/scheduler-status, GET} route"}
{"timestamp":"2026-10-20T01:27:13.419Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/health-check, GET} route"}
{"timestamp":"2026-10-20T01:27:13.420Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/pause-scheduler, POST} route"}
{"timestamp":"2026-10-20T01:27:13.420Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/:id, GET} route"}
{"timestamp":"2026-10-20T01:27:13.420Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/:id, PATCH} route"}
{"timestamp":"2026-10-20T01:27:13.420Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/:id, DELETE} route"}
{"timestamp":"2026-10-20T01:27:13.420Z","level":"log","context":"RoutesResolver","message":"DomainController {/domains}:"}
{"timestamp":"2026-10-20T01:27:13.420Z","level":"log","context":"RouterExplorer","message":"Mapped {/domains, GET} route"}
{"timestamp":"2026-10-20T01:27:13.421Z","level":"log","context":"RouterExplorer","message":"Mapped {/domains/:id, GET} route"}
{"timestamp":"2026-10-20T01:27:13.421Z","level":"log","context":"RouterExplorer","message":"Mapped {/domains, POST} route"}
{"timestamp":"2026-10-20T01:27:13.421Z","level":"log","context":"RouterExplorer","message":"Mapped {/domains/:id, PUT} route"}
{"timestamp":"2026-10-20T01:27:13.421Z","level":"log","context":"RouterExplorer","message":"Mapped {/domains/:id, DELETE} route"}
{"timestamp":"2026-10-20T01:27:13.421Z","level":"log","context":"RouterExplorer","message":"Mapped {/domains/seed, POST} route"}
{"timestamp":"2026-10-20T01:27:13.421Z","level":"log","context":"RoutesResolver","message":"MspSubscriptionController {/msp-subscription}:"}
{"timestamp":"2026-10-20T01:27:13.421Z","level":"log","context":"RouterExplorer","message":"Mapped {/msp-subscription/current, GET} route"}
{"timestamp":"2026-10-20T01:27:13.422Z","level":"log","context":"RouterExplorer","message":"Mapped {/msp-subscription/invoices, GET} route"}
{"timestamp":"2026-10-20T01:27:13.422Z","level":"log","context":"RouterExplorer","message":"Mapped {/msp-subscription/invoice/:invoiceId/pdf, GET} route"}
{"timestamp":"2026-10-20T01:27:13.422Z","level":"log","context":"RoutesResolver","message":"MspSubscriptionController {/api/msp-subscription}:"}
{"timestamp":"2026-10-20T01:27:13.422Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/msp-subscription/current, GET} route"}
{"timestamp":"2026-10-20T01:27:13.422Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/msp-subscription/invoices, GET} route"}
{"timestamp":"2026-10-20T01:27:13.422Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/msp-subscription/invoice/:invoiceId/pdf, GET} route"}
{"timestamp":"2026-10-20T01:27:13.498Z","level":"log","context":"NestApplication","message":"Nest application successfully started"}
{"timestamp":"2026-10-20T01:27:13.509Z","level":"log","context":"Bootstrap","message":"Users API successfully started on port 3842"}
{"timestamp":"2026-10-20T01:27:13.510Z","level":"log","context":"SeedService","message":"🌱 Starting database seeding..."}
{"timestamp":"2026-10-20T01:27:13.516Z","level":"log","context":"SeedService","message":"Admin account already exists, skipping seed"}
{"timestamp":"2026-10-20T01:27:13.518Z","level":"log","context":"SeedService","message":"Reseller account already exists, skipping seed"}
{"timestamp":"2026-10-20T01:27:13.520Z","level":"log","context":"SeedService","message":"MSP account already exists, skipping seed"}
{"timestamp":"2026-10-20T01:27:13.520Z","level":"log","context":"SeedService","message":"✅ Database seeding completed successfully"}
{"timestamp":"2026-10-20T04:09:44.636Z","level":"warn","context":"LegacyRouteConverter","message":"Unsupported route path: \"/lp/*\". In previous versions, the symbols ?, *, and + were used to denote optional or repeating path parameters. The latest version of \"path-to-regexp\" now requires the use of named parameters. For example, instead of using a route like /users/* to capture all routes starting with \"/users\", you should use /users/*path. For more details, refer to the migration guide. Attempting to auto-convert..."}
{"timestamp":"2026-10-20T04:09:44.673Z","level":"log","context":"Bootstrap","message":"Starting Users API on port 3842..."}
{"timestamp":"2026-10-20T04:09:44.676Z","level":"log","context":"RoutesResolver","message":"UsersApiController {/}:"}
{"timestamp":"2026-10-20T04:09:44.680Z","level":"log","context":"RouterExplorer","message":"Mapped {/, GET} route"}
{"timestamp":"2026-10-20T04:09:44.680Z","level":"log","context":"RoutesResolver","message":"AuthController {/auth}:"}
{"timestamp":"2026-10-20T04:09:44.681Z","level":"log","context":"RouterExplorer","message":"Mapped {/auth/login, POST} route"}
{"timestamp":"2026-10-20T04:09:44.681Z","level":"log","context":"RouterExplorer","message":"Mapped {/auth/admin/login, POST} route"}
{"timestamp":"2026-10-20T04:09:44.682Z","level":"log","context":"RouterExplorer","message":"Mapped {/auth/send-otp, POST} route"}
{"timestamp":"2026-10-20T04:09:44.682Z","level":"log","context":"RouterExplorer","message":"Mapped {/auth/verify-otp, POST} route"}
{"timestamp":"2026-10-20T04:09:44.683Z","level":"log","context":"RouterExplorer","message":"Mapped {/auth/signup, POST} route"}
{"timestamp":"2026-10-20T04:09:44.683Z","level":"log","context":"RouterExplorer","message":"Mapped {/auth/subscription-status, GET} route"}
{"timestamp":"2026-10-20T04:09:44.683Z","level":"log","context":"RoutesResolver","message":"AdminMspController {/admin/msp}:"}
{"timestamp":"2026-10-20T04:09:44.684Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/msp, GET} route"}
{"timestamp":"2026-10-20T04:09:44.685Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/msp/:id, GET} route"}
{"timestamp":"2026-10-20T04:09:44.685Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/msp, POST} route"}
{"timestamp":"2026-10-20T04:09:44.686Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/msp/:id, PUT} route"}
{"timestamp":"2026-10-20T04:09:44.686Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/msp/:id, DELETE} route"}
{"timestamp":"2026-10-20T04:09:44.686Z","level":"log","context":"RoutesResolver","message":"AdminLicenseController {/admin/licenses}:"}
{"timestamp":"2026-10-20T04:09:44.686Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/licenses/summary, GET} route"}
{"timestamp":"2026-10-20T04:09:44.687Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/licenses/msp/:mspId, GET} route"}
{"timestamp":"2026-10-20T04:09:44.687Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/licenses/msp/:mspId, PUT} route"}
{"timestamp":"2026-10-20T04:09:44.687Z","level":"log","context":"RoutesResolver","message":"AdminImpersonationController {/admin/impersonation}:"}
{"timestamp":"2026-10-20T04:09:44.687Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/impersonation/msp-users, GET} route"}
{"timestamp":"2026-10-20T04:09:44.688Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/impersonation/impersonate, POST} route"}
{"timestamp":"2026-10-20T04:09:44.688Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/impersonation/stop, POST} route"}
{"timestamp":"2026-10-20T04:09:44.688Z","level":"log","context":"RoutesResolver","message":"AdminAiUsageController {/admin/ai-usage}:"}
{"timestamp":"2026-10-20T04:09:44.688Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-usage, GET} route"}
{"timestamp":"2026-10-20T04:09:44.688Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-usage/business/:businessId, GET} route"}
{"timestamp":"2026-10-20T04:09:44.691Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-usage/report/monthly, GET} route"}
{"timestamp":"2026-10-20T04:09:44.692Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-usage/pricing, GET} route"}
{"timestamp":"2026-10-20T04:09:44.692Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-usage/pricing, POST} route"}
{"timestamp":"2026-10-20T04:09:44.692Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-usage/credit/:businessId, PUT} route"}
{"timestamp":"2026-10-20T04:09:44.692Z","level":"log","context":"RoutesResolver","message":"AdminAiUsageController {/api/admin/ai-usage}:"}
{"timestamp":"2026-10-20T04:09:44.692Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-usage, GET} route"}
{"timestamp":"2026-10-20T04:09:44.693Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-usage/business/:businessId, GET} route"}
{"timestamp":"2026-10-20T04:09:44.693Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-usage/report/monthly, GET} route"}
{"timestamp":"2026-10-20T04:09:44.693Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-usage/pricing, GET} route"}
{"timestamp":"2026-10-20T04:09:44.693Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-usage/pricing, POST} route"}
{"timestamp":"2026-10-20T04:09:44.693Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-usage/credit/:businessId, PUT} route"}
{"timestamp":"2026-10-20T04:09:44.694Z","level":"log","context":"RoutesResolver","message":"AdminAiModelController {/admin/ai-models}:"}
{"timestamp":"2026-10-20T04:09:44.694Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models, POST} route"}
{"timestamp":"2026-10-20T04:09:44.694Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models, GET} route"}
{"timestamp":"2026-10-20T04:09:44.694Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/default, GET} route"}
{"timestamp":"2026-10-20T04:09:44.694Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/:id, GET} route"}
{"timestamp":"2026-10-20T04:09:44.695Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/:id, PUT} route"}
{"timestamp":"2026-10-20T04:09:44.695Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/:id, DELETE} route"}
{"timestamp":"2026-10-20T04:09:44.695Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/:id/set-default, POST} route"}
{"timestamp":"2026-10-20T04:09:44.695Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/assign-to-business, POST} route"}
{"timestamp":"2026-10-20T04:09:44.695Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/business/:businessId, GET} route"}
{"timestamp":"2026-10-20T04:09:44.696Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/:id/businesses, GET} route"}
{"timestamp":"2026-10-20T04:09:44.696Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/initialize-defaults, POST} route"}
{"timestamp":"2026-10-20T04:09:44.696Z","level":"log","context":"RoutesResolver","message":"AdminAiModelController {/api/admin/ai-models}:"}
{"timestamp":"2026-10-20T04:09:44.696Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models, POST} route"}
{"timestamp":"2026-10-20T04:09:44.696Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models, GET} route"}
{"timestamp":"2026-10-20T04:09:44.696Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/default, GET} route"}
{"timestamp":"2026-10-20T04:09:44.696Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/:id, GET} route"}
{"timestamp":"2026-10-20T04:09:44.697Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/:id, PUT} route"}
{"timestamp":"2026-10-20T04:09:44.697Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/:id, DELETE} route"}
{"timestamp":"2026-10-20T04:09:44.697Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/:id/set-default, POST} route"}
{"timestamp":"2026-10-20T04:09:44.697Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/assign-to-business, POST} route"}
{"timestamp":"2026-10-20T04:09:44.697Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/business/:businessId, GET} route"}
{"timestamp":"2026-10-20T04:09:44.698Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/:id/businesses, GET} route"}
{"timestamp":"2026-10-20T04:09:44.698Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/initialize-defaults, POST} route"}
{"timestamp":"2026-10-20T04:09:44.698Z","level":"log","context":"RoutesResolver","message":"AdminBusinessController {/admin/businesses}:"}
{"timestamp":"2026-10-20T04:09:44.698Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/businesses, GET} route"}
{"timestamp":"2026-10-20T04:09:44.698Z","level":"log","context":"RoutesResolver","message":"ResellerManagementController {/admin/resellers}:"}
{"timestamp":"2026-10-20T04:09:44.698Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/resellers, GET} route"}
{"timestamp":"2026-10-20T04:09:44.699Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/resellers/create-default, POST} route"}
{"timestamp":"2026-10-20T04:09:44.699Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/resellers, POST} route"}
{"timestamp":"2026-10-20T04:09:44.699Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/resellers/:id/toggle-status, PUT} route"}
{"timestamp":"2026-10-20T04:09:44.699Z","level":"log","context":"RoutesResolver","message":"SubscriptionController {/subscription}:"}
{"timestamp":"2026-10-20T04:09:44.699Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/plans, GET} route"}
{"timestamp":"2026-10-20T04:09:44.699Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/calculate-price, POST} route"}
{"timestamp":"2026-10-20T04:09:44.700Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/current, GET} route"}
{"timestamp":"2026-10-20T04:09:44.700Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/create, POST} route"}
{"timestamp":"2026-10-20T04:09:44.700Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/:id, PUT} route"}
{"timestamp":"2026-10-20T04:09:44.700Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/:id/cancel, DELETE} route"}
{"timestamp":"2026-10-20T04:09:44.700Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/sync/:stripeSubscriptionId, POST} route"}
{"timestamp":"2026-10-20T04:09:44.700Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/payments, GET} route"}
{"timestamp":"2026-10-20T04:09:44.701Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/payments/stats, GET} route"}
{"timestamp":"2026-10-20T04:09:44.701Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/payment/:id, GET} route"}
{"timestamp":"2026-10-20T04:09:44.701Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/payment-methods/attach, POST} route"}
{"timestamp":"2026-10-20T04:09:44.701Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/payment-methods/:paymentMethodId, DELETE} route"}
{"timestamp":"2026-10-20T04:09:44.701Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/payment-methods, GET} route"}
{"timestamp":"2026-10-20T04:09:44.701Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/setup-intent, POST} route"}
{"timestamp":"2026-10-20T04:09:44.702Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/update-employee-count, POST} route"}
{"timestamp":"2026-10-20T04:09:44.702Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/retry-payment/:subscriptionId, POST} route"}
{"timestamp":"2026-10-20T04:09:44.702Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/invoice/:invoiceId/pdf, GET} route"}
{"timestamp":"2026-10-20T04:09:44.702Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/preview-upgrade, POST} route"}
{"timestamp":"2026-10-20T04:09:44.702Z","level":"log","context":"RoutesResolver","message":"SubscriptionController {/api/subscription}:"}
{"timestamp":"2026-10-20T04:09:44.702Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/plans, GET} route"}
{"timestamp":"2026-10-20T04:09:44.702Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/calculate-price, POST} route"}
{"timestamp":"2026-10-20T04:09:44.703Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/current, GET} route"}
{"timestamp":"2026-10-20T04:09:44.703Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/create, POST} route"}
{"timestamp":"2026-10-20T04:09:44.703Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/:id, PUT} route"}
{"timestamp":"2026-10-20T04:09:44.703Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/:id/cancel, DELETE} route"}
{"timestamp":"2026-10-20T04:09:44.703Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/sync/:stripeSubscriptionId, POST} route"}
{"timestamp":"2026-10-20T04:09:44.703Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/payments, GET} route"}
{"timestamp":"2026-10-20T04:09:44.703Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/payments/stats, GET} route"}
{"timestamp":"2026-10-20T04:09:44.704Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/payment/:id, GET} route"}
{"timestamp":"2026-10-20T04:09:44.704Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/payment-methods/attach, POST} route"}
{"timestamp":"2026-10-20T04:09:44.704Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/payment-methods/:paymentMethodId, DELETE} route"}
{"timestamp":"2026-10-20T04:09:44.704Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/payment-methods, GET} route"}
{"timestamp":"2026-10-20T04:09:44.704Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/setup-intent, POST} route"}
{"timestamp":"2026-10-20T04:09:44.704Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/update-employee-count, POST} route"}
{"timestamp":"2026-10-20T04:09:44.704Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/retry-payment/:subscriptionId, POST} route"}
{"timestamp":"2026-10-20T04:09:44.705Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/invoice/:invoiceId/pdf, GET} route"}
{"timestamp":"2026-10-20T04:09:44.705Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/preview-upgrade, POST} route"}
{"timestamp":"2026-10-20T04:09:44.705Z","level":"log","context":"RoutesResolver","message":"StripeWebhookController {/stripe/webhook}:"}
{"timestamp":"2026-10-20T04:09:44.705Z","level":"log","context":"RouterExplorer","message":"Mapped {/stripe/webhook/test, GET} route"}
{"timestamp":"2026-10-20T04:09:44.705Z","level":"log","context":"RouterExplorer","message":"Mapped {/stripe/webhook, POST} route"}
{"timestamp":"2026-10-20T04:09:44.705Z","level":"log","context":"RoutesResolver","message":"EmailController {/email-templates}:"}
{"timestamp":"2026-10-20T04:09:44.705Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates/test, POST} route"}
{"timestamp":"2026-10-20T04:09:44.705Z","level":"log","context":"RoutesResolver","message":"EmployeeController {/employees}:"}
{"timestamp":"2026-10-20T04:09:44.706Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees, POST} route"}
{"timestamp":"2026-10-20T04:09:44.706Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees, GET} route"}
{"timestamp":"2026-10-20T04:09:44.706Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees/export, GET} route"}
{"timestamp":"2026-10-20T04:09:44.706Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees/risk-stats, GET} route"}
{"timestamp":"2026-10-20T04:09:44.706Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees/:id, GET} route"}
{"timestamp":"2026-10-20T04:09:44.706Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees/:id, PUT} route"}
{"timestamp":"2026-10-20T04:09:44.706Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees/:id, DELETE} route"}
{"timestamp":"2026-10-20T04:09:44.707Z","level":"log","context":"RoutesResolver","message":"GroupController {/groups}:"}
{"timestamp":"2026-10-20T04:09:44.707Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups, POST} route"}
{"timestamp":"2026-10-20T04:09:44.707Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups, GET} route"}
{"timestamp":"2026-10-20T04:09:44.707Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups/standard, GET} route"}
{"timestamp":"2026-10-20T04:09:44.707Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups/:id, GET} route"}
{"timestamp":"2026-10-20T04:09:44.707Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups/:id, PUT} route"}
{"timestamp":"2026-10-20T04:09:44.707Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups/:id, DELETE} route"}
{"timestamp":"2026-10-20T04:09:44.708Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups/:id/info, GET} route"}
{"timestamp":"2026-10-20T04:09:44.708Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups/:id/with-employees, GET} route"}
{"timestamp":"2026-10-20T04:09:44.708Z","level":"log","context":"RoutesResolver","message":"SenderProfileController {/sender-profiles}:"}
{"timestamp":"2026-10-20T04:09:44.708Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles, GET} route"}
{"timestamp":"2026-10-20T04:09:44.708Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles/:id, GET} route"}
{"timestamp":"2026-10-20T04:09:44.708Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles, POST} route"}
{"timestamp":"2026-10-20T04:09:44.709Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles/:id, PUT} route"}
{"timestamp":"2026-10-20T04:09:44.709Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles/:id, DELETE} route"}
{"timestamp":"2026-10-20T04:09:44.709Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles/:id/verify-domain, POST} route"}
{"timestamp":"2026-10-20T04:09:44.709Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles/domain-verification, GET} route"}
{"timestamp":"2026-10-20T04:09:44.709Z","level":"log","context":"RoutesResolver","message":"EmailTemplateController {/email-templates}:"}
{"timestamp":"2026-10-20T04:09:44.709Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates, GET} route"}
{"timestamp":"2026-10-20T04:09:44.709Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates/:id, GET} route"}
{"timestamp":"2026-10-20T04:09:44.710Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates, POST} route"}
{"timestamp":"2026-10-20T04:09:44.710Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates/:id, PUT} route"}
{"timestamp":"2026-10-20T04:09:44.710Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates/:id, DELETE} route"}
{"timestamp":"2026-10-20T04:09:44.710Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates/:id/duplicate, POST} route"}
{"timestamp":"2026-10-20T04:09:44.710Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates/:id/preview, GET} route"}
{"timestamp":"2026-10-20T04:09:44.710Z","level":"log","context":"RoutesResolver","message":"ScenarioController {/scenarios}:"}
{"timestamp":"2026-10-20T04:09:44.710Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios, POST} route"}
{"timestamp":"2026-10-20T04:09:44.711Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios/generate-content, POST} route"}
{"timestamp":"2026-10-20T04:09:44.711Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios, GET} route"}
{"timestamp":"2026-10-20T04:09:44.711Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios/:id, GET} route"}
{"timestamp":"2026-10-20T04:09:44.711Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios/:id, PUT} route"}
{"timestamp":"2026-10-20T04:09:44.711Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios/:id, DELETE} route"}
{"timestamp":"2026-10-20T04:09:44.711Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios/generate-from-json, POST} route"}
{"timestamp":"2026-10-20T04:09:44.711Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios/:id/save-as-custom-scenario, POST} route"}
{"timestamp":"2026-10-20T04:09:44.711Z","level":"log","context":"RoutesResolver","message":"CampaignController {/campaigns}:"}
{"timestamp":"2026-10-20T04:09:44.712Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns, POST} route"}
{"timestamp":"2026-10-20T04:09:44.712Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns, GET} route"}
{"timestamp":"2026-10-20T04:09:44.712Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id, GET} route"}
{"timestamp":"2026-10-20T04:09:44.712Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id/details, GET} route"}
{"timestamp":"2026-10-20T04:09:44.712Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id/employees, GET} route"}
{"timestamp":"2026-10-20T04:09:44.713Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id, PATCH} route"}
{"timestamp":"2026-10-20T04:09:44.713Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id/start, POST} route"}
{"timestamp":"2026-10-20T04:09:44.713Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id/stop, POST} route"}
{"timestamp":"2026-10-20T04:09:44.713Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id/duplicate, POST} route"}
{"timestamp":"2026-10-20T04:09:44.713Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id, DELETE} route"}
{"timestamp":"2026-10-20T04:09:44.713Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/auto-generate-program, POST} route"}
{"timestamp":"2026-10-20T04:09:44.713Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/generate-from-threat-intelligence, POST} route"}
{"timestamp":"2026-10-20T04:09:44.714Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id/risk-score, GET} route"}
{"timestamp":"2026-10-20T04:09:44.714Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/recalculate-risk-scores, POST} route"}
{"timestamp":"2026-10-20T04:09:44.714Z","level":"log","context":"RoutesResolver","message":"CampaignController {/api/campaigns}:"}
{"timestamp":"2026-10-20T04:09:44.714Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns, POST} route"}
{"timestamp":"2026-10-20T04:09:44.714Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns, GET} route"}
{"timestamp":"2026-10-20T04:09:44.714Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id, GET} route"}
{"timestamp":"2026-10-20T04:09:44.714Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id/details, GET} route"}
{"timestamp":"2026-10-20T04:09:44.715Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id/employees, GET} route"}
{"timestamp":"2026-10-20T04:09:44.715Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id, PATCH} route"}
{"timestamp":"2026-10-20T04:09:44.715Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id/start, POST} route"}
{"timestamp":"2026-10-20T04:09:44.715Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id/stop, POST} route"}
{"timestamp":"2026-10-20T04:09:44.715Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id/duplicate, POST} route"}
{"timestamp":"2026-10-20T04:09:44.715Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id, DELETE} route"}
{"timestamp":"2026-10-20T04:09:44.715Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/auto-generate-program, POST} route"}
{"timestamp":"2026-10-20T04:09:44.715Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/generate-from-threat-intelligence, POST} route"}
{"timestamp":"2026-10-20T04:09:44.716Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id/risk-score, GET} route"}
{"timestamp":"2026-10-20T04:09:44.716Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/recalculate-risk-scores, POST} route"}
{"timestamp":"2026-10-20T04:09:44.716Z","level":"log","context":"RoutesResolver","message":"NotificationsController {/notifications}:"}
{"timestamp":"2026-10-20T04:09:44.716Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications, POST} route"}
{"timestamp":"2026-10-20T04:09:44.716Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications, GET} route"}
{"timestamp":"2026-10-20T04:09:44.716Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/unread, GET} route"}
{"timestamp":"2026-10-20T04:09:44.717Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/unread-count, GET} route"}
{"timestamp":"2026-10-20T04:09:44.717Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/:id, GET} route"}
{"timestamp":"2026-10-20T04:09:44.717Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/:id, PATCH} route"}
{"timestamp":"2026-10-20T04:09:44.717Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/:id/read, PATCH} route"}
{"timestamp":"2026-10-20T04:09:44.717Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/mark-all-read, PATCH} route"}
{"timestamp":"2026-10-20T04:09:44.718Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/:id, DELETE} route"}
{"timestamp":"2026-10-20T04:09:44.718Z","level":"log","context":"RoutesResolver","message":"LandingPageController {/lp}:"}
{"timestamp":"2026-10-20T04:09:44.718Z","level":"log","context":"RouterExplorer","message":"Mapped {/lp/image, GET} route"}
{"timestamp":"2026-10-20T04:09:44.718Z","level":"log","context":"RouterExplorer","message":"Mapped {/lp/learning, GET} route"}
{"timestamp":"2026-10-20T04:09:44.718Z","level":"log","context":"RouterExplorer","message":"Mapped {/lp/submit, POST} route"}
{"timestamp":"2026-10-20T04:09:44.718Z","level":"log","context":"RouterExplorer","message":"Mapped {/lp/test, GET} route"}
{"timestamp":"2026-10-20T04:09:44.719Z","level":"warn","context":"LegacyRouteConverter","message":"Unsupported route path: \"/lp/*\". In previous versions, the symbols ?, *, and + were used to denote optional or repeating path parameters. The latest version of \"path-to-regexp\" now requires the use of named parameters. For example, instead of using a route like /users/* to capture all routes starting with \"/users\", you should use /users/*path. For more details, refer to the migration guide. Attempting to auto-convert..."}
{"timestamp":"2026-10-20T04:09:44.719Z","level":"log","context":"RouterExplorer","message":"Mapped {/lp/*, ALL} route"}
{"timestamp":"2026-10-20T04:09:44.719Z","level":"log","context":"RoutesResolver","message":"SupportController {/support}:"}
{"timestamp":"2026-10-20T04:09:44.720Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets, POST} route"}
{"timestamp":"2026-10-20T04:09:44.720Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets, GET} route"}
{"timestamp":"2026-10-20T04:09:44.720Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets/:id, GET} route"}
{"timestamp":"2026-10-20T04:09:44.720Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets/:id, PATCH} route"}
{"timestamp":"2026-10-20T04:09:44.720Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets/:id, DELETE} route"}
{"timestamp":"2026-10-20T04:09:44.721Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets/:id/messages, POST} route"}
{"timestamp":"2026-10-20T04:09:44.721Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets/:id/close, POST} route"}
{"timestamp":"2026-10-20T04:09:44.721Z","level":"log","context":"RoutesResolver","message":"BusninessMetricsController {/business-metrics}:"}
{"timestamp":"2026-10-20T04:09:44.721Z","level":"log","context":"RouterExplorer","message":"Mapped {/business-metrics, GET} route"}
{"timestamp":"2026-10-20T04:09:44.721Z","level":"log","context":"RoutesResolver","message":"UsersController {/users}:"}
{"timestamp":"2026-10-20T04:09:44.721Z","level":"log","context":"RouterExplorer","message":"Mapped {/users/:id, PUT} route"}
{"timestamp":"2026-10-20T04:09:44.721Z","level":"log","context":"RouterExplorer","message":"Mapped {/users/settings, GET} route"}
{"timestamp":"2026-10-20T04:09:44.722Z","level":"log","context":"RouterExplorer","message":"Mapped {/users/settings/general, PUT} route"}
{"timestamp":"2026-10-20T04:09:44.722Z","level":"log","context":"RouterExplorer","message":"Mapped {/users/company/settings, PUT} route"}
{"timestamp":"2026-10-20T04:09:44.722Z","level":"log","context":"RouterExplorer","message":"Mapped {/users/change-password, POST} route"}
{"timestamp":"2026-10-20T04:09:44.722Z","level":"log","context":"RouterExplorer","message":"Mapped {/users/localization/settings, PUT} route"}
{"timestamp":"2026-10-20T04:09:44.722Z","level":"log","context":"RoutesResolver","message":"PartnerController {/partner}:"}
{"timestamp":"2026-10-20T04:09:44.722Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses, POST} route"}
{"timestamp":"2026-10-20T04:09:44.723Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses, GET} route"}
{"timestamp":"2026-10-20T04:09:44.723Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses/:id, GET} route"}
{"timestamp":"2026-10-20T04:09:44.723Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses/:id, PUT} route"}
{"timestamp":"2026-10-20T04:09:44.723Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses/:id, DELETE} route"}
{"timestamp":"2026-10-20T04:09:44.723Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses/:id/impersonate, POST} route"}
{"timestamp":"2026-10-20T04:09:44.723Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses/stop-impersonation, POST} route"}
{"timestamp":"2026-10-20T04:09:44.724Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/license-usage, GET} route"}
{"timestamp":"2026-10-20T04:09:44.724Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/invoices, POST} route"}
{"timestamp":"2026-10-20T04:09:44.724Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/invoices, GET} route"}
{"timestamp":"2026-10-20T04:09:44.724Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/invoices/:id, GET} route"}
{"timestamp":"2026-10-20T04:09:44.724Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/invoices/:id, PUT} route"}
{"timestamp":"2026-10-20T04:09:44.724Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/invoices/:id, DELETE} route"}
{"timestamp":"2026-10-20T04:09:44.725Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/invoices/:id/mark-paid, PUT} route"}
{"timestamp":"2026-10-20T04:09:44.725Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/onboarding/generate-token, POST} route"}
{"timestamp":"2026-10-20T04:09:44.725Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/dashboard, GET} route"}
{"timestamp":"2026-10-20T04:09:44.725Z","level":"log","context":"RoutesResolver","message":"MspSubscriptionController {/partner/msp-subscriptions}:"}
{"timestamp":"2026-10-20T04:09:44.725Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/plans, POST} route"}
{"timestamp":"2026-10-20T04:09:44.725Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/plans, GET} route"}
{"timestamp":"2026-10-20T04:09:44.725Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/plans/:planId, GET} route"}
{"timestamp":"2026-10-20T04:09:44.726Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/plans/:planId, PUT} route"}
{"timestamp":"2026-10-20T04:09:44.726Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/plans/:planId, DELETE} route"}
{"timestamp":"2026-10-20T04:09:44.726Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/businesses/:businessId/subscription, POST} route"}
{"timestamp":"2026-10-20T04:09:44.726Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions, GET} route"}
{"timestamp":"2026-10-20T04:09:44.726Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/businesses/:businessId/subscription, GET} route"}
{"timestamp":"2026-10-20T04:09:44.726Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/businesses/:businessId/subscription, PUT} route"}
{"timestamp":"2026-10-20T04:09:44.727Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/businesses/:businessId/subscription, DELETE} route"}
{"timestamp":"2026-10-20T04:09:44.727Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/businesses/:businessId/subscription/limits, GET} route"}
{"timestamp":"2026-10-20T04:09:44.727Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/businesses/:businessId/subscription/change-plan, PUT} route"}
{"timestamp":"2026-10-20T04:09:44.727Z","level":"log","context":"RoutesResolver","message":"OnboardingController {/onboarding}:"}
{"timestamp":"2026-10-20T04:09:44.727Z","level":"log","context":"RouterExplorer","message":"Mapped {/onboarding/validate/:token, GET} route"}
{"timestamp":"2026-10-20T04:09:44.727Z","level":"log","context":"RouterExplorer","message":"Mapped {/onboarding/complete/:token, POST} route"}
{"timestamp":"2026-10-20T04:09:44.727Z","level":"log","context":"RoutesResolver","message":"ResellerController {/reseller}:"}
{"timestamp":"2026-10-20T04:09:44.728Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/businesses, POST} route"}
{"timestamp":"2026-10-20T04:09:44.728Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/businesses, GET} route"}
{"timestamp":"2026-10-20T04:09:44.728Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/businesses/:id, GET} route"}
{"timestamp":"2026-10-20T04:09:44.728Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/businesses/:id, PUT} route"}
{"timestamp":"2026-10-20T04:09:44.728Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/businesses/:id, DELETE} route"}
{"timestamp":"2026-10-20T04:09:44.728Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/license-usage, GET} route"}
{"timestamp":"2026-10-20T04:09:44.729Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/invoices, POST} route"}
{"timestamp":"2026-10-20T04:09:44.729Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/invoices, GET} route"}
{"timestamp":"2026-10-20T04:09:44.729Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/invoices/:id, GET} route"}
{"timestamp":"2026-10-20T04:09:44.729Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/invoices/:id, PUT} route"}
{"timestamp":"2026-10-20T04:09:44.729Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/invoices/:id, DELETE} route"}
{"timestamp":"2026-10-20T04:09:44.729Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/invoices/:id/mark-paid, PUT} route"}
{"timestamp":"2026-10-20T04:09:44.730Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/onboarding/generate-token, POST} route"}
{"timestamp":"2026-10-20T04:09:44.730Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/dashboard, GET} route"}
{"timestamp":"2026-10-20T04:09:44.730Z","level":"log","context":"RoutesResolver","message":"ResellerSubscriptionController {/reseller}:"}
{"timestamp":"2026-10-20T04:09:44.730Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/plans, POST} route"}
{"timestamp":"2026-10-20T04:09:44.730Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/plans, GET} route"}
{"timestamp":"2026-10-20T04:09:44.730Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/plans/:planId, GET} route"}
{"timestamp":"2026-10-20T04:09:44.730Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/plans/:planId, PUT} route"}
{"timestamp":"2026-10-20T04:09:44.731Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/plans/:planId, DELETE} route"}
{"timestamp":"2026-10-20T04:09:44.731Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/subscriptions/businesses/:businessId/subscription, POST} route"}
{"timestamp":"2026-10-20T04:09:44.731Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/subscriptions, GET} route"}
{"timestamp":"2026-10-20T04:09:44.731Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/subscriptions/businesses/:businessId/subscription, GET} route"}
{"timestamp":"2026-10-20T04:09:44.731Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/subscriptions/businesses/:businessId/subscription, PUT} route"}
{"timestamp":"2026-10-20T04:09:44.731Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/subscriptions/businesses/:businessId/subscription, DELETE} route"}
{"timestamp":"2026-10-20T04:09:44.732Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/subscriptions/businesses/:businessId/subscription/limits, GET} route"}
{"timestamp":"2026-10-20T04:09:44.732Z","level":"log","context":"RoutesResolver","message":"HealthController {/health}:"}
{"timestamp":"2026-10-20T04:09:44.732Z","level":"log","context":"RouterExplorer","message":"Mapped {/health, GET} route"}
{"timestamp":"2026-10-20T04:09:44.732Z","level":"log","context":"RouterExplorer","message":"Mapped {/health/test-logs, GET} route"}
{"timestamp":"2026-10-20T04:09:44.732Z","level":"log","context":"RoutesResolver","message":"AzureAdController {/azure-ad}:"}
{"timestamp":"2026-10-20T04:09:44.732Z","level":"log","context":"RouterExplorer","message":"Mapped {/azure-ad/config, POST} route"}
{"timestamp":"2026-10-20T04:09:44.732Z","level":"log","context":"RouterExplorer","message":"Mapped {/azure-ad/config, GET} route"}
{"timestamp":"2026-10-20T04:09:44.732Z","level":"log","context":"RouterExplorer","message":"Mapped {/azure-ad/test-connection, POST} route"}
{"timestamp":"2026-10-20T04:09:44.733Z","level":"log","context":"RouterExplorer","message":"Mapped {/azure-ad/sync, POST} route"}
{"timestamp":"2026-10-20T04:09:44.733Z","level":"log","context":"RoutesResolver","message":"ThreatsController {/threats}:"}
{"timestamp":"2026-10-20T04:09:44.733Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats, POST} route"}
{"timestamp":"2026-10-20T04:09:44.733Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats, GET} route"}
{"timestamp":"2026-10-20T04:09:44.733Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/chart-data, GET} route"}
{"timestamp":"2026-10-20T04:09:44.733Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/claude-search, POST} route"}
{"timestamp":"2026-10-20T04:09:44.733Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/claude-latest, POST} route"}
{"timestamp":"2026-10-20T04:09:44.734Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/claude-trending, POST} route"}
{"timestamp":"2026-10-20T04:09:44.734Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/claude-categories, POST} route"}
{"timestamp":"2026-10-20T04:09:44.734Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/claude-manual-search, POST} route"}
{"timestamp":"2026-10-20T04:09:44.734Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/claude-quick-search, POST} route"}
{"timestamp":"2026-10-20T04:09:44.734Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/scheduler-status, GET} route"}
{"timestamp":"2026-10-20T04:09:44.734Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/health-check, GET} route"}
{"timestamp":"2026-10-20T04:09:44.735Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/pause-scheduler, POST} route"}
{"timestamp":"2026-10-20T04:09:44.735Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/:id, GET} route"}
{"timestamp":"2026-10-20T04:09:44.735Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/:id, PATCH} route"}
{"timestamp":"2026-10-20T04:09:44.735Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/:id, DELETE} route"}
{"timestamp":"2026-10-20T04:09:44.735Z","level":"log","context":"RoutesResolver","message":"DomainController {/domains}:"}
{"timestamp":"2026-10-20T04:09:44.735Z","level":"log","context":"RouterExplorer","message":"Mapped {/domains, GET} route"}
{"timestamp":"2026-10-20T04:09:44.735Z","level":"log","context":"RouterExplorer","message":"Mapped {/domains/:id, GET} route"}
{"timestamp":"2026-10-20T04:09:44.736Z","level":"log","context":"RouterExplorer","message":"Mapped {/domains, POST} route"}
{"timestamp":"2026-10-20T04:09:44.736Z","level":"log","context":"RouterExplorer","message":"Mapped {/domains/:id, PUT} route"}
{"timestamp":"2026-10-20T04:09:44.736Z","level":"log","context":"RouterExplorer","message":"Mapped {/domains/:id, DELETE} route"}
{"timestamp":"2026-10-20T04:09:44.736Z","level":"log","context":"RouterExplorer","message":"Mapped {/domains/seed, POST} route"}
{"timestamp":"2026-10-20T04:09:44.736Z","level":"log","context":"RoutesResolver","message":"MspSubscriptionController {/msp-subscription}:"}
{"timestamp":"2026-10-20T04:09:44.736Z","level":"log","context":"RouterExplorer","message":"Mapped {/msp-subscription/current, GET} route"}
{"timestamp":"2026-10-20T04:09:44.736Z","level":"log","context":"RouterExplorer","message":"Mapped {/msp-subscription/invoices, GET} route"}
{"timestamp":"2026-10-20T04:09:44.737Z","level":"log","context":"RouterExplorer","message":"Mapped {/msp-subscription/invoice/:invoiceId/pdf, GET} route"}
{"timestamp":"2026-10-20T04:09:44.737Z","level":"log","context":"RoutesResolver","message":"MspSubscriptionController {/api/msp-subscription}:"}
{"timestamp":"2026-10-20T04:09:44.737Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/msp-subscription/current, GET} route"}
{"timestamp":"2026-10-20T04:09:44.737Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/msp-subscription/invoices, GET} route"}
{"timestamp":"2026-10-20T04:09:44.737Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/msp-subscription/invoice/:invoiceId/pdf, GET} route"}
{"timestamp":"2026-10-20T04:09:44.807Z","level":"log","context":"NestApplication","message":"Nest application successfully started"}
{"timestamp":"2026-10-20T04:09:44.817Z","level":"log","context":"Bootstrap","message":"Users API successfully started on port 3842"}
{"timestamp":"2026-10-20T04:09:44.817Z","level":"log","context":"SeedService","message":"🌱 Starting database seeding..."}
{"timestamp":"2026-10-20T04:09:44.825Z","level":"log","context":"SeedService","message":"Admin account already exists, skipping seed"}
{"timestamp":"2026-10-20T04:09:44.827Z","level":"log","context":"SeedService","message":"Reseller account already exists, skipping seed"}
{"timestamp":"2026-10-20T04:09:44.828Z","level":"log","context":"SeedService","message":"MSP account already exists, skipping seed"}
{"timestamp":"2026-10-20T04:09:44.828Z","level":"log","context":"SeedService","message":"✅ Database seeding completed successfully"}
{"timestamp":"2026-10-20T04:09:44.866Z","level":"log","context":"UsersApiController","message":"Hello endpoint accessed"}
{"timestamp":"2026-10-20T05:27:14.894Z","level":"warn","context":"LegacyRouteConverter","message":"Unsupported route path: \"/lp/*\". In previous versions, the symbols ?, *, and + were used to denote optional or repeating path parameters. The latest version of \"path-to-regexp\" now requires the use of named parameters. For example, instead of using a route like /users/* to capture all routes starting with \"/users\", you should use /users/*path. For more details, refer to the migration guide. Attempting to auto-convert..."}
{"timestamp":"2026-10-20T05:27:14.928Z","level":"log","context":"Bootstrap","message":"Starting Users API on port 3842..."}
{"timestamp":"2026-10-20T05:27:14.931Z","level":"log","context":"RoutesResolver","message":"UsersApiController {/}:"}
{"timestamp":"2026-10-20T05:27:14.934Z","level":"log","context":"RouterExplorer","message":"Mapped {/, GET} route"}
{"timestamp":"2026-10-20T05:27:14.935Z","level":"log","context":"RoutesResolver","message":"AuthController {/auth}:"}
{"timestamp":"2026-10-20T05:27:14.935Z","level":"log","context":"RouterExplorer","message":"Mapped {/auth/login, POST} route"}
{"timestamp":"2026-10-20T05:27:14.936Z","level":"log","context":"RouterExplorer","message":"Mapped {/auth/admin/login, POST} route"}
{"timestamp":"2026-10-20T05:27:14.936Z","level":"log","context":"RouterExplorer","message":"Mapped {/auth/send-otp, POST} route"}
{"timestamp":"2026-10-20T05:27:14.937Z","level":"log","context":"RouterExplorer","message":"Mapped {/auth/verify-otp, POST} route"}
{"timestamp":"2026-10-20T05:27:14.937Z","level":"log","context":"RouterExplorer","message":"Mapped {/auth/signup, POST} route"}
{"timestamp":"2026-10-20T05:27:14.938Z","level":"log","context":"RouterExplorer","message":"Mapped {/auth/subscription-status, GET} route"}
{"timestamp":"2026-10-20T05:27:14.938Z","level":"log","context":"RoutesResolver","message":"AdminMspController {/admin/msp}:"}
{"timestamp":"2026-10-20T05:27:14.938Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/msp, GET} route"}
{"timestamp":"2026-10-20T05:27:14.939Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/msp/:id, GET} route"}
{"timestamp":"2026-10-20T05:27:14.939Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/msp, POST} route"}
{"timestamp":"2026-10-20T05:27:14.940Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/msp/:id, PUT} route"}
{"timestamp":"2026-10-20T05:27:14.940Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/msp/:id, DELETE} route"}
{"timestamp":"2026-10-20T05:27:14.940Z","level":"log","context":"RoutesResolver","message":"AdminLicenseController {/admin/licenses}:"}
{"timestamp":"2026-10-20T05:27:14.940Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/licenses/summary, GET} route"}
{"timestamp":"2026-10-20T05:27:14.940Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/licenses/msp/:mspId, GET} route"}
{"timestamp":"2026-10-20T05:27:14.943Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/licenses/msp/:mspId, PUT} route"}
{"timestamp":"2026-10-20T05:27:14.943Z","level":"log","context":"RoutesResolver","message":"AdminImpersonationController {/admin/impersonation}:"}
{"timestamp":"2026-10-20T05:27:14.943Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/impersonation/msp-users, GET} route"}
{"timestamp":"2026-10-20T05:27:14.943Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/impersonation/impersonate, POST} route"}
{"timestamp":"2026-10-20T05:27:14.943Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/impersonation/stop, POST} route"}
{"timestamp":"2026-10-20T05:27:14.944Z","level":"log","context":"RoutesResolver","message":"AdminAiUsageController {/admin/ai-usage}:"}
{"timestamp":"2026-10-20T05:27:14.944Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-usage, GET} route"}
{"timestamp":"2026-10-20T05:27:14.944Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-usage/business/:businessId, GET} route"}
{"timestamp":"2026-10-20T05:27:14.944Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-usage/report/monthly, GET} route"}
{"timestamp":"2026-10-20T05:27:14.944Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-usage/pricing, GET} route"}
{"timestamp":"2026-10-20T05:27:14.945Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-usage/pricing, POST} route"}
{"timestamp":"2026-10-20T05:27:14.945Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-usage/credit/:businessId, PUT} route"}
{"timestamp":"2026-10-20T05:27:14.945Z","level":"log","context":"RoutesResolver","message":"AdminAiUsageController {/api/admin/ai-usage}:"}
{"timestamp":"2026-10-20T05:27:14.945Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-usage, GET} route"}
{"timestamp":"2026-10-20T05:27:14.945Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-usage/business/:businessId, GET} route"}
{"timestamp":"2026-10-20T05:27:14.945Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-usage/report/monthly, GET} route"}
{"timestamp":"2026-10-20T05:27:14.946Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-usage/pricing, GET} route"}
{"timestamp":"2026-10-20T05:27:14.946Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-usage/pricing, POST} route"}
{"timestamp":"2026-10-20T05:27:14.946Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-usage/credit/:businessId, PUT} route"}
{"timestamp":"2026-10-20T05:27:14.946Z","level":"log","context":"RoutesResolver","message":"AdminAiModelController {/admin/ai-models}:"}
{"timestamp":"2026-10-20T05:27:14.946Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models, POST} route"}
{"timestamp":"2026-10-20T05:27:14.946Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models, GET} route"}
{"timestamp":"2026-10-20T05:27:14.946Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/default, GET} route"}
{"timestamp":"2026-10-20T05:27:14.947Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/:id, GET} route"}
{"timestamp":"2026-10-20T05:27:14.947Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/:id, PUT} route"}
{"timestamp":"2026-10-20T05:27:14.947Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/:id, DELETE} route"}
{"timestamp":"2026-10-20T05:27:14.947Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/:id/set-default, POST} route"}
{"timestamp":"2026-10-20T05:27:14.947Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/assign-to-business, POST} route"}
{"timestamp":"2026-10-20T05:27:14.948Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/business/:businessId, GET} route"}
{"timestamp":"2026-10-20T05:27:14.948Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/:id/businesses, GET} route"}
{"timestamp":"2026-10-20T05:27:14.948Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/initialize-defaults, POST} route"}
{"timestamp":"2026-10-20T05:27:14.948Z","level":"log","context":"RoutesResolver","message":"AdminAiModelController {/api/admin/ai-models}:"}
{"timestamp":"2026-10-20T05:27:14.948Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models, POST} route"}
{"timestamp":"2026-10-20T05:27:14.948Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models, GET} route"}
{"timestamp":"2026-10-20T05:27:14.948Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/default, GET} route"}
{"timestamp":"2026-10-20T05:27:14.949Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/:id, GET} route"}
{"timestamp":"2026-10-20T05:27:14.949Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/:id, PUT} route"}
{"timestamp":"2026-10-20T05:27:14.949Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/:id, DELETE} route"}
{"timestamp":"2026-10-20T05:27:14.949Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/:id/set-default, POST} route"}
{"timestamp":"2026-10-20T05:27:14.949Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/assign-to-business, POST} route"}
{"timestamp":"2026-10-20T05:27:14.949Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/business/:businessId, GET} route"}
{"timestamp":"2026-10-20T05:27:14.950Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/:id/businesses, GET} route"}
{"timestamp":"2026-10-20T05:27:14.950Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/initialize-defaults, POST} route"}
{"timestamp":"2026-10-20T05:27:14.950Z","level":"log","context":"RoutesResolver","message":"AdminBusinessController {/admin/businesses}:"}
{"timestamp":"2026-10-20T05:27:14.950Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/businesses, GET} route"}
{"timestamp":"2026-10-20T05:27:14.950Z","level":"log","context":"RoutesResolver","message":"ResellerManagementController {/admin/resellers}:"}
{"timestamp":"2026-10-20T05:27:14.950Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/resellers, GET} route"}
{"timestamp":"2026-10-20T05:27:14.951Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/resellers/create-default, POST} route"}
{"timestamp":"2026-10-20T05:27:14.951Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/resellers, POST} route"}
{"timestamp":"2026-10-20T05:27:14.951Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/resellers/:id/toggle-status, PUT} route"}
{"timestamp":"2026-10-20T05:27:14.951Z","level":"log","context":"RoutesResolver","message":"SubscriptionController {/subscription}:"}
{"timestamp":"2026-10-20T05:27:14.951Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/plans, GET} route"}
{"timestamp":"2026-10-20T05:27:14.951Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/calculate-price, POST} route"}
{"timestamp":"2026-10-20T05:27:14.951Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/current, GET} route"}
{"timestamp":"2026-10-20T05:27:14.952Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/create, POST} route"}
{"timestamp":"2026-10-20T05:27:14.952Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/:id, PUT} route"}
{"timestamp":"2026-10-20T05:27:14.952Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/:id/cancel, DELETE} route"}
{"timestamp":"2026-10-20T05:27:14.952Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/sync/:stripeSubscriptionId, POST} route"}
{"timestamp":"2026-10-20T05:27:14.952Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/payments, GET} route"}
{"timestamp":"2026-10-20T05:27:14.952Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/payments/stats, GET} route"}
{"timestamp":"2026-10-20T05:27:14.952Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/payment/:id, GET} route"}
{"timestamp":"2026-10-20T05:27:14.953Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/payment-methods/attach, POST} route"}
{"timestamp":"2026-10-20T05:27:14.953Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/payment-methods/:paymentMethodId, DELETE} route"}
{"timestamp":"2026-10-20T05:27:14.953Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/payment-methods, GET} route"}
{"timestamp":"2026-10-20T05:27:14.953Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/setup-intent, POST} route"}
{"timestamp":"2026-10-20T05:27:14.953Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/update-employee-count, POST} route"}
{"timestamp":"2026-10-20T05:27:14.953Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/retry-payment/:subscriptionId, POST} route"}
{"timestamp":"2026-10-20T05:27:14.954Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/invoice/:invoiceId/pdf, GET} route"}
{"timestamp":"2026-10-20T05:27:14.954Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/preview-upgrade, POST} route"}
{"timestamp":"2026-10-20T05:27:14.954Z","level":"log","context":"RoutesResolver","message":"SubscriptionController {/api/subscription}:"}
{"timestamp":"2026-10-20T05:27:14.954Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/plans, GET} route"}
{"timestamp":"2026-10-20T05:27:14.954Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/calculate-price, POST} route"}
{"timestamp":"2026-10-20T05:27:14.954Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/current, GET} route"}
{"timestamp":"2026-10-20T05:27:14.954Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/create, POST} route"}
{"timestamp":"2026-10-20T05:27:14.954Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/:id, PUT} route"}
{"timestamp":"2026-10-20T05:27:14.955Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/:id/cancel, DELETE} route"}
{"timestamp":"2026-10-20T05:27:14.955Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/sync/:stripeSubscriptionId, POST} route"}
{"timestamp":"2026-10-20T05:27:14.955Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/payments, GET} route"}
{"timestamp":"2026-10-20T05:27:14.955Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/payments/stats, GET} route"}
{"timestamp":"2026-10-20T05:27:14.955Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/payment/:id, GET} route"}
{"timestamp":"2026-10-20T05:27:14.955Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/payment-methods/attach, POST} route"}
{"timestamp":"2026-10-20T05:27:14.955Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/payment-methods/:paymentMethodId, DELETE} route"}
{"timestamp":"2026-10-20T05:27:14.956Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/payment-methods, GET} route"}
{"timestamp":"2026-10-20T05:27:14.956Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/setup-intent, POST} route"}
{"timestamp":"2026-10-20T05:27:14.956Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/update-employee-count, POST} route"}
{"timestamp":"2026-10-20T05:27:14.956Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/retry-payment/:subscriptionId, POST} route"}
{"timestamp":"2026-10-20T05:27:14.956Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/invoice/:invoiceId/pdf, GET} route"}
{"timestamp":"2026-10-20T05:27:14.956Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/preview-upgrade, POST} route"}
{"timestamp":"2026-10-20T05:27:14.956Z","level":"log","context":"RoutesResolver","message":"StripeWebhookController {/stripe/webhook}:"}
{"timestamp":"2026-10-20T05:27:14.957Z","level":"log","context":"RouterExplorer","message":"Mapped {/stripe/webhook/test, GET} route"}
{"timestamp":"2026-10-20T05:27:14.957Z","level":"log","context":"RouterExplorer","message":"Mapped {/stripe/webhook, POST} route"}
{"timestamp":"2026-10-20T05:27:14.957Z","level":"log","context":"RoutesResolver","message":"EmailController {/email-templates}:"}
{"timestamp":"2026-10-20T05:27:14.957Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates/test, POST} route"}
{"timestamp":"2026-10-20T05:27:14.957Z","level":"log","context":"RoutesResolver","message":"EmployeeController {/employees}:"}
{"timestamp":"2026-10-20T05:27:14.957Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees, POST} route"}
{"timestamp":"2026-10-20T05:27:14.957Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees, GET} route"}
{"timestamp":"2026-10-20T05:27:14.957Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees/export, GET} route"}
{"timestamp":"2026-10-20T05:27:14.958Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees/risk-stats, GET} route"}
{"timestamp":"2026-10-20T05:27:14.958Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees/:id, GET} route"}
{"timestamp":"2026-10-20T05:27:14.958Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees/:id, PUT} route"}
{"timestamp":"2026-10-20T05:27:14.958Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees/:id, DELETE} route"}
{"timestamp":"2026-10-20T05:27:14.958Z","level":"log","context":"RoutesResolver","message":"GroupController {/groups}:"}
{"timestamp":"2026-10-20T05:27:14.958Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups, POST} route"}
{"timestamp":"2026-10-20T05:27:14.958Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups, GET} route"}
{"timestamp":"2026-10-20T05:27:14.959Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups/standard, GET} route"}
{"timestamp":"2026-10-20T05:27:14.959Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups/:id, GET} route"}
{"timestamp":"2026-10-20T05:27:14.959Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups/:id, PUT} route"}
{"timestamp":"2026-10-20T05:27:14.959Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups/:id, DELETE} route"}
{"timestamp":"2026-10-20T05:27:14.959Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups/:id/info, GET} route"}
{"timestamp":"2026-10-20T05:27:14.959Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups/:id/with-employees, GET} route"}
{"timestamp":"2026-10-20T05:27:14.959Z","level":"log","context":"RoutesResolver","message":"SenderProfileController {/sender-profiles}:"}
{"timestamp":"2026-10-20T05:27:14.960Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles, GET} route"}
{"timestamp":"2026-10-20T05:27:14.960Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles/:id, GET} route"}
{"timestamp":"2026-10-20T05:27:14.960Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles, POST} route"}
{"timestamp":"2026-10-20T05:27:14.960Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles/:id, PUT} route"}
{"timestamp":"2026-10-20T05:27:14.960Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles/:id, DELETE} route"}
{"timestamp":"2026-10-20T05:27:14.960Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles/:id/verify-domain, POST} route"}
{"timestamp":"2026-10-20T05:27:14.960Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles/domain-verification, GET} route"}
{"timestamp":"2026-10-20T05:27:14.960Z","level":"log","context":"RoutesResolver","message":"EmailTemplateController {/email-templates}:"}
{"timestamp":"2026-10-20T05:27:14.961Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates, GET} route"}
{"timestamp":"2026-10-20T05:27:14.961Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates/:id, GET} route"}
{"timestamp":"2026-10-20T05:27:14.961Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates, POST} route"}
{"timestamp":"2026-10-20T05:27:14.961Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates/:id, PUT} route"}
{"timestamp":"2026-10-20T05:27:14.961Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates/:id, DELETE} route"}
{"timestamp":"2026-10-20T05:27:14.961Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates/:id/duplicate, POST} route"}
{"timestamp":"2026-10-20T05:27:14.961Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates/:id/preview, GET} route"}
{"timestamp":"2026-10-20T05:27:14.962Z","level":"log","context":"RoutesResolver","message":"ScenarioController {/scenarios}:"}
{"timestamp":"2026-10-20T05:27:14.962Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios, POST} route"}
{"timestamp":"2026-10-20T05:27:14.962Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios/generate-content, POST} route"}
{"timestamp":"2026-10-20T05:27:14.962Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios, GET} route"}
{"timestamp":"2026-10-20T05:27:14.962Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios/:id, GET} route"}
{"timestamp":"2026-10-20T05:27:14.962Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios/:id, PUT} route"}
{"timestamp":"2026-10-20T05:27:14.962Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios/:id, DELETE} route"}
{"timestamp":"2026-10-20T05:27:14.963Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios/generate-from-json, POST} route"}
{"timestamp":"2026-10-20T05:27:14.963Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios/:id/save-as-custom-scenario, POST} route"}
{"timestamp":"2026-10-20T05:27:14.963Z","level":"log","context":"RoutesResolver","message":"CampaignController {/campaigns}:"}
{"timestamp":"2026-10-20T05:27:14.963Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns, POST} route"}
{"timestamp":"2026-10-20T05:27:14.963Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns, GET} route"}
{"timestamp":"2026-10-20T05:27:14.963Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id, GET} route"}
{"timestamp":"2026-10-20T05:27:14.963Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id/details, GET} route"}
{"timestamp":"2026-10-20T05:27:14.964Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id/employees, GET} route"}
{"timestamp":"2026-10-20T05:27:14.964Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id, PATCH} route"}
{"timestamp":"2026-10-20T05:27:14.964Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id/start, POST} route"}
{"timestamp":"2026-10-20T05:27:14.964Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id/stop, POST} route"}
{"timestamp":"2026-10-20T05:27:14.964Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id/duplicate, POST} route"}
{"timestamp":"2026-10-20T05:27:14.964Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id, DELETE} route"}
{"timestamp":"2026-10-20T05:27:14.964Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/auto-generate-program, POST} route"}
{"timestamp":"2026-10-20T05:27:14.965Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/generate-from-threat-intelligence, POST} route"}
{"timestamp":"2026-10-20T05:27:14.965Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id/risk-score, GET} route"}
{"timestamp":"2026-10-20T05:27:14.965Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/recalculate-risk-scores, POST} route"}
{"timestamp":"2026-10-20T05:27:14.965Z","level":"log","context":"RoutesResolver","message":"CampaignController {/api/campaigns}:"}
{"timestamp":"2026-10-20T05:27:14.965Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns, POST} route"}
{"timestamp":"2026-10-20T05:27:14.965Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns, GET} route"}
{"timestamp":"2026-10-20T05:27:14.965Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id, GET} route"}
{"timestamp":"2026-10-20T05:27:14.966Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id/details, GET} route"}
{"timestamp":"2026-10-20T05:27:14.966Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id/employees, GET} route"}
{"timestamp":"2026-10-20T05:27:14.966Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id, PATCH} route"}
{"timestamp":"2026-10-20T05:27:14.966Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id/start, POST} route"}
{"timestamp":"2026-10-20T05:27:14.966Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id/stop, POST} route"}
{"timestamp":"2026-10-20T05:27:14.966Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id/duplicate, POST} route"}
{"timestamp":"2026-10-20T05:27:14.966Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id, DELETE} route"}
{"timestamp":"2026-10-20T05:27:14.966Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/auto-generate-program, POST} route"}
{"timestamp":"2026-10-20T05:27:14.967Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/generate-from-threat-intelligence, POST} route"}
{"timestamp":"2026-10-20T05:27:14.967Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id/risk-score, GET} route"}
{"timestamp":"2026-10-20T05:27:14.967Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/recalculate-risk-scores, POST} route"}
{"timestamp":"2026-10-20T05:27:14.967Z","level":"log","context":"RoutesResolver","message":"NotificationsController {/notifications}:"}
{"timestamp":"2026-10-20T05:27:14.967Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications, POST} route"}
{"timestamp":"2026-10-20T05:27:14.967Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications, GET} route"}
{"timestamp":"2026-10-20T05:27:14.967Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/unread, GET} route"}
{"timestamp":"2026-10-20T05:27:14.968Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/unread-count, GET} route"}
{"timestamp":"2026-10-20T05:27:14.968Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/:id, GET} route"}
{"timestamp":"2026-10-20T05:27:14.968Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/:id, PATCH} route"}
{"timestamp":"2026-10-20T05:27:14.968Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/:id/read, PATCH} route"}
{"timestamp":"2026-10-20T05:27:14.968Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/mark-all-read, PATCH} route"}
{"timestamp":"2026-10-20T05:27:14.969Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/:id, DELETE} route"}
{"timestamp":"2026-10-20T05:27:14.969Z","level":"log","context":"RoutesResolver","message":"LandingPageController {/lp}:"}
{"timestamp":"2026-10-20T05:27:14.969Z","level":"log","context":"RouterExplorer","message":"Mapped {/lp/image, GET} route"}
{"timestamp":"2026-10-20T05:27:14.969Z","level":"log","context":"RouterExplorer","message":"Mapped {/lp/learning, GET} route"}
{"timestamp":"2026-10-20T05:27:14.969Z","level":"log","context":"RouterExplorer","message":"Mapped {/lp/submit, POST} route"}
{"timestamp":"2026-10-20T05:27:14.969Z","level":"log","context":"RouterExplorer","message":"Mapped {/lp/test, GET} route"}
{"timestamp":"2026-10-20T05:27:14.969Z","level":"warn","context":"LegacyRouteConverter","message":"Unsupported route path: \"/lp/*\". In previous versions, the symbols ?, *, and + were used to denote optional or repeating path parameters. The latest version of \"path-to-regexp\" now requires the use of named parameters. For example, instead of using a route like /users/* to capture all routes starting with \"/users\", you should use /users/*path. For more details, refer to the migration guide. Attempting to auto-convert..."}
{"timestamp":"2026-10-20T05:27:14.970Z","level":"log","context":"RouterExplorer","message":"Mapped {/lp/*, ALL} route"}
{"timestamp":"2026-10-20T05:27:14.970Z","level":"log","context":"RoutesResolver","message":"SupportController {/support}:"}
{"timestamp":"2026-10-20T05:27:14.970Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets, POST} route"}
{"timestamp":"2026-10-20T05:27:14.970Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets, GET} route"}
{"timestamp":"2026-10-20T05:27:14.971Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets/:id, GET} route"}
{"timestamp":"2026-10-20T05:27:14.971Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets/:id, PATCH} route"}
{"timestamp":"2026-10-20T05:27:14.971Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets/:id, DELETE} route"}
{"timestamp":"2026-10-20T05:27:14.971Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets/:id/messages, POST} route"}
{"timestamp":"2026-10-20T05:27:14.971Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets/:id/close, POST} route"}
{"timestamp":"2026-10-20T05:27:14.971Z","level":"log","context":"RoutesResolver","message":"BusninessMetricsController {/business-metrics}:"}
{"timestamp":"2026-10-20T05:27:14.971Z","level":"log","context":"RouterExplorer","message":"Mapped {/business-metrics, GET} route"}
{"timestamp":"2026-10-20T05:27:14.971Z","level":"log","context":"RoutesResolver","message":"UsersController {/users}:"}
{"timestamp":"2026-10-20T05:27:14.972Z","level":"log","context":"RouterExplorer","message":"Mapped {/users/:id, PUT} route"}
{"timestamp":"2026-10-20T05:27:14.972Z","level":"log","context":"RouterExplorer","message":"Mapped {/users/settings, GET} route"}
{"timestamp":"2026-10-20T05:27:14.972Z","level":"log","context":"RouterExplorer","message":"Mapped {/users/settings/general, PUT} route"}
{"timestamp":"2026-10-20T05:27:14.972Z","level":"log","context":"RouterExplorer","message":"Mapped {/users/company/settings, PUT} route"}
{"timestamp":"2026-10-20T05:27:14.972Z","level":"log","context":"RouterExplorer","message":"Mapped {/users/change-password, POST} route"}
{"timestamp":"2026-10-20T05:27:14.972Z","level":"log","context":"RouterExplorer","message":"Mapped {/users/localization/settings, PUT} route"}
{"timestamp":"2026-10-20T05:27:14.972Z","level":"log","context":"RoutesResolver","message":"PartnerController {/partner}:"}
{"timestamp":"2026-10-20T05:27:14.973Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses, POST} route"}
{"timestamp":"2026-10-20T05:27:14.973Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses, GET} route"}
{"timestamp":"2026-10-20T05:27:14.973Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses/:id, GET} route"}
{"timestamp":"2026-10-20T05:27:14.973Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses/:id, PUT} route"}
{"timestamp":"2026-10-20T05:27:14.973Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses/:id, DELETE} route"}
{"timestamp":"2026-10-20T05:27:14.973Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses/:id/impersonate, POST} route"}
{"timestamp":"2026-10-20T05:27:14.974Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses/stop-impersonation, POST} route"}
{"timestamp":"2026-10-20T05:27:14.974Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/license-usage, GET} route"}
{"timestamp":"2026-10-20T05:27:14.974Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/invoices, POST} route"}
{"timestamp":"2026-10-20T05:27:14.974Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/invoices, GET} route"}
{"timestamp":"2026-10-20T05:27:14.974Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/invoices/:id, GET} route"}
{"timestamp":"2026-10-20T05:27:14.974Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/invoices/:id, PUT} route"}
{"timestamp":"2026-10-20T05:27:14.974Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/invoices/:id, DELETE} route"}
{"timestamp":"2026-10-20T05:27:14.975Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/invoices/:id/mark-paid, PUT} route"}
{"timestamp":"2026-10-20T05:27:14.975Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/onboarding/generate-token, POST} route"}
{"timestamp":"2026-10-20T05:27:14.975Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/dashboard, GET} route"}
{"timestamp":"2026-10-20T05:27:14.975Z","level":"log","context":"RoutesResolver","message":"MspSubscriptionController {/partner/msp-subscriptions}:"}
{"timestamp":"2026-10-20T05:27:14.975Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/plans, POST} route"}
{"timestamp":"2026-10-20T05:27:14.975Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/plans, GET} route"}
{"timestamp":"2026-10-20T05:27:14.975Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/plans/:planId, GET} route"}
{"timestamp":"2026-10-20T05:27:14.976Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/plans/:planId, PUT} route"}
{"timestamp":"2026-10-20T05:27:14.976Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/plans/:planId, DELETE} route"}
{"timestamp":"2026-10-20T05:27:14.976Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/businesses/:businessId/subscription, POST} route"}
{"timestamp":"2026-10-20T05:27:14.976Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions, GET} route"}
{"timestamp":"2026-10-20T05:27:14.976Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/businesses/:businessId/subscription, GET} route"}
{"timestamp":"2026-10-20T05:27:14.976Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/businesses/:businessId/subscription, PUT} route"}
{"timestamp":"2026-10-20T05:27:14.976Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/businesses/:businessId/subscription, DELETE} route"}
{"timestamp":"2026-10-20T05:27:14.977Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/businesses/:businessId/subscription/limits, GET} route"}
{"timestamp":"2026-10-20T05:27:14.977Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/businesses/:businessId/subscription/change-plan, PUT} route"}
{"timestamp":"2026-10-20T05:27:14.977Z","level":"log","context":"RoutesResolver","message":"OnboardingController {/onboarding}:"}
{"timestamp":"2026-10-20T05:27:14.977Z","level":"log","context":"RouterExplorer","message":"Mapped {/onboarding/validate/:token, GET} route"}
{"timestamp":"2026-10-20T05:27:14.977Z","level":"log","context":"RouterExplorer","message":"Mapped {/onboarding/complete/:token, POST} route"}
{"timestamp":"2026-10-20T05:27:14.977Z","level":"log","context":"RoutesResolver","message":"ResellerController {/reseller}:"}
{"timestamp":"2026-10-20T05:27:14.977Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/businesses, POST} route"}
{"timestamp":"2026-10-20T05:27:14.978Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/businesses, GET} route"}
{"timestamp":"2026-10-20T05:27:14.978Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/businesses/:id, GET} route"}
{"timestamp":"2026-10-20T05:27:14.978Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/businesses/:id, PUT} route"}
{"timestamp":"2026-10-20T05:27:14.978Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/businesses/:id, DELETE} route"}
{"timestamp":"2026-10-20T05:27:14.978Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/license-usage, GET} route"}
{"timestamp":"2026-10-20T05:27:14.978Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/invoices, POST} route"}
{"timestamp":"2026-10-20T05:27:14.978Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/invoices, GET} route"}
{"timestamp":"2026-10-20T05:27:14.979Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/invoices/:id, GET} route"}
{"timestamp":"2026-10-20T05:27:14.979Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/invoices/:id, PUT} route"}
{"timestamp":"2026-10-20T05:27:14.979Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/invoices/:id, DELETE} route"}
{"timestamp":"2026-10-20T05:27:14.979Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/invoices/:id/mark-paid, PUT} route"}
{"timestamp":"2026-10-20T05:27:14.979Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/onboarding/generate-token, POST} route"}
{"timestamp":"2026-10-20T05:27:14.979Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/dashboard, GET} route"}
{"timestamp":"2026-10-20T05:27:14.979Z","level":"log","context":"RoutesResolver","message":"ResellerSubscriptionController {/reseller}:"}
{"timestamp":"2026-10-20T05:27:14.979Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/plans, POST} route"}
{"timestamp":"2026-10-20T05:27:14.980Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/plans, GET} route"}
{"timestamp":"2026-10-20T05:27:14.980Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/plans/:planId, GET} route"}
{"timestamp":"2026-10-20T05:27:14.980Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/plans/:planId, PUT} route"}
{"timestamp":"2026-10-20T05:27:14.980Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/plans/:planId, DELETE} route"}
{"timestamp":"2026-10-20T05:27:14.980Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/subscriptions/businesses/:businessId/subscription, POST} route"}
{"timestamp":"2026-10-20T05:27:14.980Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/subscriptions, GET} route"}
{"timestamp":"2026-10-20T05:27:14.980Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/subscriptions/businesses/:businessId/subscription, GET} route"}
{"timestamp":"2026-10-20T05:27:14.981Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/subscriptions/businesses/:businessId/subscription, PUT} route"}
{"timestamp":"2026-10-20T05:27:14.981Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/subscriptions/businesses/:businessId/subscription, DELETE} route"}
{"timestamp":"2026-10-20T05:27:14.981Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/subscriptions/businesses/:businessId/subscription/limits, GET} route"}
{"timestamp":"2026-10-20T05:27:14.981Z","level":"log","context":"RoutesResolver","message":"HealthController {/health}:"}
{"timestamp":"2026-10-20T05:27:14.981Z","level":"log","context":"RouterExplorer","message":"Mapped {/health, GET} route"}
{"timestamp":"2026-10-20T05:27:14.981Z","level":"log","context":"RouterExplorer","message":"Mapped {/health/test-logs, GET} route"}
{"timestamp":"2026-10-20T05:27:14.981Z","level":"log","context":"RoutesResolver","message":"AzureAdController {/azure-ad}:"}
{"timestamp":"2026-10-20T05:27:14.981Z","level":"log","context":"RouterExplorer","message":"Mapped {/azure-ad/config, POST} route"}
{"timestamp":"2026-10-20T05:27:14.982Z","level":"log","context":"RouterExplorer","message":"Mapped {/azure-ad/config, GET} route"}
{"timestamp":"2026-10-20T05:27:14.982Z","level":"log","context":"RouterExplorer","message":"Mapped {/azure-ad/test-connection, POST} route"}
{"timestamp":"2026-10-20T05:27:14.982Z","level":"log","context":"RouterExplorer","message":"Mapped {/azure-ad/sync, POST} route"}
{"timestamp":"2026-10-20T05:27:14.982Z","level":"log","context":"RoutesResolver","message":"ThreatsController {/threats}:"}
{"timestamp":"2026-10-20T05:27:14.982Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats, POST} route"}
{"timestamp":"2026-10-20T05:27:14.982Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats, GET} route"}
{"timestamp":"2026-10-20T05:27:14.982Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/chart-data, GET} route"}
{"timestamp":"2026-10-20T05:27:14.982Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/claude-search, POST} route"}
{"timestamp":"2026-10-20T05:27:14.983Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/claude-latest, POST} route"}
{"timestamp":"2026-10-20T05:27:14.983Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/claude-trending, POST} route"}
{"timestamp":"2026-10-20T05:27:14.983Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/claude-categories, POST} route"}
{"timestamp":"2026-10-20T05:27:14.983Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/claude-manual-search, POST} route"}
{"timestamp":"2026-10-20T05:27:14.983Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/claude-quick-search, POST} route"}
{"timestamp":"2026-10-20T05:27:14.983Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/scheduler-status, GET} route"}
{"timestamp":"2026-10-20T05:27:14.983Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/health-check, GET} route"}
{"timestamp":"2026-10-20T05:27:14.984Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/pause-scheduler, POST} route"}
{"timestamp":"2026-10-20T05:27:14.984Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/:id, GET} route"}
{"timestamp":"2026-10-20T05:27:14.984Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/:id, PATCH} route"}
{"timestamp":"2026-10-20T05:27:14.984Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/:id, DELETE} route"}
{"timestamp":"2026-10-20T05:27:14.984Z","level":"log","context":"RoutesResolver","message":"DomainController {/domains}:"}
{"timestamp":"2026-10-20T05:27:14.984Z","level":"log","context":"RouterExplorer","message":"Mapped {/domains, GET} route"}
{"timestamp":"2026-10-20T05:27:14.984Z","level":"log","context":"RouterExplorer","message":"Mapped {/domains/:id, GET} route"}
{"timestamp":"2026-10-20T05:27:14.985Z","level":"log","context":"RouterExplorer","message":"Mapped {/domains, POST} route"}
{"timestamp":"2026-10-20T05:27:14.985Z","level":"log","context":"RouterExplorer","message":"Mapped {/domains/:id, PUT} route"}
{"timestamp":"2026-10-20T05:27:14.985Z","level":"log","context":"RouterExplorer","message":"Mapped {/domains/:id, DELETE} route"}
{"timestamp":"2026-10-20T05:27:14.985Z","level":"log","context":"RouterExplorer","message":"Mapped {/domains/seed, POST} route"}
{"timestamp":"2026-10-20T05:27:14.985Z","level":"log","context":"RoutesResolver","message":"MspSubscriptionController {/msp-subscription}:"}
{"timestamp":"2026-10-20T05:27:14.985Z","level":"log","context":"RouterExplorer","message":"Mapped {/msp-subscription/current, GET} route"}
{"timestamp":"2026-10-20T05:27:14.985Z","level":"log","context":"RouterExplorer","message":"Mapped {/msp-subscription/invoices, GET} route"}
{"timestamp":"2026-10-20T05:27:14.985Z","level":"log","context":"RouterExplorer","message":"Mapped {/msp-subscription/invoice/:invoiceId/pdf, GET} route"}
{"timestamp":"2026-10-20T05:27:14.985Z","level":"log","context":"RoutesResolver","message":"MspSubscriptionController {/api/msp-subscription}:"}
{"timestamp":"2026-10-20T05:27:14.986Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/msp-subscription/current, GET} route"}
{"timestamp":"2026-10-20T05:27:14.986Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/msp-subscription/invoices, GET} route"}
{"timestamp":"2026-10-20T05:27:14.986Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/msp-subscription/invoice/:invoiceId/pdf, GET} route"}
{"timestamp":"2026-10-20T05:27:15.048Z","level":"log","context":"NestApplication","message":"Nest application successfully started"}
{"timestamp":"2026-10-20T05:27:15.065Z","level":"log","context":"Bootstrap","message":"Users API successfully started on port 3842"}
{"timestamp":"2026-10-20T05:27:15.065Z","level":"log","context":"SeedService","message":"🌱 Starting database seeding..."}
{"timestamp":"2026-10-20T05:27:15.069Z","level":"log","context":"SeedService","message":"Admin account already exists, skipping seed"}
{"timestamp":"2026-10-20T05:27:15.071Z","level":"log","context":"SeedService","message":"Reseller account already exists, skipping seed"}
{"timestamp":"2026-10-20T05:27:15.073Z","level":"log","context":"SeedService","message":"MSP account already exists, skipping seed"}
{"timestamp":"2026-10-20T05:27:15.073Z","level":"log","context":"SeedService","message":"✅ Database seeding completed successfully"}
{"timestamp":"2026-10-20T05:27:15.104Z","level":"log","context":"UsersApiController","message":"Hello endpoint accessed"}
{"timestamp":"2026-10-20T05:27:18.147Z","level":"log","context":"UsersApiController","message":"Hello endpoint accessed"}
{"timestamp":"2026-10-20T07:11:55.606Z","level":"warn","context":"LegacyRouteConverter","message":"Unsupported route path: \"/lp/*\". In previous versions, the symbols ?, *, and + were used to denote optional or repeating path parameters. The latest version of \"path-to-regexp\" now requires the use of named parameters. For example, instead of using a route like /users/* to capture all routes starting with \"/users\", you should use /users/*path. For more details, refer to the migration guide. Attempting to auto-convert..."}
{"timestamp":"2026-10-20T07:11:55.645Z","level":"log","context":"Bootstrap","message":"Starting Users API on port 3842..."}
{"timestamp":"2026-10-20T07:11:55.649Z","level":"log","context":"RoutesResolver","message":"UsersApiController {/}:"}
{"timestamp":"2026-10-20T07:11:55.652Z","level":"log","context":"RouterExplorer","message":"Mapped {/, GET} route"}
{"timestamp":"2026-10-20T07:11:55.653Z","level":"log","context":"RoutesResolver","message":"AuthController {/auth}:"}
{"timestamp":"2026-10-20T07:11:55.653Z","level":"log","context":"RouterExplorer","message":"Mapped {/auth/login, POST} route"}
{"timestamp":"2026-10-20T07:11:55.654Z","level":"log","context":"RouterExplorer","message":"Mapped {/auth/admin/login, POST} route"}
{"timestamp":"2026-10-20T07:11:55.654Z","level":"log","context":"RouterExplorer","message":"Mapped {/auth/send-otp, POST} route"}
{"timestamp":"2026-10-20T07:11:55.655Z","level":"log","context":"RouterExplorer","message":"Mapped {/auth/verify-otp, POST} route"}
{"timestamp":"2026-10-20T07:11:55.655Z","level":"log","context":"RouterExplorer","message":"Mapped {/auth/signup, POST} route"}
{"timestamp":"2026-10-20T07:11:55.656Z","level":"log","context":"RouterExplorer","message":"Mapped {/auth/subscription-status, GET} route"}
{"timestamp":"2026-10-20T07:11:55.656Z","level":"log","context":"RoutesResolver","message":"AdminMspController {/admin/msp}:"}
{"timestamp":"2026-10-20T07:11:55.656Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/msp, GET} route"}
{"timestamp":"2026-10-20T07:11:55.657Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/msp/:id, GET} route"}
{"timestamp":"2026-10-20T07:11:55.658Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/msp, POST} route"}
{"timestamp":"2026-10-20T07:11:55.658Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/msp/:id, PUT} route"}
{"timestamp":"2026-10-20T07:11:55.659Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/msp/:id, DELETE} route"}
{"timestamp":"2026-10-20T07:11:55.659Z","level":"log","context":"RoutesResolver","message":"AdminLicenseController {/admin/licenses}:"}
{"timestamp":"2026-10-20T07:11:55.659Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/licenses/summary, GET} route"}
{"timestamp":"2026-10-20T07:11:55.659Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/licenses/msp/:mspId, GET} route"}
{"timestamp":"2026-10-20T07:11:55.659Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/licenses/msp/:mspId, PUT} route"}
{"timestamp":"2026-10-20T07:11:55.660Z","level":"log","context":"RoutesResolver","message":"AdminImpersonationController {/admin/impersonation}:"}
{"timestamp":"2026-10-20T07:11:55.660Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/impersonation/msp-users, GET} route"}
{"timestamp":"2026-10-20T07:11:55.660Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/impersonation/impersonate, POST} route"}
{"timestamp":"2026-10-20T07:11:55.662Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/impersonation/stop, POST} route"}
{"timestamp":"2026-10-20T07:11:55.663Z","level":"log","context":"RoutesResolver","message":"AdminAiUsageController {/admin/ai-usage}:"}
{"timestamp":"2026-10-20T07:11:55.663Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-usage, GET} route"}
{"timestamp":"2026-10-20T07:11:55.663Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-usage/business/:businessId, GET} route"}
{"timestamp":"2026-10-20T07:11:55.663Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-usage/report/monthly, GET} route"}
{"timestamp":"2026-10-20T07:11:55.664Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-usage/pricing, GET} route"}
{"timestamp":"2026-10-20T07:11:55.664Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-usage/pricing, POST} route"}
{"timestamp":"2026-10-20T07:11:55.664Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-usage/credit/:businessId, PUT} route"}
{"timestamp":"2026-10-20T07:11:55.664Z","level":"log","context":"RoutesResolver","message":"AdminAiUsageController {/api/admin/ai-usage}:"}
{"timestamp":"2026-10-20T07:11:55.664Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-usage, GET} route"}
{"timestamp":"2026-10-20T07:11:55.664Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-usage/business/:businessId, GET} route"}
{"timestamp":"2026-10-20T07:11:55.665Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-usage/report/monthly, GET} route"}
{"timestamp":"2026-10-20T07:11:55.665Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-usage/pricing, GET} route"}
{"timestamp":"2026-10-20T07:11:55.665Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-usage/pricing, POST} route"}
{"timestamp":"2026-10-20T07:11:55.665Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-usage/credit/:businessId, PUT} route"}
{"timestamp":"2026-10-20T07:11:55.665Z","level":"log","context":"RoutesResolver","message":"AdminAiModelController {/admin/ai-models}:"}
{"timestamp":"2026-10-20T07:11:55.665Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models, POST} route"}
{"timestamp":"2026-10-20T07:11:55.666Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models, GET} route"}
{"timestamp":"2026-10-20T07:11:55.666Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/default, GET} route"}
{"timestamp":"2026-10-20T07:11:55.666Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/:id, GET} route"}
{"timestamp":"2026-10-20T07:11:55.666Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/:id, PUT} route"}
{"timestamp":"2026-10-20T07:11:55.666Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/:id, DELETE} route"}
{"timestamp":"2026-10-20T07:11:55.666Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/:id/set-default, POST} route"}
{"timestamp":"2026-10-20T07:11:55.667Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/assign-to-business, POST} route"}
{"timestamp":"2026-10-20T07:11:55.667Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/business/:businessId, GET} route"}
{"timestamp":"2026-10-20T07:11:55.667Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/:id/businesses, GET} route"}
{"timestamp":"2026-10-20T07:11:55.667Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/initialize-defaults, POST} route"}
{"timestamp":"2026-10-20T07:11:55.667Z","level":"log","context":"RoutesResolver","message":"AdminAiModelController {/api/admin/ai-models}:"}
{"timestamp":"2026-10-20T07:11:55.667Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models, POST} route"}
{"timestamp":"2026-10-20T07:11:55.668Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models, GET} route"}
{"timestamp":"2026-10-20T07:11:55.668Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/default, GET} route"}
{"timestamp":"2026-10-20T07:11:55.668Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/:id, GET} route"}
{"timestamp":"2026-10-20T07:11:55.668Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/:id, PUT} route"}
{"timestamp":"2026-10-20T07:11:55.668Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/:id, DELETE} route"}
{"timestamp":"2026-10-20T07:11:55.668Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/:id/set-default, POST} route"}
{"timestamp":"2026-10-20T07:11:55.668Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/assign-to-business, POST} route"}
{"timestamp":"2026-10-20T07:11:55.669Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/business/:businessId, GET} route"}
{"timestamp":"2026-10-20T07:11:55.669Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/:id/businesses, GET} route"}
{"timestamp":"2026-10-20T07:11:55.669Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/initialize-defaults, POST} route"}
{"timestamp":"2026-10-20T07:11:55.669Z","level":"log","context":"RoutesResolver","message":"AdminBusinessController {/admin/businesses}:"}
{"timestamp":"2026-10-20T07:11:55.669Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/businesses, GET} route"}
{"timestamp":"2026-10-20T07:11:55.669Z","level":"log","context":"RoutesResolver","message":"ResellerManagementController {/admin/resellers}:"}
{"timestamp":"2026-10-20T07:11:55.670Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/resellers, GET} route"}
{"timestamp":"2026-10-20T07:11:55.670Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/resellers/create-default, POST} route"}
{"timestamp":"2026-10-20T07:11:55.670Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/resellers, POST} route"}
{"timestamp":"2026-10-20T07:11:55.670Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/resellers/:id/toggle-status, PUT} route"}
{"timestamp":"2026-10-20T07:11:55.670Z","level":"log","context":"RoutesResolver","message":"SubscriptionController {/subscription}:"}
{"timestamp":"2026-10-20T07:11:55.670Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/plans, GET} route"}
{"timestamp":"2026-10-20T07:11:55.670Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/calculate-price, POST} route"}
{"timestamp":"2026-10-20T07:11:55.671Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/current, GET} route"}
{"timestamp":"2026-10-20T07:11:55.671Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/create, POST} route"}
{"timestamp":"2026-10-20T07:11:55.671Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/:id, PUT} route"}
{"timestamp":"2026-10-20T07:11:55.671Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/:id/cancel, DELETE} route"}
{"timestamp":"2026-10-20T07:11:55.671Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/sync/:stripeSubscriptionId, POST} route"}
{"timestamp":"2026-10-20T07:11:55.671Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/payments, GET} route"}
{"timestamp":"2026-10-20T07:11:55.672Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/payments/stats, GET} route"}
{"timestamp":"2026-10-20T07:11:55.672Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/payment/:id, GET} route"}
{"timestamp":"2026-10-20T07:11:55.672Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/payment-methods/attach, POST} route"}
{"timestamp":"2026-10-20T07:11:55.672Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/payment-methods/:paymentMethodId, DELETE} route"}
{"timestamp":"2026-10-20T07:11:55.672Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/payment-methods, GET} route"}
{"timestamp":"2026-10-20T07:11:55.672Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/setup-intent, POST} route"}
{"timestamp":"2026-10-20T07:11:55.673Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/update-employee-count, POST} route"}
{"timestamp":"2026-10-20T07:11:55.673Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/retry-payment/:subscriptionId, POST} route"}
{"timestamp":"2026-10-20T07:11:55.673Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/invoice/:invoiceId/pdf, GET} route"}
{"timestamp":"2026-10-20T07:11:55.673Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/preview-upgrade, POST} route"}
{"timestamp":"2026-10-20T07:11:55.673Z","level":"log","context":"RoutesResolver","message":"SubscriptionController {/api/subscription}:"}
{"timestamp":"2026-10-20T07:11:55.673Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/plans, GET} route"}
{"timestamp":"2026-10-20T07:11:55.673Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/calculate-price, POST} route"}
{"timestamp":"2026-10-20T07:11:55.674Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/current, GET} route"}
{"timestamp":"2026-10-20T07:11:55.674Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/create, POST} route"}
{"timestamp":"2026-10-20T07:11:55.674Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/:id, PUT} route"}
{"timestamp":"2026-10-20T07:11:55.674Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/:id/cancel, DELETE} route"}
{"timestamp":"2026-10-20T07:11:55.674Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/sync/:stripeSubscriptionId, POST} route"}
{"timestamp":"2026-10-20T07:11:55.674Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/payments, GET} route"}
{"timestamp":"2026-10-20T07:11:55.674Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/payments/stats, GET} route"}
{"timestamp":"2026-10-20T07:11:55.675Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/payment/:id, GET} route"}
{"timestamp":"2026-10-20T07:11:55.675Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/payment-methods/attach, POST} route"}
{"timestamp":"2026-10-20T07:11:55.675Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/payment-methods/:paymentMethodId, DELETE} route"}
{"timestamp":"2026-10-20T07:11:55.675Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/payment-methods, GET} route"}
{"timestamp":"2026-10-20T07:11:55.675Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/setup-intent, POST} route"}
{"timestamp":"2026-10-20T07:11:55.675Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/update-employee-count, POST} route"}
{"timestamp":"2026-10-20T07:11:55.675Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/retry-payment/:subscriptionId, POST} route"}
{"timestamp":"2026-10-20T07:11:55.676Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/invoice/:invoiceId/pdf, GET} route"}
{"timestamp":"2026-10-20T07:11:55.676Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/preview-upgrade, POST} route"}
{"timestamp":"2026-10-20T07:11:55.676Z","level":"log","context":"RoutesResolver","message":"StripeWebhookController {/stripe/webhook}:"}
{"timestamp":"2026-10-20T07:11:55.676Z","level":"log","context":"RouterExplorer","message":"Mapped {/stripe/webhook/test, GET} route"}
{"timestamp":"2026-10-20T07:11:55.676Z","level":"log","context":"RouterExplorer","message":"Mapped {/stripe/webhook, POST} route"}
{"timestamp":"2026-10-20T07:11:55.676Z","level":"log","context":"RoutesResolver","message":"EmailController {/email-templates}:"}
{"timestamp":"2026-10-20T07:11:55.676Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates/test, POST} route"}
{"timestamp":"2026-10-20T07:11:55.676Z","level":"log","context":"RoutesResolver","message":"EmployeeController {/employees}:"}
{"timestamp":"2026-10-20T07:11:55.677Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees, POST} route"}
{"timestamp":"2026-10-20T07:11:55.677Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees, GET} route"}
{"timestamp":"2026-10-20T07:11:55.677Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees/export, GET} route"}
{"timestamp":"2026-10-20T07:11:55.677Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees/risk-stats, GET} route"}
{"timestamp":"2026-10-20T07:11:55.677Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees/:id, GET} route"}
{"timestamp":"2026-10-20T07:11:55.677Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees/:id, PUT} route"}
{"timestamp":"2026-10-20T07:11:55.678Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees/:id, DELETE} route"}
{"timestamp":"2026-10-20T07:11:55.678Z","level":"log","context":"RoutesResolver","message":"GroupController {/groups}:"}
{"timestamp":"2026-10-20T07:11:55.678Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups, POST} route"}
{"timestamp":"2026-10-20T07:11:55.678Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups, GET} route"}
{"timestamp":"2026-10-20T07:11:55.678Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups/standard, GET} route"}
{"timestamp":"2026-10-20T07:11:55.678Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups/:id, GET} route"}
{"timestamp":"2026-10-20T07:11:55.678Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups/:id, PUT} route"}
{"timestamp":"2026-10-20T07:11:55.678Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups/:id, DELETE} route"}
{"timestamp":"2026-10-20T07:11:55.679Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups/:id/info, GET} route"}
{"timestamp":"2026-10-20T07:11:55.679Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups/:id/with-employees, GET} route"}
{"timestamp":"2026-10-20T07:11:55.679Z","level":"log","context":"RoutesResolver","message":"SenderProfileController {/sender-profiles}:"}
{"timestamp":"2026-10-20T07:11:55.679Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles, GET} route"}
{"timestamp":"2026-10-20T07:11:55.679Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles/:id, GET} route"}
{"timestamp":"2026-10-20T07:11:55.679Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles, POST} route"}
{"timestamp":"2026-10-20T07:11:55.679Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles/:id, PUT} route"}
{"timestamp":"2026-10-20T07:11:55.680Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles/:id, DELETE} route"}
{"timestamp":"2026-10-20T07:11:55.680Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles/:id/verify-domain, POST} route"}
{"timestamp":"2026-10-20T07:11:55.680Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles/domain-verification, GET} route"}
{"timestamp":"2026-10-20T07:11:55.680Z","level":"log","context":"RoutesResolver","message":"EmailTemplateController {/email-templates}:"}
{"timestamp":"2026-10-20T07:11:55.680Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates, GET} route"}
{"timestamp":"2026-10-20T07:11:55.680Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates/:id, GET} route"}
{"timestamp":"2026-10-20T07:11:55.681Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates, POST} route"}
{"timestamp":"2026-10-20T07:11:55.681Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates/:id, PUT} route"}
{"timestamp":"2026-10-20T07:11:55.681Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates/:id, DELETE} route"}
{"timestamp":"2026-10-20T07:11:55.681Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates/:id/duplicate, POST} route"}
{"timestamp":"2026-10-20T07:11:55.681Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates/:id/preview, GET} route"}
{"timestamp":"2026-10-20T07:11:55.681Z","level":"log","context":"RoutesResolver","message":"ScenarioController {/scenarios}:"}
{"timestamp":"2026-10-20T07:11:55.681Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios, POST} route"}
{"timestamp":"2026-10-20T07:11:55.682Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios/generate-content, POST} route"}
{"timestamp":"2026-10-20T07:11:55.682Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios, GET} route"}
{"timestamp":"2026-10-20T07:11:55.682Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios/:id, GET} route"}
{"timestamp":"2026-10-20T07:11:55.682Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios/:id, PUT} route"}
{"timestamp":"2026-10-20T07:11:55.682Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios/:id, DELETE} route"}
{"timestamp":"2026-10-20T07:11:55.682Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios/generate-from-json, POST} route"}
{"timestamp":"2026-10-20T07:11:55.683Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios/:id/save-as-custom-scenario, POST} route"}
{"timestamp":"2026-10-20T07:11:55.683Z","level":"log","context":"RoutesResolver","message":"CampaignController {/campaigns}:"}
{"timestamp":"2026-10-20T07:11:55.683Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns, POST} route"}
{"timestamp":"2026-10-20T07:11:55.683Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns, GET} route"}
{"timestamp":"2026-10-20T07:11:55.683Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id, GET} route"}
{"timestamp":"2026-10-20T07:11:55.683Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id/details, GET} route"}
{"timestamp":"2026-10-20T07:11:55.684Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id/employees, GET} route"}
{"timestamp":"2026-10-20T07:11:55.684Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id, PATCH} route"}
{"timestamp":"2026-10-20T07:11:55.684Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id/start, POST} route"}
{"timestamp":"2026-10-20T07:11:55.684Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id/stop, POST} route"}
{"timestamp":"2026-10-20T07:11:55.684Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id/duplicate, POST} route"}
{"timestamp":"2026-10-20T07:11:55.684Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id, DELETE} route"}
{"timestamp":"2026-10-20T07:11:55.685Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/auto-generate-program, POST} route"}
{"timestamp":"2026-10-20T07:11:55.685Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/generate-from-threat-intelligence, POST} route"}
{"timestamp":"2026-10-20T07:11:55.685Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id/risk-score, GET} route"}
{"timestamp":"2026-10-20T07:11:55.685Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/recalculate-risk-scores, POST} route"}
{"timestamp":"2026-10-20T07:11:55.685Z","level":"log","context":"RoutesResolver","message":"CampaignController {/api/campaigns}:"}
{"timestamp":"2026-10-20T07:11:55.685Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns, POST} route"}
{"timestamp":"2026-10-20T07:11:55.685Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns, GET} route"}
{"timestamp":"2026-10-20T07:11:55.686Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id, GET} route"}
{"timestamp":"2026-10-20T07:11:55.686Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id/details, GET} route"}
{"timestamp":"2026-10-20T07:11:55.686Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id/employees, GET} route"}
{"timestamp":"2026-10-20T07:11:55.686Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id, PATCH} route"}
{"timestamp":"2026-10-20T07:11:55.686Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id/start, POST} route"}
{"timestamp":"2026-10-20T07:11:55.686Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id/stop, POST} route"}
{"timestamp":"2026-10-20T07:11:55.686Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id/duplicate, POST} route"}
{"timestamp":"2026-10-20T07:11:55.687Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id, DELETE} route"}
{"timestamp":"2026-10-20T07:11:55.687Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/auto-generate-program, POST} route"}
{"timestamp":"2026-10-20T07:11:55.687Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/generate-from-threat-intelligence, POST} route"}
{"timestamp":"2026-10-20T07:11:55.687Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id/risk-score, GET} route"}
{"timestamp":"2026-10-20T07:11:55.687Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/recalculate-risk-scores, POST} route"}
{"timestamp":"2026-10-20T07:11:55.687Z","level":"log","context":"RoutesResolver","message":"NotificationsController {/notifications}:"}
{"timestamp":"2026-10-20T07:11:55.688Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications, POST} route"}
{"timestamp":"2026-10-20T07:11:55.688Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications, GET} route"}
{"timestamp":"2026-10-20T07:11:55.688Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/unread, GET} route"}
{"timestamp":"2026-10-20T07:11:55.688Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/unread-count, GET} route"}
{"timestamp":"2026-10-20T07:11:55.688Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/:id, GET} route"}
{"timestamp":"2026-10-20T07:11:55.688Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/:id, PATCH} route"}
{"timestamp":"2026-10-20T07:11:55.689Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/:id/read, PATCH} route"}
{"timestamp":"2026-10-20T07:11:55.689Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/mark-all-read, PATCH} route"}
{"timestamp":"2026-10-20T07:11:55.689Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/:id, DELETE} route"}
{"timestamp":"2026-10-20T07:11:55.689Z","level":"log","context":"RoutesResolver","message":"LandingPageController {/lp}:"}
{"timestamp":"2026-10-20T07:11:55.689Z","level":"log","context":"RouterExplorer","message":"Mapped {/lp/image, GET} route"}
{"timestamp":"2026-10-20T07:11:55.690Z","level":"log","context":"RouterExplorer","message":"Mapped {/lp/learning, GET} route"}
{"timestamp":"2026-10-20T07:11:55.690Z","level":"log","context":"RouterExplorer","message":"Mapped {/lp/submit, POST} route"}
{"timestamp":"2026-10-20T07:11:55.690Z","level":"log","context":"RouterExplorer","message":"Mapped {/lp/test, GET} route"}
{"timestamp":"2026-10-20T07:11:55.690Z","level":"warn","context":"LegacyRouteConverter","message":"Unsupported route path: \"/lp/*\". In previous versions, the symbols ?, *, and + were used to denote optional or repeating path parameters. The latest version of \"path-to-regexp\" now requires the use of named parameters. For example, instead of using a route like /users/* to capture all routes starting with \"/users\", you should use /users/*path. For more details, refer to the migration guide. Attempting to auto-convert..."}
{"timestamp":"2026-10-20T07:11:55.691Z","level":"log","context":"RouterExplorer","message":"Mapped {/lp/*, ALL} route"}
{"timestamp":"2026-10-20T07:11:55.691Z","level":"log","context":"RoutesResolver","message":"SupportController {/support}:"}
{"timestamp":"2026-10-20T07:11:55.691Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets, POST} route"}
{"timestamp":"2026-10-20T07:11:55.691Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets, GET} route"}
{"timestamp":"2026-10-20T07:11:55.691Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets/:id, GET} route"}
{"timestamp":"2026-10-20T07:11:55.692Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets/:id, PATCH} route"}
{"timestamp":"2026-10-20T07:11:55.692Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets/:id, DELETE} route"}
{"timestamp":"2026-10-20T07:11:55.692Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets/:id/messages, POST} route"}
{"timestamp":"2026-10-20T07:11:55.692Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets/:id/close, POST} route"}
{"timestamp":"2026-10-20T07:11:55.692Z","level":"log","context":"RoutesResolver","message":"BusninessMetricsController {/business-metrics}:"}
{"timestamp":"2026-10-20T07:11:55.692Z","level":"log","context":"RouterExplorer","message":"Mapped {/business-metrics, GET} route"}
{"timestamp":"2026-10-20T07:11:55.692Z","level":"log","context":"RoutesResolver","message":"UsersController {/users}:"}
{"timestamp":"2026-10-20T07:11:55.693Z","level":"log","context":"RouterExplorer","message":"Mapped {/users/:id, PUT} route"}
{"timestamp":"2026-10-20T07:11:55.693Z","level":"log","context":"RouterExplorer","message":"Mapped {/users/settings, GET} route"}
{"timestamp":"2026-10-20T07:11:55.693Z","level":"log","context":"RouterExplorer","message":"Mapped {/users/settings/general, PUT} route"}
{"timestamp":"2026-10-20T07:11:55.693Z","level":"log","context":"RouterExplorer","message":"Mapped {/users/company/settings, PUT} route"}
{"timestamp":"2026-10-20T07:11:55.693Z","level":"log","context":"RouterExplorer","message":"Mapped {/users/change-password, POST} route"}
{"timestamp":"2026-10-20T07:11:55.694Z","level":"log","context":"RouterExplorer","message":"Mapped {/users/localization/settings, PUT} route"}
{"timestamp":"2026-10-20T07:11:55.694Z","level":"log","context":"RoutesResolver","message":"PartnerController {/partner}:"}
{"timestamp":"2026-10-20T07:11:55.694Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses, POST} route"}
{"timestamp":"2026-10-20T07:11:55.694Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses, GET} route"}
{"timestamp":"2026-10-20T07:11:55.694Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses/:id, GET} route"}
{"timestamp":"2026-10-20T07:11:55.694Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses/:id, PUT} route"}
{"timestamp":"2026-10-20T07:11:55.694Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses/:id, DELETE} route"}
{"timestamp":"2026-10-20T07:11:55.695Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses/:id/impersonate, POST} route"}
{"timestamp":"2026-10-20T07:11:55.695Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses/stop-impersonation, POST} route"}
{"timestamp":"2026-10-20T07:11:55.695Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/license-usage, GET} route"}
{"timestamp":"2026-10-20T07:11:55.695Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/invoices, POST} route"}
{"timestamp":"2026-10-20T07:11:55.695Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/invoices, GET} route"}
{"timestamp":"2026-10-20T07:11:55.696Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/invoices/:id, GET} route"}
{"timestamp":"2026-10-20T07:11:55.696Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/invoices/:id, PUT} route"}
{"timestamp":"2026-10-20T07:11:55.696Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/invoices/:id, DELETE} route"}
{"timestamp":"2026-10-20T07:11:55.696Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/invoices/:id/mark-paid, PUT} route"}
{"timestamp":"2026-10-20T07:11:55.696Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/onboarding/generate-token, POST} route"}
{"timestamp":"2026-10-20T07:11:55.696Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/dashboard, GET} route"}
{"timestamp":"2026-10-20T07:11:55.696Z","level":"log","context":"RoutesResolver","message":"MspSubscriptionController {/partner/msp-subscriptions}:"}
{"timestamp":"2026-10-20T07:11:55.697Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/plans, POST} route"}
{"timestamp":"2026-10-20T07:11:55.697Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/plans, GET} route"}
{"timestamp":"2026-10-20T07:11:55.697Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/plans/:planId, GET} route"}
{"timestamp":"2026-10-20T07:11:55.697Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/plans/:planId, PUT} route"}
{"timestamp":"2026-10-20T07:11:55.697Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/plans/:planId, DELETE} route"}
{"timestamp":"2026-10-20T07:11:55.697Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/businesses/:businessId/subscription, POST} route"}
{"timestamp":"2026-10-20T07:11:55.698Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions, GET} route"}
{"timestamp":"2026-10-20T07:11:55.698Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/businesses/:businessId/subscription, GET} route"}
{"timestamp":"2026-10-20T07:11:55.698Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/businesses/:businessId/subscription, PUT} route"}
{"timestamp":"2026-10-20T07:11:55.698Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/businesses/:businessId/subscription, DELETE} route"}
{"timestamp":"2026-10-20T07:11:55.698Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/businesses/:businessId/subscription/limits, GET} route"}
{"timestamp":"2026-10-20T07:11:55.699Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/businesses/:businessId/subscription/change-plan, PUT} route"}
{"timestamp":"2026-10-20T07:11:55.699Z","level":"log","context":"RoutesResolver","message":"OnboardingController {/onboarding}:"}
{"timestamp":"2026-10-20T07:11:55.699Z","level":"log","context":"RouterExplorer","message":"Mapped {/onboarding/validate/:token, GET} route"}
{"timestamp":"2026-10-20T07:11:55.699Z","level":"log","context":"RouterExplorer","message":"Mapped {/onboarding/complete/:token, POST} route"}
{"timestamp":"2026-10-20T07:11:55.699Z","level":"log","context":"RoutesResolver","message":"ResellerController {/reseller}:"}
{"timestamp":"2026-10-20T07:11:55.699Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/businesses, POST} route"}
{"timestamp":"2026-10-20T07:11:55.699Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/businesses, GET} route"}
{"timestamp":"2026-10-20T07:11:55.700Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/businesses/:id, GET} route"}
{"timestamp":"2026-10-20T07:11:55.700Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/businesses/:id, PUT} route"}
{"timestamp":"2026-10-20T07:11:55.700Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/businesses/:id, DELETE} route"}
{"timestamp":"2026-10-20T07:11:55.700Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/license-usage, GET} route"}
{"timestamp":"2026-10-20T07:11:55.700Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/invoices, POST} route"}
{"timestamp":"2026-10-20T07:11:55.700Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/invoices, GET} route"}
{"timestamp":"2026-10-20T07:11:55.701Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/invoices/:id, GET} route"}
{"timestamp":"2026-10-20T07:11:55.701Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/invoices/:id, PUT} route"}
{"timestamp":"2026-10-20T07:11:55.701Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/invoices/:id, DELETE} route"}
{"timestamp":"2026-10-20T07:11:55.701Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/invoices/:id/mark-paid, PUT} route"}
{"timestamp":"2026-10-20T07:11:55.701Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/onboarding/generate-token, POST} route"}
{"timestamp":"2026-10-20T07:11:55.701Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/dashboard, GET} route"}
{"timestamp":"2026-10-20T07:11:55.701Z","level":"log","context":"RoutesResolver","message":"ResellerSubscriptionController {/reseller}:"}
{"timestamp":"2026-10-20T07:11:55.702Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/plans, POST} route"}
{"timestamp":"2026-10-20T07:11:55.702Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/plans, GET} route"}
{"timestamp":"2026-10-20T07:11:55.702Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/plans/:planId, GET} route"}
{"timestamp":"2026-10-20T07:11:55.702Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/plans/:planId, PUT} route"}
{"timestamp":"2026-10-20T07:11:55.702Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/plans/:planId, DELETE} route"}
{"timestamp":"2026-10-20T07:11:55.702Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/subscriptions/businesses/:businessId/subscription, POST} route"}
{"timestamp":"2026-10-20T07:11:55.703Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/subscriptions, GET} route"}
{"timestamp":"2026-10-20T07:11:55.703Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/subscriptions/businesses/:businessId/subscription, GET} route"}
{"timestamp":"2026-10-20T07:11:55.703Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/subscriptions/businesses/:businessId/subscription, PUT} route"}
{"timestamp":"2026-10-20T07:11:55.703Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/subscriptions/businesses/:businessId/subscription, DELETE} route"}
{"timestamp":"2026-10-20T07:11:55.703Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/subscriptions/businesses/:businessId/subscription/limits, GET} route"}
{"timestamp":"2026-10-20T07:11:55.703Z","level":"log","context":"RoutesResolver","message":"HealthController {/health}:"}
{"timestamp":"2026-10-20T07:11:55.704Z","level":"log","context":"RouterExplorer","message":"Mapped {/health, GET} route"}
{"timestamp":"2026-10-20T07:11:55.704Z","level":"log","context":"RouterExplorer","message":"Mapped {/health/test-logs, GET} route"}
{"timestamp":"2026-10-20T07:11:55.704Z","level":"log","context":"RoutesResolver","message":"AzureAdController {/azure-ad}:"}
{"timestamp":"2026-10-20T07:11:55.704Z","level":"log","context":"RouterExplorer","message":"Mapped {/azure-ad/config, POST} route"}
{"timestamp":"2026-10-20T07:11:55.704Z","level":"log","context":"RouterExplorer","message":"Mapped {/azure-ad/config, GET} route"}
{"timestamp":"2026-10-20T07:11:55.704Z","level":"log","context":"RouterExplorer","message":"Mapped {/azure-ad/test-connection, POST} route"}
{"timestamp":"2026-10-20T07:11:55.704Z","level":"log","context":"RouterExplorer","message":"Mapped {/azure-ad/sync, POST} route"}
{"timestamp":"2026-10-20T07:11:55.704Z","level":"log","context":"RoutesResolver","message":"ThreatsController {/threats}:"}
{"timestamp":"2026-10-20T07:11:55.705Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats, POST} route"}
{"timestamp":"2026-10-20T07:11:55.705Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats, GET} route"}
{"timestamp":"2026-10-20T07:11:55.705Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/chart-data, GET} route"}
{"timestamp":"2026-10-20T07:11:55.705Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/claude-search, POST} route"}
{"timestamp":"2026-10-20T07:11:55.705Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/claude-latest, POST} route"}
{"timestamp":"2026-10-20T07:11:55.706Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/claude-trending, POST} route"}
{"timestamp":"2026-10-20T07:11:55.706Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/claude-categories, POST} route"}
{"timestamp":"2026-10-20T07:11:55.706Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/claude-manual-search, POST} route"}
{"timestamp":"2026-10-20T07:11:55.706Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/claude-quick-search, POST} route"}
{"timestamp":"2026-10-20T07:11:55.706Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/scheduler-status, GET} route"}
{"timestamp":"2026-10-20T07:11:55.706Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/health-check, GET} route"}
{"timestamp":"2026-10-20T07:11:55.706Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/pause-scheduler, POST} route"}
{"timestamp":"2026-10-20T07:11:55.707Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/:id, GET} route"}
{"timestamp":"2026-10-20T07:11:55.707Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/:id, PATCH} route"}
{"timestamp":"2026-10-20T07:11:55.707Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/:id, DELETE} route"}
{"timestamp":"2026-10-20T07:11:55.707Z","level":"log","context":"RoutesResolver","message":"DomainController {/domains}:"}
{"timestamp":"2026-10-20T07:11:55.707Z","level":"log","context":"RouterExplorer","message":"Mapped {/domains, GET} route"}
{"timestamp":"2026-10-20T07:11:55.707Z","level":"log","context":"RouterExplorer","message":"Mapped {/domains/:id, GET} route"}
{"timestamp":"2026-10-20T07:11:55.708Z","level":"log","context":"RouterExplorer","message":"Mapped {/domains, POST} route"}
{"timestamp":"2026-10-20T07:11:55.708Z","level":"log","context":"RouterExplorer","message":"Mapped {/domains/:id, PUT} route"}
{"timestamp":"2026-10-20T07:11:55.708Z","level":"log","context":"RouterExplorer","message":"Mapped {/domains/:id, DELETE} route"}
{"timestamp":"2026-10-20T07:11:55.708Z","level":"log","context":"RouterExplorer","message":"Mapped {/domains/seed, POST} route"}
{"timestamp":"2026-10-20T07:11:55.708Z","level":"log","context":"RoutesResolver","message":"MspSubscriptionController {/msp-subscription}:"}
{"timestamp":"2026-10-20T07:11:55.708Z","level":"log","context":"RouterExplorer","message":"Mapped {/msp-subscription/current, GET} route"}
{"timestamp":"2026-10-20T07:11:55.708Z","level":"log","context":"RouterExplorer","message":"Mapped {/msp-subscription/invoices, GET} route"}
{"timestamp":"2026-10-20T07:11:55.709Z","level":"log","context":"RouterExplorer","message":"Mapped {/msp-subscription/invoice/:invoiceId/pdf, GET} route"}
{"timestamp":"2026-10-20T07:11:55.709Z","level":"log","context":"RoutesResolver","message":"MspSubscriptionController {/api/msp-subscription}:"}
{"timestamp":"2026-10-20T07:11:55.709Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/msp-subscription/current, GET} route"}
{"timestamp":"2026-10-20T07:11:55.709Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/msp-subscription/invoices, GET} route"}
{"timestamp":"2026-10-20T07:11:55.709Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/msp-subscription/invoice/:invoiceId/pdf, GET} route"}
{"timestamp":"2026-10-20T07:11:55.775Z","level":"log","context":"NestApplication","message":"Nest application successfully started"}
{"timestamp":"2026-10-20T07:11:55.789Z","level":"log","context":"Bootstrap","message":"Users API successfully started on port 3842"}
{"timestamp":"2026-10-20T07:11:55.789Z","level":"log","context":"SeedService","message":"🌱 Starting database seeding..."}
{"timestamp":"2026-10-20T07:11:55.795Z","level":"log","context":"SeedService","message":"Admin account already exists, skipping seed"}
{"timestamp":"2026-10-20T07:11:55.798Z","level":"log","context":"SeedService","message":"Reseller account already exists, skipping seed"}
{"timestamp":"2026-10-20T07:11:55.800Z","level":"log","context":"SeedService","message":"MSP account already exists, skipping seed"}
{"timestamp":"2026-10-20T07:11:55.800Z","level":"log","context":"SeedService","message":"✅ Database seeding completed successfully"}
{"timestamp":"2026-10-20T07:11:55.829Z","level":"log","context":"UsersApiController","message":"Hello endpoint accessed"}
{"timestamp":"2026-10-20T07:53:13.854Z","level":"warn","context":"LegacyRouteConverter","message":"Unsupported route path: \"/lp/*\". In previous versions, the symbols ?, *, and + were used to denote optional or repeating path parameters. The latest version of \"path-to-regexp\" now requires the use of named parameters. For example, instead of using a route like /users/* to capture all routes starting with \"/users\", you should use /users/*path. For more details, refer to the migration guide. Attempting to auto-convert..."}
{"timestamp":"2026-10-20T07:53:13.890Z","level":"log","context":"Bootstrap","message":"Starting Users API on port 3842..."}
{"timestamp":"2026-10-20T07:53:13.894Z","level":"log","context":"RoutesResolver","message":"UsersApiController {/}:"}
{"timestamp":"2026-10-20T07:53:13.897Z","level":"log","context":"RouterExplorer","message":"Mapped {/, GET} route"}
{"timestamp":"2026-10-20T07:53:13.898Z","level":"log","context":"RoutesResolver","message":"AuthController {/auth}:"}
{"timestamp":"2026-10-20T07:53:13.898Z","level":"log","context":"RouterExplorer","message":"Mapped {/auth/login, POST} route"}
{"timestamp":"2026-10-20T07:53:13.899Z","level":"log","context":"RouterExplorer","message":"Mapped {/auth/admin/login, POST} route"}
{"timestamp":"2026-10-20T07:53:13.900Z","level":"log","context":"RouterExplorer","message":"Mapped {/auth/send-otp, POST} route"}
{"timestamp":"2026-10-20T07:53:13.900Z","level":"log","context":"RouterExplorer","message":"Mapped {/auth/verify-otp, POST} route"}
{"timestamp":"2026-10-20T07:53:13.900Z","level":"log","context":"RouterExplorer","message":"Mapped {/auth/signup, POST} route"}
{"timestamp":"2026-10-20T07:53:13.901Z","level":"log","context":"RouterExplorer","message":"Mapped {/auth/subscription-status, GET} route"}
{"timestamp":"2026-10-20T07:53:13.901Z","level":"log","context":"RoutesResolver","message":"AdminMspController {/admin/msp}:"}
{"timestamp":"2026-10-20T07:53:13.902Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/msp, GET} route"}
{"timestamp":"2026-10-20T07:53:13.902Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/msp/:id, GET} route"}
{"timestamp":"2026-10-20T07:53:13.903Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/msp, POST} route"}
{"timestamp":"2026-10-20T07:53:13.903Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/msp/:id, PUT} route"}
{"timestamp":"2026-10-20T07:53:13.904Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/msp/:id, DELETE} route"}
{"timestamp":"2026-10-20T07:53:13.904Z","level":"log","context":"RoutesResolver","message":"AdminLicenseController {/admin/licenses}:"}
{"timestamp":"2026-10-20T07:53:13.904Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/licenses/summary, GET} route"}
{"timestamp":"2026-10-20T07:53:13.904Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/licenses/msp/:mspId, GET} route"}
{"timestamp":"2026-10-20T07:53:13.904Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/licenses/msp/:mspId, PUT} route"}
{"timestamp":"2026-10-20T07:53:13.905Z","level":"log","context":"RoutesResolver","message":"AdminImpersonationController {/admin/impersonation}:"}
{"timestamp":"2026-10-20T07:53:13.907Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/impersonation/msp-users, GET} route"}
{"timestamp":"2026-10-20T07:53:13.907Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/impersonation/impersonate, POST} route"}
{"timestamp":"2026-10-20T07:53:13.907Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/impersonation/stop, POST} route"}
{"timestamp":"2026-10-20T07:53:13.908Z","level":"log","context":"RoutesResolver","message":"AdminAiUsageController {/admin/ai-usage}:"}
{"timestamp":"2026-10-20T07:53:13.908Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-usage, GET} route"}
{"timestamp":"2026-10-20T07:53:13.908Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-usage/business/:businessId, GET} route"}
{"timestamp":"2026-10-20T07:53:13.908Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-usage/report/monthly, GET} route"}
{"timestamp":"2026-10-20T07:53:13.909Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-usage/pricing, GET} route"}
{"timestamp":"2026-10-20T07:53:13.909Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-usage/pricing, POST} route"}
{"timestamp":"2026-10-20T07:53:13.909Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-usage/credit/:businessId, PUT} route"}
{"timestamp":"2026-10-20T07:53:13.909Z","level":"log","context":"RoutesResolver","message":"AdminAiUsageController {/api/admin/ai-usage}:"}
{"timestamp":"2026-10-20T07:53:13.909Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-usage, GET} route"}
{"timestamp":"2026-10-20T07:53:13.909Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-usage/business/:businessId, GET} route"}
{"timestamp":"2026-10-20T07:53:13.910Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-usage/report/monthly, GET} route"}
{"timestamp":"2026-10-20T07:53:13.910Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-usage/pricing, GET} route"}
{"timestamp":"2026-10-20T07:53:13.910Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-usage/pricing, POST} route"}
{"timestamp":"2026-10-20T07:53:13.910Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-usage/credit/:businessId, PUT} route"}
{"timestamp":"2026-10-20T07:53:13.910Z","level":"log","context":"RoutesResolver","message":"AdminAiModelController {/admin/ai-models}:"}
{"timestamp":"2026-10-20T07:53:13.910Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models, POST} route"}
{"timestamp":"2026-10-20T07:53:13.911Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models, GET} route"}
{"timestamp":"2026-10-20T07:53:13.911Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/default, GET} route"}
{"timestamp":"2026-10-20T07:53:13.911Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/:id, GET} route"}
{"timestamp":"2026-10-20T07:53:13.911Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/:id, PUT} route"}
{"timestamp":"2026-10-20T07:53:13.911Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/:id, DELETE} route"}
{"timestamp":"2026-10-20T07:53:13.912Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/:id/set-default, POST} route"}
{"timestamp":"2026-10-20T07:53:13.912Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/assign-to-business, POST} route"}
{"timestamp":"2026-10-20T07:53:13.912Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/business/:businessId, GET} route"}
{"timestamp":"2026-10-20T07:53:13.912Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/:id/businesses, GET} route"}
{"timestamp":"2026-10-20T07:53:13.912Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/initialize-defaults, POST} route"}
{"timestamp":"2026-10-20T07:53:13.912Z","level":"log","context":"RoutesResolver","message":"AdminAiModelController {/api/admin/ai-models}:"}
{"timestamp":"2026-10-20T07:53:13.913Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models, POST} route"}
{"timestamp":"2026-10-20T07:53:13.913Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models, GET} route"}
{"timestamp":"2026-10-20T07:53:13.913Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/default, GET} route"}
{"timestamp":"2026-10-20T07:53:13.913Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/:id, GET} route"}
{"timestamp":"2026-10-20T07:53:13.913Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/:id, PUT} route"}
{"timestamp":"2026-10-20T07:53:13.913Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/:id, DELETE} route"}
{"timestamp":"2026-10-20T07:53:13.914Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/:id/set-default, POST} route"}
{"timestamp":"2026-10-20T07:53:13.914Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/assign-to-business, POST} route"}
{"timestamp":"2026-10-20T07:53:13.914Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/business/:businessId, GET} route"}
{"timestamp":"2026-10-20T07:53:13.914Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/:id/businesses, GET} route"}
{"timestamp":"2026-10-20T07:53:13.914Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/initialize-defaults, POST} route"}
{"timestamp":"2026-10-20T07:53:13.915Z","level":"log","context":"RoutesResolver","message":"AdminBusinessController {/admin/businesses}:"}
{"timestamp":"2026-10-20T07:53:13.915Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/businesses, GET} route"}
{"timestamp":"2026-10-20T07:53:13.915Z","level":"log","context":"RoutesResolver","message":"ResellerManagementController {/admin/resellers}:"}
{"timestamp":"2026-10-20T07:53:13.915Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/resellers, GET} route"}
{"timestamp":"2026-10-20T07:53:13.915Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/resellers/create-default, POST} route"}
{"timestamp":"2026-10-20T07:53:13.915Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/resellers, POST} route"}
{"timestamp":"2026-10-20T07:53:13.915Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/resellers/:id/toggle-status, PUT} route"}
{"timestamp":"2026-10-20T07:53:13.916Z","level":"log","context":"RoutesResolver","message":"SubscriptionController {/subscription}:"}
{"timestamp":"2026-10-20T07:53:13.916Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/plans, GET} route"}
{"timestamp":"2026-10-20T07:53:13.916Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/calculate-price, POST} route"}
{"timestamp":"2026-10-20T07:53:13.916Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/current, GET} route"}
{"timestamp":"2026-10-20T07:53:13.916Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/create, POST} route"}
{"timestamp":"2026-10-20T07:53:13.916Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/:id, PUT} route"}
{"timestamp":"2026-10-20T07:53:13.917Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/:id/cancel, DELETE} route"}
{"timestamp":"2026-10-20T07:53:13.917Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/sync/:stripeSubscriptionId, POST} route"}
{"timestamp":"2026-10-20T07:53:13.917Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/payments, GET} route"}
{"timestamp":"2026-10-20T07:53:13.917Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/payments/stats, GET} route"}
{"timestamp":"2026-10-20T07:53:13.917Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/payment/:id, GET} route"}
{"timestamp":"2026-10-20T07:53:13.917Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/payment-methods/attach, POST} route"}
{"timestamp":"2026-10-20T07:53:13.918Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/payment-methods/:paymentMethodId, DELETE} route"}
{"timestamp":"2026-10-20T07:53:13.918Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/payment-methods, GET} route"}
{"timestamp":"2026-10-20T07:53:13.918Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/setup-intent, POST} route"}
{"timestamp":"2026-10-20T07:53:13.918Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/update-employee-count, POST} route"}
{"timestamp":"2026-10-20T07:53:13.918Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/retry-payment/:subscriptionId, POST} route"}
{"timestamp":"2026-10-20T07:53:13.918Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/invoice/:invoiceId/pdf, GET} route"}
{"timestamp":"2026-10-20T07:53:13.919Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/preview-upgrade, POST} route"}
{"timestamp":"2026-10-20T07:53:13.919Z","level":"log","context":"RoutesResolver","message":"SubscriptionController {/api/subscription}:"}
{"timestamp":"2026-10-20T07:53:13.919Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/plans, GET} route"}
{"timestamp":"2026-10-20T07:53:13.919Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/calculate-price, POST} route"}
{"timestamp":"2026-10-20T07:53:13.919Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/current, GET} route"}
{"timestamp":"2026-10-20T07:53:13.919Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/create, POST} route"}
{"timestamp":"2026-10-20T07:53:13.919Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/:id, PUT} route"}
{"timestamp":"2026-10-20T07:53:13.920Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/:id/cancel, DELETE} route"}
{"timestamp":"2026-10-20T07:53:13.920Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/sync/:stripeSubscriptionId, POST} route"}
{"timestamp":"2026-10-20T07:53:13.920Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/payments, GET} route"}
{"timestamp":"2026-10-20T07:53:13.920Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/payments/stats, GET} route"}
{"timestamp":"2026-10-20T07:53:13.920Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/payment/:id, GET} route"}
{"timestamp":"2026-10-20T07:53:13.920Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/payment-methods/attach, POST} route"}
{"timestamp":"2026-10-20T07:53:13.920Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/payment-methods/:paymentMethodId, DELETE} route"}
{"timestamp":"2026-10-20T07:53:13.921Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/payment-methods, GET} route"}
{"timestamp":"2026-10-20T07:53:13.921Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/setup-intent, POST} route"}
{"timestamp":"2026-10-20T07:53:13.921Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/update-employee-count, POST} route"}
{"timestamp":"2026-10-20T07:53:13.921Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/retry-payment/:subscriptionId, POST} route"}
{"timestamp":"2026-10-20T07:53:13.921Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/invoice/:invoiceId/pdf, GET} route"}
{"timestamp":"2026-10-20T07:53:13.921Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/preview-upgrade, POST} route"}
{"timestamp":"2026-10-20T07:53:13.921Z","level":"log","context":"RoutesResolver","message":"StripeWebhookController {/stripe/webhook}:"}
{"timestamp":"2026-10-20T07:53:13.922Z","level":"log","context":"RouterExplorer","message":"Mapped {/stripe/webhook/test, GET} route"}
{"timestamp":"2026-10-20T07:53:13.922Z","level":"log","context":"RouterExplorer","message":"Mapped {/stripe/webhook, POST} route"}
{"timestamp":"2026-10-20T07:53:13.922Z","level":"log","context":"RoutesResolver","message":"EmailController {/email-templates}:"}
{"timestamp":"2026-10-20T07:53:13.922Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates/test, POST} route"}
{"timestamp":"2026-10-20T07:53:13.922Z","level":"log","context":"RoutesResolver","message":"EmployeeController {/employees}:"}
{"timestamp":"2026-10-20T07:53:13.922Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees, POST} route"}
{"timestamp":"2026-10-20T07:53:13.922Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees, GET} route"}
{"timestamp":"2026-10-20T07:53:13.922Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees/export, GET} route"}
{"timestamp":"2026-10-20T07:53:13.923Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees/risk-stats, GET} route"}
{"timestamp":"2026-10-20T07:53:13.923Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees/:id, GET} route"}
{"timestamp":"2026-10-20T07:53:13.923Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees/:id, PUT} route"}
{"timestamp":"2026-10-20T07:53:13.923Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees/:id, DELETE} route"}
{"timestamp":"2026-10-20T07:53:13.923Z","level":"log","context":"RoutesResolver","message":"GroupController {/groups}:"}
{"timestamp":"2026-10-20T07:53:13.923Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups, POST} route"}
{"timestamp":"2026-10-20T07:53:13.923Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups, GET} route"}
{"timestamp":"2026-10-20T07:53:13.924Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups/standard, GET} route"}
{"timestamp":"2026-10-20T07:53:13.924Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups/:id, GET} route"}
{"timestamp":"2026-10-20T07:53:13.924Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups/:id, PUT} route"}
{"timestamp":"2026-10-20T07:53:13.924Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups/:id, DELETE} route"}
{"timestamp":"2026-10-20T07:53:13.924Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups/:id/info, GET} route"}
{"timestamp":"2026-10-20T07:53:13.924Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups/:id/with-employees, GET} route"}
{"timestamp":"2026-10-20T07:53:13.924Z","level":"log","context":"RoutesResolver","message":"SenderProfileController {/sender-profiles}:"}
{"timestamp":"2026-10-20T07:53:13.925Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles, GET} route"}
{"timestamp":"2026-10-20T07:53:13.925Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles/:id, GET} route"}
{"timestamp":"2026-10-20T07:53:13.925Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles, POST} route"}
{"timestamp":"2026-10-20T07:53:13.925Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles/:id, PUT} route"}
{"timestamp":"2026-10-20T07:53:13.925Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles/:id, DELETE} route"}
{"timestamp":"2026-10-20T07:53:13.925Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles/:id/verify-domain, POST} route"}
{"timestamp":"2026-10-20T07:53:13.926Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles/domain-verification, GET} route"}
{"timestamp":"2026-10-20T07:53:13.926Z","level":"log","context":"RoutesResolver","message":"EmailTemplateController {/email-templates}:"}
{"timestamp":"2026-10-20T07:53:13.926Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates, GET} route"}
{"timestamp":"2026-10-20T07:53:13.926Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates/:id, GET} route"}
{"timestamp":"2026-10-20T07:53:13.926Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates, POST} route"}
{"timestamp":"2026-10-20T07:53:13.926Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates/:id, PUT} route"}
{"timestamp":"2026-10-20T07:53:13.926Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates/:id, DELETE} route"}
{"timestamp":"2026-10-20T07:53:13.926Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates/:id/duplicate, POST} route"}
{"timestamp":"2026-10-20T07:53:13.927Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates/:id/preview, GET} route"}
{"timestamp":"2026-10-20T07:53:13.927Z","level":"log","context":"RoutesResolver","message":"ScenarioController {/scenarios}:"}
{"timestamp":"2026-10-20T07:53:13.927Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios, POST} route"}
{"timestamp":"2026-10-20T07:53:13.927Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios/generate-content, POST} route"}
{"timestamp":"2026-10-20T07:53:13.927Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios, GET} route"}
{"timestamp":"2026-10-20T07:53:13.927Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios/:id, GET} route"}
{"timestamp":"2026-10-20T07:53:13.927Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios/:id, PUT} route"}
{"timestamp":"2026-10-20T07:53:13.928Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios/:id, DELETE} route"}
{"timestamp":"2026-10-20T07:53:13.928Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios/generate-from-json, POST} route"}
{"timestamp":"2026-10-20T07:53:13.928Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios/:id/save-as-custom-scenario, POST} route"}
{"timestamp":"2026-10-20T07:53:13.928Z","level":"log","context":"RoutesResolver","message":"CampaignController {/campaigns}:"}
{"timestamp":"2026-10-20T07:53:13.928Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns, POST} route"}
{"timestamp":"2026-10-20T07:53:13.928Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns, GET} route"}
{"timestamp":"2026-10-20T07:53:13.928Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id, GET} route"}
{"timestamp":"2026-10-20T07:53:13.929Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id/details, GET} route"}
{"timestamp":"2026-10-20T07:53:13.929Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id/employees, GET} route"}
{"timestamp":"2026-10-20T07:53:13.929Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id, PATCH} route"}
{"timestamp":"2026-10-20T07:53:13.929Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id/start, POST} route"}
{"timestamp":"2026-10-20T07:53:13.929Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id/stop, POST} route"}
{"timestamp":"2026-10-20T07:53:13.930Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id/duplicate, POST} route"}
{"timestamp":"2026-10-20T07:53:13.930Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id, DELETE} route"}
{"timestamp":"2026-10-20T07:53:13.930Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/auto-generate-program, POST} route"}
{"timestamp":"2026-10-20T07:53:13.930Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/generate-from-threat-intelligence, POST} route"}
{"timestamp":"2026-10-20T07:53:13.930Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id/risk-score, GET} route"}
{"timestamp":"2026-10-20T07:53:13.930Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/recalculate-risk-scores, POST} route"}
{"timestamp":"2026-10-20T07:53:13.930Z","level":"log","context":"RoutesResolver","message":"CampaignController {/api/campaigns}:"}
{"timestamp":"2026-10-20T07:53:13.930Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns, POST} route"}
{"timestamp":"2026-10-20T07:53:13.931Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns, GET} route"}
{"timestamp":"2026-10-20T07:53:13.931Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id, GET} route"}
{"timestamp":"2026-10-20T07:53:13.931Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id/details, GET} route"}
{"timestamp":"2026-10-20T07:53:13.931Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id/employees, GET} route"}
{"timestamp":"2026-10-20T07:53:13.931Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id, PATCH} route"}
{"timestamp":"2026-10-20T07:53:13.931Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id/start, POST} route"}
{"timestamp":"2026-10-20T07:53:13.931Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id/stop, POST} route"}
{"timestamp":"2026-10-20T07:53:13.932Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id/duplicate, POST} route"}
{"timestamp":"2026-10-20T07:53:13.932Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id, DELETE} route"}
{"timestamp":"2026-10-20T07:53:13.932Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/auto-generate-program, POST} route"}
{"timestamp":"2026-10-20T07:53:13.932Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/generate-from-threat-intelligence, POST} route"}
{"timestamp":"2026-10-20T07:53:13.932Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id/risk-score, GET} route"}
{"timestamp":"2026-10-20T07:53:13.932Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/recalculate-risk-scores, POST} route"}
{"timestamp":"2026-10-20T07:53:13.932Z","level":"log","context":"RoutesResolver","message":"NotificationsController {/notifications}:"}
{"timestamp":"2026-10-20T07:53:13.933Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications, POST} route"}
{"timestamp":"2026-10-20T07:53:13.933Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications, GET} route"}
{"timestamp":"2026-10-20T07:53:13.933Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/unread, GET} route"}
{"timestamp":"2026-10-20T07:53:13.933Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/unread-count, GET} route"}
{"timestamp":"2026-10-20T07:53:13.933Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/:id, GET} route"}
{"timestamp":"2026-10-20T07:53:13.933Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/:id, PATCH} route"}
{"timestamp":"2026-10-20T07:53:13.934Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/:id/read, PATCH} route"}
{"timestamp":"2026-10-20T07:53:13.934Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/mark-all-read, PATCH} route"}
{"timestamp":"2026-10-20T07:53:13.934Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/:id, DELETE} route"}
{"timestamp":"2026-10-20T07:53:13.934Z","level":"log","context":"RoutesResolver","message":"LandingPageController {/lp}:"}
{"timestamp":"2026-10-20T07:53:13.934Z","level":"log","context":"RouterExplorer","message":"Mapped {/lp/image, GET} route"}
{"timestamp":"2026-10-20T07:53:13.935Z","level":"log","context":"RouterExplorer","message":"Mapped {/lp/learning, GET} route"}
{"timestamp":"2026-10-20T07:53:13.935Z","level":"log","context":"RouterExplorer","message":"Mapped {/lp/submit, POST} route"}
{"timestamp":"2026-10-20T07:53:13.935Z","level":"log","context":"RouterExplorer","message":"Mapped {/lp/test, GET} route"}
{"timestamp":"2026-10-20T07:53:13.935Z","level":"warn","context":"LegacyRouteConverter","message":"Unsupported route path: \"/lp/*\". In previous versions, the symbols ?, *, and + were used to denote optional or repeating path parameters. The latest version of \"path-to-regexp\" now requires the use of named parameters. For example, instead of using a route like /users/* to capture all routes starting with \"/users\", you should use /users/*path. For more details, refer to the migration guide. Attempting to auto-convert..."}
{"timestamp":"2026-10-20T07:53:13.936Z","level":"log","context":"RouterExplorer","message":"Mapped {/lp/*, ALL} route"}
{"timestamp":"2026-10-20T07:53:13.936Z","level":"log","context":"RoutesResolver","message":"SupportController {/support}:"}
{"timestamp":"2026-10-20T07:53:13.936Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets, POST} route"}
{"timestamp":"2026-10-20T07:53:13.936Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets, GET} route"}
{"timestamp":"2026-10-20T07:53:13.936Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets/:id, GET} route"}
{"timestamp":"2026-10-20T07:53:13.936Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets/:id, PATCH} route"}
{"timestamp":"2026-10-20T07:53:13.937Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets/:id, DELETE} route"}
{"timestamp":"2026-10-20T07:53:13.937Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets/:id/messages, POST} route"}
{"timestamp":"2026-10-20T07:53:13.937Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets/:id/close, POST} route"}
{"timestamp":"2026-10-20T07:53:13.937Z","level":"log","context":"RoutesResolver","message":"BusninessMetricsController {/business-metrics}:"}
{"timestamp":"2026-10-20T07:53:13.937Z","level":"log","context":"RouterExplorer","message":"Mapped {/business-metrics, GET} route"}
{"timestamp":"2026-10-20T07:53:13.937Z","level":"log","context":"RoutesResolver","message":"UsersController {/users}:"}
{"timestamp":"2026-10-20T07:53:13.937Z","level":"log","context":"RouterExplorer","message":"Mapped {/users/:id, PUT} route"}
{"timestamp":"2026-10-20T07:53:13.938Z","level":"log","context":"RouterExplorer","message":"Mapped {/users/settings, GET} route"}
{"timestamp":"2026-10-20T07:53:13.938Z","level":"log","context":"RouterExplorer","message":"Mapped {/users/settings/general, PUT} route"}
{"timestamp":"2026-10-20T07:53:13.938Z","level":"log","context":"RouterExplorer","message":"Mapped {/users/company/settings, PUT} route"}
{"timestamp":"2026-10-20T07:53:13.938Z","level":"log","context":"RouterExplorer","message":"Mapped {/users/change-password, POST} route"}
{"timestamp":"2026-10-20T07:53:13.938Z","level":"log","context":"RouterExplorer","message":"Mapped {/users/localization/settings, PUT} route"}
{"timestamp":"2026-10-20T07:53:13.938Z","level":"log","context":"RoutesResolver","message":"PartnerController {/partner}:"}
{"timestamp":"2026-10-20T07:53:13.939Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses, POST} route"}
{"timestamp":"2026-10-20T07:53:13.939Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses, GET} route"}
{"timestamp":"2026-10-20T07:53:13.939Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses/:id, GET} route"}
{"timestamp":"2026-10-20T07:53:13.939Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses/:id, PUT} route"}
{"timestamp":"2026-10-20T07:53:13.939Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses/:id, DELETE} route"}
{"timestamp":"2026-10-20T07:53:13.939Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses/:id/impersonate, POST} route"}
{"timestamp":"2026-10-20T07:53:13.939Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses/stop-impersonation, POST} route"}
{"timestamp":"2026-10-20T07:53:13.940Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/license-usage, GET} route"}
{"timestamp":"2026-10-20T07:53:13.940Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/invoices, POST} route"}
{"timestamp":"2026-10-20T07:53:13.940Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/invoices, GET} route"}
{"timestamp":"2026-10-20T07:53:13.940Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/invoices/:id, GET} route"}
{"timestamp":"2026-10-20T07:53:13.940Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/invoices/:id, PUT} route"}
{"timestamp":"2026-10-20T07:53:13.940Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/invoices/:id, DELETE} route"}
{"timestamp":"2026-10-20T07:53:13.941Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/invoices/:id/mark-paid, PUT} route"}
{"timestamp":"2026-10-20T07:53:13.941Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/onboarding/generate-token, POST} route"}
{"timestamp":"2026-10-20T07:53:13.941Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/dashboard, GET} route"}
{"timestamp":"2026-10-20T07:53:13.941Z","level":"log","context":"RoutesResolver","message":"MspSubscriptionController {/partner/msp-subscriptions}:"}
{"timestamp":"2026-10-20T07:53:13.941Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/plans, POST} route"}
{"timestamp":"2026-10-20T07:53:13.941Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/plans, GET} route"}
{"timestamp":"2026-10-20T07:53:13.941Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/plans/:planId, GET} route"}
{"timestamp":"2026-10-20T07:53:13.942Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/plans/:planId, PUT} route"}
{"timestamp":"2026-10-20T07:53:13.942Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/plans/:planId, DELETE} route"}
{"timestamp":"2026-10-20T07:53:13.942Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/businesses/:businessId/subscription, POST} route"}
{"timestamp":"2026-10-20T07:53:13.942Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions, GET} route"}
{"timestamp":"2026-10-20T07:53:13.942Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/businesses/:businessId/subscription, GET} route"}
{"timestamp":"2026-10-20T07:53:13.942Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/businesses/:businessId/subscription, PUT} route"}
{"timestamp":"2026-10-20T07:53:13.942Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/businesses/:businessId/subscription, DELETE} route"}
{"timestamp":"2026-10-20T07:53:13.943Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/businesses/:businessId/subscription/limits, GET} route"}
{"timestamp":"2026-10-20T07:53:13.943Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/businesses/:businessId/subscription/change-plan, PUT} route"}
{"timestamp":"2026-10-20T07:53:13.943Z","level":"log","context":"RoutesResolver","message":"OnboardingController {/onboarding}:"}
{"timestamp":"2026-10-20T07:53:13.943Z","level":"log","context":"RouterExplorer","message":"Mapped {/onboarding/validate/:token, GET} route"}
{"timestamp":"2026-10-20T07:53:13.943Z","level":"log","context":"RouterExplorer","message":"Mapped {/onboarding/complete/:token, POST} route"}
{"timestamp":"2026-10-20T07:53:13.943Z","level":"log","context":"RoutesResolver","message":"ResellerController {/reseller}:"}
{"timestamp":"2026-10-20T07:53:13.943Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/businesses, POST} route"}
{"timestamp":"2026-10-20T07:53:13.944Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/businesses, GET} route"}
{"timestamp":"2026-10-20T07:53:13.944Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/businesses/:id, GET} route"}
{"timestamp":"2026-10-20T07:53:13.944Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/businesses/:id, PUT} route"}
{"timestamp":"2026-10-20T07:53:13.944Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/businesses/:id, DELETE} route"}
{"timestamp":"2026-10-20T07:53:13.944Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/license-usage, GET} route"}
{"timestamp":"2026-10-20T07:53:13.944Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/invoices, POST} route"}
{"timestamp":"2026-10-20T07:53:13.944Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/invoices, GET} route"}
{"timestamp":"2026-10-20T07:53:13.945Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/invoices/:id, GET} route"}
{"timestamp":"2026-10-20T07:53:13.945Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/invoices/:id, PUT} route"}
{"timestamp":"2026-10-20T07:53:13.945Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/invoices/:id, DELETE} route"}
{"timestamp":"2026-10-20T07:53:13.945Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/invoices/:id/mark-paid, PUT} route"}
{"timestamp":"2026-10-20T07:53:13.945Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/onboarding/generate-token, POST} route"}
{"timestamp":"2026-10-20T07:53:13.945Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/dashboard, GET} route"}
{"timestamp":"2026-10-20T07:53:13.945Z","level":"log","context":"RoutesResolver","message":"ResellerSubscriptionController {/reseller}:"}
{"timestamp":"2026-10-20T07:53:13.946Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/plans, POST} route"}
{"timestamp":"2026-10-20T07:53:13.946Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/plans, GET} route"}
{"timestamp":"2026-10-20T07:53:13.946Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/plans/:planId, GET} route"}
{"timestamp":"2026-10-20T07:53:13.946Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/plans/:planId, PUT} route"}
{"timestamp":"2026-10-20T07:53:13.946Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/plans/:planId, DELETE} route"}
{"timestamp":"2026-10-20T07:53:13.946Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/subscriptions/businesses/:businessId/subscription, POST} route"}
{"timestamp":"2026-10-20T07:53:13.946Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/subscriptions, GET} route"}
{"timestamp":"2026-10-20T07:53:13.947Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/subscriptions/businesses/:businessId/subscription, GET} route"}
{"timestamp":"2026-10-20T07:53:13.947Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/subscriptions/businesses/:businessId/subscription, PUT} route"}
{"timestamp":"2026-10-20T07:53:13.947Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/subscriptions/businesses/:businessId/subscription, DELETE} route"}
{"timestamp":"2026-10-20T07:53:13.947Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/subscriptions/businesses/:businessId/subscription/limits, GET} route"}
{"timestamp":"2026-10-20T07:53:13.947Z","level":"log","context":"RoutesResolver","message":"HealthController {/health}:"}
{"timestamp":"2026-10-20T07:53:13.947Z","level":"log","context":"RouterExplorer","message":"Mapped {/health, GET} route"}
{"timestamp":"2026-10-20T07:53:13.948Z","level":"log","context":"RouterExplorer","message":"Mapped {/health/test-logs, GET} route"}
{"timestamp":"2026-10-20T07:53:13.948Z","level":"log","context":"RoutesResolver","message":"AzureAdController {/azure-ad}:"}
{"timestamp":"2026-10-20T07:53:13.948Z","level":"log","context":"RouterExplorer","message":"Mapped {/azure-ad/config, POST} route"}
{"timestamp":"2026-10-20T07:53:13.948Z","level":"log","context":"RouterExplorer","message":"Mapped {/azure-ad/config, GET} route"}
{"timestamp":"2026-10-20T07:53:13.948Z","level":"log","context":"RouterExplorer","message":"Mapped {/azure-ad/test-connection, POST} route"}
{"timestamp":"2026-10-20T07:53:13.948Z","level":"log","context":"RouterExplorer","message":"Mapped {/azure-ad/sync, POST} route"}
{"timestamp":"2026-10-20T07:53:13.948Z","level":"log","context":"RoutesResolver","message":"ThreatsController {/threats}:"}
{"timestamp":"2026-10-20T07:53:13.948Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats, POST} route"}
{"timestamp":"2026-10-20T07:53:13.949Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats, GET} route"}
{"timestamp":"2026-10-20T07:53:13.949Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/chart-data, GET} route"}
{"timestamp":"2026-10-20T07:53:13.949Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/claude-search, POST} route"}
{"timestamp":"2026-10-20T07:53:13.949Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/claude-latest, POST} route"}
{"timestamp":"2026-10-20T07:53:13.949Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/claude-trending, POST} route"}
{"timestamp":"2026-10-20T07:53:13.949Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/claude-categories, POST} route"}
{"timestamp":"2026-10-20T07:53:13.950Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/claude-manual-search, POST} route"}
{"timestamp":"2026-10-20T07:53:13.950Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/claude-quick-search, POST} route"}
{"timestamp":"2026-10-20T07:53:13.950Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/scheduler-status, GET} route"}
{"timestamp":"2026-10-20T07:53:13.950Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/health-check, GET} route"}
{"timestamp":"2026-10-20T07:53:13.950Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/pause-scheduler, POST} route"}
{"timestamp":"2026-10-20T07:53:13.950Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/:id, GET} route"}
{"timestamp":"2026-10-20T07:53:13.950Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/:id, PATCH} route"}
{"timestamp":"2026-10-20T07:53:13.951Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/:id, DELETE} route"}
{"timestamp":"2026-10-20T07:53:13.951Z","level":"log","context":"RoutesResolver","message":"DomainController {/domains}:"}
{"timestamp":"2026-10-20T07:53:13.951Z","level":"log","context":"RouterExplorer","message":"Mapped {/domains, GET} route"}
{"timestamp":"2026-10-20T07:53:13.951Z","level":"log","context":"RouterExplorer","message":"Mapped {/domains/:id, GET} route"}
{"timestamp":"2026-10-20T07:53:13.951Z","level":"log","context":"RouterExplorer","message":"Mapped {/domains, POST} route"}
{"timestamp":"2026-10-20T07:53:13.951Z","level":"log","context":"RouterExplorer","message":"Mapped {/domains/:id, PUT} route"}
{"timestamp":"2026-10-20T07:53:13.951Z","level":"log","context":"RouterExplorer","message":"Mapped {/domains/:id, DELETE} route"}
{"timestamp":"2026-10-20T07:53:13.952Z","level":"log","context":"RouterExplorer","message":"Mapped {/domains/seed, POST} route"}
{"timestamp":"2026-10-20T07:53:13.952Z","level":"log","context":"RoutesResolver","message":"MspSubscriptionController {/msp-subscription}:"}
{"timestamp":"2026-10-20T07:53:13.952Z","level":"log","context":"RouterExplorer","message":"Mapped {/msp-subscription/current, GET} route"}
{"timestamp":"2026-10-20T07:53:13.952Z","level":"log","context":"RouterExplorer","message":"Mapped {/msp-subscription/invoices, GET} route"}
{"timestamp":"2026-10-20T07:53:13.952Z","level":"log","context":"RouterExplorer","message":"Mapped {/msp-subscription/invoice/:invoiceId/pdf, GET} route"}
{"timestamp":"2026-10-20T07:53:13.952Z","level":"log","context":"RoutesResolver","message":"MspSubscriptionController {/api/msp-subscription}:"}
{"timestamp":"2026-10-20T07:53:13.952Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/msp-subscription/current, GET} route"}
{"timestamp":"2026-10-20T07:53:13.952Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/msp-subscription/invoices, GET} route"}
{"timestamp":"2026-10-20T07:53:13.953Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/msp-subscription/invoice/:invoiceId/pdf, GET} route"}
{"timestamp":"2026-10-20T07:53:14.015Z","level":"log","context":"NestApplication","message":"Nest application successfully started"}
{"timestamp":"2026-10-20T07:53:14.021Z","level":"log","context":"Bootstrap","message":"Users API successfully started on port 3842"}
{"timestamp":"2026-10-20T07:53:14.021Z","level":"log","context":"SeedService","message":"🌱 Starting database seeding..."}
{"timestamp":"2026-10-20T07:53:14.026Z","level":"log","context":"SeedService","message":"Admin account already exists, skipping seed"}
{"timestamp":"2026-10-20T07:53:14.028Z","level":"log","context":"SeedService","message":"Reseller account already exists, skipping seed"}
{"timestamp":"2026-10-20T07:53:14.029Z","level":"log","context":"SeedService","message":"MSP account already exists, skipping seed"}
{"timestamp":"2026-10-20T07:53:14.029Z","level":"log","context":"SeedService","message":"✅ Database seeding completed successfully"}
{"timestamp":"2026-10-20T08:23:17.073Z","level":"warn","context":"LegacyRouteConverter","message":"Unsupported route path: \"/lp/*\". In previous versions, the symbols ?, *, and + were used to denote optional or repeating path parameters. The latest version of \"path-to-regexp\" now requires the use of named parameters. For example, instead of using a route like /users/* to capture all routes starting with \"/users\", you should use /users/*path. For more details, refer to the migration guide. Attempting to auto-convert..."}
{"timestamp":"2026-10-20T08:23:17.111Z","level":"log","context":"Bootstrap","message":"Starting Users API on port 3842..."}
{"timestamp":"2026-10-20T08:23:17.114Z","level":"log","context":"RoutesResolver","message":"UsersApiController {/}:"}
{"timestamp":"2026-10-20T08:23:17.118Z","level":"log","context":"RouterExplorer","message":"Mapped {/, GET} route"}
{"timestamp":"2026-10-20T08:23:17.118Z","level":"log","context":"RoutesResolver","message":"AuthController {/auth}:"}
{"timestamp":"2026-10-20T08:23:17.119Z","level":"log","context":"RouterExplorer","message":"Mapped {/auth/login, POST} route"}
{"timestamp":"2026-10-20T08:23:17.119Z","level":"log","context":"RouterExplorer","message":"Mapped {/auth/admin/login, POST} route"}
{"timestamp":"2026-10-20T08:23:17.120Z","level":"log","context":"RouterExplorer","message":"Mapped {/auth/send-otp, POST} route"}
{"timestamp":"2026-10-20T08:23:17.120Z","level":"log","context":"RouterExplorer","message":"Mapped {/auth/verify-otp, POST} route"}
{"timestamp":"2026-10-20T08:23:17.121Z","level":"log","context":"RouterExplorer","message":"Mapped {/auth/signup, POST} route"}
{"timestamp":"2026-10-20T08:23:17.121Z","level":"log","context":"RouterExplorer","message":"Mapped {/auth/subscription-status, GET} route"}
{"timestamp":"2026-10-20T08:23:17.121Z","level":"log","context":"RoutesResolver","message":"AdminMspController {/admin/msp}:"}
{"timestamp":"2026-10-20T08:23:17.122Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/msp, GET} route"}
{"timestamp":"2026-10-20T08:23:17.123Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/msp/:id, GET} route"}
{"timestamp":"2026-10-20T08:23:17.123Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/msp, POST} route"}
{"timestamp":"2026-10-20T08:23:17.124Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/msp/:id, PUT} route"}
{"timestamp":"2026-10-20T08:23:17.124Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/msp/:id, DELETE} route"}
{"timestamp":"2026-10-20T08:23:17.124Z","level":"log","context":"RoutesResolver","message":"AdminLicenseController {/admin/licenses}:"}
{"timestamp":"2026-10-20T08:23:17.124Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/licenses/summary, GET} route"}
{"timestamp":"2026-10-20T08:23:17.124Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/licenses/msp/:mspId, GET} route"}
{"timestamp":"2026-10-20T08:23:17.125Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/licenses/msp/:mspId, PUT} route"}
{"timestamp":"2026-10-20T08:23:17.125Z","level":"log","context":"RoutesResolver","message":"AdminImpersonationController {/admin/impersonation}:"}
{"timestamp":"2026-10-20T08:23:17.128Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/impersonation/msp-users, GET} route"}
{"timestamp":"2026-10-20T08:23:17.128Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/impersonation/impersonate, POST} route"}
{"timestamp":"2026-10-20T08:23:17.128Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/impersonation/stop, POST} route"}
{"timestamp":"2026-10-20T08:23:17.128Z","level":"log","context":"RoutesResolver","message":"AdminAiUsageController {/admin/ai-usage}:"}
{"timestamp":"2026-10-20T08:23:17.129Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-usage, GET} route"}
{"timestamp":"2026-10-20T08:23:17.129Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-usage/business/:businessId, GET} route"}
{"timestamp":"2026-10-20T08:23:17.129Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-usage/report/monthly, GET} route"}
{"timestamp":"2026-10-20T08:23:17.129Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-usage/pricing, GET} route"}
{"timestamp":"2026-10-20T08:23:17.129Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-usage/pricing, POST} route"}
{"timestamp":"2026-10-20T08:23:17.130Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-usage/credit/:businessId, PUT} route"}
{"timestamp":"2026-10-20T08:23:17.130Z","level":"log","context":"RoutesResolver","message":"AdminAiUsageController {/api/admin/ai-usage}:"}
{"timestamp":"2026-10-20T08:23:17.130Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-usage, GET} route"}
{"timestamp":"2026-10-20T08:23:17.130Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-usage/business/:businessId, GET} route"}
{"timestamp":"2026-10-20T08:23:17.130Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-usage/report/monthly, GET} route"}
{"timestamp":"2026-10-20T08:23:17.130Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-usage/pricing, GET} route"}
{"timestamp":"2026-10-20T08:23:17.131Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-usage/pricing, POST} route"}
{"timestamp":"2026-10-20T08:23:17.131Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-usage/credit/:businessId, PUT} route"}
{"timestamp":"2026-10-20T08:23:17.131Z","level":"log","context":"RoutesResolver","message":"AdminAiModelController {/admin/ai-models}:"}
{"timestamp":"2026-10-20T08:23:17.131Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models, POST} route"}
{"timestamp":"2026-10-20T08:23:17.131Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models, GET} route"}
{"timestamp":"2026-10-20T08:23:17.131Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/default, GET} route"}
{"timestamp":"2026-10-20T08:23:17.131Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/:id, GET} route"}
{"timestamp":"2026-10-20T08:23:17.132Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/:id, PUT} route"}
{"timestamp":"2026-10-20T08:23:17.132Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/:id, DELETE} route"}
{"timestamp":"2026-10-20T08:23:17.132Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/:id/set-default, POST} route"}
{"timestamp":"2026-10-20T08:23:17.132Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/assign-to-business, POST} route"}
{"timestamp":"2026-10-20T08:23:17.132Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/business/:businessId, GET} route"}
{"timestamp":"2026-10-20T08:23:17.133Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/:id/businesses, GET} route"}
{"timestamp":"2026-10-20T08:23:17.133Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/initialize-defaults, POST} route"}
{"timestamp":"2026-10-20T08:23:17.133Z","level":"log","context":"RoutesResolver","message":"AdminAiModelController {/api/admin/ai-models}:"}
{"timestamp":"2026-10-20T08:23:17.133Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models, POST} route"}
{"timestamp":"2026-10-20T08:23:17.133Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models, GET} route"}
{"timestamp":"2026-10-20T08:23:17.133Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/default, GET} route"}
{"timestamp":"2026-10-20T08:23:17.133Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/:id, GET} route"}
{"timestamp":"2026-10-20T08:23:17.134Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/:id, PUT} route"}
{"timestamp":"2026-10-20T08:23:17.134Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/:id, DELETE} route"}
{"timestamp":"2026-10-20T08:23:17.134Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/:id/set-default, POST} route"}
{"timestamp":"2026-10-20T08:23:17.134Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/assign-to-business, POST} route"}
{"timestamp":"2026-10-20T08:23:17.134Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/business/:businessId, GET} route"}
{"timestamp":"2026-10-20T08:23:17.134Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/:id/businesses, GET} route"}
{"timestamp":"2026-10-20T08:23:17.134Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/initialize-defaults, POST} route"}
{"timestamp":"2026-10-20T08:23:17.135Z","level":"log","context":"RoutesResolver","message":"AdminBusinessController {/admin/businesses}:"}
{"timestamp":"2026-10-20T08:23:17.135Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/businesses, GET} route"}
{"timestamp":"2026-10-20T08:23:17.135Z","level":"log","context":"RoutesResolver","message":"ResellerManagementController {/admin/resellers}:"}
{"timestamp":"2026-10-20T08:23:17.135Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/resellers, GET} route"}
{"timestamp":"2026-10-20T08:23:17.135Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/resellers/create-default, POST} route"}
{"timestamp":"2026-10-20T08:23:17.135Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/resellers, POST} route"}
{"timestamp":"2026-10-20T08:23:17.135Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/resellers/:id/toggle-status, PUT} route"}
{"timestamp":"2026-10-20T08:23:17.136Z","level":"log","context":"RoutesResolver","message":"SubscriptionController {/subscription}:"}
{"timestamp":"2026-10-20T08:23:17.136Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/plans, GET} route"}
{"timestamp":"2026-10-20T08:23:17.136Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/calculate-price, POST} route"}
{"timestamp":"2026-10-20T08:23:17.136Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/current, GET} route"}
{"timestamp":"2026-10-20T08:23:17.136Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/create, POST} route"}
{"timestamp":"2026-10-20T08:23:17.136Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/:id, PUT} route"}
{"timestamp":"2026-10-20T08:23:17.137Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/:id/cancel, DELETE} route"}
{"timestamp":"2026-10-20T08:23:17.137Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/sync/:stripeSubscriptionId, POST} route"}
{"timestamp":"2026-10-20T08:23:17.137Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/payments, GET} route"}
{"timestamp":"2026-10-20T08:23:17.137Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/payments/stats, GET} route"}
{"timestamp":"2026-10-20T08:23:17.137Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/payment/:id, GET} route"}
{"timestamp":"2026-10-20T08:23:17.137Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/payment-methods/attach, POST} route"}
{"timestamp":"2026-10-20T08:23:17.137Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/payment-methods/:paymentMethodId, DELETE} route"}
{"timestamp":"2026-10-20T08:23:17.138Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/payment-methods, GET} route"}
{"timestamp":"2026-10-20T08:23:17.138Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/setup-intent, POST} route"}
{"timestamp":"2026-10-20T08:23:17.138Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/update-employee-count, POST} route"}
{"timestamp":"2026-10-20T08:23:17.138Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/retry-payment/:subscriptionId, POST} route"}
{"timestamp":"2026-10-20T08:23:17.138Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/invoice/:invoiceId/pdf, GET} route"}
{"timestamp":"2026-10-20T08:23:17.138Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/preview-upgrade, POST} route"}
{"timestamp":"2026-10-20T08:23:17.138Z","level":"log","context":"RoutesResolver","message":"SubscriptionController {/api/subscription}:"}
{"timestamp":"2026-10-20T08:23:17.139Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/plans, GET} route"}
{"timestamp":"2026-10-20T08:23:17.139Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/calculate-price, POST} route"}
{"timestamp":"2026-10-20T08:23:17.139Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/current, GET} route"}
{"timestamp":"2026-10-20T08:23:17.139Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/create, POST} route"}
{"timestamp":"2026-10-20T08:23:17.139Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/:id, PUT} route"}
{"timestamp":"2026-10-20T08:23:17.139Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/:id/cancel, DELETE} route"}
{"timestamp":"2026-10-20T08:23:17.139Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/sync/:stripeSubscriptionId, POST} route"}
{"timestamp":"2026-10-20T08:23:17.140Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/payments, GET} route"}
{"timestamp":"2026-10-20T08:23:17.140Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/payments/stats, GET} route"}
{"timestamp":"2026-10-20T08:23:17.140Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/payment/:id, GET} route"}
{"timestamp":"2026-10-20T08:23:17.140Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/payment-methods/attach, POST} route"}
{"timestamp":"2026-10-20T08:23:17.140Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/payment-methods/:paymentMethodId, DELETE} route"}
{"timestamp":"2026-10-20T08:23:17.140Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/payment-methods, GET} route"}
{"timestamp":"2026-10-20T08:23:17.140Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/setup-intent, POST} route"}
{"timestamp":"2026-10-20T08:23:17.141Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/update-employee-count, POST} route"}
{"timestamp":"2026-10-20T08:23:17.141Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/retry-payment/:subscriptionId, POST} route"}
{"timestamp":"2026-10-20T08:23:17.141Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/invoice/:invoiceId/pdf, GET} route"}
{"timestamp":"2026-10-20T08:23:17.141Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/preview-upgrade, POST} route"}
{"timestamp":"2026-10-20T08:23:17.141Z","level":"log","context":"RoutesResolver","message":"StripeWebhookController {/stripe/webhook}:"}
{"timestamp":"2026-10-20T08:23:17.141Z","level":"log","context":"RouterExplorer","message":"Mapped {/stripe/webhook/test, GET} route"}
{"timestamp":"2026-10-20T08:23:17.141Z","level":"log","context":"RouterExplorer","message":"Mapped {/stripe/webhook, POST} route"}
{"timestamp":"2026-10-20T08:23:17.141Z","level":"log","context":"RoutesResolver","message":"EmailController {/email-templates}:"}
{"timestamp":"2026-10-20T08:23:17.142Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates/test, POST} route"}
{"timestamp":"2026-10-20T08:23:17.142Z","level":"log","context":"RoutesResolver","message":"EmployeeController {/employees}:"}
{"timestamp":"2026-10-20T08:23:17.142Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees, POST} route"}
{"timestamp":"2026-10-20T08:23:17.142Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees, GET} route"}
{"timestamp":"2026-10-20T08:23:17.142Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees/export, GET} route"}
{"timestamp":"2026-10-20T08:23:17.142Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees/risk-stats, GET} route"}
{"timestamp":"2026-10-20T08:23:17.142Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees/:id, GET} route"}
{"timestamp":"2026-10-20T08:23:17.143Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees/:id, PUT} route"}
{"timestamp":"2026-10-20T08:23:17.143Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees/:id, DELETE} route"}
{"timestamp":"2026-10-20T08:23:17.143Z","level":"log","context":"RoutesResolver","message":"GroupController {/groups}:"}
{"timestamp":"2026-10-20T08:23:17.143Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups, POST} route"}
{"timestamp":"2026-10-20T08:23:17.143Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups, GET} route"}
{"timestamp":"2026-10-20T08:23:17.143Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups/standard, GET} route"}
{"timestamp":"2026-10-20T08:23:17.144Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups/:id, GET} route"}
{"timestamp":"2026-10-20T08:23:17.144Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups/:id, PUT} route"}
{"timestamp":"2026-10-20T08:23:17.144Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups/:id, DELETE} route"}
{"timestamp":"2026-10-20T08:23:17.144Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups/:id/info, GET} route"}
{"timestamp":"2026-10-20T08:23:17.144Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups/:id/with-employees, GET} route"}
{"timestamp":"2026-10-20T08:23:17.144Z","level":"log","context":"RoutesResolver","message":"SenderProfileController {/sender-profiles}:"}
{"timestamp":"2026-10-20T08:23:17.144Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles, GET} route"}
{"timestamp":"2026-10-20T08:23:17.145Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles/:id, GET} route"}
{"timestamp":"2026-10-20T08:23:17.145Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles, POST} route"}
{"timestamp":"2026-10-20T08:23:17.145Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles/:id, PUT} route"}
{"timestamp":"2026-10-20T08:23:17.145Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles/:id, DELETE} route"}
{"timestamp":"2026-10-20T08:23:17.145Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles/:id/verify-domain, POST} route"}
{"timestamp":"2026-10-20T08:23:17.145Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles/domain-verification, GET} route"}
{"timestamp":"2026-10-20T08:23:17.145Z","level":"log","context":"RoutesResolver","message":"EmailTemplateController {/email-templates}:"}
{"timestamp":"2026-10-20T08:23:17.146Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates, GET} route"}
{"timestamp":"2026-10-20T08:23:17.146Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates/:id, GET} route"}
{"timestamp":"2026-10-20T08:23:17.146Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates, POST} route"}
{"timestamp":"2026-10-20T08:23:17.146Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates/:id, PUT} route"}
{"timestamp":"2026-10-20T08:23:17.146Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates/:id, DELETE} route"}
{"timestamp":"2026-10-20T08:23:17.146Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates/:id/duplicate, POST} route"}
{"timestamp":"2026-10-20T08:23:17.146Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates/:id/preview, GET} route"}
{"timestamp":"2026-10-20T08:23:17.146Z","level":"log","context":"RoutesResolver","message":"ScenarioController {/scenarios}:"}
{"timestamp":"2026-10-20T08:23:17.147Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios, POST} route"}
{"timestamp":"2026-10-20T08:23:17.147Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios/generate-content, POST} route"}
{"timestamp":"2026-10-20T08:23:17.147Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios, GET} route"}
{"timestamp":"2026-10-20T08:23:17.147Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios/:id, GET} route"}
{"timestamp":"2026-10-20T08:23:17.147Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios/:id, PUT} route"}
{"timestamp":"2026-10-20T08:23:17.147Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios/:id, DELETE} route"}
{"timestamp":"2026-10-20T08:23:17.148Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios/generate-from-json, POST} route"}
{"timestamp":"2026-10-20T08:23:17.148Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios/:id/save-as-custom-scenario, POST} route"}
{"timestamp":"2026-10-20T08:23:17.148Z","level":"log","context":"RoutesResolver","message":"CampaignController {/campaigns}:"}
{"timestamp":"2026-10-20T08:23:17.148Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns, POST} route"}
{"timestamp":"2026-10-20T08:23:17.148Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns, GET} route"}
{"timestamp":"2026-10-20T08:23:17.148Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id, GET} route"}
{"timestamp":"2026-10-20T08:23:17.148Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id/details, GET} route"}
{"timestamp":"2026-10-20T08:23:17.149Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id/employees, GET} route"}
{"timestamp":"2026-10-20T08:23:17.149Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id, PATCH} route"}
{"timestamp":"2026-10-20T08:23:17.149Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id/start, POST} route"}
{"timestamp":"2026-10-20T08:23:17.149Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id/stop, POST} route"}
{"timestamp":"2026-10-20T08:23:17.149Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id/duplicate, POST} route"}
{"timestamp":"2026-10-20T08:23:17.149Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id, DELETE} route"}
{"timestamp":"2026-10-20T08:23:17.150Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/auto-generate-program, POST} route"}
{"timestamp":"2026-10-20T08:23:17.150Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/generate-from-threat-intelligence, POST} route"}
{"timestamp":"2026-10-20T08:23:17.150Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id/risk-score, GET} route"}
{"timestamp":"2026-10-20T08:23:17.150Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/recalculate-risk-scores, POST} route"}
{"timestamp":"2026-10-20T08:23:17.150Z","level":"log","context":"RoutesResolver","message":"CampaignController {/api/campaigns}:"}
{"timestamp":"2026-10-20T08:23:17.150Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns, POST} route"}
{"timestamp":"2026-10-20T08:23:17.150Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns, GET} route"}
{"timestamp":"2026-10-20T08:23:17.150Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id, GET} route"}
{"timestamp":"2026-10-20T08:23:17.151Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id/details, GET} route"}
{"timestamp":"2026-10-20T08:23:17.151Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id/employees, GET} route"}
{"timestamp":"2026-10-20T08:23:17.151Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id, PATCH} route"}
{"timestamp":"2026-10-20T08:23:17.151Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id/start, POST} route"}
{"timestamp":"2026-10-20T08:23:17.151Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id/stop, POST} route"}
{"timestamp":"2026-10-20T08:23:17.151Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id/duplicate, POST} route"}
{"timestamp":"2026-10-20T08:23:17.151Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id, DELETE} route"}
{"timestamp":"2026-10-20T08:23:17.152Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/auto-generate-program, POST} route"}
{"timestamp":"2026-10-20T08:23:17.152Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/generate-from-threat-intelligence, POST} route"}
{"timestamp":"2026-10-20T08:23:17.152Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id/risk-score, GET} route"}
{"timestamp":"2026-10-20T08:23:17.152Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/recalculate-risk-scores, POST} route"}
{"timestamp":"2026-10-20T08:23:17.152Z","level":"log","context":"RoutesResolver","message":"NotificationsController {/notifications}:"}
{"timestamp":"2026-10-20T08:23:17.152Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications, POST} route"}
{"timestamp":"2026-10-20T08:23:17.153Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications, GET} route"}
{"timestamp":"2026-10-20T08:23:17.153Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/unread, GET} route"}
{"timestamp":"2026-10-20T08:23:17.153Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/unread-count, GET} route"}
{"timestamp":"2026-10-20T08:23:17.153Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/:id, GET} route"}
{"timestamp":"2026-10-20T08:23:17.153Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/:id, PATCH} route"}
{"timestamp":"2026-10-20T08:23:17.153Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/:id/read, PATCH} route"}
{"timestamp":"2026-10-20T08:23:17.154Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/mark-all-read, PATCH} route"}
{"timestamp":"2026-10-20T08:23:17.154Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/:id, DELETE} route"}
{"timestamp":"2026-10-20T08:23:17.154Z","level":"log","context":"RoutesResolver","message":"LandingPageController {/lp}:"}
{"timestamp":"2026-10-20T08:23:17.154Z","level":"log","context":"RouterExplorer","message":"Mapped {/lp/image, GET} route"}
{"timestamp":"2026-10-20T08:23:17.154Z","level":"log","context":"RouterExplorer","message":"Mapped {/lp/learning, GET} route"}
{"timestamp":"2026-10-20T08:23:17.155Z","level":"log","context":"RouterExplorer","message":"Mapped {/lp/submit, POST} route"}
{"timestamp":"2026-10-20T08:23:17.155Z","level":"log","context":"RouterExplorer","message":"Mapped {/lp/test, GET} route"}
{"timestamp":"2026-10-20T08:23:17.155Z","level":"warn","context":"LegacyRouteConverter","message":"Unsupported route path: \"/lp/*\". In previous versions, the symbols ?, *, and + were used to denote optional or repeating path parameters. The latest version of \"path-to-regexp\" now requires the use of named parameters. For example, instead of using a route like /users/* to capture all routes starting with \"/users\", you should use /users/*path. For more details, refer to the migration guide. Attempting to auto-convert..."}
{"timestamp":"2026-10-20T08:23:17.156Z","level":"log","context":"RouterExplorer","message":"Mapped {/lp/*, ALL} route"}
{"timestamp":"2026-10-20T08:23:17.156Z","level":"log","context":"RoutesResolver","message":"SupportController {/support}:"}
{"timestamp":"2026-10-20T08:23:17.156Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets, POST} route"}
{"timestamp":"2026-10-20T08:23:17.156Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets, GET} route"}
{"timestamp":"2026-10-20T08:23:17.156Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets/:id, GET} route"}
{"timestamp":"2026-10-20T08:23:17.156Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets/:id, PATCH} route"}
{"timestamp":"2026-10-20T08:23:17.157Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets/:id, DELETE} route"}
{"timestamp":"2026-10-20T08:23:17.157Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets/:id/messages, POST} route"}
{"timestamp":"2026-10-20T08:23:17.157Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets/:id/close, POST} route"}
{"timestamp":"2026-10-20T08:23:17.157Z","level":"log","context":"RoutesResolver","message":"BusninessMetricsController {/business-metrics}:"}
{"timestamp":"2026-10-20T08:23:17.157Z","level":"log","context":"RouterExplorer","message":"Mapped {/business-metrics, GET} route"}
{"timestamp":"2026-10-20T08:23:17.157Z","level":"log","context":"RoutesResolver","message":"UsersController {/users}:"}
{"timestamp":"2026-10-20T08:23:17.157Z","level":"log","context":"RouterExplorer","message":"Mapped {/users/:id, PUT} route"}
{"timestamp":"2026-10-20T08:23:17.158Z","level":"log","context":"RouterExplorer","message":"Mapped {/users/settings, GET} route"}
{"timestamp":"2026-10-20T08:23:17.158Z","level":"log","context":"RouterExplorer","message":"Mapped {/users/settings/general, PUT} route"}
{"timestamp":"2026-10-20T08:23:17.158Z","level":"log","context":"RouterExplorer","message":"Mapped {/users/company/settings, PUT} route"}
{"timestamp":"2026-10-20T08:23:17.158Z","level":"log","context":"RouterExplorer","message":"Mapped {/users/change-password, POST} route"}
{"timestamp":"2026-10-20T08:23:17.158Z","level":"log","context":"RouterExplorer","message":"Mapped {/users/localization/settings, PUT} route"}
{"timestamp":"2026-10-20T08:23:17.158Z","level":"log","context":"RoutesResolver","message":"PartnerController {/partner}:"}
{"timestamp":"2026-10-20T08:23:17.159Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses, POST} route"}
{"timestamp":"2026-10-20T08:23:17.159Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses, GET} route"}
{"timestamp":"2026-10-20T08:23:17.159Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses/:id, GET} route"}
{"timestamp":"2026-10-20T08:23:17.159Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses/:id, PUT} route"}
{"timestamp":"2026-10-20T08:23:17.159Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses/:id, DELETE} route"}
{"timestamp":"2026-10-20T08:23:17.159Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses/:id/impersonate, POST} route"}
{"timestamp":"2026-10-20T08:23:17.160Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses/stop-impersonation, POST} route"}
{"timestamp":"2026-10-20T08:23:17.160Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/license-usage, GET} route"}
{"timestamp":"2026-10-20T08:23:17.160Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/invoices, POST} route"}
{"timestamp":"2026-10-20T08:23:17.160Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/invoices, GET} route"}
{"timestamp":"2026-10-20T08:23:17.160Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/invoices/:id, GET} route"}
{"timestamp":"2026-10-20T08:23:17.160Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/invoices/:id, PUT} route"}
{"timestamp":"2026-10-20T08:23:17.161Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/invoices/:id, DELETE} route"}
{"timestamp":"2026-10-20T08:23:17.161Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/invoices/:id/mark-paid, PUT} route"}
{"timestamp":"2026-10-20T08:23:17.161Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/onboarding/generate-token, POST} route"}
{"timestamp":"2026-10-20T08:23:17.161Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/dashboard, GET} route"}
{"timestamp":"2026-10-20T08:23:17.161Z","level":"log","context":"RoutesResolver","message":"MspSubscriptionController {/partner/msp-subscriptions}:"}
{"timestamp":"2026-10-20T08:23:17.161Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/plans, POST} route"}
{"timestamp":"2026-10-20T08:23:17.162Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/plans, GET} route"}
{"timestamp":"2026-10-20T08:23:17.162Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/plans/:planId, GET} route"}
{"timestamp":"2026-10-20T08:23:17.162Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/plans/:planId, PUT} route"}
{"timestamp":"2026-10-20T08:23:17.162Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/plans/:planId, DELETE} route"}
{"timestamp":"2026-10-20T08:23:17.162Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/businesses/:businessId/subscription, POST} route"}
{"timestamp":"2026-10-20T08:23:17.162Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions, GET} route"}
{"timestamp":"2026-10-20T08:23:17.163Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/businesses/:businessId/subscription, GET} route"}
{"timestamp":"2026-10-20T08:23:17.163Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/businesses/:businessId/subscription, PUT} route"}
{"timestamp":"2026-10-20T08:23:17.163Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/businesses/:businessId/subscription, DELETE} route"}
{"timestamp":"2026-10-20T08:23:17.163Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/businesses/:businessId/subscription/limits, GET} route"}
{"timestamp":"2026-10-20T08:23:17.163Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/businesses/:businessId/subscription/change-plan, PUT} route"}
{"timestamp":"2026-10-20T08:23:17.163Z","level":"log","context":"RoutesResolver","message":"OnboardingController {/onboarding}:"}
{"timestamp":"2026-10-20T08:23:17.164Z","level":"log","context":"RouterExplorer","message":"Mapped {/onboarding/validate/:token, GET} route"}
{"timestamp":"2026-10-20T08:23:17.164Z","level":"log","context":"RouterExplorer","message":"Mapped {/onboarding/complete/:token, POST} route"}
{"timestamp":"2026-10-20T08:23:17.164Z","level":"log","context":"RoutesResolver","message":"ResellerController {/reseller}:"}
{"timestamp":"2026-10-20T08:23:17.164Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/businesses, POST} route"}
{"timestamp":"2026-10-20T08:23:17.164Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/businesses, GET} route"}
{"timestamp":"2026-10-20T08:23:17.164Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/businesses/:id, GET} route"}
{"timestamp":"2026-10-20T08:23:17.165Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/businesses/:id, PUT} route"}
{"timestamp":"2026-10-20T08:23:17.165Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/businesses/:id, DELETE} route"}
{"timestamp":"2026-10-20T08:23:17.165Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/license-usage, GET} route"}
{"timestamp":"2026-10-20T08:23:17.165Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/invoices, POST} route"}
{"timestamp":"2026-10-20T08:23:17.165Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/invoices, GET} route"}
{"timestamp":"2026-10-20T08:23:17.165Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/invoices/:id, GET} route"}
{"timestamp":"2026-10-20T08:23:17.166Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/invoices/:id, PUT} route"}
{"timestamp":"2026-10-20T08:23:17.166Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/invoices/:id, DELETE} route"}
{"timestamp":"2026-10-20T08:23:17.166Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/invoices/:id/mark-paid, PUT} route"}
{"timestamp":"2026-10-20T08:23:17.166Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/onboarding/generate-token, POST} route"}
{"timestamp":"2026-10-20T08:23:17.166Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/dashboard, GET} route"}
{"timestamp":"2026-10-20T08:23:17.166Z","level":"log","context":"RoutesResolver","message":"ResellerSubscriptionController {/reseller}:"}
{"timestamp":"2026-10-20T08:23:17.166Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/plans, POST} route"}
{"timestamp":"2026-10-20T08:23:17.167Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/plans, GET} route"}
{"timestamp":"2026-10-20T08:23:17.167Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/plans/:planId, GET} route"}
{"timestamp":"2026-10-20T08:23:17.167Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/plans/:planId, PUT} route"}
{"timestamp":"2026-10-20T08:23:17.167Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/plans/:planId, DELETE} route"}
{"timestamp":"2026-10-20T08:23:17.167Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/subscriptions/businesses/:businessId/subscription, POST} route"}
{"timestamp":"2026-10-20T08:23:17.168Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/subscriptions, GET} route"}
{"timestamp":"2026-10-20T08:23:17.168Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/subscriptions/businesses/:businessId/subscription, GET} route"}
{"timestamp":"2026-10-20T08:23:17.168Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/subscriptions/businesses/:businessId/subscription, PUT} route"}
{"timestamp":"2026-10-20T08:23:17.168Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/subscriptions/businesses/:businessId/subscription, DELETE} route"}
{"timestamp":"2026-10-20T08:23:17.168Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/subscriptions/businesses/:businessId/subscription/limits, GET} route"}
{"timestamp":"2026-10-20T08:23:17.168Z","level":"log","context":"RoutesResolver","message":"HealthController {/health}:"}
{"timestamp":"2026-10-20T08:23:17.169Z","level":"log","context":"RouterExplorer","message":"Mapped {/health, GET} route"}
{"timestamp":"2026-10-20T08:23:17.169Z","level":"log","context":"RouterExplorer","message":"Mapped {/health/test-logs, GET} route"}
{"timestamp":"2026-10-20T08:23:17.169Z","level":"log","context":"RoutesResolver","message":"AzureAdController {/azure-ad}:"}
{"timestamp":"2026-10-20T08:23:17.169Z","level":"log","context":"RouterExplorer","message":"Mapped {/azure-ad/config, POST} route"}
{"timestamp":"2026-10-20T08:23:17.169Z","level":"log","context":"RouterExplorer","message":"Mapped {/azure-ad/config, GET} route"}
{"timestamp":"2026-10-20T08:23:17.169Z","level":"log","context":"RouterExplorer","message":"Mapped {/azure-ad/test-connection, POST} route"}
{"timestamp":"2026-10-20T08:23:17.169Z","level":"log","context":"RouterExplorer","message":"Mapped {/azure-ad/sync, POST} route"}
{"timestamp":"2026-10-20T08:23:17.170Z","level":"log","context":"RoutesResolver","message":"ThreatsController {/threats}:"}
{"timestamp":"2026-10-20T08:23:17.170Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats, POST} route"}
{"timestamp":"2026-10-20T08:23:17.170Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats, GET} route"}
{"timestamp":"2026-10-20T08:23:17.170Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/chart-data, GET} route"}
{"timestamp":"2026-10-20T08:23:17.170Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/claude-search, POST} route"}
{"timestamp":"2026-10-20T08:23:17.170Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/claude-latest, POST} route"}
{"timestamp":"2026-10-20T08:23:17.171Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/claude-trending, POST} route"}
{"timestamp":"2026-10-20T08:23:17.171Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/claude-categories, POST} route"}
{"timestamp":"2026-10-20T08:23:17.171Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/claude-manual-search, POST} route"}
{"timestamp":"2026-10-20T08:23:17.171Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/claude-quick-search, POST} route"}
{"timestamp":"2026-10-20T08:23:17.171Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/scheduler-status, GET} route"}
{"timestamp":"2026-10-20T08:23:17.171Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/health-check, GET} route"}
{"timestamp":"2026-10-20T08:23:17.172Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/pause-scheduler, POST} route"}
{"timestamp":"2026-10-20T08:23:17.172Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/:id, GET} route"}
{"timestamp":"2026-10-20T08:23:17.172Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/:id, PATCH} route"}
{"timestamp":"2026-10-20T08:23:17.172Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/:id, DELETE} route"}
{"timestamp":"2026-10-20T08:23:17.172Z","level":"log","context":"RoutesResolver","message":"DomainController {/domains}:"}
{"timestamp":"2026-10-20T08:23:17.172Z","level":"log","context":"RouterExplorer","message":"Mapped {/domains, GET} route"}
{"timestamp":"2026-10-20T08:23:17.172Z","level":"log","context":"RouterExplorer","message":"Mapped {/domains/:id, GET} route"}
{"timestamp":"2026-10-20T08:23:17.173Z","level":"log","context":"RouterExplorer","message":"Mapped {/domains, POST} route"}
{"timestamp":"2026-10-20T08:23:17.173Z","level":"log","context":"RouterExplorer","message":"Mapped {/domains/:id, PUT} route"}
{"timestamp":"2026-10-20T08:23:17.173Z","level":"log","context":"RouterExplorer","message":"Mapped {/domains/:id, DELETE} route"}
{"timestamp":"2026-10-20T08:23:17.173Z","level":"log","context":"RouterExplorer","message":"Mapped {/domains/seed, POST} route"}
{"timestamp":"2026-10-20T08:23:17.173Z","level":"log","context":"RoutesResolver","message":"MspSubscriptionController {/msp-subscription}:"}
{"timestamp":"2026-10-20T08:23:17.173Z","level":"log","context":"RouterExplorer","message":"Mapped {/msp-subscription/current, GET} route"}
{"timestamp":"2026-10-20T08:23:17.174Z","level":"log","context":"RouterExplorer","message":"Mapped {/msp-subscription/invoices, GET} route"}
{"timestamp":"2026-10-20T08:23:17.174Z","level":"log","context":"RouterExplorer","message":"Mapped {/msp-subscription/invoice/:invoiceId/pdf, GET} route"}
{"timestamp":"2026-10-20T08:23:17.174Z","level":"log","context":"RoutesResolver","message":"MspSubscriptionController {/api/msp-subscription}:"}
{"timestamp":"2026-10-20T08:23:17.174Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/msp-subscription/current, GET} route"}
{"timestamp":"2026-10-20T08:23:17.174Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/msp-subscription/invoices, GET} route"}
{"timestamp":"2026-10-20T08:23:17.174Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/msp-subscription/invoice/:invoiceId/pdf, GET} route"}
{"timestamp":"2026-10-20T08:23:17.257Z","level":"log","context":"NestApplication","message":"Nest application successfully started"}
{"timestamp":"2026-10-20T08:23:17.290Z","level":"log","context":"Bootstrap","message":"Users API successfully started on port 3842"}
{"timestamp":"2026-10-20T08:23:17.291Z","level":"log","context":"SeedService","message":"🌱 Starting database seeding..."}
{"timestamp":"2026-10-20T08:23:17.294Z","level":"log","context":"SeedService","message":"Admin account already exists, skipping seed"}
{"timestamp":"2026-10-20T08:23:17.296Z","level":"log","context":"SeedService","message":"Reseller account already exists, skipping seed"}
{"timestamp":"2026-10-20T08:23:17.298Z","level":"log","context":"SeedService","message":"MSP account already exists, skipping seed"}
{"timestamp":"2026-10-20T08:23:17.298Z","level":"log","context":"SeedService","message":"✅ Database seeding completed successfully"}
{"timestamp":"2026-10-20T08:23:17.338Z","level":"log","context":"UsersApiController","message":"Hello endpoint accessed"}
{"timestamp":"2026-10-20T08:23:38.980Z","level":"log","context":"UsersApiController","message":"Hello endpoint accessed"}
{"timestamp":"2026-10-20T09:27:57.121Z","level":"warn","context":"LegacyRouteConverter","message":"Unsupported route path: \"/lp/*\". In previous versions, the symbols ?, *, and + were used to denote optional or repeating path parameters. The latest version of \"path-to-regexp\" now requires the use of named parameters. For example, instead of using a route like /users/* to capture all routes starting with \"/users\", you should use /users/*path. For more details, refer to the migration guide. Attempting to auto-convert..."}
{"timestamp":"2026-10-20T09:27:57.159Z","level":"log","context":"Bootstrap","message":"Starting Users API on port 3842..."}
{"timestamp":"2026-10-20T09:27:57.162Z","level":"log","context":"RoutesResolver","message":"UsersApiController {/}:"}
{"timestamp":"2026-10-20T09:27:57.166Z","level":"log","context":"RouterExplorer","message":"Mapped {/, GET} route"}
{"timestamp":"2026-10-20T09:27:57.166Z","level":"log","context":"RoutesResolver","message":"AuthController {/auth}:"}
{"timestamp":"2026-10-20T09:27:57.167Z","level":"log","context":"RouterExplorer","message":"Mapped {/auth/login, POST} route"}
{"timestamp":"2026-10-20T09:27:57.167Z","level":"log","context":"RouterExplorer","message":"Mapped {/auth/admin/login, POST} route"}
{"timestamp":"2026-10-20T09:27:57.168Z","level":"log","context":"RouterExplorer","message":"Mapped {/auth/send-otp, POST} route"}
{"timestamp":"2026-10-20T09:27:57.168Z","level":"log","context":"RouterExplorer","message":"Mapped {/auth/verify-otp, POST} route"}
{"timestamp":"2026-10-20T09:27:57.169Z","level":"log","context":"RouterExplorer","message":"Mapped {/auth/signup, POST} route"}
{"timestamp":"2026-10-20T09:27:57.169Z","level":"log","context":"RouterExplorer","message":"Mapped {/auth/subscription-status, GET} route"}
{"timestamp":"2026-10-20T09:27:57.169Z","level":"log","context":"RoutesResolver","message":"AdminMspController {/admin/msp}:"}
{"timestamp":"2026-10-20T09:27:57.170Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/msp, GET} route"}
{"timestamp":"2026-10-20T09:27:57.171Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/msp/:id, GET} route"}
{"timestamp":"2026-10-20T09:27:57.171Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/msp, POST} route"}
{"timestamp":"2026-10-20T09:27:57.172Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/msp/:id, PUT} route"}
{"timestamp":"2026-10-20T09:27:57.172Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/msp/:id, DELETE} route"}
{"timestamp":"2026-10-20T09:27:57.172Z","level":"log","context":"RoutesResolver","message":"AdminLicenseController {/admin/licenses}:"}
{"timestamp":"2026-10-20T09:27:57.172Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/licenses/summary, GET} route"}
{"timestamp":"2026-10-20T09:27:57.173Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/licenses/msp/:mspId, GET} route"}
{"timestamp":"2026-10-20T09:27:57.176Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/licenses/msp/:mspId, PUT} route"}
{"timestamp":"2026-10-20T09:27:57.176Z","level":"log","context":"RoutesResolver","message":"AdminImpersonationController {/admin/impersonation}:"}
{"timestamp":"2026-10-20T09:27:57.176Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/impersonation/msp-users, GET} route"}
{"timestamp":"2026-10-20T09:27:57.177Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/impersonation/impersonate, POST} route"}
{"timestamp":"2026-10-20T09:27:57.177Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/impersonation/stop, POST} route"}
{"timestamp":"2026-10-20T09:27:57.177Z","level":"log","context":"RoutesResolver","message":"AdminAiUsageController {/admin/ai-usage}:"}
{"timestamp":"2026-10-20T09:27:57.177Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-usage, GET} route"}
{"timestamp":"2026-10-20T09:27:57.178Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-usage/business/:businessId, GET} route"}
{"timestamp":"2026-10-20T09:27:57.178Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-usage/report/monthly, GET} route"}
{"timestamp":"2026-10-20T09:27:57.178Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-usage/pricing, GET} route"}
{"timestamp":"2026-10-20T09:27:57.178Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-usage/pricing, POST} route"}
{"timestamp":"2026-10-20T09:27:57.178Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-usage/credit/:businessId, PUT} route"}
{"timestamp":"2026-10-20T09:27:57.178Z","level":"log","context":"RoutesResolver","message":"AdminAiUsageController {/api/admin/ai-usage}:"}
{"timestamp":"2026-10-20T09:27:57.179Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-usage, GET} route"}
{"timestamp":"2026-10-20T09:27:57.179Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-usage/business/:businessId, GET} route"}
{"timestamp":"2026-10-20T09:27:57.179Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-usage/report/monthly, GET} route"}
{"timestamp":"2026-10-20T09:27:57.179Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-usage/pricing, GET} route"}
{"timestamp":"2026-10-20T09:27:57.179Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-usage/pricing, POST} route"}
{"timestamp":"2026-10-20T09:27:57.180Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-usage/credit/:businessId, PUT} route"}
{"timestamp":"2026-10-20T09:27:57.180Z","level":"log","context":"RoutesResolver","message":"AdminAiModelController {/admin/ai-models}:"}
{"timestamp":"2026-10-20T09:27:57.180Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models, POST} route"}
{"timestamp":"2026-10-20T09:27:57.180Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models, GET} route"}
{"timestamp":"2026-10-20T09:27:57.180Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/default, GET} route"}
{"timestamp":"2026-10-20T09:27:57.180Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/:id, GET} route"}
{"timestamp":"2026-10-20T09:27:57.181Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/:id, PUT} route"}
{"timestamp":"2026-10-20T09:27:57.181Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/:id, DELETE} route"}
{"timestamp":"2026-10-20T09:27:57.181Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/:id/set-default, POST} route"}
{"timestamp":"2026-10-20T09:27:57.181Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/assign-to-business, POST} route"}
{"timestamp":"2026-10-20T09:27:57.181Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/business/:businessId, GET} route"}
{"timestamp":"2026-10-20T09:27:57.182Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/:id/businesses, GET} route"}
{"timestamp":"2026-10-20T09:27:57.182Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/initialize-defaults, POST} route"}
{"timestamp":"2026-10-20T09:27:57.182Z","level":"log","context":"RoutesResolver","message":"AdminAiModelController {/api/admin/ai-models}:"}
{"timestamp":"2026-10-20T09:27:57.182Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models, POST} route"}
{"timestamp":"2026-10-20T09:27:57.182Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models, GET} route"}
{"timestamp":"2026-10-20T09:27:57.182Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/default, GET} route"}
{"timestamp":"2026-10-20T09:27:57.183Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/:id, GET} route"}
{"timestamp":"2026-10-20T09:27:57.183Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/:id, PUT} route"}
{"timestamp":"2026-10-20T09:27:57.183Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/:id, DELETE} route"}
{"timestamp":"2026-10-20T09:27:57.183Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/:id/set-default, POST} route"}
{"timestamp":"2026-10-20T09:27:57.183Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/assign-to-business, POST} route"}
{"timestamp":"2026-10-20T09:27:57.184Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/business/:businessId, GET} route"}
{"timestamp":"2026-10-20T09:27:57.184Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/:id/businesses, GET} route"}
{"timestamp":"2026-10-20T09:27:57.184Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/initialize-defaults, POST} route"}
{"timestamp":"2026-10-20T09:27:57.184Z","level":"log","context":"RoutesResolver","message":"AdminBusinessController {/admin/businesses}:"}
{"timestamp":"2026-10-20T09:27:57.184Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/businesses, GET} route"}
{"timestamp":"2026-10-20T09:27:57.184Z","level":"log","context":"RoutesResolver","message":"ResellerManagementController {/admin/resellers}:"}
{"timestamp":"2026-10-20T09:27:57.185Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/resellers, GET} route"}
{"timestamp":"2026-10-20T09:27:57.185Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/resellers/create-default, POST} route"}
{"timestamp":"2026-10-20T09:27:57.185Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/resellers, POST} route"}
{"timestamp":"2026-10-20T09:27:57.185Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/resellers/:id/toggle-status, PUT} route"}
{"timestamp":"2026-10-20T09:27:57.185Z","level":"log","context":"RoutesResolver","message":"SubscriptionController {/subscription}:"}
{"timestamp":"2026-10-20T09:27:57.185Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/plans, GET} route"}
{"timestamp":"2026-10-20T09:27:57.186Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/calculate-price, POST} route"}
{"timestamp":"2026-10-20T09:27:57.186Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/current, GET} route"}
{"timestamp":"2026-10-20T09:27:57.186Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/create, POST} route"}
{"timestamp":"2026-10-20T09:27:57.186Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/:id, PUT} route"}
{"timestamp":"2026-10-20T09:27:57.186Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/:id/cancel, DELETE} route"}
{"timestamp":"2026-10-20T09:27:57.186Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/sync/:stripeSubscriptionId, POST} route"}
{"timestamp":"2026-10-20T09:27:57.187Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/payments, GET} route"}
{"timestamp":"2026-10-20T09:27:57.187Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/payments/stats, GET} route"}
{"timestamp":"2026-10-20T09:27:57.187Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/payment/:id, GET} route"}
{"timestamp":"2026-10-20T09:27:57.187Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/payment-methods/attach, POST} route"}
{"timestamp":"2026-10-20T09:27:57.187Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/payment-methods/:paymentMethodId, DELETE} route"}
{"timestamp":"2026-10-20T09:27:57.187Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/payment-methods, GET} route"}
{"timestamp":"2026-10-20T09:27:57.188Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/setup-intent, POST} route"}
{"timestamp":"2026-10-20T09:27:57.188Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/update-employee-count, POST} route"}
{"timestamp":"2026-10-20T09:27:57.188Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/retry-payment/:subscriptionId, POST} route"}
{"timestamp":"2026-10-20T09:27:57.188Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/invoice/:invoiceId/pdf, GET} route"}
{"timestamp":"2026-10-20T09:27:57.188Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/preview-upgrade, POST} route"}
{"timestamp":"2026-10-20T09:27:57.188Z","level":"log","context":"RoutesResolver","message":"SubscriptionController {/api/subscription}:"}
{"timestamp":"2026-10-20T09:27:57.188Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/plans, GET} route"}
{"timestamp":"2026-10-20T09:27:57.189Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/calculate-price, POST} route"}
{"timestamp":"2026-10-20T09:27:57.189Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/current, GET} route"}
{"timestamp":"2026-10-20T09:27:57.189Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/create, POST} route"}
{"timestamp":"2026-10-20T09:27:57.189Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/:id, PUT} route"}
{"timestamp":"2026-10-20T09:27:57.189Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/:id/cancel, DELETE} route"}
{"timestamp":"2026-10-20T09:27:57.189Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/sync/:stripeSubscriptionId, POST} route"}
{"timestamp":"2026-10-20T09:27:57.190Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/payments, GET} route"}
{"timestamp":"2026-10-20T09:27:57.190Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/payments/stats, GET} route"}
{"timestamp":"2026-10-20T09:27:57.190Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/payment/:id, GET} route"}
{"timestamp":"2026-10-20T09:27:57.190Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/payment-methods/attach, POST} route"}
{"timestamp":"2026-10-20T09:27:57.190Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/payment-methods/:paymentMethodId, DELETE} route"}
{"timestamp":"2026-10-20T09:27:57.190Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/payment-methods, GET} route"}
{"timestamp":"2026-10-20T09:27:57.190Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/setup-intent, POST} route"}
{"timestamp":"2026-10-20T09:27:57.191Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/update-employee-count, POST} route"}
{"timestamp":"2026-10-20T09:27:57.191Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/retry-payment/:subscriptionId, POST} route"}
{"timestamp":"2026-10-20T09:27:57.191Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/invoice/:invoiceId/pdf, GET} route"}
{"timestamp":"2026-10-20T09:27:57.191Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/preview-upgrade, POST} route"}
{"timestamp":"2026-10-20T09:27:57.191Z","level":"log","context":"RoutesResolver","message":"StripeWebhookController {/stripe/webhook}:"}
{"timestamp":"2026-10-20T09:27:57.191Z","level":"log","context":"RouterExplorer","message":"Mapped {/stripe/webhook/test, GET} route"}
{"timestamp":"2026-10-20T09:27:57.191Z","level":"log","context":"RouterExplorer","message":"Mapped {/stripe/webhook, POST} route"}
{"timestamp":"2026-10-20T09:27:57.192Z","level":"log","context":"RoutesResolver","message":"EmailController {/email-templates}:"}
{"timestamp":"2026-10-20T09:27:57.192Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates/test, POST} route"}
{"timestamp":"2026-10-20T09:27:57.192Z","level":"log","context":"RoutesResolver","message":"EmployeeController {/employees}:"}
{"timestamp":"2026-10-20T09:27:57.192Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees, POST} route"}
{"timestamp":"2026-10-20T09:27:57.192Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees, GET} route"}
{"timestamp":"2026-10-20T09:27:57.192Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees/export, GET} route"}
{"timestamp":"2026-10-20T09:27:57.192Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees/risk-stats, GET} route"}
{"timestamp":"2026-10-20T09:27:57.193Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees/:id, GET} route"}
{"timestamp":"2026-10-20T09:27:57.193Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees/:id, PUT} route"}
{"timestamp":"2026-10-20T09:27:57.193Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees/:id, DELETE} route"}
{"timestamp":"2026-10-20T09:27:57.193Z","level":"log","context":"RoutesResolver","message":"GroupController {/groups}:"}
{"timestamp":"2026-10-20T09:27:57.193Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups, POST} route"}
{"timestamp":"2026-10-20T09:27:57.193Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups, GET} route"}
{"timestamp":"2026-10-20T09:27:57.193Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups/standard, GET} route"}
{"timestamp":"2026-10-20T09:27:57.194Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups/:id, GET} route"}
{"timestamp":"2026-10-20T09:27:57.194Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups/:id, PUT} route"}
{"timestamp":"2026-10-20T09:27:57.194Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups/:id, DELETE} route"}
{"timestamp":"2026-10-20T09:27:57.194Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups/:id/info, GET} route"}
{"timestamp":"2026-10-20T09:27:57.194Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups/:id/with-employees, GET} route"}
{"timestamp":"2026-10-20T09:27:57.194Z","level":"log","context":"RoutesResolver","message":"SenderProfileController {/sender-profiles}:"}
{"timestamp":"2026-10-20T09:27:57.195Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles, GET} route"}
{"timestamp":"2026-10-20T09:27:57.195Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles/:id, GET} route"}
{"timestamp":"2026-10-20T09:27:57.195Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles, POST} route"}
{"timestamp":"2026-10-20T09:27:57.195Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles/:id, PUT} route"}
{"timestamp":"2026-10-20T09:27:57.195Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles/:id, DELETE} route"}
{"timestamp":"2026-10-20T09:27:57.195Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles/:id/verify-domain, POST} route"}
{"timestamp":"2026-10-20T09:27:57.196Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles/domain-verification, GET} route"}
{"timestamp":"2026-10-20T09:27:57.196Z","level":"log","context":"RoutesResolver","message":"EmailTemplateController {/email-templates}:"}
{"timestamp":"2026-10-20T09:27:57.196Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates, GET} route"}
{"timestamp":"2026-10-20T09:27:57.196Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates/:id, GET} route"}
{"timestamp":"2026-10-20T09:27:57.196Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates, POST} route"}
{"timestamp":"2026-10-20T09:27:57.196Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates/:id, PUT} route"}
{"timestamp":"2026-10-20T09:27:57.196Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates/:id, DELETE} route"}
{"timestamp":"2026-10-20T09:27:57.197Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates/:id/duplicate, POST} route"}
{"timestamp":"2026-10-20T09:27:57.197Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates/:id/preview, GET} route"}
{"timestamp":"2026-10-20T09:27:57.197Z","level":"log","context":"RoutesResolver","message":"ScenarioController {/scenarios}:"}
{"timestamp":"2026-10-20T09:27:57.197Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios, POST} route"}
{"timestamp":"2026-10-20T09:27:57.197Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios/generate-content, POST} route"}
{"timestamp":"2026-10-20T09:27:57.197Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios, GET} route"}
{"timestamp":"2026-10-20T09:27:57.197Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios/:id, GET} route"}
{"timestamp":"2026-10-20T09:27:57.198Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios/:id, PUT} route"}
{"timestamp":"2026-10-20T09:27:57.198Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios/:id, DELETE} route"}
{"timestamp":"2026-10-20T09:27:57.198Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios/generate-from-json, POST} route"}
{"timestamp":"2026-10-20T09:27:57.198Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios/:id/save-as-custom-scenario, POST} route"}
{"timestamp":"2026-10-20T09:27:57.198Z","level":"log","context":"RoutesResolver","message":"CampaignController {/campaigns}:"}
{"timestamp":"2026-10-20T09:27:57.198Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns, POST} route"}
{"timestamp":"2026-10-20T09:27:57.199Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns, GET} route"}
{"timestamp":"2026-10-20T09:27:57.199Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id, GET} route"}
{"timestamp":"2026-10-20T09:27:57.199Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id/details, GET} route"}
{"timestamp":"2026-10-20T09:27:57.199Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id/employees, GET} route"}
{"timestamp":"2026-10-20T09:27:57.199Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id, PATCH} route"}
{"timestamp":"2026-10-20T09:27:57.199Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id/start, POST} route"}
{"timestamp":"2026-10-20T09:27:57.200Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id/stop, POST} route"}
{"timestamp":"2026-10-20T09:27:57.200Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id/duplicate, POST} route"}
{"timestamp":"2026-10-20T09:27:57.200Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id, DELETE} route"}
{"timestamp":"2026-10-20T09:27:57.200Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/auto-generate-program, POST} route"}
{"timestamp":"2026-10-20T09:27:57.200Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/generate-from-threat-intelligence, POST} route"}
{"timestamp":"2026-10-20T09:27:57.200Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id/risk-score, GET} route"}
{"timestamp":"2026-10-20T09:27:57.201Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/recalculate-risk-scores, POST} route"}
{"timestamp":"2026-10-20T09:27:57.201Z","level":"log","context":"RoutesResolver","message":"CampaignController {/api/campaigns}:"}
{"timestamp":"2026-10-20T09:27:57.201Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns, POST} route"}
{"timestamp":"2026-10-20T09:27:57.201Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns, GET} route"}
{"timestamp":"2026-10-20T09:27:57.201Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id, GET} route"}
{"timestamp":"2026-10-20T09:27:57.201Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id/details, GET} route"}
{"timestamp":"2026-10-20T09:27:57.201Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id/employees, GET} route"}
{"timestamp":"2026-10-20T09:27:57.202Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id, PATCH} route"}
{"timestamp":"2026-10-20T09:27:57.202Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id/start, POST} route"}
{"timestamp":"2026-10-20T09:27:57.202Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id/stop, POST} route"}
{"timestamp":"2026-10-20T09:27:57.202Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id/duplicate, POST} route"}
{"timestamp":"2026-10-20T09:27:57.202Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id, DELETE} route"}
{"timestamp":"2026-10-20T09:27:57.202Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/auto-generate-program, POST} route"}
{"timestamp":"2026-10-20T09:27:57.202Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/generate-from-threat-intelligence, POST} route"}
{"timestamp":"2026-10-20T09:27:57.203Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id/risk-score, GET} route"}
{"timestamp":"2026-10-20T09:27:57.203Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/recalculate-risk-scores, POST} route"}
{"timestamp":"2026-10-20T09:27:57.203Z","level":"log","context":"RoutesResolver","message":"NotificationsController {/notifications}:"}
{"timestamp":"2026-10-20T09:27:57.203Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications, POST} route"}
{"timestamp":"2026-10-20T09:27:57.203Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications, GET} route"}
{"timestamp":"2026-10-20T09:27:57.203Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/unread, GET} route"}
{"timestamp":"2026-10-20T09:27:57.204Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/unread-count, GET} route"}
{"timestamp":"2026-10-20T09:27:57.204Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/:id, GET} route"}
{"timestamp":"2026-10-20T09:27:57.204Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/:id, PATCH} route"}
{"timestamp":"2026-10-20T09:27:57.204Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/:id/read, PATCH} route"}
{"timestamp":"2026-10-20T09:27:57.204Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/mark-all-read, PATCH} route"}
{"timestamp":"2026-10-20T09:27:57.205Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/:id, DELETE} route"}
{"timestamp":"2026-10-20T09:27:57.205Z","level":"log","context":"RoutesResolver","message":"LandingPageController {/lp}:"}
{"timestamp":"2026-10-20T09:27:57.205Z","level":"log","context":"RouterExplorer","message":"Mapped {/lp/image, GET} route"}
{"timestamp":"2026-10-20T09:27:57.205Z","level":"log","context":"RouterExplorer","message":"Mapped {/lp/learning, GET} route"}
{"timestamp":"2026-10-20T09:27:57.205Z","level":"log","context":"RouterExplorer","message":"Mapped {/lp/submit, POST} route"}
{"timestamp":"2026-10-20T09:27:57.205Z","level":"log","context":"RouterExplorer","message":"Mapped {/lp/test, GET} route"}
{"timestamp":"2026-10-20T09:27:57.205Z","level":"warn","context":"LegacyRouteConverter","message":"Unsupported route path: \"/lp/*\". In previous versions, the symbols ?, *, and + were used to denote optional or repeating path parameters. The latest version of \"path-to-regexp\" now requires the use of named parameters. For example, instead of using a route like /users/* to capture all routes starting with \"/users\", you should use /users/*path. For more details, refer to the migration guide. Attempting to auto-convert..."}
{"timestamp":"2026-10-20T09:27:57.206Z","level":"log","context":"RouterExplorer","message":"Mapped {/lp/*, ALL} route"}
{"timestamp":"2026-10-20T09:27:57.206Z","level":"log","context":"RoutesResolver","message":"SupportController {/support}:"}
{"timestamp":"2026-10-20T09:27:57.207Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets, POST} route"}
{"timestamp":"2026-10-20T09:27:57.207Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets, GET} route"}
{"timestamp":"2026-10-20T09:27:57.207Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets/:id, GET} route"}
{"timestamp":"2026-10-20T09:27:57.207Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets/:id, PATCH} route"}
{"timestamp":"2026-10-20T09:27:57.207Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets/:id, DELETE} route"}
{"timestamp":"2026-10-20T09:27:57.207Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets/:id/messages, POST} route"}
{"timestamp":"2026-10-20T09:27:57.208Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets/:id/close, POST} route"}
{"timestamp":"2026-10-20T09:27:57.208Z","level":"log","context":"RoutesResolver","message":"BusninessMetricsController {/business-metrics}:"}
{"timestamp":"2026-10-20T09:27:57.208Z","level":"log","context":"RouterExplorer","message":"Mapped {/business-metrics, GET} route"}
{"timestamp":"2026-10-20T09:27:57.208Z","level":"log","context":"RoutesResolver","message":"UsersController {/users}:"}
{"timestamp":"2026-10-20T09:27:57.208Z","level":"log","context":"RouterExplorer","message":"Mapped {/users/:id, PUT} route"}
{"timestamp":"2026-10-20T09:27:57.208Z","level":"log","context":"RouterExplorer","message":"Mapped {/users/settings, GET} route"}
{"timestamp":"2026-10-20T09:27:57.208Z","level":"log","context":"RouterExplorer","message":"Mapped {/users/settings/general, PUT} route"}
{"timestamp":"2026-10-20T09:27:57.208Z","level":"log","context":"RouterExplorer","message":"Mapped {/users/company/settings, PUT} route"}
{"timestamp":"2026-10-20T09:27:57.209Z","level":"log","context":"RouterExplorer","message":"Mapped {/users/change-password, POST} route"}
{"timestamp":"2026-10-20T09:27:57.209Z","level":"log","context":"RouterExplorer","message":"Mapped {/users/localization/settings, PUT} route"}
{"timestamp":"2026-10-20T09:27:57.209Z","level":"log","context":"RoutesResolver","message":"PartnerController {/partner}:"}
{"timestamp":"2026-10-20T09:27:57.209Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses, POST} route"}
{"timestamp":"2026-10-20T09:27:57.209Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses, GET} route"}
{"timestamp":"2026-10-20T09:27:57.210Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses/:id, GET} route"}
{"timestamp":"2026-10-20T09:27:57.210Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses/:id, PUT} route"}
{"timestamp":"2026-10-20T09:27:57.210Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses/:id, DELETE} route"}
{"timestamp":"2026-10-20T09:27:57.210Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses/:id/impersonate, POST} route"}
{"timestamp":"2026-10-20T09:27:57.210Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses/stop-impersonation, POST} route"}
{"timestamp":"2026-10-20T09:27:57.210Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/license-usage, GET} route"}
{"timestamp":"2026-10-20T09:27:57.210Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/invoices, POST} route"}
{"timestamp":"2026-10-20T09:27:57.211Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/invoices, GET} route"}
{"timestamp":"2026-10-20T09:27:57.211Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/invoices/:id, GET} route"}
{"timestamp":"2026-10-20T09:27:57.211Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/invoices/:id, PUT} route"}
{"timestamp":"2026-10-20T09:27:57.211Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/invoices/:id, DELETE} route"}
{"timestamp":"2026-10-20T09:27:57.211Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/invoices/:id/mark-paid, PUT} route"}
{"timestamp":"2026-10-20T09:27:57.211Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/onboarding/generate-token, POST} route"}
{"timestamp":"2026-10-20T09:27:57.212Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/dashboard, GET} route"}
{"timestamp":"2026-10-20T09:27:57.212Z","level":"log","context":"RoutesResolver","message":"MspSubscriptionController {/partner/msp-subscriptions}:"}
{"timestamp":"2026-10-20T09:27:57.212Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/plans, POST} route"}
{"timestamp":"2026-10-20T09:27:57.212Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/plans, GET} route"}
{"timestamp":"2026-10-20T09:27:57.212Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/plans/:planId, GET} route"}
{"timestamp":"2026-10-20T09:27:57.212Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/plans/:planId, PUT} route"}
{"timestamp":"2026-10-20T09:27:57.212Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/plans/:planId, DELETE} route"}
{"timestamp":"2026-10-20T09:27:57.213Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/businesses/:businessId/subscription, POST} route"}
{"timestamp":"2026-10-20T09:27:57.213Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions, GET} route"}
{"timestamp":"2026-10-20T09:27:57.213Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/businesses/:businessId/subscription, GET} route"}
{"timestamp":"2026-10-20T09:27:57.213Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/businesses/:businessId/subscription, PUT} route"}
{"timestamp":"2026-10-20T09:27:57.213Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/businesses/:businessId/subscription, DELETE} route"}
{"timestamp":"2026-10-20T09:27:57.213Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/businesses/:businessId/subscription/limits, GET} route"}
{"timestamp":"2026-10-20T09:27:57.214Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/businesses/:businessId/subscription/change-plan, PUT} route"}
{"timestamp":"2026-10-20T09:27:57.214Z","level":"log","context":"RoutesResolver","message":"OnboardingController {/onboarding}:"}
{"timestamp":"2026-10-20T09:27:57.214Z","level":"log","context":"RouterExplorer","message":"Mapped {/onboarding/validate/:token, GET} route"}
{"timestamp":"2026-10-20T09:27:57.214Z","level":"log","context":"RouterExplorer","message":"Mapped {/onboarding/complete/:token, POST} route"}
{"timestamp":"2026-10-20T09:27:57.214Z","level":"log","context":"RoutesResolver","message":"ResellerController {/reseller}:"}
{"timestamp":"2026-10-20T09:27:57.214Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/businesses, POST} route"}
{"timestamp":"2026-10-20T09:27:57.214Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/businesses, GET} route"}
{"timestamp":"2026-10-20T09:27:57.215Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/businesses/:id, GET} route"}
{"timestamp":"2026-10-20T09:27:57.215Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/businesses/:id, PUT} route"}
{"timestamp":"2026-10-20T09:27:57.215Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/businesses/:id, DELETE} route"}
{"timestamp":"2026-10-20T09:27:57.215Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/license-usage, GET} route"}
{"timestamp":"2026-10-20T09:27:57.215Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/invoices, POST} route"}
{"timestamp":"2026-10-20T09:27:57.215Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/invoices, GET} route"}
{"timestamp":"2026-10-20T09:27:57.216Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/invoices/:id, GET} route"}
{"timestamp":"2026-10-20T09:27:57.216Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/invoices/:id, PUT} route"}
{"timestamp":"2026-10-20T09:27:57.216Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/invoices/:id, DELETE} route"}
{"timestamp":"2026-10-20T09:27:57.216Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/invoices/:id/mark-paid, PUT} route"}
{"timestamp":"2026-10-20T09:27:57.216Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/onboarding/generate-token, POST} route"}
{"timestamp":"2026-10-20T09:27:57.216Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/dashboard, GET} route"}
{"timestamp":"2026-10-20T09:27:57.216Z","level":"log","context":"RoutesResolver","message":"ResellerSubscriptionController {/reseller}:"}
{"timestamp":"2026-10-20T09:27:57.217Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/plans, POST} route"}
{"timestamp":"2026-10-20T09:27:57.217Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/plans, GET} route"}
{"timestamp":"2026-10-20T09:27:57.217Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/plans/:planId, GET} route"}
{"timestamp":"2026-10-20T09:27:57.217Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/plans/:planId, PUT} route"}
{"timestamp":"2026-10-20T09:27:57.217Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/plans/:planId, DELETE} route"}
{"timestamp":"2026-10-20T09:27:57.217Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/subscriptions/businesses/:businessId/subscription, POST} route"}
{"timestamp":"2026-10-20T09:27:57.218Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/subscriptions, GET} route"}
{"timestamp":"2026-10-20T09:27:57.218Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/subscriptions/businesses/:businessId/subscription, GET} route"}
{"timestamp":"2026-10-20T09:27:57.218Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/subscriptions/businesses/:businessId/subscription, PUT} route"}
{"timestamp":"2026-10-20T09:27:57.218Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/subscriptions/businesses/:businessId/subscription, DELETE} route"}
{"timestamp":"2026-10-20T09:27:57.218Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/subscriptions/businesses/:businessId/subscription/limits, GET} route"}
{"timestamp":"2026-10-20T09:27:57.218Z","level":"log","context":"RoutesResolver","message":"HealthController {/health}:"}
{"timestamp":"2026-10-20T09:27:57.219Z","level":"log","context":"RouterExplorer","message":"Mapped {/health, GET} route"}
{"timestamp":"2026-10-20T09:27:57.219Z","level":"log","context":"RouterExplorer","message":"Mapped {/health/test-logs, GET} route"}
{"timestamp":"2026-10-20T09:27:57.219Z","level":"log","context":"RoutesResolver","message":"AzureAdController {/azure-ad}:"}
{"timestamp":"2026-10-20T09:27:57.219Z","level":"log","context":"RouterExplorer","message":"Mapped {/azure-ad/config, POST} route"}
{"timestamp":"2026-10-20T09:27:57.219Z","level":"log","context":"RouterExplorer","message":"Mapped {/azure-ad/config, GET} route"}
{"timestamp":"2026-10-20T09:27:57.219Z","level":"log","context":"RouterExplorer","message":"Mapped {/azure-ad/test-connection, POST} route"}
{"timestamp":"2026-10-20T09:27:57.219Z","level":"log","context":"RouterExplorer","message":"Mapped {/azure-ad/sync, POST} route"}
{"timestamp":"2026-10-20T09:27:57.220Z","level":"log","context":"RoutesResolver","message":"ThreatsController {/threats}:"}
{"timestamp":"2026-10-20T09:27:57.220Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats, POST} route"}
{"timestamp":"2026-10-20T09:27:57.220Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats, GET} route"}
{"timestamp":"2026-10-20T09:27:57.220Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/chart-data, GET} route"}
{"timestamp":"2026-10-20T09:27:57.220Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/claude-search, POST} route"}
{"timestamp":"2026-10-20T09:27:57.220Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/claude-latest, POST} route"}
{"timestamp":"2026-10-20T09:27:57.221Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/claude-trending, POST} route"}
{"timestamp":"2026-10-20T09:27:57.221Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/claude-categories, POST} route"}
{"timestamp":"2026-10-20T09:27:57.221Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/claude-manual-search, POST} route"}
{"timestamp":"2026-10-20T09:27:57.221Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/claude-quick-search, POST} route"}
{"timestamp":"2026-10-20T09:27:57.221Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/scheduler-status, GET} route"}
{"timestamp":"2026-10-20T09:27:57.221Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/health-check, GET} route"}
{"timestamp":"2026-10-20T09:27:57.221Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/pause-scheduler, POST} route"}
{"timestamp":"2026-10-20T09:27:57.222Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/:id, GET} route"}
{"timestamp":"2026-10-20T09:27:57.222Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/:id, PATCH} route"}
{"timestamp":"2026-10-20T09:27:57.222Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/:id, DELETE} route"}
{"timestamp":"2026-10-20T09:27:57.222Z","level":"log","context":"RoutesResolver","message":"DomainController {/domains}:"}
{"timestamp":"2026-10-20T09:27:57.222Z","level":"log","context":"RouterExplorer","message":"Mapped {/domains, GET} route"}
{"timestamp":"2026-10-20T09:27:57.222Z","level":"log","context":"RouterExplorer","message":"Mapped {/domains/:id, GET} route"}
{"timestamp":"2026-10-20T09:27:57.222Z","level":"log","context":"RouterExplorer","message":"Mapped {/domains, POST} route"}
{"timestamp":"2026-10-20T09:27:57.222Z","level":"log","context":"RouterExplorer","message":"Mapped {/domains/:id, PUT} route"}
{"timestamp":"2026-10-20T09:27:57.223Z","level":"log","context":"RouterExplorer","message":"Mapped {/domains/:id, DELETE} route"}
{"timestamp":"2026-10-20T09:27:57.223Z","level":"log","context":"RouterExplorer","message":"Mapped {/domains/seed, POST} route"}
{"timestamp":"2026-10-20T09:27:57.223Z","level":"log","context":"RoutesResolver","message":"MspSubscriptionController {/msp-subscription}:"}
{"timestamp":"2026-10-20T09:27:57.223Z","level":"log","context":"RouterExplorer","message":"Mapped {/msp-subscription/current, GET} route"}
{"timestamp":"2026-10-20T09:27:57.223Z","level":"log","context":"RouterExplorer","message":"Mapped {/msp-subscription/invoices, GET} route"}
{"timestamp":"2026-10-20T09:27:57.223Z","level":"log","context":"RouterExplorer","message":"Mapped {/msp-subscription/invoice/:invoiceId/pdf, GET} route"}
{"timestamp":"2026-10-20T09:27:57.223Z","level":"log","context":"RoutesResolver","message":"MspSubscriptionController {/api/msp-subscription}:"}
{"timestamp":"2026-10-20T09:27:57.224Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/msp-subscription/current, GET} route"}
{"timestamp":"2026-10-20T09:27:57.224Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/msp-subscription/invoices, GET} route"}
{"timestamp":"2026-10-20T09:27:57.224Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/msp-subscription/invoice/:invoiceId/pdf, GET} route"}
{"timestamp":"2026-10-20T09:27:57.293Z","level":"log","context":"NestApplication","message":"Nest application successfully started"}
{"timestamp":"2026-10-20T09:27:57.306Z","level":"log","context":"Bootstrap","message":"Users API successfully started on port 3842"}
{"timestamp":"2026-10-20T09:27:57.307Z","level":"log","context":"SeedService","message":"🌱 Starting database seeding..."}
{"timestamp":"2026-10-20T09:27:57.312Z","level":"log","context":"SeedService","message":"Admin account already exists, skipping seed"}
{"timestamp":"2026-10-20T09:27:57.314Z","level":"log","context":"SeedService","message":"Reseller account already exists, skipping seed"}
{"timestamp":"2026-10-20T09:27:57.316Z","level":"log","context":"SeedService","message":"MSP account already exists, skipping seed"}
{"timestamp":"2026-10-20T09:27:57.316Z","level":"log","context":"SeedService","message":"✅ Database seeding completed successfully"}
{"timestamp":"2026-10-20T12:26:41.626Z","level":"warn","context":"LegacyRouteConverter","message":"Unsupported route path: \"/lp/*\". In previous versions, the symbols ?, *, and + were used to denote optional or repeating path parameters. The latest version of \"path-to-regexp\" now requires the use of named parameters. For example, instead of using a route like /users/* to capture all routes starting with \"/users\", you should use /users/*path. For more details, refer to the migration guide. Attempting to auto-convert..."}
{"timestamp":"2026-10-20T12:26:41.664Z","level":"log","context":"Bootstrap","message":"Starting Users API on port 3842..."}
{"timestamp":"2026-10-20T12:26:41.668Z","level":"log","context":"RoutesResolver","message":"UsersApiController {/}:"}
{"timestamp":"2026-10-20T12:26:41.671Z","level":"log","context":"RouterExplorer","message":"Mapped {/, GET} route"}
{"timestamp":"2026-10-20T12:26:41.672Z","level":"log","context":"RoutesResolver","message":"AuthController {/auth}:"}
{"timestamp":"2026-10-20T12:26:41.672Z","level":"log","context":"RouterExplorer","message":"Mapped {/auth/login, POST} route"}
{"timestamp":"2026-10-20T12:26:41.673Z","level":"log","context":"RouterExplorer","message":"Mapped {/auth/admin/login, POST} route"}
{"timestamp":"2026-10-20T12:26:41.673Z","level":"log","context":"RouterExplorer","message":"Mapped {/auth/send-otp, POST} route"}
{"timestamp":"2026-10-20T12:26:41.674Z","level":"log","context":"RouterExplorer","message":"Mapped {/auth/verify-otp, POST} route"}
{"timestamp":"2026-10-20T12:26:41.674Z","level":"log","context":"RouterExplorer","message":"Mapped {/auth/signup, POST} route"}
{"timestamp":"2026-10-20T12:26:41.675Z","level":"log","context":"RouterExplorer","message":"Mapped {/auth/subscription-status, GET} route"}
{"timestamp":"2026-10-20T12:26:41.675Z","level":"log","context":"RoutesResolver","message":"AdminMspController {/admin/msp}:"}
{"timestamp":"2026-10-20T12:26:41.675Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/msp, GET} route"}
{"timestamp":"2026-10-20T12:26:41.676Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/msp/:id, GET} route"}
{"timestamp":"2026-10-20T12:26:41.677Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/msp, POST} route"}
{"timestamp":"2026-10-20T12:26:41.677Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/msp/:id, PUT} route"}
{"timestamp":"2026-10-20T12:26:41.677Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/msp/:id, DELETE} route"}
{"timestamp":"2026-10-20T12:26:41.677Z","level":"log","context":"RoutesResolver","message":"AdminLicenseController {/admin/licenses}:"}
{"timestamp":"2026-10-20T12:26:41.678Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/licenses/summary, GET} route"}
{"timestamp":"2026-10-20T12:26:41.678Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/licenses/msp/:mspId, GET} route"}
{"timestamp":"2026-10-20T12:26:41.678Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/licenses/msp/:mspId, PUT} route"}
{"timestamp":"2026-10-20T12:26:41.678Z","level":"log","context":"RoutesResolver","message":"AdminImpersonationController {/admin/impersonation}:"}
{"timestamp":"2026-10-20T12:26:41.681Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/impersonation/msp-users, GET} route"}
{"timestamp":"2026-10-20T12:26:41.681Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/impersonation/impersonate, POST} route"}
{"timestamp":"2026-10-20T12:26:41.681Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/impersonation/stop, POST} route"}
{"timestamp":"2026-10-20T12:26:41.681Z","level":"log","context":"RoutesResolver","message":"AdminAiUsageController {/admin/ai-usage}:"}
{"timestamp":"2026-10-20T12:26:41.682Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-usage, GET} route"}
{"timestamp":"2026-10-20T12:26:41.682Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-usage/business/:businessId, GET} route"}
{"timestamp":"2026-10-20T12:26:41.682Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-usage/report/monthly, GET} route"}
{"timestamp":"2026-10-20T12:26:41.682Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-usage/pricing, GET} route"}
{"timestamp":"2026-10-20T12:26:41.682Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-usage/pricing, POST} route"}
{"timestamp":"2026-10-20T12:26:41.683Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-usage/credit/:businessId, PUT} route"}
{"timestamp":"2026-10-20T12:26:41.683Z","level":"log","context":"RoutesResolver","message":"AdminAiUsageController {/api/admin/ai-usage}:"}
{"timestamp":"2026-10-20T12:26:41.683Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-usage, GET} route"}
{"timestamp":"2026-10-20T12:26:41.683Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-usage/business/:businessId, GET} route"}
{"timestamp":"2026-10-20T12:26:41.683Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-usage/report/monthly, GET} route"}
{"timestamp":"2026-10-20T12:26:41.683Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-usage/pricing, GET} route"}
{"timestamp":"2026-10-20T12:26:41.684Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-usage/pricing, POST} route"}
{"timestamp":"2026-10-20T12:26:41.684Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-usage/credit/:businessId, PUT} route"}
{"timestamp":"2026-10-20T12:26:41.684Z","level":"log","context":"RoutesResolver","message":"AdminAiModelController {/admin/ai-models}:"}
{"timestamp":"2026-10-20T12:26:41.684Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models, POST} route"}
{"timestamp":"2026-10-20T12:26:41.685Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models, GET} route"}
{"timestamp":"2026-10-20T12:26:41.685Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/default, GET} route"}
{"timestamp":"2026-10-20T12:26:41.685Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/:id, GET} route"}
{"timestamp":"2026-10-20T12:26:41.685Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/:id, PUT} route"}
{"timestamp":"2026-10-20T12:26:41.685Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/:id, DELETE} route"}
{"timestamp":"2026-10-20T12:26:41.686Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/:id/set-default, POST} route"}
{"timestamp":"2026-10-20T12:26:41.686Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/assign-to-business, POST} route"}
{"timestamp":"2026-10-20T12:26:41.686Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/business/:businessId, GET} route"}
{"timestamp":"2026-10-20T12:26:41.686Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/:id/businesses, GET} route"}
{"timestamp":"2026-10-20T12:26:41.686Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/initialize-defaults, POST} route"}
{"timestamp":"2026-10-20T12:26:41.687Z","level":"log","context":"RoutesResolver","message":"AdminAiModelController {/api/admin/ai-models}:"}
{"timestamp":"2026-10-20T12:26:41.687Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models, POST} route"}
{"timestamp":"2026-10-20T12:26:41.687Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models, GET} route"}
{"timestamp":"2026-10-20T12:26:41.687Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/default, GET} route"}
{"timestamp":"2026-10-20T12:26:41.687Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/:id, GET} route"}
{"timestamp":"2026-10-20T12:26:41.687Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/:id, PUT} route"}
{"timestamp":"2026-10-20T12:26:41.688Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/:id, DELETE} route"}
{"timestamp":"2026-10-20T12:26:41.688Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/:id/set-default, POST} route"}
{"timestamp":"2026-10-20T12:26:41.688Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/assign-to-business, POST} route"}
{"timestamp":"2026-10-20T12:26:41.688Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/business/:businessId, GET} route"}
{"timestamp":"2026-10-20T12:26:41.688Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/:id/businesses, GET} route"}
{"timestamp":"2026-10-20T12:26:41.688Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/initialize-defaults, POST} route"}
{"timestamp":"2026-10-20T12:26:41.689Z","level":"log","context":"RoutesResolver","message":"AdminBusinessController {/admin/businesses}:"}
{"timestamp":"2026-10-20T12:26:41.689Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/businesses, GET} route"}
{"timestamp":"2026-10-20T12:26:41.689Z","level":"log","context":"RoutesResolver","message":"ResellerManagementController {/admin/resellers}:"}
{"timestamp":"2026-10-20T12:26:41.689Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/resellers, GET} route"}
{"timestamp":"2026-10-20T12:26:41.689Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/resellers/create-default, POST} route"}
{"timestamp":"2026-10-20T12:26:41.689Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/resellers, POST} route"}
{"timestamp":"2026-10-20T12:26:41.690Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/resellers/:id/toggle-status, PUT} route"}
{"timestamp":"2026-10-20T12:26:41.690Z","level":"log","context":"RoutesResolver","message":"SubscriptionController {/subscription}:"}
{"timestamp":"2026-10-20T12:26:41.690Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/plans, GET} route"}
{"timestamp":"2026-10-20T12:26:41.690Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/calculate-price, POST} route"}
{"timestamp":"2026-10-20T12:26:41.690Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/current, GET} route"}
{"timestamp":"2026-10-20T12:26:41.690Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/create, POST} route"}
{"timestamp":"2026-10-20T12:26:41.691Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/:id, PUT} route"}
{"timestamp":"2026-10-20T12:26:41.691Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/:id/cancel, DELETE} route"}
{"timestamp":"2026-10-20T12:26:41.691Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/sync/:stripeSubscriptionId, POST} route"}
{"timestamp":"2026-10-20T12:26:41.691Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/payments, GET} route"}
{"timestamp":"2026-10-20T12:26:41.691Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/payments/stats, GET} route"}
{"timestamp":"2026-10-20T12:26:41.692Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/payment/:id, GET} route"}
{"timestamp":"2026-10-20T12:26:41.692Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/payment-methods/attach, POST} route"}
{"timestamp":"2026-10-20T12:26:41.692Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/payment-methods/:paymentMethodId, DELETE} route"}
{"timestamp":"2026-10-20T12:26:41.692Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/payment-methods, GET} route"}
{"timestamp":"2026-10-20T12:26:41.692Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/setup-intent, POST} route"}
{"timestamp":"2026-10-20T12:26:41.692Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/update-employee-count, POST} route"}
{"timestamp":"2026-10-20T12:26:41.693Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/retry-payment/:subscriptionId, POST} route"}
{"timestamp":"2026-10-20T12:26:41.693Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/invoice/:invoiceId/pdf, GET} route"}
{"timestamp":"2026-10-20T12:26:41.693Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/preview-upgrade, POST} route"}
{"timestamp":"2026-10-20T12:26:41.693Z","level":"log","context":"RoutesResolver","message":"SubscriptionController {/api/subscription}:"}
{"timestamp":"2026-10-20T12:26:41.693Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/plans, GET} route"}
{"timestamp":"2026-10-20T12:26:41.693Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/calculate-price, POST} route"}
{"timestamp":"2026-10-20T12:26:41.694Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/current, GET} route"}
{"timestamp":"2026-10-20T12:26:41.694Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/create, POST} route"}
{"timestamp":"2026-10-20T12:26:41.694Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/:id, PUT} route"}
{"timestamp":"2026-10-20T12:26:41.694Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/:id/cancel, DELETE} route"}
{"timestamp":"2026-10-20T12:26:41.694Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/sync/:stripeSubscriptionId, POST} route"}
{"timestamp":"2026-10-20T12:26:41.694Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/payments, GET} route"}
{"timestamp":"2026-10-20T12:26:41.695Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/payments/stats, GET} route"}
{"timestamp":"2026-10-20T12:26:41.695Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/payment/:id, GET} route"}
{"timestamp":"2026-10-20T12:26:41.695Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/payment-methods/attach, POST} route"}
{"timestamp":"2026-10-20T12:26:41.695Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/payment-methods/:paymentMethodId, DELETE} route"}
{"timestamp":"2026-10-20T12:26:41.695Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/payment-methods, GET} route"}
{"timestamp":"2026-10-20T12:26:41.695Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/setup-intent, POST} route"}
{"timestamp":"2026-10-20T12:26:41.696Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/update-employee-count, POST} route"}
{"timestamp":"2026-10-20T12:26:41.696Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/retry-payment/:subscriptionId, POST} route"}
{"timestamp":"2026-10-20T12:26:41.696Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/invoice/:invoiceId/pdf, GET} route"}
{"timestamp":"2026-10-20T12:26:41.696Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/preview-upgrade, POST} route"}
{"timestamp":"2026-10-20T12:26:41.696Z","level":"log","context":"RoutesResolver","message":"StripeWebhookController {/stripe/webhook}:"}
{"timestamp":"2026-10-20T12:26:41.696Z","level":"log","context":"RouterExplorer","message":"Mapped {/stripe/webhook/test, GET} route"}
{"timestamp":"2026-10-20T12:26:41.696Z","level":"log","context":"RouterExplorer","message":"Mapped {/stripe/webhook, POST} route"}
{"timestamp":"2026-10-20T12:26:41.697Z","level":"log","context":"RoutesResolver","message":"EmailController {/email-templates}:"}
{"timestamp":"2026-10-20T12:26:41.697Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates/test, POST} route"}
{"timestamp":"2026-10-20T12:26:41.697Z","level":"log","context":"RoutesResolver","message":"EmployeeController {/employees}:"}
{"timestamp":"2026-10-20T12:26:41.697Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees, POST} route"}
{"timestamp":"2026-10-20T12:26:41.697Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees, GET} route"}
{"timestamp":"2026-10-20T12:26:41.697Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees/export, GET} route"}
{"timestamp":"2026-10-20T12:26:41.698Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees/risk-stats, GET} route"}
{"timestamp":"2026-10-20T12:26:41.698Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees/:id, GET} route"}
{"timestamp":"2026-10-20T12:26:41.698Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees/:id, PUT} route"}
{"timestamp":"2026-10-20T12:26:41.698Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees/:id, DELETE} route"}
{"timestamp":"2026-10-20T12:26:41.698Z","level":"log","context":"RoutesResolver","message":"GroupController {/groups}:"}
{"timestamp":"2026-10-20T12:26:41.698Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups, POST} route"}
{"timestamp":"2026-10-20T12:26:41.699Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups, GET} route"}
{"timestamp":"2026-10-20T12:26:41.699Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups/standard, GET} route"}
{"timestamp":"2026-10-20T12:26:41.699Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups/:id, GET} route"}
{"timestamp":"2026-10-20T12:26:41.699Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups/:id, PUT} route"}
{"timestamp":"2026-10-20T12:26:41.699Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups/:id, DELETE} route"}
{"timestamp":"2026-10-20T12:26:41.699Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups/:id/info, GET} route"}
{"timestamp":"2026-10-20T12:26:41.699Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups/:id/with-employees, GET} route"}
{"timestamp":"2026-10-20T12:26:41.699Z","level":"log","context":"RoutesResolver","message":"SenderProfileController {/sender-profiles}:"}
{"timestamp":"2026-10-20T12:26:41.700Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles, GET} route"}
{"timestamp":"2026-10-20T12:26:41.700Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles/:id, GET} route"}
{"timestamp":"2026-10-20T12:26:41.700Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles, POST} route"}
{"timestamp":"2026-10-20T12:26:41.700Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles/:id, PUT} route"}
{"timestamp":"2026-10-20T12:26:41.700Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles/:id, DELETE} route"}
{"timestamp":"2026-10-20T12:26:41.701Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles/:id/verify-domain, POST} route"}
{"timestamp":"2026-10-20T12:26:41.701Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles/domain-verification, GET} route"}
{"timestamp":"2026-10-20T12:26:41.701Z","level":"log","context":"RoutesResolver","message":"EmailTemplateController {/email-templates}:"}
{"timestamp":"2026-10-20T12:26:41.701Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates, GET} route"}
{"timestamp":"2026-10-20T12:26:41.701Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates/:id, GET} route"}
{"timestamp":"2026-10-20T12:26:41.701Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates, POST} route"}
{"timestamp":"2026-10-20T12:26:41.702Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates/:id, PUT} route"}
{"timestamp":"2026-10-20T12:26:41.702Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates/:id, DELETE} route"}
{"timestamp":"2026-10-20T12:26:41.702Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates/:id/duplicate, POST} route"}
{"timestamp":"2026-10-20T12:26:41.702Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates/:id/preview, GET} route"}
{"timestamp":"2026-10-20T12:26:41.702Z","level":"log","context":"RoutesResolver","message":"ScenarioController {/scenarios}:"}
{"timestamp":"2026-10-20T12:26:41.702Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios, POST} route"}
{"timestamp":"2026-10-20T12:26:41.703Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios/generate-content, POST} route"}
{"timestamp":"2026-10-20T12:26:41.703Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios, GET} route"}
{"timestamp":"2026-10-20T12:26:41.703Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios/:id, GET} route"}
{"timestamp":"2026-10-20T12:26:41.703Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios/:id, PUT} route"}
{"timestamp":"2026-10-20T12:26:41.703Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios/:id, DELETE} route"}
{"timestamp":"2026-10-20T12:26:41.703Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios/generate-from-json, POST} route"}
{"timestamp":"2026-10-20T12:26:41.703Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios/:id/save-as-custom-scenario, POST} route"}
{"timestamp":"2026-10-20T12:26:41.704Z","level":"log","context":"RoutesResolver","message":"CampaignController {/campaigns}:"}
{"timestamp":"2026-10-20T12:26:41.704Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns, POST} route"}
{"timestamp":"2026-10-20T12:26:41.704Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns, GET} route"}
{"timestamp":"2026-10-20T12:26:41.704Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id, GET} route"}
{"timestamp":"2026-10-20T12:26:41.704Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id/details, GET} route"}
{"timestamp":"2026-10-20T12:26:41.704Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id/employees, GET} route"}
{"timestamp":"2026-10-20T12:26:41.705Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id, PATCH} route"}
{"timestamp":"2026-10-20T12:26:41.705Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id/start, POST} route"}
{"timestamp":"2026-10-20T12:26:41.705Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id/stop, POST} route"}
{"timestamp":"2026-10-20T12:26:41.705Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id/duplicate, POST} route"}
{"timestamp":"2026-10-20T12:26:41.705Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id, DELETE} route"}
{"timestamp":"2026-10-20T12:26:41.705Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/auto-generate-program, POST} route"}
{"timestamp":"2026-10-20T12:26:41.706Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/generate-from-threat-intelligence, POST} route"}
{"timestamp":"2026-10-20T12:26:41.706Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id/risk-score, GET} route"}
{"timestamp":"2026-10-20T12:26:41.706Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/recalculate-risk-scores, POST} route"}
{"timestamp":"2026-10-20T12:26:41.706Z","level":"log","context":"RoutesResolver","message":"CampaignController {/api/campaigns}:"}
{"timestamp":"2026-10-20T12:26:41.706Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns, POST} route"}
{"timestamp":"2026-10-20T12:26:41.706Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns, GET} route"}
{"timestamp":"2026-10-20T12:26:41.706Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id, GET} route"}
{"timestamp":"2026-10-20T12:26:41.707Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id/details, GET} route"}
{"timestamp":"2026-10-20T12:26:41.707Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id/employees, GET} route"}
{"timestamp":"2026-10-20T12:26:41.707Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id, PATCH} route"}
{"timestamp":"2026-10-20T12:26:41.707Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id/start, POST} route"}
{"timestamp":"2026-10-20T12:26:41.707Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id/stop, POST} route"}
{"timestamp":"2026-10-20T12:26:41.707Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id/duplicate, POST} route"}
{"timestamp":"2026-10-20T12:26:41.707Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id, DELETE} route"}
{"timestamp":"2026-10-20T12:26:41.708Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/auto-generate-program, POST} route"}
{"timestamp":"2026-10-20T12:26:41.708Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/generate-from-threat-intelligence, POST} route"}
{"timestamp":"2026-10-20T12:26:41.708Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id/risk-score, GET} route"}
{"timestamp":"2026-10-20T12:26:41.708Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/recalculate-risk-scores, POST} route"}
{"timestamp":"2026-10-20T12:26:41.708Z","level":"log","context":"RoutesResolver","message":"NotificationsController {/notifications}:"}
{"timestamp":"2026-10-20T12:26:41.708Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications, POST} route"}
{"timestamp":"2026-10-20T12:26:41.709Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications, GET} route"}
{"timestamp":"2026-10-20T12:26:41.709Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/unread, GET} route"}
{"timestamp":"2026-10-20T12:26:41.709Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/unread-count, GET} route"}
{"timestamp":"2026-10-20T12:26:41.709Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/:id, GET} route"}
{"timestamp":"2026-10-20T12:26:41.709Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/:id, PATCH} route"}
{"timestamp":"2026-10-20T12:26:41.709Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/:id/read, PATCH} route"}
{"timestamp":"2026-10-20T12:26:41.710Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/mark-all-read, PATCH} route"}
{"timestamp":"2026-10-20T12:26:41.710Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/:id, DELETE} route"}
{"timestamp":"2026-10-20T12:26:41.710Z","level":"log","context":"RoutesResolver","message":"LandingPageController {/lp}:"}
{"timestamp":"2026-10-20T12:26:41.710Z","level":"log","context":"RouterExplorer","message":"Mapped {/lp/image, GET} route"}
{"timestamp":"2026-10-20T12:26:41.710Z","level":"log","context":"RouterExplorer","message":"Mapped {/lp/learning, GET} route"}
{"timestamp":"2026-10-20T12:26:41.711Z","level":"log","context":"RouterExplorer","message":"Mapped {/lp/submit, POST} route"}
{"timestamp":"2026-10-20T12:26:41.711Z","level":"log","context":"RouterExplorer","message":"Mapped {/lp/test, GET} route"}
{"timestamp":"2026-10-20T12:26:41.711Z","level":"warn","context":"LegacyRouteConverter","message":"Unsupported route path: \"/lp/*\". In previous versions, the symbols ?, *, and + were used to denote optional or repeating path parameters. The latest version of \"path-to-regexp\" now requires the use of named parameters. For example, instead of using a route like /users/* to capture all routes starting with \"/users\", you should use /users/*path. For more details, refer to the migration guide. Attempting to auto-convert..."}
{"timestamp":"2026-10-20T12:26:41.712Z","level":"log","context":"RouterExplorer","message":"Mapped {/lp/*, ALL} route"}
{"timestamp":"2026-10-20T12:26:41.712Z","level":"log","context":"RoutesResolver","message":"SupportController {/support}:"}
{"timestamp":"2026-10-20T12:26:41.712Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets, POST} route"}
{"timestamp":"2026-10-20T12:26:41.712Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets, GET} route"}
{"timestamp":"2026-10-20T12:26:41.712Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets/:id, GET} route"}
{"timestamp":"2026-10-20T12:26:41.712Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets/:id, PATCH} route"}
{"timestamp":"2026-10-20T12:26:41.713Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets/:id, DELETE} route"}
{"timestamp":"2026-10-20T12:26:41.713Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets/:id/messages, POST} route"}
{"timestamp":"2026-10-20T12:26:41.713Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets/:id/close, POST} route"}
{"timestamp":"2026-10-20T12:26:41.713Z","level":"log","context":"RoutesResolver","message":"BusninessMetricsController {/business-metrics}:"}
{"timestamp":"2026-10-20T12:26:41.713Z","level":"log","context":"RouterExplorer","message":"Mapped {/business-metrics, GET} route"}
{"timestamp":"2026-10-20T12:26:41.713Z","level":"log","context":"RoutesResolver","message":"UsersController {/users}:"}
{"timestamp":"2026-10-20T12:26:41.713Z","level":"log","context":"RouterExplorer","message":"Mapped {/users/:id, PUT} route"}
{"timestamp":"2026-10-20T12:26:41.714Z","level":"log","context":"RouterExplorer","message":"Mapped {/users/settings, GET} route"}
{"timestamp":"2026-10-20T12:26:41.714Z","level":"log","context":"RouterExplorer","message":"Mapped {/users/settings/general, PUT} route"}
{"timestamp":"2026-10-20T12:26:41.714Z","level":"log","context":"RouterExplorer","message":"Mapped {/users/company/settings, PUT} route"}
{"timestamp":"2026-10-20T12:26:41.714Z","level":"log","context":"RouterExplorer","message":"Mapped {/users/change-password, POST} route"}
{"timestamp":"2026-10-20T12:26:41.714Z","level":"log","context":"RouterExplorer","message":"Mapped {/users/localization/settings, PUT} route"}
{"timestamp":"2026-10-20T12:26:41.714Z","level":"log","context":"RoutesResolver","message":"PartnerController {/partner}:"}
{"timestamp":"2026-10-20T12:26:41.715Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses, POST} route"}
{"timestamp":"2026-10-20T12:26:41.715Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses, GET} route"}
{"timestamp":"2026-10-20T12:26:41.715Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses/:id, GET} route"}
{"timestamp":"2026-10-20T12:26:41.715Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses/:id, PUT} route"}
{"timestamp":"2026-10-20T12:26:41.715Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses/:id, DELETE} route"}
{"timestamp":"2026-10-20T12:26:41.716Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses/:id/impersonate, POST} route"}
{"timestamp":"2026-10-20T12:26:41.716Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses/stop-impersonation, POST} route"}
{"timestamp":"2026-10-20T12:26:41.716Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/license-usage, GET} route"}
{"timestamp":"2026-10-20T12:26:41.716Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/invoices, POST} route"}
{"timestamp":"2026-10-20T12:26:41.716Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/invoices, GET} route"}
{"timestamp":"2026-10-20T12:26:41.717Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/invoices/:id, GET} route"}
{"timestamp":"2026-10-20T12:26:41.717Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/invoices/:id, PUT} route"}
{"timestamp":"2026-10-20T12:26:41.717Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/invoices/:id, DELETE} route"}
{"timestamp":"2026-10-20T12:26:41.717Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/invoices/:id/mark-paid, PUT} route"}
{"timestamp":"2026-10-20T12:26:41.717Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/onboarding/generate-token, POST} route"}
{"timestamp":"2026-10-20T12:26:41.717Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/dashboard, GET} route"}
{"timestamp":"2026-10-20T12:26:41.717Z","level":"log","context":"RoutesResolver","message":"MspSubscriptionController {/partner/msp-subscriptions}:"}
{"timestamp":"2026-10-20T12:26:41.718Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/plans, POST} route"}
{"timestamp":"2026-10-20T12:26:41.718Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/plans, GET} route"}
{"timestamp":"2026-10-20T12:26:41.718Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/plans/:planId, GET} route"}
{"timestamp":"2026-10-20T12:26:41.718Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/plans/:planId, PUT} route"}
{"timestamp":"2026-10-20T12:26:41.718Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/plans/:planId, DELETE} route"}
{"timestamp":"2026-10-20T12:26:41.719Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/businesses/:businessId/subscription, POST} route"}
{"timestamp":"2026-10-20T12:26:41.719Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions, GET} route"}
{"timestamp":"2026-10-20T12:26:41.719Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/businesses/:businessId/subscription, GET} route"}
{"timestamp":"2026-10-20T12:26:41.719Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/businesses/:businessId/subscription, PUT} route"}
{"timestamp":"2026-10-20T12:26:41.719Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/businesses/:businessId/subscription, DELETE} route"}
{"timestamp":"2026-10-20T12:26:41.720Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/businesses/:businessId/subscription/limits, GET} route"}
{"timestamp":"2026-10-20T12:26:41.720Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/businesses/:businessId/subscription/change-plan, PUT} route"}
{"timestamp":"2026-10-20T12:26:41.720Z","level":"log","context":"RoutesResolver","message":"OnboardingController {/onboarding}:"}
{"timestamp":"2026-10-20T12:26:41.720Z","level":"log","context":"RouterExplorer","message":"Mapped {/onboarding/validate/:token, GET} route"}
{"timestamp":"2026-10-20T12:26:41.720Z","level":"log","context":"RouterExplorer","message":"Mapped {/onboarding/complete/:token, POST} route"}
{"timestamp":"2026-10-20T12:26:41.720Z","level":"log","context":"RoutesResolver","message":"ResellerController {/reseller}:"}
{"timestamp":"2026-10-20T12:26:41.720Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/businesses, POST} route"}
{"timestamp":"2026-10-20T12:26:41.721Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/businesses, GET} route"}
{"timestamp":"2026-10-20T12:26:41.721Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/businesses/:id, GET} route"}
{"timestamp":"2026-10-20T12:26:41.721Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/businesses/:id, PUT} route"}
{"timestamp":"2026-10-20T12:26:41.721Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/businesses/:id, DELETE} route"}
{"timestamp":"2026-10-20T12:26:41.721Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/license-usage, GET} route"}
{"timestamp":"2026-10-20T12:26:41.722Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/invoices, POST} route"}
{"timestamp":"2026-10-20T12:26:41.722Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/invoices, GET} route"}
{"timestamp":"2026-10-20T12:26:41.722Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/invoices/:id, GET} route"}
{"timestamp":"2026-10-20T12:26:41.722Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/invoices/:id, PUT} route"}
{"timestamp":"2026-10-20T12:26:41.723Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/invoices/:id, DELETE} route"}
{"timestamp":"2026-10-20T12:26:41.723Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/invoices/:id/mark-paid, PUT} route"}
{"timestamp":"2026-10-20T12:26:41.723Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/onboarding/generate-token, POST} route"}
{"timestamp":"2026-10-20T12:26:41.723Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/dashboard, GET} route"}
{"timestamp":"2026-10-20T12:26:41.723Z","level":"log","context":"RoutesResolver","message":"ResellerSubscriptionController {/reseller}:"}
{"timestamp":"2026-10-20T12:26:41.723Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/plans, POST} route"}
{"timestamp":"2026-10-20T12:26:41.724Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/plans, GET} route"}
{"timestamp":"2026-10-20T12:26:41.724Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/plans/:planId, GET} route"}
{"timestamp":"2026-10-20T12:26:41.724Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/plans/:planId, PUT} route"}
{"timestamp":"2026-10-20T12:26:41.724Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/plans/:planId, DELETE} route"}
{"timestamp":"2026-10-20T12:26:41.724Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/subscriptions/businesses/:businessId/subscription, POST} route"}
{"timestamp":"2026-10-20T12:26:41.724Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/subscriptions, GET} route"}
{"timestamp":"2026-10-20T12:26:41.725Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/subscriptions/businesses/:businessId/subscription, GET} route"}
{"timestamp":"2026-10-20T12:26:41.725Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/subscriptions/businesses/:businessId/subscription, PUT} route"}
{"timestamp":"2026-10-20T12:26:41.725Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/subscriptions/businesses/:businessId/subscription, DELETE} route"}
{"timestamp":"2026-10-20T12:26:41.725Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/subscriptions/businesses/:businessId/subscription/limits, GET} route"}
{"timestamp":"2026-10-20T12:26:41.725Z","level":"log","context":"RoutesResolver","message":"HealthController {/health}:"}
{"timestamp":"2026-10-20T12:26:41.725Z","level":"log","context":"RouterExplorer","message":"Mapped {/health, GET} route"}
{"timestamp":"2026-10-20T12:26:41.726Z","level":"log","context":"RouterExplorer","message":"Mapped {/health/test-logs, GET} route"}
{"timestamp":"2026-10-20T12:26:41.726Z","level":"log","context":"RoutesResolver","message":"AzureAdController {/azure-ad}:"}
{"timestamp":"2026-10-20T12:26:41.726Z","level":"log","context":"RouterExplorer","message":"Mapped {/azure-ad/config, POST} route"}
{"timestamp":"2026-10-20T12:26:41.726Z","level":"log","context":"RouterExplorer","message":"Mapped {/azure-ad/config, GET} route"}
{"timestamp":"2026-10-20T12:26:41.726Z","level":"log","context":"RouterExplorer","message":"Mapped {/azure-ad/test-connection, POST} route"}
{"timestamp":"2026-10-20T12:26:41.726Z","level":"log","context":"RouterExplorer","message":"Mapped {/azure-ad/sync, POST} route"}
{"timestamp":"2026-10-20T12:26:41.726Z","level":"log","context":"RoutesResolver","message":"ThreatsController {/threats}:"}
{"timestamp":"2026-10-20T12:26:41.727Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats, POST} route"}
{"timestamp":"2026-10-20T12:26:41.727Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats, GET} route"}
{"timestamp":"2026-10-20T12:26:41.727Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/chart-data, GET} route"}
{"timestamp":"2026-10-20T12:26:41.727Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/claude-search, POST} route"}
{"timestamp":"2026-10-20T12:26:41.727Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/claude-latest, POST} route"}
{"timestamp":"2026-10-20T12:26:41.727Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/claude-trending, POST} route"}
{"timestamp":"2026-10-20T12:26:41.728Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/claude-categories, POST} route"}
{"timestamp":"2026-10-20T12:26:41.728Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/claude-manual-search, POST} route"}
{"timestamp":"2026-10-20T12:26:41.728Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/claude-quick-search, POST} route"}
{"timestamp":"2026-10-20T12:26:41.728Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/scheduler-status, GET} route"}
{"timestamp":"2026-10-20T12:26:41.728Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/health-check, GET} route"}
{"timestamp":"2026-10-20T12:26:41.728Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/pause-scheduler, POST} route"}
{"timestamp":"2026-10-20T12:26:41.729Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/:id, GET} route"}
{"timestamp":"2026-10-20T12:26:41.729Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/:id, PATCH} route"}
{"timestamp":"2026-10-20T12:26:41.729Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/:id, DELETE} route"}
{"timestamp":"2026-10-20T12:26:41.729Z","level":"log","context":"RoutesResolver","message":"DomainController {/domains}:"}
{"timestamp":"2026-10-20T12:26:41.729Z","level":"log","context":"RouterExplorer","message":"Mapped {/domains, GET} route"}
{"timestamp":"2026-10-20T12:26:41.729Z","level":"log","context":"RouterExplorer","message":"Mapped {/domains/:id, GET} route"}
{"timestamp":"2026-10-20T12:26:41.730Z","level":"log","context":"RouterExplorer","message":"Mapped {/domains, POST} route"}
{"timestamp":"2026-10-20T12:26:41.730Z","level":"log","context":"RouterExplorer","message":"Mapped {/domains/:id, PUT} route"}
{"timestamp":"2026-10-20T12:26:41.730Z","level":"log","context":"RouterExplorer","message":"Mapped {/domains/:id, DELETE} route"}
{"timestamp":"2026-10-20T12:26:41.730Z","level":"log","context":"RouterExplorer","message":"Mapped {/domains/seed, POST} route"}
{"timestamp":"2026-10-20T12:26:41.730Z","level":"log","context":"RoutesResolver","message":"MspSubscriptionController {/msp-subscription}:"}
{"timestamp":"2026-10-20T12:26:41.730Z","level":"log","context":"RouterExplorer","message":"Mapped {/msp-subscription/current, GET} route"}
{"timestamp":"2026-10-20T12:26:41.731Z","level":"log","context":"RouterExplorer","message":"Mapped {/msp-subscription/invoices, GET} route"}
{"timestamp":"2026-10-20T12:26:41.731Z","level":"log","context":"RouterExplorer","message":"Mapped {/msp-subscription/invoice/:invoiceId/pdf, GET} route"}
{"timestamp":"2026-10-20T12:26:41.731Z","level":"log","context":"RoutesResolver","message":"MspSubscriptionController {/api/msp-subscription}:"}
{"timestamp":"2026-10-20T12:26:41.731Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/msp-subscription/current, GET} route"}
{"timestamp":"2026-10-20T12:26:41.731Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/msp-subscription/invoices, GET} route"}
{"timestamp":"2026-10-20T12:26:41.731Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/msp-subscription/invoice/:invoiceId/pdf, GET} route"}
{"timestamp":"2026-10-20T12:26:41.803Z","level":"log","context":"NestApplication","message":"Nest application successfully started"}
{"timestamp":"2026-10-20T12:26:41.810Z","level":"log","context":"Bootstrap","message":"Users API successfully started on port 3842"}
{"timestamp":"2026-10-20T12:26:41.810Z","level":"log","context":"SeedService","message":"🌱 Starting database seeding..."}
{"timestamp":"2026-10-20T12:26:41.816Z","level":"log","context":"SeedService","message":"Admin account already exists, skipping seed"}
{"timestamp":"2026-10-20T12:26:41.818Z","level":"log","context":"SeedService","message":"Reseller account already exists, skipping seed"}
{"timestamp":"2026-10-20T12:26:41.820Z","level":"log","context":"SeedService","message":"MSP account already exists, skipping seed"}
{"timestamp":"2026-10-20T12:26:41.820Z","level":"log","context":"SeedService","message":"✅ Database seeding completed successfully"}
{"timestamp":"2026-10-20T12:26:41.853Z","level":"log","context":"UsersApiController","message":"Hello endpoint accessed"}
{"timestamp":"2026-10-20T14:09:51.246Z","level":"warn","context":"LegacyRouteConverter","message":"Unsupported route path: \"/lp/*\". In previous versions, the symbols ?, *, and + were used to denote optional or repeating path parameters. The latest version of \"path-to-regexp\" now requires the use of named parameters. For example, instead of using a route like /users/* to capture all routes starting with \"/users\", you should use /users/*path. For more details, refer to the migration guide. Attempting to auto-convert..."}
{"timestamp":"2026-10-20T14:09:51.278Z","level":"log","context":"Bootstrap","message":"Starting Users API on port 3842..."}
{"timestamp":"2026-10-20T14:09:51.281Z","level":"log","context":"RoutesResolver","message":"UsersApiController {/}:"}
{"timestamp":"2026-10-20T14:09:51.284Z","level":"log","context":"RouterExplorer","message":"Mapped {/, GET} route"}
{"timestamp":"2026-10-20T14:09:51.285Z","level":"log","context":"RoutesResolver","message":"AuthController {/auth}:"}
{"timestamp":"2026-10-20T14:09:51.285Z","level":"log","context":"RouterExplorer","message":"Mapped {/auth/login, POST} route"}
{"timestamp":"2026-10-20T14:09:51.286Z","level":"log","context":"RouterExplorer","message":"Mapped {/auth/admin/login, POST} route"}
{"timestamp":"2026-10-20T14:09:51.286Z","level":"log","context":"RouterExplorer","message":"Mapped {/auth/send-otp, POST} route"}
{"timestamp":"2026-10-20T14:09:51.287Z","level":"log","context":"RouterExplorer","message":"Mapped {/auth/verify-otp, POST} route"}
{"timestamp":"2026-10-20T14:09:51.287Z","level":"log","context":"RouterExplorer","message":"Mapped {/auth/signup, POST} route"}
{"timestamp":"2026-10-20T14:09:51.287Z","level":"log","context":"RouterExplorer","message":"Mapped {/auth/subscription-status, GET} route"}
{"timestamp":"2026-10-20T14:09:51.288Z","level":"log","context":"RoutesResolver","message":"AdminMspController {/admin/msp}:"}
{"timestamp":"2026-10-20T14:09:51.288Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/msp, GET} route"}
{"timestamp":"2026-10-20T14:09:51.289Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/msp/:id, GET} route"}
{"timestamp":"2026-10-20T14:09:51.289Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/msp, POST} route"}
{"timestamp":"2026-10-20T14:09:51.289Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/msp/:id, PUT} route"}
{"timestamp":"2026-10-20T14:09:51.290Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/msp/:id, DELETE} route"}
{"timestamp":"2026-10-20T14:09:51.290Z","level":"log","context":"RoutesResolver","message":"AdminLicenseController {/admin/licenses}:"}
{"timestamp":"2026-10-20T14:09:51.290Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/licenses/summary, GET} route"}
{"timestamp":"2026-10-20T14:09:51.290Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/licenses/msp/:mspId, GET} route"}
{"timestamp":"2026-10-20T14:09:51.292Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/licenses/msp/:mspId, PUT} route"}
{"timestamp":"2026-10-20T14:09:51.293Z","level":"log","context":"RoutesResolver","message":"AdminImpersonationController {/admin/impersonation}:"}
{"timestamp":"2026-10-20T14:09:51.293Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/impersonation/msp-users, GET} route"}
{"timestamp":"2026-10-20T14:09:51.293Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/impersonation/impersonate, POST} route"}
{"timestamp":"2026-10-20T14:09:51.293Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/impersonation/stop, POST} route"}
{"timestamp":"2026-10-20T14:09:51.293Z","level":"log","context":"RoutesResolver","message":"AdminAiUsageController {/admin/ai-usage}:"}
{"timestamp":"2026-10-20T14:09:51.294Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-usage, GET} route"}
{"timestamp":"2026-10-20T14:09:51.294Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-usage/business/:businessId, GET} route"}
{"timestamp":"2026-10-20T14:09:51.294Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-usage/report/monthly, GET} route"}
{"timestamp":"2026-10-20T14:09:51.294Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-usage/pricing, GET} route"}
{"timestamp":"2026-10-20T14:09:51.294Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-usage/pricing, POST} route"}
{"timestamp":"2026-10-20T14:09:51.295Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-usage/credit/:businessId, PUT} route"}
{"timestamp":"2026-10-20T14:09:51.295Z","level":"log","context":"RoutesResolver","message":"AdminAiUsageController {/api/admin/ai-usage}:"}
{"timestamp":"2026-10-20T14:09:51.295Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-usage, GET} route"}
{"timestamp":"2026-10-20T14:09:51.295Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-usage/business/:businessId, GET} route"}
{"timestamp":"2026-10-20T14:09:51.295Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-usage/report/monthly, GET} route"}
{"timestamp":"2026-10-20T14:09:51.295Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-usage/pricing, GET} route"}
{"timestamp":"2026-10-20T14:09:51.296Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-usage/pricing, POST} route"}
{"timestamp":"2026-10-20T14:09:51.296Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-usage/credit/:businessId, PUT} route"}
{"timestamp":"2026-10-20T14:09:51.296Z","level":"log","context":"RoutesResolver","message":"AdminAiModelController {/admin/ai-models}:"}
{"timestamp":"2026-10-20T14:09:51.296Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models, POST} route"}
{"timestamp":"2026-10-20T14:09:51.296Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models, GET} route"}
{"timestamp":"2026-10-20T14:09:51.296Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/default, GET} route"}
{"timestamp":"2026-10-20T14:09:51.296Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/:id, GET} route"}
{"timestamp":"2026-10-20T14:09:51.297Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/:id, PUT} route"}
{"timestamp":"2026-10-20T14:09:51.297Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/:id, DELETE} route"}
{"timestamp":"2026-10-20T14:09:51.297Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/:id/set-default, POST} route"}
{"timestamp":"2026-10-20T14:09:51.297Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/assign-to-business, POST} route"}
{"timestamp":"2026-10-20T14:09:51.297Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/business/:businessId, GET} route"}
{"timestamp":"2026-10-20T14:09:51.298Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/:id/businesses, GET} route"}
{"timestamp":"2026-10-20T14:09:51.298Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/initialize-defaults, POST} route"}
{"timestamp":"2026-10-20T14:09:51.298Z","level":"log","context":"RoutesResolver","message":"AdminAiModelController {/api/admin/ai-models}:"}
{"timestamp":"2026-10-20T14:09:51.298Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models, POST} route"}
{"timestamp":"2026-10-20T14:09:51.298Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models, GET} route"}
{"timestamp":"2026-10-20T14:09:51.298Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/default, GET} route"}
{"timestamp":"2026-10-20T14:09:51.298Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/:id, GET} route"}
{"timestamp":"2026-10-20T14:09:51.298Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/:id, PUT} route"}
{"timestamp":"2026-10-20T14:09:51.299Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/:id, DELETE} route"}
{"timestamp":"2026-10-20T14:09:51.299Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/:id/set-default, POST} route"}
{"timestamp":"2026-10-20T14:09:51.299Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/assign-to-business, POST} route"}
{"timestamp":"2026-10-20T14:09:51.299Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/business/:businessId, GET} route"}
{"timestamp":"2026-10-20T14:09:51.299Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/:id/businesses, GET} route"}
{"timestamp":"2026-10-20T14:09:51.299Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/initialize-defaults, POST} route"}
{"timestamp":"2026-10-20T14:09:51.300Z","level":"log","context":"RoutesResolver","message":"AdminBusinessController {/admin/businesses}:"}
{"timestamp":"2026-10-20T14:09:51.300Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/businesses, GET} route"}
{"timestamp":"2026-10-20T14:09:51.300Z","level":"log","context":"RoutesResolver","message":"ResellerManagementController {/admin/resellers}:"}
{"timestamp":"2026-10-20T14:09:51.300Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/resellers, GET} route"}
{"timestamp":"2026-10-20T14:09:51.300Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/resellers/create-default, POST} route"}
{"timestamp":"2026-10-20T14:09:51.300Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/resellers, POST} route"}
{"timestamp":"2026-10-20T14:09:51.300Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/resellers/:id/toggle-status, PUT} route"}
{"timestamp":"2026-10-20T14:09:51.300Z","level":"log","context":"RoutesResolver","message":"SubscriptionController {/subscription}:"}
{"timestamp":"2026-10-20T14:09:51.301Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/plans, GET} route"}
{"timestamp":"2026-10-20T14:09:51.301Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/calculate-price, POST} route"}
{"timestamp":"2026-10-20T14:09:51.301Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/current, GET} route"}
{"timestamp":"2026-10-20T14:09:51.301Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/create, POST} route"}
{"timestamp":"2026-10-20T14:09:51.301Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/:id, PUT} route"}
{"timestamp":"2026-10-20T14:09:51.301Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/:id/cancel, DELETE} route"}
{"timestamp":"2026-10-20T14:09:51.302Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/sync/:stripeSubscriptionId, POST} route"}
{"timestamp":"2026-10-20T14:09:51.302Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/payments, GET} route"}
{"timestamp":"2026-10-20T14:09:51.302Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/payments/stats, GET} route"}
{"timestamp":"2026-10-20T14:09:51.302Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/payment/:id, GET} route"}
{"timestamp":"2026-10-20T14:09:51.302Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/payment-methods/attach, POST} route"}
{"timestamp":"2026-10-20T14:09:51.302Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/payment-methods/:paymentMethodId, DELETE} route"}
{"timestamp":"2026-10-20T14:09:51.303Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/payment-methods, GET} route"}
{"timestamp":"2026-10-20T14:09:51.303Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/setup-intent, POST} route"}
{"timestamp":"2026-10-20T14:09:51.303Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/update-employee-count, POST} route"}
{"timestamp":"2026-10-20T14:09:51.303Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/retry-payment/:subscriptionId, POST} route"}
{"timestamp":"2026-10-20T14:09:51.303Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/invoice/:invoiceId/pdf, GET} route"}
{"timestamp":"2026-10-20T14:09:51.303Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/preview-upgrade, POST} route"}
{"timestamp":"2026-10-20T14:09:51.303Z","level":"log","context":"RoutesResolver","message":"SubscriptionController {/api/subscription}:"}
{"timestamp":"2026-10-20T14:09:51.303Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/plans, GET} route"}
{"timestamp":"2026-10-20T14:09:51.304Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/calculate-price, POST} route"}
{"timestamp":"2026-10-20T14:09:51.304Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/current, GET} route"}
{"timestamp":"2026-10-20T14:09:51.304Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/create, POST} route"}
{"timestamp":"2026-10-20T14:09:51.304Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/:id, PUT} route"}
{"timestamp":"2026-10-20T14:09:51.304Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/:id/cancel, DELETE} route"}
{"timestamp":"2026-10-20T14:09:51.304Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/sync/:stripeSubscriptionId, POST} route"}
{"timestamp":"2026-10-20T14:09:51.304Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/payments, GET} route"}
{"timestamp":"2026-10-20T14:09:51.305Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/payments/stats, GET} route"}
{"timestamp":"2026-10-20T14:09:51.305Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/payment/:id, GET} route"}
{"timestamp":"2026-10-20T14:09:51.305Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/payment-methods/attach, POST} route"}
{"timestamp":"2026-10-20T14:09:51.305Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/payment-methods/:paymentMethodId, DELETE} route"}
{"timestamp":"2026-10-20T14:09:51.305Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/payment-methods, GET} route"}
{"timestamp":"2026-10-20T14:09:51.305Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/setup-intent, POST} route"}
{"timestamp":"2026-10-20T14:09:51.305Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/update-employee-count, POST} route"}
{"timestamp":"2026-10-20T14:09:51.305Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/retry-payment/:subscriptionId, POST} route"}
{"timestamp":"2026-10-20T14:09:51.306Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/invoice/:invoiceId/pdf, GET} route"}
{"timestamp":"2026-10-20T14:09:51.306Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/preview-upgrade, POST} route"}
{"timestamp":"2026-10-20T14:09:51.306Z","level":"log","context":"RoutesResolver","message":"StripeWebhookController {/stripe/webhook}:"}
{"timestamp":"2026-10-20T14:09:51.306Z","level":"log","context":"RouterExplorer","message":"Mapped {/stripe/webhook/test, GET} route"}
{"timestamp":"2026-10-20T14:09:51.306Z","level":"log","context":"RouterExplorer","message":"Mapped {/stripe/webhook, POST} route"}
{"timestamp":"2026-10-20T14:09:51.306Z","level":"log","context":"RoutesResolver","message":"EmailController {/email-templates}:"}
{"timestamp":"2026-10-20T14:09:51.306Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates/test, POST} route"}
{"timestamp":"2026-10-20T14:09:51.306Z","level":"log","context":"RoutesResolver","message":"EmployeeController {/employees}:"}
{"timestamp":"2026-10-20T14:09:51.307Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees, POST} route"}
{"timestamp":"2026-10-20T14:09:51.307Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees, GET} route"}
{"timestamp":"2026-10-20T14:09:51.307Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees/export, GET} route"}
{"timestamp":"2026-10-20T14:09:51.307Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees/risk-stats, GET} route"}
{"timestamp":"2026-10-20T14:09:51.307Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees/:id, GET} route"}
{"timestamp":"2026-10-20T14:09:51.307Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees/:id, PUT} route"}
{"timestamp":"2026-10-20T14:09:51.307Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees/:id, DELETE} route"}
{"timestamp":"2026-10-20T14:09:51.307Z","level":"log","context":"RoutesResolver","message":"GroupController {/groups}:"}
{"timestamp":"2026-10-20T14:09:51.308Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups, POST} route"}
{"timestamp":"2026-10-20T14:09:51.308Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups, GET} route"}
{"timestamp":"2026-10-20T14:09:51.308Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups/standard, GET} route"}
{"timestamp":"2026-10-20T14:09:51.308Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups/:id, GET} route"}
{"timestamp":"2026-10-20T14:09:51.308Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups/:id, PUT} route"}
{"timestamp":"2026-10-20T14:09:51.308Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups/:id, DELETE} route"}
{"timestamp":"2026-10-20T14:09:51.309Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups/:id/info, GET} route"}
{"timestamp":"2026-10-20T14:09:51.309Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups/:id/with-employees, GET} route"}
{"timestamp":"2026-10-20T14:09:51.309Z","level":"log","context":"RoutesResolver","message":"SenderProfileController {/sender-profiles}:"}
{"timestamp":"2026-10-20T14:09:51.309Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles, GET} route"}
{"timestamp":"2026-10-20T14:09:51.309Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles/:id, GET} route"}
{"timestamp":"2026-10-20T14:09:51.309Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles, POST} route"}
{"timestamp":"2026-10-20T14:09:51.309Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles/:id, PUT} route"}
{"timestamp":"2026-10-20T14:09:51.309Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles/:id, DELETE} route"}
{"timestamp":"2026-10-20T14:09:51.310Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles/:id/verify-domain, POST} route"}
{"timestamp":"2026-10-20T14:09:51.310Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles/domain-verification, GET} route"}
{"timestamp":"2026-10-20T14:09:51.310Z","level":"log","context":"RoutesResolver","message":"EmailTemplateController {/email-templates}:"}
{"timestamp":"2026-10-20T14:09:51.310Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates, GET} route"}
{"timestamp":"2026-10-20T14:09:51.310Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates/:id, GET} route"}
{"timestamp":"2026-10-20T14:09:51.310Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates, POST} route"}
{"timestamp":"2026-10-20T14:09:51.310Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates/:id, PUT} route"}
{"timestamp":"2026-10-20T14:09:51.311Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates/:id, DELETE} route"}
{"timestamp":"2026-10-20T14:09:51.311Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates/:id/duplicate, POST} route"}
{"timestamp":"2026-10-20T14:09:51.311Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates/:id/preview, GET} route"}
{"timestamp":"2026-10-20T14:09:51.311Z","level":"log","context":"RoutesResolver","message":"ScenarioController {/scenarios}:"}
{"timestamp":"2026-10-20T14:09:51.311Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios, POST} route"}
{"timestamp":"2026-10-20T14:09:51.311Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios/generate-content, POST} route"}
{"timestamp":"2026-10-20T14:09:51.311Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios, GET} route"}
{"timestamp":"2026-10-20T14:09:51.312Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios/:id, GET} route"}
{"timestamp":"2026-10-20T14:09:51.312Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios/:id, PUT} route"}
{"timestamp":"2026-10-20T14:09:51.312Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios/:id, DELETE} route"}
{"timestamp":"2026-10-20T14:09:51.312Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios/generate-from-json, POST} route"}
{"timestamp":"2026-10-20T14:09:51.312Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios/:id/save-as-custom-scenario, POST} route"}
{"timestamp":"2026-10-20T14:09:51.312Z","level":"log","context":"RoutesResolver","message":"CampaignController {/campaigns}:"}
{"timestamp":"2026-10-20T14:09:51.312Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns, POST} route"}
{"timestamp":"2026-10-20T14:09:51.312Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns, GET} route"}
{"timestamp":"2026-10-20T14:09:51.313Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id, GET} route"}
{"timestamp":"2026-10-20T14:09:51.313Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id/details, GET} route"}
{"timestamp":"2026-10-20T14:09:51.313Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id/employees, GET} route"}
{"timestamp":"2026-10-20T14:09:51.313Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id, PATCH} route"}
{"timestamp":"2026-10-20T14:09:51.313Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id/start, POST} route"}
{"timestamp":"2026-10-20T14:09:51.313Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id/stop, POST} route"}
{"timestamp":"2026-10-20T14:09:51.314Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id/duplicate, POST} route"}
{"timestamp":"2026-10-20T14:09:51.314Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id, DELETE} route"}
{"timestamp":"2026-10-20T14:09:51.314Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/auto-generate-program, POST} route"}
{"timestamp":"2026-10-20T14:09:51.314Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/generate-from-threat-intelligence, POST} route"}
{"timestamp":"2026-10-20T14:09:51.314Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id/risk-score, GET} route"}
{"timestamp":"2026-10-20T14:09:51.314Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/recalculate-risk-scores, POST} route"}
{"timestamp":"2026-10-20T14:09:51.314Z","level":"log","context":"RoutesResolver","message":"CampaignController {/api/campaigns}:"}
{"timestamp":"2026-10-20T14:09:51.314Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns, POST} route"}
{"timestamp":"2026-10-20T14:09:51.315Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns, GET} route"}
{"timestamp":"2026-10-20T14:09:51.315Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id, GET} route"}
{"timestamp":"2026-10-20T14:09:51.315Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id/details, GET} route"}
{"timestamp":"2026-10-20T14:09:51.315Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id/employees, GET} route"}
{"timestamp":"2026-10-20T14:09:51.315Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id, PATCH} route"}
{"timestamp":"2026-10-20T14:09:51.315Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id/start, POST} route"}
{"timestamp":"2026-10-20T14:09:51.315Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id/stop, POST} route"}
{"timestamp":"2026-10-20T14:09:51.316Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id/duplicate, POST} route"}
{"timestamp":"2026-10-20T14:09:51.316Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id, DELETE} route"}
{"timestamp":"2026-10-20T14:09:51.316Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/auto-generate-program, POST} route"}
{"timestamp":"2026-10-20T14:09:51.316Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/generate-from-threat-intelligence, POST} route"}
{"timestamp":"2026-10-20T14:09:51.316Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id/risk-score, GET} route"}
{"timestamp":"2026-10-20T14:09:51.316Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/recalculate-risk-scores, POST} route"}
{"timestamp":"2026-10-20T14:09:51.316Z","level":"log","context":"RoutesResolver","message":"NotificationsController {/notifications}:"}
{"timestamp":"2026-10-20T14:09:51.317Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications, POST} route"}
{"timestamp":"2026-10-20T14:09:51.317Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications, GET} route"}
{"timestamp":"2026-10-20T14:09:51.317Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/unread, GET} route"}
{"timestamp":"2026-10-20T14:09:51.317Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/unread-count, GET} route"}
{"timestamp":"2026-10-20T14:09:51.317Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/:id, GET} route"}
{"timestamp":"2026-10-20T14:09:51.317Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/:id, PATCH} route"}
{"timestamp":"2026-10-20T14:09:51.317Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/:id/read, PATCH} route"}
{"timestamp":"2026-10-20T14:09:51.318Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/mark-all-read, PATCH} route"}
{"timestamp":"2026-10-20T14:09:51.318Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/:id, DELETE} route"}
{"timestamp":"2026-10-20T14:09:51.318Z","level":"log","context":"RoutesResolver","message":"LandingPageController {/lp}:"}
{"timestamp":"2026-10-20T14:09:51.318Z","level":"log","context":"RouterExplorer","message":"Mapped {/lp/image, GET} route"}
{"timestamp":"2026-10-20T14:09:51.318Z","level":"log","context":"RouterExplorer","message":"Mapped {/lp/learning, GET} route"}
{"timestamp":"2026-10-20T14:09:51.318Z","level":"log","context":"RouterExplorer","message":"Mapped {/lp/submit, POST} route"}
{"timestamp":"2026-10-20T14:09:51.319Z","level":"log","context":"RouterExplorer","message":"Mapped {/lp/test, GET} route"}
{"timestamp":"2026-10-20T14:09:51.319Z","level":"warn","context":"LegacyRouteConverter","message":"Unsupported route path: \"/lp/*\". In previous versions, the symbols ?, *, and + were used to denote optional or repeating path parameters. The latest version of \"path-to-regexp\" now requires the use of named parameters. For example, instead of using a route like /users/* to capture all routes starting with \"/users\", you should use /users/*path. For more details, refer to the migration guide. Attempting to auto-convert..."}
{"timestamp":"2026-10-20T14:09:51.319Z","level":"log","context":"RouterExplorer","message":"Mapped {/lp/*, ALL} route"}
{"timestamp":"2026-10-20T14:09:51.319Z","level":"log","context":"RoutesResolver","message":"SupportController {/support}:"}
{"timestamp":"2026-10-20T14:09:51.320Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets, POST} route"}
{"timestamp":"2026-10-20T14:09:51.320Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets, GET} route"}
{"timestamp":"2026-10-20T14:09:51.320Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets/:id, GET} route"}
{"timestamp":"2026-10-20T14:09:51.320Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets/:id, PATCH} route"}
{"timestamp":"2026-10-20T14:09:51.320Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets/:id, DELETE} route"}
{"timestamp":"2026-10-20T14:09:51.320Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets/:id/messages, POST} route"}
{"timestamp":"2026-10-20T14:09:51.321Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets/:id/close, POST} route"}
{"timestamp":"2026-10-20T14:09:51.321Z","level":"log","context":"RoutesResolver","message":"BusninessMetricsController {/business-metrics}:"}
{"timestamp":"2026-10-20T14:09:51.321Z","level":"log","context":"RouterExplorer","message":"Mapped {/business-metrics, GET} route"}
{"timestamp":"2026-10-20T14:09:51.321Z","level":"log","context":"RoutesResolver","message":"UsersController {/users}:"}
{"timestamp":"2026-10-20T14:09:51.321Z","level":"log","context":"RouterExplorer","message":"Mapped {/users/:id, PUT} route"}
{"timestamp":"2026-10-20T14:09:51.321Z","level":"log","context":"RouterExplorer","message":"Mapped {/users/settings, GET} route"}
{"timestamp":"2026-10-20T14:09:51.321Z","level":"log","context":"RouterExplorer","message":"Mapped {/users/settings/general, PUT} route"}
{"timestamp":"2026-10-20T14:09:51.322Z","level":"log","context":"RouterExplorer","message":"Mapped {/users/company/settings, PUT} route"}
{"timestamp":"2026-10-20T14:09:51.322Z","level":"log","context":"RouterExplorer","message":"Mapped {/users/change-password, POST} route"}
{"timestamp":"2026-10-20T14:09:51.322Z","level":"log","context":"RouterExplorer","message":"Mapped {/users/localization/settings, PUT} route"}
{"timestamp":"2026-10-20T14:09:51.322Z","level":"log","context":"RoutesResolver","message":"PartnerController {/partner}:"}
{"timestamp":"2026-10-20T14:09:51.322Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses, POST} route"}
{"timestamp":"2026-10-20T14:09:51.322Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses, GET} route"}
{"timestamp":"2026-10-20T14:09:51.322Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses/:id, GET} route"}
{"timestamp":"2026-10-20T14:09:51.323Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses/:id, PUT} route"}
{"timestamp":"2026-10-20T14:09:51.323Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses/:id, DELETE} route"}
{"timestamp":"2026-10-20T14:09:51.323Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses/:id/impersonate, POST} route"}
{"timestamp":"2026-10-20T14:09:51.323Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses/stop-impersonation, POST} route"}
{"timestamp":"2026-10-20T14:09:51.323Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/license-usage, GET} route"}
{"timestamp":"2026-10-20T14:09:51.323Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/invoices, POST} route"}
{"timestamp":"2026-10-20T14:09:51.323Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/invoices, GET} route"}
{"timestamp":"2026-10-20T14:09:51.324Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/invoices/:id, GET} route"}
{"timestamp":"2026-10-20T14:09:51.324Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/invoices/:id, PUT} route"}
{"timestamp":"2026-10-20T14:09:51.324Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/invoices/:id, DELETE} route"}
{"timestamp":"2026-10-20T14:09:51.324Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/invoices/:id/mark-paid, PUT} route"}
{"timestamp":"2026-10-20T14:09:51.324Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/onboarding/generate-token, POST} route"}
{"timestamp":"2026-10-20T14:09:51.324Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/dashboard, GET} route"}
{"timestamp":"2026-10-20T14:09:51.324Z","level":"log","context":"RoutesResolver","message":"MspSubscriptionController {/partner/msp-subscriptions}:"}
{"timestamp":"2026-10-20T14:09:51.325Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/plans, POST} route"}
{"timestamp":"2026-10-20T14:09:51.325Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/plans, GET} route"}
{"timestamp":"2026-10-20T14:09:51.325Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/plans/:planId, GET} route"}
{"timestamp":"2026-10-20T14:09:51.325Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/plans/:planId, PUT} route"}
{"timestamp":"2026-10-20T14:09:51.325Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/plans/:planId, DELETE} route"}
{"timestamp":"2026-10-20T14:09:51.325Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/businesses/:businessId/subscription, POST} route"}
{"timestamp":"2026-10-20T14:09:51.326Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions, GET} route"}
{"timestamp":"2026-10-20T14:09:51.326Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/businesses/:businessId/subscription, GET} route"}
{"timestamp":"2026-10-20T14:09:51.326Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/businesses/:businessId/subscription, PUT} route"}
{"timestamp":"2026-10-20T14:09:51.326Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/businesses/:businessId/subscription, DELETE} route"}
{"timestamp":"2026-10-20T14:09:51.326Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/businesses/:businessId/subscription/limits, GET} route"}
{"timestamp":"2026-10-20T14:09:51.326Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/businesses/:businessId/subscription/change-plan, PUT} route"}
{"timestamp":"2026-10-20T14:09:51.326Z","level":"log","context":"RoutesResolver","message":"OnboardingController {/onboarding}:"}
{"timestamp":"2026-10-20T14:09:51.327Z","level":"log","context":"RouterExplorer","message":"Mapped {/onboarding/validate/:token, GET} route"}
{"timestamp":"2026-10-20T14:09:51.327Z","level":"log","context":"RouterExplorer","message":"Mapped {/onboarding/complete/:token, POST} route"}
{"timestamp":"2026-10-20T14:09:51.327Z","level":"log","context":"RoutesResolver","message":"ResellerController {/reseller}:"}
{"timestamp":"2026-10-20T14:09:51.327Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/businesses, POST} route"}
{"timestamp":"2026-10-20T14:09:51.327Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/businesses, GET} route"}
{"timestamp":"2026-10-20T14:09:51.327Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/businesses/:id, GET} route"}
{"timestamp":"2026-10-20T14:09:51.327Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/businesses/:id, PUT} route"}
{"timestamp":"2026-10-20T14:09:51.328Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/businesses/:id, DELETE} route"}
{"timestamp":"2026-10-20T14:09:51.328Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/license-usage, GET} route"}
{"timestamp":"2026-10-20T14:09:51.328Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/invoices, POST} route"}
{"timestamp":"2026-10-20T14:09:51.328Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/invoices, GET} route"}
{"timestamp":"2026-10-20T14:09:51.328Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/invoices/:id, GET} route"}
{"timestamp":"2026-10-20T14:09:51.328Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/invoices/:id, PUT} route"}
{"timestamp":"2026-10-20T14:09:51.328Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/invoices/:id, DELETE} route"}
{"timestamp":"2026-10-20T14:09:51.329Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/invoices/:id/mark-paid, PUT} route"}
{"timestamp":"2026-10-20T14:09:51.329Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/onboarding/generate-token, POST} route"}
{"timestamp":"2026-10-20T14:09:51.329Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/dashboard, GET} route"}
{"timestamp":"2026-10-20T14:09:51.329Z","level":"log","context":"RoutesResolver","message":"ResellerSubscriptionController {/reseller}:"}
{"timestamp":"2026-10-20T14:09:51.329Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/plans, POST} route"}
{"timestamp":"2026-10-20T14:09:51.329Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/plans, GET} route"}
{"timestamp":"2026-10-20T14:09:51.329Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/plans/:planId, GET} route"}
{"timestamp":"2026-10-20T14:09:51.329Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/plans/:planId, PUT} route"}
{"timestamp":"2026-10-20T14:09:51.330Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/plans/:planId, DELETE} route"}
{"timestamp":"2026-10-20T14:09:51.330Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/subscriptions/businesses/:businessId/subscription, POST} route"}
{"timestamp":"2026-10-20T14:09:51.330Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/subscriptions, GET} route"}
{"timestamp":"2026-10-20T14:09:51.330Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/subscriptions/businesses/:businessId/subscription, GET} route"}
{"timestamp":"2026-10-20T14:09:51.330Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/subscriptions/businesses/:businessId/subscription, PUT} route"}
{"timestamp":"2026-10-20T14:09:51.330Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/subscriptions/businesses/:businessId/subscription, DELETE} route"}
{"timestamp":"2026-10-20T14:09:51.331Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/subscriptions/businesses/:businessId/subscription/limits, GET} route"}
{"timestamp":"2026-10-20T14:09:51.331Z","level":"log","context":"RoutesResolver","message":"HealthController {/health}:"}
{"timestamp":"2026-10-20T14:09:51.331Z","level":"log","context":"RouterExplorer","message":"Mapped {/health, GET} route"}
{"timestamp":"2026-10-20T14:09:51.331Z","level":"log","context":"RouterExplorer","message":"Mapped {/health/test-logs, GET} route"}
{"timestamp":"2026-10-20T14:09:51.331Z","level":"log","context":"RoutesResolver","message":"AzureAdController {/azure-ad}:"}
{"timestamp":"2026-10-20T14:09:51.331Z","level":"log","context":"RouterExplorer","message":"Mapped {/azure-ad/config, POST} route"}
{"timestamp":"2026-10-20T14:09:51.331Z","level":"log","context":"RouterExplorer","message":"Mapped {/azure-ad/config, GET} route"}
{"timestamp":"2026-10-20T14:09:51.331Z","level":"log","context":"RouterExplorer","message":"Mapped {/azure-ad/test-connection, POST} route"}
{"timestamp":"2026-10-20T14:09:51.331Z","level":"log","context":"RouterExplorer","message":"Mapped {/azure-ad/sync, POST} route"}
{"timestamp":"2026-10-20T14:09:51.331Z","level":"log","context":"RoutesResolver","message":"ThreatsController {/threats}:"}
{"timestamp":"2026-10-20T14:09:51.332Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats, POST} route"}
{"timestamp":"2026-10-20T14:09:51.332Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats, GET} route"}
{"timestamp":"2026-10-20T14:09:51.332Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/chart-data, GET} route"}
{"timestamp":"2026-10-20T14:09:51.332Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/claude-search, POST} route"}
{"timestamp":"2026-10-20T14:09:51.332Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/claude-latest, POST} route"}
{"timestamp":"2026-10-20T14:09:51.332Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/claude-trending, POST} route"}
{"timestamp":"2026-10-20T14:09:51.333Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/claude-categories, POST} route"}
{"timestamp":"2026-10-20T14:09:51.333Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/claude-manual-search, POST} route"}
{"timestamp":"2026-10-20T14:09:51.333Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/claude-quick-search, POST} route"}
{"timestamp":"2026-10-20T14:09:51.333Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/scheduler-status, GET} route"}
{"timestamp":"2026-10-20T14:09:51.333Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/health-check, GET} route"}
{"timestamp":"2026-10-20T14:09:51.333Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/pause-scheduler, POST} route"}
{"timestamp":"2026-10-20T14:09:51.333Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/:id, GET} route"}
{"timestamp":"2026-10-20T14:09:51.334Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/:id, PATCH} route"}
{"timestamp":"2026-10-20T14:09:51.334Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/:id, DELETE} route"}
{"timestamp":"2026-10-20T14:09:51.334Z","level":"log","context":"RoutesResolver","message":"DomainController {/domains}:"}
{"timestamp":"2026-10-20T14:09:51.334Z","level":"log","context":"RouterExplorer","message":"Mapped {/domains, GET} route"}
{"timestamp":"2026-10-20T14:09:51.334Z","level":"log","context":"RouterExplorer","message":"Mapped {/domains/:id, GET} route"}
{"timestamp":"2026-10-20T14:09:51.334Z","level":"log","context":"RouterExplorer","message":"Mapped {/domains, POST} route"}
{"timestamp":"2026-10-20T14:09:51.334Z","level":"log","context":"RouterExplorer","message":"Mapped {/domains/:id, PUT} route"}
{"timestamp":"2026-10-20T14:09:51.334Z","level":"log","context":"RouterExplorer","message":"Mapped {/domains/:id, DELETE} route"}
{"timestamp":"2026-10-20T14:09:51.335Z","level":"log","context":"RouterExplorer","message":"Mapped {/domains/seed, POST} route"}
{"timestamp":"2026-10-20T14:09:51.335Z","level":"log","context":"RoutesResolver","message":"MspSubscriptionController {/msp-subscription}:"}
{"timestamp":"2026-10-20T14:09:51.335Z","level":"log","context":"RouterExplorer","message":"Mapped {/msp-subscription/current, GET} route"}
{"timestamp":"2026-10-20T14:09:51.335Z","level":"log","context":"RouterExplorer","message":"Mapped {/msp-subscription/invoices, GET} route"}
{"timestamp":"2026-10-20T14:09:51.335Z","level":"log","context":"RouterExplorer","message":"Mapped {/msp-subscription/invoice/:invoiceId/pdf, GET} route"}
{"timestamp":"2026-10-20T14:09:51.335Z","level":"log","context":"RoutesResolver","message":"MspSubscriptionController {/api/msp-subscription}:"}
{"timestamp":"2026-10-20T14:09:51.335Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/msp-subscription/current, GET} route"}
{"timestamp":"2026-10-20T14:09:51.335Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/msp-subscription/invoices, GET} route"}
{"timestamp":"2026-10-20T14:09:51.336Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/msp-subscription/invoice/:invoiceId/pdf, GET} route"}
{"timestamp":"2026-10-20T14:09:51.398Z","level":"log","context":"NestApplication","message":"Nest application successfully started"}
{"timestamp":"2026-10-20T14:09:51.409Z","level":"log","context":"Bootstrap","message":"Users API successfully started on port 3842"}
{"timestamp":"2026-10-20T14:09:51.409Z","level":"log","context":"SeedService","message":"🌱 Starting database seeding..."}
{"timestamp":"2026-10-20T14:09:51.415Z","level":"log","context":"SeedService","message":"Admin account already exists, skipping seed"}
{"timestamp":"2026-10-20T14:09:51.417Z","level":"log","context":"SeedService","message":"Reseller account already exists, skipping seed"}
{"timestamp":"2026-10-20T14:09:51.418Z","level":"log","context":"SeedService","message":"MSP account already exists, skipping seed"}
{"timestamp":"2026-10-20T14:09:51.418Z","level":"log","context":"SeedService","message":"✅ Database seeding completed successfully"}
{"timestamp":"2026-10-20T14:09:51.449Z","level":"log","context":"UsersApiController","message":"Hello endpoint accessed"}
{"timestamp":"2026-10-20T14:10:11.754Z","level":"log","context":"UsersApiController","message":"Hello endpoint accessed"}
{"timestamp":"2026-10-20T15:41:58.919Z","level":"warn","context":"LegacyRouteConverter","message":"Unsupported route path: \"/lp/*\". In previous versions, the symbols ?, *, and + were used to denote optional or repeating path parameters. The latest version of \"path-to-regexp\" now requires the use of named parameters. For example, instead of using a route like /users/* to capture all routes starting with \"/users\", you should use /users/*path. For more details, refer to the migration guide. Attempting to auto-convert..."}
{"timestamp":"2026-10-20T15:41:58.959Z","level":"log","context":"Bootstrap","message":"Starting Users API on port 3842..."}
{"timestamp":"2026-10-20T15:41:58.963Z","level":"log","context":"RoutesResolver","message":"UsersApiController {/}:"}
{"timestamp":"2026-10-20T15:41:58.967Z","level":"log","context":"RouterExplorer","message":"Mapped {/, GET} route"}
{"timestamp":"2026-10-20T15:41:58.967Z","level":"log","context":"RoutesResolver","message":"AuthController {/auth}:"}
{"timestamp":"2026-10-20T15:41:58.968Z","level":"log","context":"RouterExplorer","message":"Mapped {/auth/login, POST} route"}
{"timestamp":"2026-10-20T15:41:58.969Z","level":"log","context":"RouterExplorer","message":"Mapped {/auth/admin/login, POST} route"}
{"timestamp":"2026-10-20T15:41:58.969Z","level":"log","context":"RouterExplorer","message":"Mapped {/auth/send-otp, POST} route"}
{"timestamp":"2026-10-20T15:41:58.970Z","level":"log","context":"RouterExplorer","message":"Mapped {/auth/verify-otp, POST} route"}
{"timestamp":"2026-10-20T15:41:58.970Z","level":"log","context":"RouterExplorer","message":"Mapped {/auth/signup, POST} route"}
{"timestamp":"2026-10-20T15:41:58.971Z","level":"log","context":"RouterExplorer","message":"Mapped {/auth/subscription-status, GET} route"}
{"timestamp":"2026-10-20T15:41:58.971Z","level":"log","context":"RoutesResolver","message":"AdminMspController {/admin/msp}:"}
{"timestamp":"2026-10-20T15:41:58.971Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/msp, GET} route"}
{"timestamp":"2026-10-20T15:41:58.973Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/msp/:id, GET} route"}
{"timestamp":"2026-10-20T15:41:58.973Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/msp, POST} route"}
{"timestamp":"2026-10-20T15:41:58.973Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/msp/:id, PUT} route"}
{"timestamp":"2026-10-20T15:41:58.974Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/msp/:id, DELETE} route"}
{"timestamp":"2026-10-20T15:41:58.974Z","level":"log","context":"RoutesResolver","message":"AdminLicenseController {/admin/licenses}:"}
{"timestamp":"2026-10-20T15:41:58.974Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/licenses/summary, GET} route"}
{"timestamp":"2026-10-20T15:41:58.974Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/licenses/msp/:mspId, GET} route"}
{"timestamp":"2026-10-20T15:41:58.975Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/licenses/msp/:mspId, PUT} route"}
{"timestamp":"2026-10-20T15:41:58.975Z","level":"log","context":"RoutesResolver","message":"AdminImpersonationController {/admin/impersonation}:"}
{"timestamp":"2026-10-20T15:41:58.975Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/impersonation/msp-users, GET} route"}
{"timestamp":"2026-10-20T15:41:58.978Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/impersonation/impersonate, POST} route"}
{"timestamp":"2026-10-20T15:41:58.978Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/impersonation/stop, POST} route"}
{"timestamp":"2026-10-20T15:41:58.979Z","level":"log","context":"RoutesResolver","message":"AdminAiUsageController {/admin/ai-usage}:"}
{"timestamp":"2026-10-20T15:41:58.979Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-usage, GET} route"}
{"timestamp":"2026-10-20T15:41:58.979Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-usage/business/:businessId, GET} route"}
{"timestamp":"2026-10-20T15:41:58.979Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-usage/report/monthly, GET} route"}
{"timestamp":"2026-10-20T15:41:58.980Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-usage/pricing, GET} route"}
{"timestamp":"2026-10-20T15:41:58.980Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-usage/pricing, POST} route"}
{"timestamp":"2026-10-20T15:41:58.980Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-usage/credit/:businessId, PUT} route"}
{"timestamp":"2026-10-20T15:41:58.980Z","level":"log","context":"RoutesResolver","message":"AdminAiUsageController {/api/admin/ai-usage}:"}
{"timestamp":"2026-10-20T15:41:58.980Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-usage, GET} route"}
{"timestamp":"2026-10-20T15:41:58.981Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-usage/business/:businessId, GET} route"}
{"timestamp":"2026-10-20T15:41:58.981Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-usage/report/monthly, GET} route"}
{"timestamp":"2026-10-20T15:41:58.981Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-usage/pricing, GET} route"}
{"timestamp":"2026-10-20T15:41:58.981Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-usage/pricing, POST} route"}
{"timestamp":"2026-10-20T15:41:58.981Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-usage/credit/:businessId, PUT} route"}
{"timestamp":"2026-10-20T15:41:58.981Z","level":"log","context":"RoutesResolver","message":"AdminAiModelController {/admin/ai-models}:"}
{"timestamp":"2026-10-20T15:41:58.982Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models, POST} route"}
{"timestamp":"2026-10-20T15:41:58.982Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models, GET} route"}
{"timestamp":"2026-10-20T15:41:58.982Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/default, GET} route"}
{"timestamp":"2026-10-20T15:41:58.982Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/:id, GET} route"}
{"timestamp":"2026-10-20T15:41:58.982Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/:id, PUT} route"}
{"timestamp":"2026-10-20T15:41:58.983Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/:id, DELETE} route"}
{"timestamp":"2026-10-20T15:41:58.983Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/:id/set-default, POST} route"}
{"timestamp":"2026-10-20T15:41:58.983Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/assign-to-business, POST} route"}
{"timestamp":"2026-10-20T15:41:58.983Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/business/:businessId, GET} route"}
{"timestamp":"2026-10-20T15:41:58.984Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/:id/businesses, GET} route"}
{"timestamp":"2026-10-20T15:41:58.984Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/initialize-defaults, POST} route"}
{"timestamp":"2026-10-20T15:41:58.984Z","level":"log","context":"RoutesResolver","message":"AdminAiModelController {/api/admin/ai-models}:"}
{"timestamp":"2026-10-20T15:41:58.984Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models, POST} route"}
{"timestamp":"2026-10-20T15:41:58.984Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models, GET} route"}
{"timestamp":"2026-10-20T15:41:58.984Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/default, GET} route"}
{"timestamp":"2026-10-20T15:41:58.985Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/:id, GET} route"}
{"timestamp":"2026-10-20T15:41:58.985Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/:id, PUT} route"}
{"timestamp":"2026-10-20T15:41:58.985Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/:id, DELETE} route"}
{"timestamp":"2026-10-20T15:41:58.985Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/:id/set-default, POST} route"}
{"timestamp":"2026-10-20T15:41:58.985Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/assign-to-business, POST} route"}
{"timestamp":"2026-10-20T15:41:58.985Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/business/:businessId, GET} route"}
{"timestamp":"2026-10-20T15:41:58.986Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/:id/businesses, GET} route"}
{"timestamp":"2026-10-20T15:41:58.986Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/initialize-defaults, POST} route"}
{"timestamp":"2026-10-20T15:41:58.986Z","level":"log","context":"RoutesResolver","message":"AdminBusinessController {/admin/businesses}:"}
{"timestamp":"2026-10-20T15:41:58.986Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/businesses, GET} route"}
{"timestamp":"2026-10-20T15:41:58.986Z","level":"log","context":"RoutesResolver","message":"ResellerManagementController {/admin/resellers}:"}
{"timestamp":"2026-10-20T15:41:58.987Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/resellers, GET} route"}
{"timestamp":"2026-10-20T15:41:58.987Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/resellers/create-default, POST} route"}
{"timestamp":"2026-10-20T15:41:58.987Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/resellers, POST} route"}
{"timestamp":"2026-10-20T15:41:58.987Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/resellers/:id/toggle-status, PUT} route"}
{"timestamp":"2026-10-20T15:41:58.987Z","level":"log","context":"RoutesResolver","message":"SubscriptionController {/subscription}:"}
{"timestamp":"2026-10-20T15:41:58.987Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/plans, GET} route"}
{"timestamp":"2026-10-20T15:41:58.988Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/calculate-price, POST} route"}
{"timestamp":"2026-10-20T15:41:58.988Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/current, GET} route"}
{"timestamp":"2026-10-20T15:41:58.988Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/create, POST} route"}
{"timestamp":"2026-10-20T15:41:58.988Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/:id, PUT} route"}
{"timestamp":"2026-10-20T15:41:58.988Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/:id/cancel, DELETE} route"}
{"timestamp":"2026-10-20T15:41:58.989Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/sync/:stripeSubscriptionId, POST} route"}
{"timestamp":"2026-10-20T15:41:58.989Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/payments, GET} route"}
{"timestamp":"2026-10-20T15:41:58.989Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/payments/stats, GET} route"}
{"timestamp":"2026-10-20T15:41:58.989Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/payment/:id, GET} route"}
{"timestamp":"2026-10-20T15:41:58.989Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/payment-methods/attach, POST} route"}
{"timestamp":"2026-10-20T15:41:58.989Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/payment-methods/:paymentMethodId, DELETE} route"}
{"timestamp":"2026-10-20T15:41:58.990Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/payment-methods, GET} route"}
{"timestamp":"2026-10-20T15:41:58.990Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/setup-intent, POST} route"}
{"timestamp":"2026-10-20T15:41:58.990Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/update-employee-count, POST} route"}
{"timestamp":"2026-10-20T15:41:58.990Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/retry-payment/:subscriptionId, POST} route"}
{"timestamp":"2026-10-20T15:41:58.990Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/invoice/:invoiceId/pdf, GET} route"}
{"timestamp":"2026-10-20T15:41:58.991Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/preview-upgrade, POST} route"}
{"timestamp":"2026-10-20T15:41:58.991Z","level":"log","context":"RoutesResolver","message":"SubscriptionController {/api/subscription}:"}
{"timestamp":"2026-10-20T15:41:58.991Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/plans, GET} route"}
{"timestamp":"2026-10-20T15:41:58.991Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/calculate-price, POST} route"}
{"timestamp":"2026-10-20T15:41:58.991Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/current, GET} route"}
{"timestamp":"2026-10-20T15:41:58.991Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/create, POST} route"}
{"timestamp":"2026-10-20T15:41:58.991Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/:id, PUT} route"}
{"timestamp":"2026-10-20T15:41:58.992Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/:id/cancel, DELETE} route"}
{"timestamp":"2026-10-20T15:41:58.992Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/sync/:stripeSubscriptionId, POST} route"}
{"timestamp":"2026-10-20T15:41:58.992Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/payments, GET} route"}
{"timestamp":"2026-10-20T15:41:58.992Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/payments/stats, GET} route"}
{"timestamp":"2026-10-20T15:41:58.992Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/payment/:id, GET} route"}
{"timestamp":"2026-10-20T15:41:58.992Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/payment-methods/attach, POST} route"}
{"timestamp":"2026-10-20T15:41:58.993Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/payment-methods/:paymentMethodId, DELETE} route"}
{"timestamp":"2026-10-20T15:41:58.993Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/payment-methods, GET} route"}
{"timestamp":"2026-10-20T15:41:58.993Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/setup-intent, POST} route"}
{"timestamp":"2026-10-20T15:41:58.993Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/update-employee-count, POST} route"}
{"timestamp":"2026-10-20T15:41:58.993Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/retry-payment/:subscriptionId, POST} route"}
{"timestamp":"2026-10-20T15:41:58.993Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/invoice/:invoiceId/pdf, GET} route"}
{"timestamp":"2026-10-20T15:41:58.994Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/preview-upgrade, POST} route"}
{"timestamp":"2026-10-20T15:41:58.994Z","level":"log","context":"RoutesResolver","message":"StripeWebhookController {/stripe/webhook}:"}
{"timestamp":"2026-10-20T15:41:58.994Z","level":"log","context":"RouterExplorer","message":"Mapped {/stripe/webhook/test, GET} route"}
{"timestamp":"2026-10-20T15:41:58.994Z","level":"log","context":"RouterExplorer","message":"Mapped {/stripe/webhook, POST} route"}
{"timestamp":"2026-10-20T15:41:58.994Z","level":"log","context":"RoutesResolver","message":"EmailController {/email-templates}:"}
{"timestamp":"2026-10-20T15:41:58.994Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates/test, POST} route"}
{"timestamp":"2026-10-20T15:41:58.994Z","level":"log","context":"RoutesResolver","message":"EmployeeController {/employees}:"}
{"timestamp":"2026-10-20T15:41:58.995Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees, POST} route"}
{"timestamp":"2026-10-20T15:41:58.995Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees, GET} route"}
{"timestamp":"2026-10-20T15:41:58.995Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees/export, GET} route"}
{"timestamp":"2026-10-20T15:41:58.995Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees/risk-stats, GET} route"}
{"timestamp":"2026-10-20T15:41:58.995Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees/:id, GET} route"}
{"timestamp":"2026-10-20T15:41:58.996Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees/:id, PUT} route"}
{"timestamp":"2026-10-20T15:41:58.996Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees/:id, DELETE} route"}
{"timestamp":"2026-10-20T15:41:58.996Z","level":"log","context":"RoutesResolver","message":"GroupController {/groups}:"}
{"timestamp":"2026-10-20T15:41:58.996Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups, POST} route"}
{"timestamp":"2026-10-20T15:41:58.996Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups, GET} route"}
{"timestamp":"2026-10-20T15:41:58.996Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups/standard, GET} route"}
{"timestamp":"2026-10-20T15:41:58.996Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups/:id, GET} route"}
{"timestamp":"2026-10-20T15:41:58.997Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups/:id, PUT} route"}
{"timestamp":"2026-10-20T15:41:58.997Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups/:id, DELETE} route"}
{"timestamp":"2026-10-20T15:41:58.997Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups/:id/info, GET} route"}
{"timestamp":"2026-10-20T15:41:58.997Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups/:id/with-employees, GET} route"}
{"timestamp":"2026-10-20T15:41:58.997Z","level":"log","context":"RoutesResolver","message":"SenderProfileController {/sender-profiles}:"}
{"timestamp":"2026-10-20T15:41:58.997Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles, GET} route"}
{"timestamp":"2026-10-20T15:41:58.998Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles/:id, GET} route"}
{"timestamp":"2026-10-20T15:41:58.998Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles, POST} route"}
{"timestamp":"2026-10-20T15:41:58.998Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles/:id, PUT} route"}
{"timestamp":"2026-10-20T15:41:58.998Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles/:id, DELETE} route"}
{"timestamp":"2026-10-20T15:41:58.998Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles/:id/verify-domain, POST} route"}
{"timestamp":"2026-10-20T15:41:58.998Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles/domain-verification, GET} route"}
{"timestamp":"2026-10-20T15:41:58.999Z","level":"log","context":"RoutesResolver","message":"EmailTemplateController {/email-templates}:"}
{"timestamp":"2026-10-20T15:41:58.999Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates, GET} route"}
{"timestamp":"2026-10-20T15:41:58.999Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates/:id, GET} route"}
{"timestamp":"2026-10-20T15:41:58.999Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates, POST} route"}
{"timestamp":"2026-10-20T15:41:58.999Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates/:id, PUT} route"}
{"timestamp":"2026-10-20T15:41:58.999Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates/:id, DELETE} route"}
{"timestamp":"2026-10-20T15:41:59.000Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates/:id/duplicate, POST} route"}
{"timestamp":"2026-10-20T15:41:59.000Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates/:id/preview, GET} route"}
{"timestamp":"2026-10-20T15:41:59.000Z","level":"log","context":"RoutesResolver","message":"ScenarioController {/scenarios}:"}
{"timestamp":"2026-10-20T15:41:59.000Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios, POST} route"}
{"timestamp":"2026-10-20T15:41:59.000Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios/generate-content, POST} route"}
{"timestamp":"2026-10-20T15:41:59.001Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios, GET} route"}
{"timestamp":"2026-10-20T15:41:59.001Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios/:id, GET} route"}
{"timestamp":"2026-10-20T15:41:59.001Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios/:id, PUT} route"}
{"timestamp":"2026-10-20T15:41:59.001Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios/:id, DELETE} route"}
{"timestamp":"2026-10-20T15:41:59.001Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios/generate-from-json, POST} route"}
{"timestamp":"2026-10-20T15:41:59.002Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios/:id/save-as-custom-scenario, POST} route"}
{"timestamp":"2026-10-20T15:41:59.002Z","level":"log","context":"RoutesResolver","message":"CampaignController {/campaigns}:"}
{"timestamp":"2026-10-20T15:41:59.002Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns, POST} route"}
{"timestamp":"2026-10-20T15:41:59.002Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns, GET} route"}
{"timestamp":"2026-10-20T15:41:59.002Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id, GET} route"}
{"timestamp":"2026-10-20T15:41:59.002Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id/details, GET} route"}
{"timestamp":"2026-10-20T15:41:59.003Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id/employees, GET} route"}
{"timestamp":"2026-10-20T15:41:59.003Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id, PATCH} route"}
{"timestamp":"2026-10-20T15:41:59.003Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id/start, POST} route"}
{"timestamp":"2026-10-20T15:41:59.003Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id/stop, POST} route"}
{"timestamp":"2026-10-20T15:41:59.004Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id/duplicate, POST} route"}
{"timestamp":"2026-10-20T15:41:59.004Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id, DELETE} route"}
{"timestamp":"2026-10-20T15:41:59.004Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/auto-generate-program, POST} route"}
{"timestamp":"2026-10-20T15:41:59.004Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/generate-from-threat-intelligence, POST} route"}
{"timestamp":"2026-10-20T15:41:59.004Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id/risk-score, GET} route"}
{"timestamp":"2026-10-20T15:41:59.005Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/recalculate-risk-scores, POST} route"}
{"timestamp":"2026-10-20T15:41:59.005Z","level":"log","context":"RoutesResolver","message":"CampaignController {/api/campaigns}:"}
{"timestamp":"2026-10-20T15:41:59.005Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns, POST} route"}
{"timestamp":"2026-10-20T15:41:59.005Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns, GET} route"}
{"timestamp":"2026-10-20T15:41:59.005Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id, GET} route"}
{"timestamp":"2026-10-20T15:41:59.005Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id/details, GET} route"}
{"timestamp":"2026-10-20T15:41:59.006Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id/employees, GET} route"}
{"timestamp":"2026-10-20T15:41:59.006Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id, PATCH} route"}
{"timestamp":"2026-10-20T15:41:59.006Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id/start, POST} route"}
{"timestamp":"2026-10-20T15:41:59.006Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id/stop, POST} route"}
{"timestamp":"2026-10-20T15:41:59.006Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id/duplicate, POST} route"}
{"timestamp":"2026-10-20T15:41:59.007Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id, DELETE} route"}
{"timestamp":"2026-10-20T15:41:59.007Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/auto-generate-program, POST} route"}
{"timestamp":"2026-10-20T15:41:59.007Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/generate-from-threat-intelligence, POST} route"}
{"timestamp":"2026-10-20T15:41:59.007Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id/risk-score, GET} route"}
{"timestamp":"2026-10-20T15:41:59.007Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/recalculate-risk-scores, POST} route"}
{"timestamp":"2026-10-20T15:41:59.007Z","level":"log","context":"RoutesResolver","message":"NotificationsController {/notifications}:"}
{"timestamp":"2026-10-20T15:41:59.008Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications, POST} route"}
{"timestamp":"2026-10-20T15:41:59.008Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications, GET} route"}
{"timestamp":"2026-10-20T15:41:59.008Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/unread, GET} route"}
{"timestamp":"2026-10-20T15:41:59.008Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/unread-count, GET} route"}
{"timestamp":"2026-10-20T15:41:59.009Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/:id, GET} route"}
{"timestamp":"2026-10-20T15:41:59.009Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/:id, PATCH} route"}
{"timestamp":"2026-10-20T15:41:59.009Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/:id/read, PATCH} route"}
{"timestamp":"2026-10-20T15:41:59.009Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/mark-all-read, PATCH} route"}
{"timestamp":"2026-10-20T15:41:59.010Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/:id, DELETE} route"}
{"timestamp":"2026-10-20T15:41:59.010Z","level":"log","context":"RoutesResolver","message":"LandingPageController {/lp}:"}
{"timestamp":"2026-10-20T15:41:59.010Z","level":"log","context":"RouterExplorer","message":"Mapped {/lp/image, GET} route"}
{"timestamp":"2026-10-20T15:41:59.010Z","level":"log","context":"RouterExplorer","message":"Mapped {/lp/learning, GET} route"}
{"timestamp":"2026-10-20T15:41:59.011Z","level":"log","context":"RouterExplorer","message":"Mapped {/lp/submit, POST} route"}
{"timestamp":"2026-10-20T15:41:59.011Z","level":"log","context":"RouterExplorer","message":"Mapped {/lp/test, GET} route"}
{"timestamp":"2026-10-20T15:41:59.011Z","level":"warn","context":"LegacyRouteConverter","message":"Unsupported route path: \"/lp/*\". In previous versions, the symbols ?, *, and + were used to denote optional or repeating path parameters. The latest version of \"path-to-regexp\" now requires the use of named parameters. For example, instead of using a route like /users/* to capture all routes starting with \"/users\", you should use /users/*path. For more details, refer to the migration guide. Attempting to auto-convert..."}
{"timestamp":"2026-10-20T15:41:59.012Z","level":"log","context":"RouterExplorer","message":"Mapped {/lp/*, ALL} route"}
{"timestamp":"2026-10-20T15:41:59.012Z","level":"log","context":"RoutesResolver","message":"SupportController {/support}:"}
{"timestamp":"2026-10-20T15:41:59.012Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets, POST} route"}
{"timestamp":"2026-10-20T15:41:59.012Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets, GET} route"}
{"timestamp":"2026-10-20T15:41:59.013Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets/:id, GET} route"}
{"timestamp":"2026-10-20T15:41:59.013Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets/:id, PATCH} route"}
{"timestamp":"2026-10-20T15:41:59.013Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets/:id, DELETE} route"}
{"timestamp":"2026-10-20T15:41:59.013Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets/:id/messages, POST} route"}
{"timestamp":"2026-10-20T15:41:59.013Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets/:id/close, POST} route"}
{"timestamp":"2026-10-20T15:41:59.013Z","level":"log","context":"RoutesResolver","message":"BusninessMetricsController {/business-metrics}:"}
{"timestamp":"2026-10-20T15:41:59.014Z","level":"log","context":"RouterExplorer","message":"Mapped {/business-metrics, GET} route"}
{"timestamp":"2026-10-20T15:41:59.014Z","level":"log","context":"RoutesResolver","message":"UsersController {/users}:"}
{"timestamp":"2026-10-20T15:41:59.014Z","level":"log","context":"RouterExplorer","message":"Mapped {/users/:id, PUT} route"}
{"timestamp":"2026-10-20T15:41:59.014Z","level":"log","context":"RouterExplorer","message":"Mapped {/users/settings, GET} route"}
{"timestamp":"2026-10-20T15:41:59.014Z","level":"log","context":"RouterExplorer","message":"Mapped {/users/settings/general, PUT} route"}
{"timestamp":"2026-10-20T15:41:59.015Z","level":"log","context":"RouterExplorer","message":"Mapped {/users/company/settings, PUT} route"}
{"timestamp":"2026-10-20T15:41:59.015Z","level":"log","context":"RouterExplorer","message":"Mapped {/users/change-password, POST} route"}
{"timestamp":"2026-10-20T15:41:59.015Z","level":"log","context":"RouterExplorer","message":"Mapped {/users/localization/settings, PUT} route"}
{"timestamp":"2026-10-20T15:41:59.015Z","level":"log","context":"RoutesResolver","message":"PartnerController {/partner}:"}
{"timestamp":"2026-10-20T15:41:59.015Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses, POST} route"}
{"timestamp":"2026-10-20T15:41:59.016Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses, GET} route"}
{"timestamp":"2026-10-20T15:41:59.016Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses/:id, GET} route"}
{"timestamp":"2026-10-20T15:41:59.016Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses/:id, PUT} route"}
{"timestamp":"2026-10-20T15:41:59.016Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses/:id, DELETE} route"}
{"timestamp":"2026-10-20T15:41:59.017Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses/:id/impersonate, POST} route"}
{"timestamp":"2026-10-20T15:41:59.017Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses/stop-impersonation, POST} route"}
{"timestamp":"2026-10-20T15:41:59.017Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/license-usage, GET} route"}
{"timestamp":"2026-10-20T15:41:59.017Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/invoices, POST} route"}
{"timestamp":"2026-10-20T15:41:59.017Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/invoices, GET} route"}
{"timestamp":"2026-10-20T15:41:59.018Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/invoices/:id, GET} route"}
{"timestamp":"2026-10-20T15:41:59.018Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/invoices/:id, PUT} route"}
{"timestamp":"2026-10-20T15:41:59.018Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/invoices/:id, DELETE} route"}
{"timestamp":"2026-10-20T15:41:59.018Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/invoices/:id/mark-paid, PUT} route"}
{"timestamp":"2026-10-20T15:41:59.018Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/onboarding/generate-token, POST} route"}
{"timestamp":"2026-10-20T15:41:59.019Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/dashboard, GET} route"}
{"timestamp":"2026-10-20T15:41:59.019Z","level":"log","context":"RoutesResolver","message":"MspSubscriptionController {/partner/msp-subscriptions}:"}
{"timestamp":"2026-10-20T15:41:59.019Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/plans, POST} route"}
{"timestamp":"2026-10-20T15:41:59.019Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/plans, GET} route"}
{"timestamp":"2026-10-20T15:41:59.019Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/plans/:planId, GET} route"}
{"timestamp":"2026-10-20T15:41:59.020Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/plans/:planId, PUT} route"}
{"timestamp":"2026-10-20T15:41:59.020Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/plans/:planId, DELETE} route"}
{"timestamp":"2026-10-20T15:41:59.020Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/businesses/:businessId/subscription, POST} route"}
{"timestamp":"2026-10-20T15:41:59.020Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions, GET} route"}
{"timestamp":"2026-10-20T15:41:59.020Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/businesses/:businessId/subscription, GET} route"}
{"timestamp":"2026-10-20T15:41:59.021Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/businesses/:businessId/subscription, PUT} route"}
{"timestamp":"2026-10-20T15:41:59.021Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/businesses/:businessId/subscription, DELETE} route"}
{"timestamp":"2026-10-20T15:41:59.021Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/businesses/:businessId/subscription/limits, GET} route"}
{"timestamp":"2026-10-20T15:41:59.021Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/businesses/:businessId/subscription/change-plan, PUT} route"}
{"timestamp":"2026-10-20T15:41:59.021Z","level":"log","context":"RoutesResolver","message":"OnboardingController {/onboarding}:"}
{"timestamp":"2026-10-20T15:41:59.021Z","level":"log","context":"RouterExplorer","message":"Mapped {/onboarding/validate/:token, GET} route"}
{"timestamp":"2026-10-20T15:41:59.022Z","level":"log","context":"RouterExplorer","message":"Mapped {/onboarding/complete/:token, POST} route"}
{"timestamp":"2026-10-20T15:41:59.022Z","level":"log","context":"RoutesResolver","message":"ResellerController {/reseller}:"}
{"timestamp":"2026-10-20T15:41:59.022Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/businesses, POST} route"}
{"timestamp":"2026-10-20T15:41:59.022Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/businesses, GET} route"}
{"timestamp":"2026-10-20T15:41:59.022Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/businesses/:id, GET} route"}
{"timestamp":"2026-10-20T15:41:59.023Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/businesses/:id, PUT} route"}
{"timestamp":"2026-10-20T15:41:59.023Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/businesses/:id, DELETE} route"}
{"timestamp":"2026-10-20T15:41:59.023Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/license-usage, GET} route"}
{"timestamp":"2026-10-20T15:41:59.023Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/invoices, POST} route"}
{"timestamp":"2026-10-20T15:41:59.023Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/invoices, GET} route"}
{"timestamp":"2026-10-20T15:41:59.024Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/invoices/:id, GET} route"}
{"timestamp":"2026-10-20T15:41:59.024Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/invoices/:id, PUT} route"}
{"timestamp":"2026-10-20T15:41:59.024Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/invoices/:id, DELETE} route"}
{"timestamp":"2026-10-20T15:41:59.024Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/invoices/:id/mark-paid, PUT} route"}
{"timestamp":"2026-10-20T15:41:59.024Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/onboarding/generate-token, POST} route"}
{"timestamp":"2026-10-20T15:41:59.025Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/dashboard, GET} route"}
{"timestamp":"2026-10-20T15:41:59.025Z","level":"log","context":"RoutesResolver","message":"ResellerSubscriptionController {/reseller}:"}
{"timestamp":"2026-10-20T15:41:59.025Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/plans, POST} route"}
{"timestamp":"2026-10-20T15:41:59.025Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/plans, GET} route"}
{"timestamp":"2026-10-20T15:41:59.025Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/plans/:planId, GET} route"}
{"timestamp":"2026-10-20T15:41:59.025Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/plans/:planId, PUT} route"}
{"timestamp":"2026-10-20T15:41:59.026Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/plans/:planId, DELETE} route"}
{"timestamp":"2026-10-20T15:41:59.026Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/subscriptions/businesses/:businessId/subscription, POST} route"}
{"timestamp":"2026-10-20T15:41:59.026Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/subscriptions, GET} route"}
{"timestamp":"2026-10-20T15:41:59.026Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/subscriptions/businesses/:businessId/subscription, GET} route"}
{"timestamp":"2026-10-20T15:41:59.026Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/subscriptions/businesses/:businessId/subscription, PUT} route"}
{"timestamp":"2026-10-20T15:41:59.027Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/subscriptions/businesses/:businessId/subscription, DELETE} route"}
{"timestamp":"2026-10-20T15:41:59.027Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/subscriptions/businesses/:businessId/subscription/limits, GET} route"}
{"timestamp":"2026-10-20T15:41:59.027Z","level":"log","context":"RoutesResolver","message":"HealthController {/health}:"}
{"timestamp":"2026-10-20T15:41:59.027Z","level":"log","context":"RouterExplorer","message":"Mapped {/health, GET} route"}
{"timestamp":"2026-10-20T15:41:59.027Z","level":"log","context":"RouterExplorer","message":"Mapped {/health/test-logs, GET} route"}
{"timestamp":"2026-10-20T15:41:59.027Z","level":"log","context":"RoutesResolver","message":"AzureAdController {/azure-ad}:"}
{"timestamp":"2026-10-20T15:41:59.028Z","level":"log","context":"RouterExplorer","message":"Mapped {/azure-ad/config, POST} route"}
{"timestamp":"2026-10-20T15:41:59.028Z","level":"log","context":"RouterExplorer","message":"Mapped {/azure-ad/config, GET} route"}
{"timestamp":"2026-10-20T15:41:59.028Z","level":"log","context":"RouterExplorer","message":"Mapped {/azure-ad/test-connection, POST} route"}
{"timestamp":"2026-10-20T15:41:59.028Z","level":"log","context":"RouterExplorer","message":"Mapped {/azure-ad/sync, POST} route"}
{"timestamp":"2026-10-20T15:41:59.028Z","level":"log","context":"RoutesResolver","message":"ThreatsController {/threats}:"}
{"timestamp":"2026-10-20T15:41:59.029Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats, POST} route"}
{"timestamp":"2026-10-20T15:41:59.029Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats, GET} route"}
{"timestamp":"2026-10-20T15:41:59.029Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/chart-data, GET} route"}
{"timestamp":"2026-10-20T15:41:59.029Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/claude-search, POST} route"}
{"timestamp":"2026-10-20T15:41:59.029Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/claude-latest, POST} route"}
{"timestamp":"2026-10-20T15:41:59.030Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/claude-trending, POST} route"}
{"timestamp":"2026-10-20T15:41:59.030Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/claude-categories, POST} route"}
{"timestamp":"2026-10-20T15:41:59.030Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/claude-manual-search, POST} route"}
{"timestamp":"2026-10-20T15:41:59.030Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/claude-quick-search, POST} route"}
{"timestamp":"2026-10-20T15:41:59.030Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/scheduler-status, GET} route"}
{"timestamp":"2026-10-20T15:41:59.030Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/health-check, GET} route"}
{"timestamp":"2026-10-20T15:41:59.031Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/pause-scheduler, POST} route"}
{"timestamp":"2026-10-20T15:41:59.031Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/:id, GET} route"}
{"timestamp":"2026-10-20T15:41:59.031Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/:id, PATCH} route"}
{"timestamp":"2026-10-20T15:41:59.031Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/:id, DELETE} route"}
{"timestamp":"2026-10-20T15:41:59.031Z","level":"log","context":"RoutesResolver","message":"DomainController {/domains}:"}
{"timestamp":"2026-10-20T15:41:59.032Z","level":"log","context":"RouterExplorer","message":"Mapped {/domains, GET} route"}
{"timestamp":"2026-10-20T15:41:59.032Z","level":"log","context":"RouterExplorer","message":"Mapped {/domains/:id, GET} route"}
{"timestamp":"2026-10-20T15:41:59.032Z","level":"log","context":"RouterExplorer","message":"Mapped {/domains, POST} route"}
{"timestamp":"2026-10-20T15:41:59.032Z","level":"log","context":"RouterExplorer","message":"Mapped {/domains/:id, PUT} route"}
{"timestamp":"2026-10-20T15:41:59.032Z","level":"log","context":"RouterExplorer","message":"Mapped {/domains/:id, DELETE} route"}
{"timestamp":"2026-10-20T15:41:59.032Z","level":"log","context":"RouterExplorer","message":"Mapped {/domains/seed, POST} route"}
{"timestamp":"2026-10-20T15:41:59.033Z","level":"log","context":"RoutesResolver","message":"MspSubscriptionController {/msp-subscription}:"}
{"timestamp":"2026-10-20T15:41:59.033Z","level":"log","context":"RouterExplorer","message":"Mapped {/msp-subscription/current, GET} route"}
{"timestamp":"2026-10-20T15:41:59.033Z","level":"log","context":"RouterExplorer","message":"Mapped {/msp-subscription/invoices, GET} route"}
{"timestamp":"2026-10-20T15:41:59.033Z","level":"log","context":"RouterExplorer","message":"Mapped {/msp-subscription/invoice/:invoiceId/pdf, GET} route"}
{"timestamp":"2026-10-20T15:41:59.033Z","level":"log","context":"RoutesResolver","message":"MspSubscriptionController {/api/msp-subscription}:"}
{"timestamp":"2026-10-20T15:41:59.033Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/msp-subscription/current, GET} route"}
{"timestamp":"2026-10-20T15:41:59.034Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/msp-subscription/invoices, GET} route"}
{"timestamp":"2026-10-20T15:41:59.034Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/msp-subscription/invoice/:invoiceId/pdf, GET} route"}
{"timestamp":"2026-10-20T15:41:59.103Z","level":"log","context":"NestApplication","message":"Nest application successfully started"}
{"timestamp":"2026-10-20T15:41:59.120Z","level":"log","context":"Bootstrap","message":"Users API successfully started on port 3842"}
{"timestamp":"2026-10-20T15:41:59.120Z","level":"log","context":"SeedService","message":"🌱 Starting database seeding..."}
{"timestamp":"2026-10-20T15:41:59.129Z","level":"log","context":"SeedService","message":"Admin account already exists, skipping seed"}
{"timestamp":"2026-10-20T15:41:59.131Z","level":"log","context":"SeedService","message":"Reseller account already exists, skipping seed"}
{"timestamp":"2026-10-20T15:41:59.133Z","level":"log","context":"SeedService","message":"MSP account already exists, skipping seed"}
{"timestamp":"2026-10-20T15:41:59.133Z","level":"log","context":"SeedService","message":"✅ Database seeding completed successfully"}
{"timestamp":"2026-10-20T16:03:23.915Z","level":"log","context":"UsersApiController","message":"Hello endpoint accessed"}
{"timestamp":"2026-10-20T16:03:24.502Z","level":"log","context":"UsersApiController","message":"Hello endpoint accessed"}
{"timestamp":"2026-10-20T16:14:35.483Z","level":"log","context":"UsersApiController","message":"Hello endpoint accessed"}
{"timestamp":"2026-10-20T23:01:50.665Z","level":"warn","context":"LegacyRouteConverter","message":"Unsupported route path: \"/lp/*\". In previous versions, the symbols ?, *, and + were used to denote optional or repeating path parameters. The latest version of \"path-to-regexp\" now requires the use of named parameters. For example, instead of using a route like /users/* to capture all routes starting with \"/users\", you should use /users/*path. For more details, refer to the migration guide. Attempting to auto-convert..."}
{"timestamp":"2026-10-20T23:01:50.706Z","level":"log","context":"Bootstrap","message":"Starting Users API on port 3842..."}
{"timestamp":"2026-10-20T23:01:50.709Z","level":"log","context":"RoutesResolver","message":"UsersApiController {/}:"}
{"timestamp":"2026-10-20T23:01:50.713Z","level":"log","context":"RouterExplorer","message":"Mapped {/, GET} route"}
{"timestamp":"2026-10-20T23:01:50.713Z","level":"log","context":"RoutesResolver","message":"AuthController {/auth}:"}
{"timestamp":"2026-10-20T23:01:50.714Z","level":"log","context":"RouterExplorer","message":"Mapped {/auth/login, POST} route"}
{"timestamp":"2026-10-20T23:01:50.715Z","level":"log","context":"RouterExplorer","message":"Mapped {/auth/admin/login, POST} route"}
{"timestamp":"2026-10-20T23:01:50.715Z","level":"log","context":"RouterExplorer","message":"Mapped {/auth/send-otp, POST} route"}
{"timestamp":"2026-10-20T23:01:50.716Z","level":"log","context":"RouterExplorer","message":"Mapped {/auth/verify-otp, POST} route"}
{"timestamp":"2026-10-20T23:01:50.716Z","level":"log","context":"RouterExplorer","message":"Mapped {/auth/signup, POST} route"}
{"timestamp":"2026-10-20T23:01:50.717Z","level":"log","context":"RouterExplorer","message":"Mapped {/auth/subscription-status, GET} route"}
{"timestamp":"2026-10-20T23:01:50.717Z","level":"log","context":"RoutesResolver","message":"AdminMspController {/admin/msp}:"}
{"timestamp":"2026-10-20T23:01:50.717Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/msp, GET} route"}
{"timestamp":"2026-10-20T23:01:50.718Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/msp/:id, GET} route"}
{"timestamp":"2026-10-20T23:01:50.719Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/msp, POST} route"}
{"timestamp":"2026-10-20T23:01:50.719Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/msp/:id, PUT} route"}
{"timestamp":"2026-10-20T23:01:50.720Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/msp/:id, DELETE} route"}
{"timestamp":"2026-10-20T23:01:50.720Z","level":"log","context":"RoutesResolver","message":"AdminLicenseController {/admin/licenses}:"}
{"timestamp":"2026-10-20T23:01:50.720Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/licenses/summary, GET} route"}
{"timestamp":"2026-10-20T23:01:50.720Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/licenses/msp/:mspId, GET} route"}
{"timestamp":"2026-10-20T23:01:50.721Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/licenses/msp/:mspId, PUT} route"}
{"timestamp":"2026-10-20T23:01:50.723Z","level":"log","context":"RoutesResolver","message":"AdminImpersonationController {/admin/impersonation}:"}
{"timestamp":"2026-10-20T23:01:50.723Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/impersonation/msp-users, GET} route"}
{"timestamp":"2026-10-20T23:01:50.724Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/impersonation/impersonate, POST} route"}
{"timestamp":"2026-10-20T23:01:50.724Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/impersonation/stop, POST} route"}
{"timestamp":"2026-10-20T23:01:50.724Z","level":"log","context":"RoutesResolver","message":"AdminAiUsageController {/admin/ai-usage}:"}
{"timestamp":"2026-10-20T23:01:50.724Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-usage, GET} route"}
{"timestamp":"2026-10-20T23:01:50.725Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-usage/business/:businessId, GET} route"}
{"timestamp":"2026-10-20T23:01:50.725Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-usage/report/monthly, GET} route"}
{"timestamp":"2026-10-20T23:01:50.725Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-usage/pricing, GET} route"}
{"timestamp":"2026-10-20T23:01:50.725Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-usage/pricing, POST} route"}
{"timestamp":"2026-10-20T23:01:50.725Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-usage/credit/:businessId, PUT} route"}
{"timestamp":"2026-10-20T23:01:50.725Z","level":"log","context":"RoutesResolver","message":"AdminAiUsageController {/api/admin/ai-usage}:"}
{"timestamp":"2026-10-20T23:01:50.726Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-usage, GET} route"}
{"timestamp":"2026-10-20T23:01:50.726Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-usage/business/:businessId, GET} route"}
{"timestamp":"2026-10-20T23:01:50.726Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-usage/report/monthly, GET} route"}
{"timestamp":"2026-10-20T23:01:50.726Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-usage/pricing, GET} route"}
{"timestamp":"2026-10-20T23:01:50.726Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-usage/pricing, POST} route"}
{"timestamp":"2026-10-20T23:01:50.727Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-usage/credit/:businessId, PUT} route"}
{"timestamp":"2026-10-20T23:01:50.727Z","level":"log","context":"RoutesResolver","message":"AdminAiModelController {/admin/ai-models}:"}
{"timestamp":"2026-10-20T23:01:50.727Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models, POST} route"}
{"timestamp":"2026-10-20T23:01:50.727Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models, GET} route"}
{"timestamp":"2026-10-20T23:01:50.727Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/default, GET} route"}
{"timestamp":"2026-10-20T23:01:50.727Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/:id, GET} route"}
{"timestamp":"2026-10-20T23:01:50.728Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/:id, PUT} route"}
{"timestamp":"2026-10-20T23:01:50.728Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/:id, DELETE} route"}
{"timestamp":"2026-10-20T23:01:50.728Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/:id/set-default, POST} route"}
{"timestamp":"2026-10-20T23:01:50.728Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/assign-to-business, POST} route"}
{"timestamp":"2026-10-20T23:01:50.728Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/business/:businessId, GET} route"}
{"timestamp":"2026-10-20T23:01:50.729Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/:id/businesses, GET} route"}
{"timestamp":"2026-10-20T23:01:50.729Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/initialize-defaults, POST} route"}
{"timestamp":"2026-10-20T23:01:50.729Z","level":"log","context":"RoutesResolver","message":"AdminAiModelController {/api/admin/ai-models}:"}
{"timestamp":"2026-10-20T23:01:50.729Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models, POST} route"}
{"timestamp":"2026-10-20T23:01:50.729Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models, GET} route"}
{"timestamp":"2026-10-20T23:01:50.729Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/default, GET} route"}
{"timestamp":"2026-10-20T23:01:50.730Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/:id, GET} route"}
{"timestamp":"2026-10-20T23:01:50.730Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/:id, PUT} route"}
{"timestamp":"2026-10-20T23:01:50.730Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/:id, DELETE} route"}
{"timestamp":"2026-10-20T23:01:50.730Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/:id/set-default, POST} route"}
{"timestamp":"2026-10-20T23:01:50.730Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/assign-to-business, POST} route"}
{"timestamp":"2026-10-20T23:01:50.730Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/business/:businessId, GET} route"}
{"timestamp":"2026-10-20T23:01:50.731Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/:id/businesses, GET} route"}
{"timestamp":"2026-10-20T23:01:50.731Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/initialize-defaults, POST} route"}
{"timestamp":"2026-10-20T23:01:50.731Z","level":"log","context":"RoutesResolver","message":"AdminBusinessController {/admin/businesses}:"}
{"timestamp":"2026-10-20T23:01:50.731Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/businesses, GET} route"}
{"timestamp":"2026-10-20T23:01:50.731Z","level":"log","context":"RoutesResolver","message":"ResellerManagementController {/admin/resellers}:"}
{"timestamp":"2026-10-20T23:01:50.731Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/resellers, GET} route"}
{"timestamp":"2026-10-20T23:01:50.732Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/resellers/create-default, POST} route"}
{"timestamp":"2026-10-20T23:01:50.732Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/resellers, POST} route"}
{"timestamp":"2026-10-20T23:01:50.732Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/resellers/:id/toggle-status, PUT} route"}
{"timestamp":"2026-10-20T23:01:50.732Z","level":"log","context":"RoutesResolver","message":"SubscriptionController {/subscription}:"}
{"timestamp":"2026-10-20T23:01:50.732Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/plans, GET} route"}
{"timestamp":"2026-10-20T23:01:50.732Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/calculate-price, POST} route"}
{"timestamp":"2026-10-20T23:01:50.733Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/current, GET} route"}
{"timestamp":"2026-10-20T23:01:50.733Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/create, POST} route"}
{"timestamp":"2026-10-20T23:01:50.733Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/:id, PUT} route"}
{"timestamp":"2026-10-20T23:01:50.733Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/:id/cancel, DELETE} route"}
{"timestamp":"2026-10-20T23:01:50.733Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/sync/:stripeSubscriptionId, POST} route"}
{"timestamp":"2026-10-20T23:01:50.734Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/payments, GET} route"}
{"timestamp":"2026-10-20T23:01:50.734Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/payments/stats, GET} route"}
{"timestamp":"2026-10-20T23:01:50.734Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/payment/:id, GET} route"}
{"timestamp":"2026-10-20T23:01:50.734Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/payment-methods/attach, POST} route"}
{"timestamp":"2026-10-20T23:01:50.734Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/payment-methods/:paymentMethodId, DELETE} route"}
{"timestamp":"2026-10-20T23:01:50.734Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/payment-methods, GET} route"}
{"timestamp":"2026-10-20T23:01:50.735Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/setup-intent, POST} route"}
{"timestamp":"2026-10-20T23:01:50.735Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/update-employee-count, POST} route"}
{"timestamp":"2026-10-20T23:01:50.735Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/retry-payment/:subscriptionId, POST} route"}
{"timestamp":"2026-10-20T23:01:50.735Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/invoice/:invoiceId/pdf, GET} route"}
{"timestamp":"2026-10-20T23:01:50.735Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/preview-upgrade, POST} route"}
{"timestamp":"2026-10-20T23:01:50.735Z","level":"log","context":"RoutesResolver","message":"SubscriptionController {/api/subscription}:"}
{"timestamp":"2026-10-20T23:01:50.735Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/plans, GET} route"}
{"timestamp":"2026-10-20T23:01:50.736Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/calculate-price, POST} route"}
{"timestamp":"2026-10-20T23:01:50.736Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/current, GET} route"}
{"timestamp":"2026-10-20T23:01:50.736Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/create, POST} route"}
{"timestamp":"2026-10-20T23:01:50.736Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/:id, PUT} route"}
{"timestamp":"2026-10-20T23:01:50.736Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/:id/cancel, DELETE} route"}
{"timestamp":"2026-10-20T23:01:50.736Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/sync/:stripeSubscriptionId, POST} route"}
{"timestamp":"2026-10-20T23:01:50.737Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/payments, GET} route"}
{"timestamp":"2026-10-20T23:01:50.737Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/payments/stats, GET} route"}
{"timestamp":"2026-10-20T23:01:50.737Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/payment/:id, GET} route"}
{"timestamp":"2026-10-20T23:01:50.737Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/payment-methods/attach, POST} route"}
{"timestamp":"2026-10-20T23:01:50.737Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/payment-methods/:paymentMethodId, DELETE} route"}
{"timestamp":"2026-10-20T23:01:50.737Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/payment-methods, GET} route"}
{"timestamp":"2026-10-20T23:01:50.738Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/setup-intent, POST} route"}
{"timestamp":"2026-10-20T23:01:50.738Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/update-employee-count, POST} route"}
{"timestamp":"2026-10-20T23:01:50.738Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/retry-payment/:subscriptionId, POST} route"}
{"timestamp":"2026-10-20T23:01:50.738Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/invoice/:invoiceId/pdf, GET} route"}
{"timestamp":"2026-10-20T23:01:50.738Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/preview-upgrade, POST} route"}
{"timestamp":"2026-10-20T23:01:50.738Z","level":"log","context":"RoutesResolver","message":"StripeWebhookController {/stripe/webhook}:"}
{"timestamp":"2026-10-20T23:01:50.738Z","level":"log","context":"RouterExplorer","message":"Mapped {/stripe/webhook/test, GET} route"}
{"timestamp":"2026-10-20T23:01:50.739Z","level":"log","context":"RouterExplorer","message":"Mapped {/stripe/webhook, POST} route"}
{"timestamp":"2026-10-20T23:01:50.739Z","level":"log","context":"RoutesResolver","message":"EmailController {/email-templates}:"}
{"timestamp":"2026-10-20T23:01:50.739Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates/test, POST} route"}
{"timestamp":"2026-10-20T23:01:50.739Z","level":"log","context":"RoutesResolver","message":"EmployeeController {/employees}:"}
{"timestamp":"2026-10-20T23:01:50.739Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees, POST} route"}
{"timestamp":"2026-10-20T23:01:50.739Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees, GET} route"}
{"timestamp":"2026-10-20T23:01:50.739Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees/export, GET} route"}
{"timestamp":"2026-10-20T23:01:50.740Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees/risk-stats, GET} route"}
{"timestamp":"2026-10-20T23:01:50.740Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees/:id, GET} route"}
{"timestamp":"2026-10-20T23:01:50.740Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees/:id, PUT} route"}
{"timestamp":"2026-10-20T23:01:50.740Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees/:id, DELETE} route"}
{"timestamp":"2026-10-20T23:01:50.740Z","level":"log","context":"RoutesResolver","message":"GroupController {/groups}:"}
{"timestamp":"2026-10-20T23:01:50.740Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups, POST} route"}
{"timestamp":"2026-10-20T23:01:50.741Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups, GET} route"}
{"timestamp":"2026-10-20T23:01:50.741Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups/standard, GET} route"}
{"timestamp":"2026-10-20T23:01:50.741Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups/:id, GET} route"}
{"timestamp":"2026-10-20T23:01:50.741Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups/:id, PUT} route"}
{"timestamp":"2026-10-20T23:01:50.741Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups/:id, DELETE} route"}
{"timestamp":"2026-10-20T23:01:50.741Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups/:id/info, GET} route"}
{"timestamp":"2026-10-20T23:01:50.742Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups/:id/with-employees, GET} route"}
{"timestamp":"2026-10-20T23:01:50.742Z","level":"log","context":"RoutesResolver","message":"SenderProfileController {/sender-profiles}:"}
{"timestamp":"2026-10-20T23:01:50.742Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles, GET} route"}
{"timestamp":"2026-10-20T23:01:50.742Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles/:id, GET} route"}
{"timestamp":"2026-10-20T23:01:50.742Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles, POST} route"}
{"timestamp":"2026-10-20T23:01:50.742Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles/:id, PUT} route"}
{"timestamp":"2026-10-20T23:01:50.742Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles/:id, DELETE} route"}
{"timestamp":"2026-10-20T23:01:50.743Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles/:id/verify-domain, POST} route"}
{"timestamp":"2026-10-20T23:01:50.743Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles/domain-verification, GET} route"}
{"timestamp":"2026-10-20T23:01:50.743Z","level":"log","context":"RoutesResolver","message":"EmailTemplateController {/email-templates}:"}
{"timestamp":"2026-10-20T23:01:50.743Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates, GET} route"}
{"timestamp":"2026-10-20T23:01:50.743Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates/:id, GET} route"}
{"timestamp":"2026-10-20T23:01:50.743Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates, POST} route"}
{"timestamp":"2026-10-20T23:01:50.744Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates/:id, PUT} route"}
{"timestamp":"2026-10-20T23:01:50.744Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates/:id, DELETE} route"}
{"timestamp":"2026-10-20T23:01:50.744Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates/:id/duplicate, POST} route"}
{"timestamp":"2026-10-20T23:01:50.744Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates/:id/preview, GET} route"}
{"timestamp":"2026-10-20T23:01:50.744Z","level":"log","context":"RoutesResolver","message":"ScenarioController {/scenarios}:"}
{"timestamp":"2026-10-20T23:01:50.744Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios, POST} route"}
{"timestamp":"2026-10-20T23:01:50.744Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios/generate-content, POST} route"}
{"timestamp":"2026-10-20T23:01:50.745Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios, GET} route"}
{"timestamp":"2026-10-20T23:01:50.745Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios/:id, GET} route"}
{"timestamp":"2026-10-20T23:01:50.745Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios/:id, PUT} route"}
{"timestamp":"2026-10-20T23:01:50.745Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios/:id, DELETE} route"}
{"timestamp":"2026-10-20T23:01:50.745Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios/generate-from-json, POST} route"}
{"timestamp":"2026-10-20T23:01:50.745Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios/:id/save-as-custom-scenario, POST} route"}
{"timestamp":"2026-10-20T23:01:50.745Z","level":"log","context":"RoutesResolver","message":"CampaignController {/campaigns}:"}
{"timestamp":"2026-10-20T23:01:50.746Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns, POST} route"}
{"timestamp":"2026-10-20T23:01:50.746Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns, GET} route"}
{"timestamp":"2026-10-20T23:01:50.746Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id, GET} route"}
{"timestamp":"2026-10-20T23:01:50.746Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id/details, GET} route"}
{"timestamp":"2026-10-20T23:01:50.746Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id/employees, GET} route"}
{"timestamp":"2026-10-20T23:01:50.747Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id, PATCH} route"}
{"timestamp":"2026-10-20T23:01:50.747Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id/start, POST} route"}
{"timestamp":"2026-10-20T23:01:50.747Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id/stop, POST} route"}
{"timestamp":"2026-10-20T23:01:50.747Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id/duplicate, POST} route"}
{"timestamp":"2026-10-20T23:01:50.747Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id, DELETE} route"}
{"timestamp":"2026-10-20T23:01:50.747Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/auto-generate-program, POST} route"}
{"timestamp":"2026-10-20T23:01:50.748Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/generate-from-threat-intelligence, POST} route"}
{"timestamp":"2026-10-20T23:01:50.748Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id/risk-score, GET} route"}
{"timestamp":"2026-10-20T23:01:50.748Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/recalculate-risk-scores, POST} route"}
{"timestamp":"2026-10-20T23:01:50.748Z","level":"log","context":"RoutesResolver","message":"CampaignController {/api/campaigns}:"}
{"timestamp":"2026-10-20T23:01:50.748Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns, POST} route"}
{"timestamp":"2026-10-20T23:01:50.748Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns, GET} route"}
{"timestamp":"2026-10-20T23:01:50.748Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id, GET} route"}
{"timestamp":"2026-10-20T23:01:50.748Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id/details, GET} route"}
{"timestamp":"2026-10-20T23:01:50.749Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id/employees, GET} route"}
{"timestamp":"2026-10-20T23:01:50.749Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id, PATCH} route"}
{"timestamp":"2026-10-20T23:01:50.749Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id/start, POST} route"}
{"timestamp":"2026-10-20T23:01:50.749Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id/stop, POST} route"}
{"timestamp":"2026-10-20T23:01:50.749Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id/duplicate, POST} route"}
{"timestamp":"2026-10-20T23:01:50.749Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id, DELETE} route"}
{"timestamp":"2026-10-20T23:01:50.749Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/auto-generate-program, POST} route"}
{"timestamp":"2026-10-20T23:01:50.750Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/generate-from-threat-intelligence, POST} route"}
{"timestamp":"2026-10-20T23:01:50.750Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id/risk-score, GET} route"}
{"timestamp":"2026-10-20T23:01:50.750Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/recalculate-risk-scores, POST} route"}
{"timestamp":"2026-10-20T23:01:50.750Z","level":"log","context":"RoutesResolver","message":"NotificationsController {/notifications}:"}
{"timestamp":"2026-10-20T23:01:50.750Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications, POST} route"}
{"timestamp":"2026-10-20T23:01:50.750Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications, GET} route"}
{"timestamp":"2026-10-20T23:01:50.751Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/unread, GET} route"}
{"timestamp":"2026-10-20T23:01:50.751Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/unread-count, GET} route"}
{"timestamp":"2026-10-20T23:01:50.751Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/:id, GET} route"}
{"timestamp":"2026-10-20T23:01:50.751Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/:id, PATCH} route"}
{"timestamp":"2026-10-20T23:01:50.751Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/:id/read, PATCH} route"}
{"timestamp":"2026-10-20T23:01:50.751Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/mark-all-read, PATCH} route"}
{"timestamp":"2026-10-20T23:01:50.752Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/:id, DELETE} route"}
{"timestamp":"2026-10-20T23:01:50.752Z","level":"log","context":"RoutesResolver","message":"LandingPageController {/lp}:"}
{"timestamp":"2026-10-20T23:01:50.752Z","level":"log","context":"RouterExplorer","message":"Mapped {/lp/image, GET} route"}
{"timestamp":"2026-10-20T23:01:50.752Z","level":"log","context":"RouterExplorer","message":"Mapped {/lp/learning, GET} route"}
{"timestamp":"2026-10-20T23:01:50.752Z","level":"log","context":"RouterExplorer","message":"Mapped {/lp/submit, POST} route"}
{"timestamp":"2026-10-20T23:01:50.752Z","level":"log","context":"RouterExplorer","message":"Mapped {/lp/test, GET} route"}
{"timestamp":"2026-10-20T23:01:50.753Z","level":"warn","context":"LegacyRouteConverter","message":"Unsupported route path: \"/lp/*\". In previous versions, the symbols ?, *, and + were used to denote optional or repeating path parameters. The latest version of \"path-to-regexp\" now requires the use of named parameters. For example, instead of using a route like /users/* to capture all routes starting with \"/users\", you should use /users/*path. For more details, refer to the migration guide. Attempting to auto-convert..."}
{"timestamp":"2026-10-20T23:01:50.753Z","level":"log","context":"RouterExplorer","message":"Mapped {/lp/*, ALL} route"}
{"timestamp":"2026-10-20T23:01:50.753Z","level":"log","context":"RoutesResolver","message":"SupportController {/support}:"}
{"timestamp":"2026-10-20T23:01:50.754Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets, POST} route"}
{"timestamp":"2026-10-20T23:01:50.754Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets, GET} route"}
{"timestamp":"2026-10-20T23:01:50.754Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets/:id, GET} route"}
{"timestamp":"2026-10-20T23:01:50.754Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets/:id, PATCH} route"}
{"timestamp":"2026-10-20T23:01:50.754Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets/:id, DELETE} route"}
{"timestamp":"2026-10-20T23:01:50.754Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets/:id/messages, POST} route"}
{"timestamp":"2026-10-20T23:01:50.755Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets/:id/close, POST} route"}
{"timestamp":"2026-10-20T23:01:50.755Z","level":"log","context":"RoutesResolver","message":"BusninessMetricsController {/business-metrics}:"}
{"timestamp":"2026-10-20T23:01:50.755Z","level":"log","context":"RouterExplorer","message":"Mapped {/business-metrics, GET} route"}
{"timestamp":"2026-10-20T23:01:50.755Z","level":"log","context":"RoutesResolver","message":"UsersController {/users}:"}
{"timestamp":"2026-10-20T23:01:50.755Z","level":"log","context":"RouterExplorer","message":"Mapped {/users/:id, PUT} route"}
{"timestamp":"2026-10-20T23:01:50.755Z","level":"log","context":"RouterExplorer","message":"Mapped {/users/settings, GET} route"}
{"timestamp":"2026-10-20T23:01:50.755Z","level":"log","context":"RouterExplorer","message":"Mapped {/users/settings/general, PUT} route"}
{"timestamp":"2026-10-20T23:01:50.756Z","level":"log","context":"RouterExplorer","message":"Mapped {/users/company/settings, PUT} route"}
{"timestamp":"2026-10-20T23:01:50.756Z","level":"log","context":"RouterExplorer","message":"Mapped {/users/change-password, POST} route"}
{"timestamp":"2026-10-20T23:01:50.756Z","level":"log","context":"RouterExplorer","message":"Mapped {/users/localization/settings, PUT} route"}
{"timestamp":"2026-10-20T23:01:50.756Z","level":"log","context":"RoutesResolver","message":"PartnerController {/partner}:"}
{"timestamp":"2026-10-20T23:01:50.756Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses, POST} route"}
{"timestamp":"2026-10-20T23:01:50.756Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses, GET} route"}
{"timestamp":"2026-10-20T23:01:50.757Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses/:id, GET} route"}
{"timestamp":"2026-10-20T23:01:50.757Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses/:id, PUT} route"}
{"timestamp":"2026-10-20T23:01:50.757Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses/:id, DELETE} route"}
{"timestamp":"2026-10-20T23:01:50.757Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses/:id/impersonate, POST} route"}
{"timestamp":"2026-10-20T23:01:50.757Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses/stop-impersonation, POST} route"}
{"timestamp":"2026-10-20T23:01:50.757Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/license-usage, GET} route"}
{"timestamp":"2026-10-20T23:01:50.758Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/invoices, POST} route"}
{"timestamp":"2026-10-20T23:01:50.758Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/invoices, GET} route"}
{"timestamp":"2026-10-20T23:01:50.758Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/invoices/:id, GET} route"}
{"timestamp":"2026-10-20T23:01:50.758Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/invoices/:id, PUT} route"}
{"timestamp":"2026-10-20T23:01:50.758Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/invoices/:id, DELETE} route"}
{"timestamp":"2026-10-20T23:01:50.758Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/invoices/:id/mark-paid, PUT} route"}
{"timestamp":"2026-10-20T23:01:50.759Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/onboarding/generate-token, POST} route"}
{"timestamp":"2026-10-20T23:01:50.759Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/dashboard, GET} route"}
{"timestamp":"2026-10-20T23:01:50.759Z","level":"log","context":"RoutesResolver","message":"MspSubscriptionController {/partner/msp-subscriptions}:"}
{"timestamp":"2026-10-20T23:01:50.759Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/plans, POST} route"}
{"timestamp":"2026-10-20T23:01:50.759Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/plans, GET} route"}
{"timestamp":"2026-10-20T23:01:50.759Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/plans/:planId, GET} route"}
{"timestamp":"2026-10-20T23:01:50.759Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/plans/:planId, PUT} route"}
{"timestamp":"2026-10-20T23:01:50.760Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/plans/:planId, DELETE} route"}
{"timestamp":"2026-10-20T23:01:50.760Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/businesses/:businessId/subscription, POST} route"}
{"timestamp":"2026-10-20T23:01:50.760Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions, GET} route"}
{"timestamp":"2026-10-20T23:01:50.760Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/businesses/:businessId/subscription, GET} route"}
{"timestamp":"2026-10-20T23:01:50.760Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/businesses/:businessId/subscription, PUT} route"}
{"timestamp":"2026-10-20T23:01:50.760Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/businesses/:businessId/subscription, DELETE} route"}
{"timestamp":"2026-10-20T23:01:50.761Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/businesses/:businessId/subscription/limits, GET} route"}
{"timestamp":"2026-10-20T23:01:50.761Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/businesses/:businessId/subscription/change-plan, PUT} route"}
{"timestamp":"2026-10-20T23:01:50.761Z","level":"log","context":"RoutesResolver","message":"OnboardingController {/onboarding}:"}
{"timestamp":"2026-10-20T23:01:50.761Z","level":"log","context":"RouterExplorer","message":"Mapped {/onboarding/validate/:token, GET} route"}
{"timestamp":"2026-10-20T23:01:50.761Z","level":"log","context":"RouterExplorer","message":"Mapped {/onboarding/complete/:token, POST} route"}
{"timestamp":"2026-10-20T23:01:50.761Z","level":"log","context":"RoutesResolver","message":"ResellerController {/reseller}:"}
{"timestamp":"2026-10-20T23:01:50.761Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/businesses, POST} route"}
{"timestamp":"2026-10-20T23:01:50.762Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/businesses, GET} route"}
{"timestamp":"2026-10-20T23:01:50.762Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/businesses/:id, GET} route"}
{"timestamp":"2026-10-20T23:01:50.762Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/businesses/:id, PUT} route"}
{"timestamp":"2026-10-20T23:01:50.762Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/businesses/:id, DELETE} route"}
{"timestamp":"2026-10-20T23:01:50.763Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/license-usage, GET} route"}
{"timestamp":"2026-10-20T23:01:50.763Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/invoices, POST} route"}
{"timestamp":"2026-10-20T23:01:50.763Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/invoices, GET} route"}
{"timestamp":"2026-10-20T23:01:50.763Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/invoices/:id, GET} route"}
{"timestamp":"2026-10-20T23:01:50.764Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/invoices/:id, PUT} route"}
{"timestamp":"2026-10-20T23:01:50.764Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/invoices/:id, DELETE} route"}
{"timestamp":"2026-10-20T23:01:50.764Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/invoices/:id/mark-paid, PUT} route"}
{"timestamp":"2026-10-20T23:01:50.764Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/onboarding/generate-token, POST} route"}
{"timestamp":"2026-10-20T23:01:50.765Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/dashboard, GET} route"}
{"timestamp":"2026-10-20T23:01:50.765Z","level":"log","context":"RoutesResolver","message":"ResellerSubscriptionController {/reseller}:"}
{"timestamp":"2026-10-20T23:01:50.765Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/plans, POST} route"}
{"timestamp":"2026-10-20T23:01:50.765Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/plans, GET} route"}
{"timestamp":"2026-10-20T23:01:50.765Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/plans/:planId, GET} route"}
{"timestamp":"2026-10-20T23:01:50.765Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/plans/:planId, PUT} route"}
{"timestamp":"2026-10-20T23:01:50.765Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/plans/:planId, DELETE} route"}
{"timestamp":"2026-10-20T23:01:50.766Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/subscriptions/businesses/:businessId/subscription, POST} route"}
{"timestamp":"2026-10-20T23:01:50.766Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/subscriptions, GET} route"}
{"timestamp":"2026-10-20T23:01:50.766Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/subscriptions/businesses/:businessId/subscription, GET} route"}
{"timestamp":"2026-10-20T23:01:50.766Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/subscriptions/businesses/:businessId/subscription, PUT} route"}
{"timestamp":"2026-10-20T23:01:50.766Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/subscriptions/businesses/:businessId/subscription, DELETE} route"}
{"timestamp":"2026-10-20T23:01:50.767Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/subscriptions/businesses/:businessId/subscription/limits, GET} route"}
{"timestamp":"2026-10-20T23:01:50.767Z","level":"log","context":"RoutesResolver","message":"HealthController {/health}:"}
{"timestamp":"2026-10-20T23:01:50.767Z","level":"log","context":"RouterExplorer","message":"Mapped {/health, GET} route"}
{"timestamp":"2026-10-20T23:01:50.767Z","level":"log","context":"RouterExplorer","message":"Mapped {/health/test-logs, GET} route"}
{"timestamp":"2026-10-20T23:01:50.767Z","level":"log","context":"RoutesResolver","message":"AzureAdController {/azure-ad}:"}
{"timestamp":"2026-10-20T23:01:50.767Z","level":"log","context":"RouterExplorer","message":"Mapped {/azure-ad/config, POST} route"}
{"timestamp":"2026-10-20T23:01:50.767Z","level":"log","context":"RouterExplorer","message":"Mapped {/azure-ad/config, GET} route"}
{"timestamp":"2026-10-20T23:01:50.768Z","level":"log","context":"RouterExplorer","message":"Mapped {/azure-ad/test-connection, POST} route"}
{"timestamp":"2026-10-20T23:01:50.768Z","level":"log","context":"RouterExplorer","message":"Mapped {/azure-ad/sync, POST} route"}
{"timestamp":"2026-10-20T23:01:50.768Z","level":"log","context":"RoutesResolver","message":"ThreatsController {/threats}:"}
{"timestamp":"2026-10-20T23:01:50.768Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats, POST} route"}
{"timestamp":"2026-10-20T23:01:50.768Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats, GET} route"}
{"timestamp":"2026-10-20T23:01:50.768Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/chart-data, GET} route"}
{"timestamp":"2026-10-20T23:01:50.768Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/claude-search, POST} route"}
{"timestamp":"2026-10-20T23:01:50.769Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/claude-latest, POST} route"}
{"timestamp":"2026-10-20T23:01:50.769Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/claude-trending, POST} route"}
{"timestamp":"2026-10-20T23:01:50.769Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/claude-categories, POST} route"}
{"timestamp":"2026-10-20T23:01:50.769Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/claude-manual-search, POST} route"}
{"timestamp":"2026-10-20T23:01:50.769Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/claude-quick-search, POST} route"}
{"timestamp":"2026-10-20T23:01:50.769Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/scheduler-status, GET} route"}
{"timestamp":"2026-10-20T23:01:50.770Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/health-check, GET} route"}
{"timestamp":"2026-10-20T23:01:50.770Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/pause-scheduler, POST} route"}
{"timestamp":"2026-10-20T23:01:50.770Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/:id, GET} route"}
{"timestamp":"2026-10-20T23:01:50.770Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/:id, PATCH} route"}
{"timestamp":"2026-10-20T23:01:50.770Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/:id, DELETE} route"}
{"timestamp":"2026-10-20T23:01:50.770Z","level":"log","context":"RoutesResolver","message":"DomainController {/domains}:"}
{"timestamp":"2026-10-20T23:01:50.771Z","level":"log","context":"RouterExplorer","message":"Mapped {/domains, GET} route"}
{"timestamp":"2026-10-20T23:01:50.771Z","level":"log","context":"RouterExplorer","message":"Mapped {/domains/:id, GET} route"}
{"timestamp":"2026-10-20T23:01:50.771Z","level":"log","context":"RouterExplorer","message":"Mapped {/domains, POST} route"}
{"timestamp":"2026-10-20T23:01:50.771Z","level":"log","context":"RouterExplorer","message":"Mapped {/domains/:id, PUT} route"}
{"timestamp":"2026-10-20T23:01:50.771Z","level":"log","context":"RouterExplorer","message":"Mapped {/domains/:id, DELETE} route"}
{"timestamp":"2026-10-20T23:01:50.771Z","level":"log","context":"RouterExplorer","message":"Mapped {/domains/seed, POST} route"}
{"timestamp":"2026-10-20T23:01:50.771Z","level":"log","context":"RoutesResolver","message":"MspSubscriptionController {/msp-subscription}:"}
{"timestamp":"2026-10-20T23:01:50.772Z","level":"log","context":"RouterExplorer","message":"Mapped {/msp-subscription/current, GET} route"}
{"timestamp":"2026-10-20T23:01:50.772Z","level":"log","context":"RouterExplorer","message":"Mapped {/msp-subscription/invoices, GET} route"}
{"timestamp":"2026-10-20T23:01:50.772Z","level":"log","context":"RouterExplorer","message":"Mapped {/msp-subscription/invoice/:invoiceId/pdf, GET} route"}
{"timestamp":"2026-10-20T23:01:50.772Z","level":"log","context":"RoutesResolver","message":"MspSubscriptionController {/api/msp-subscription}:"}
{"timestamp":"2026-10-20T23:01:50.772Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/msp-subscription/current, GET} route"}
{"timestamp":"2026-10-20T23:01:50.772Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/msp-subscription/invoices, GET} route"}
{"timestamp":"2026-10-20T23:01:50.773Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/msp-subscription/invoice/:invoiceId/pdf, GET} route"}
{"timestamp":"2026-10-20T23:01:50.850Z","level":"log","context":"NestApplication","message":"Nest application successfully started"}
{"timestamp":"2026-10-20T23:01:50.868Z","level":"log","context":"Bootstrap","message":"Users API successfully started on port 3842"}
{"timestamp":"2026-10-20T23:01:50.868Z","level":"log","context":"SeedService","message":"🌱 Starting database seeding..."}
{"timestamp":"2026-10-20T23:01:50.874Z","level":"log","context":"SeedService","message":"Admin account already exists, skipping seed"}
{"timestamp":"2026-10-20T23:01:50.877Z","level":"log","context":"SeedService","message":"Reseller account already exists, skipping seed"}
{"timestamp":"2026-10-20T23:01:50.878Z","level":"log","context":"SeedService","message":"MSP account already exists, skipping seed"}
{"timestamp":"2026-10-20T23:01:50.878Z","level":"log","context":"SeedService","message":"✅ Database seeding completed successfully"}
{"timestamp":"2026-10-20T23:01:50.920Z","level":"log","context":"UsersApiController","message":"Hello endpoint accessed"}
{"timestamp":"2026-10-20T23:24:39.828Z","level":"log","context":"UsersApiController","message":"Hello endpoint accessed"}
{"timestamp":"2026-10-21T00:20:33.864Z","level":"warn","context":"LegacyRouteConverter","message":"Unsupported route path: \"/lp/*\". In previous versions, the symbols ?, *, and + were used to denote optional or repeating path parameters. The latest version of \"path-to-regexp\" now requires the use of named parameters. For example, instead of using a route like /users/* to capture all routes starting with \"/users\", you should use /users/*path. For more details, refer to the migration guide. Attempting to auto-convert..."}
{"timestamp":"2026-10-21T00:20:33.899Z","level":"log","context":"Bootstrap","message":"Starting Users API on port 3842..."}
{"timestamp":"2026-10-21T00:20:33.903Z","level":"log","context":"RoutesResolver","message":"UsersApiController {/}:"}
{"timestamp":"2026-10-21T00:20:33.906Z","level":"log","context":"RouterExplorer","message":"Mapped {/, GET} route"}
{"timestamp":"2026-10-21T00:20:33.906Z","level":"log","context":"RoutesResolver","message":"AuthController {/auth}:"}
{"timestamp":"2026-10-21T00:20:33.907Z","level":"log","context":"RouterExplorer","message":"Mapped {/auth/login, POST} route"}
{"timestamp":"2026-10-21T00:20:33.908Z","level":"log","context":"RouterExplorer","message":"Mapped {/auth/admin/login, POST} route"}
{"timestamp":"2026-10-21T00:20:33.908Z","level":"log","context":"RouterExplorer","message":"Mapped {/auth/send-otp, POST} route"}
{"timestamp":"2026-10-21T00:20:33.909Z","level":"log","context":"RouterExplorer","message":"Mapped {/auth/verify-otp, POST} route"}
{"timestamp":"2026-10-21T00:20:33.909Z","level":"log","context":"RouterExplorer","message":"Mapped {/auth/signup, POST} route"}
{"timestamp":"2026-10-21T00:20:33.910Z","level":"log","context":"RouterExplorer","message":"Mapped {/auth/subscription-status, GET} route"}
{"timestamp":"2026-10-21T00:20:33.910Z","level":"log","context":"RoutesResolver","message":"AdminMspController {/admin/msp}:"}
{"timestamp":"2026-10-21T00:20:33.910Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/msp, GET} route"}
{"timestamp":"2026-10-21T00:20:33.911Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/msp/:id, GET} route"}
{"timestamp":"2026-10-21T00:20:33.912Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/msp, POST} route"}
{"timestamp":"2026-10-21T00:20:33.912Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/msp/:id, PUT} route"}
{"timestamp":"2026-10-21T00:20:33.912Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/msp/:id, DELETE} route"}
{"timestamp":"2026-10-21T00:20:33.912Z","level":"log","context":"RoutesResolver","message":"AdminLicenseController {/admin/licenses}:"}
{"timestamp":"2026-10-21T00:20:33.912Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/licenses/summary, GET} route"}
{"timestamp":"2026-10-21T00:20:33.913Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/licenses/msp/:mspId, GET} route"}
{"timestamp":"2026-10-21T00:20:33.915Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/licenses/msp/:mspId, PUT} route"}
{"timestamp":"2026-10-21T00:20:33.915Z","level":"log","context":"RoutesResolver","message":"AdminImpersonationController {/admin/impersonation}:"}
{"timestamp":"2026-10-21T00:20:33.915Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/impersonation/msp-users, GET} route"}
{"timestamp":"2026-10-21T00:20:33.916Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/impersonation/impersonate, POST} route"}
{"timestamp":"2026-10-21T00:20:33.916Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/impersonation/stop, POST} route"}
{"timestamp":"2026-10-21T00:20:33.916Z","level":"log","context":"RoutesResolver","message":"AdminAiUsageController {/admin/ai-usage}:"}
{"timestamp":"2026-10-21T00:20:33.916Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-usage, GET} route"}
{"timestamp":"2026-10-21T00:20:33.916Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-usage/business/:businessId, GET} route"}
{"timestamp":"2026-10-21T00:20:33.917Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-usage/report/monthly, GET} route"}
{"timestamp":"2026-10-21T00:20:33.917Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-usage/pricing, GET} route"}
{"timestamp":"2026-10-21T00:20:33.917Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-usage/pricing, POST} route"}
{"timestamp":"2026-10-21T00:20:33.917Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-usage/credit/:businessId, PUT} route"}
{"timestamp":"2026-10-21T00:20:33.917Z","level":"log","context":"RoutesResolver","message":"AdminAiUsageController {/api/admin/ai-usage}:"}
{"timestamp":"2026-10-21T00:20:33.917Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-usage, GET} route"}
{"timestamp":"2026-10-21T00:20:33.918Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-usage/business/:businessId, GET} route"}
{"timestamp":"2026-10-21T00:20:33.918Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-usage/report/monthly, GET} route"}
{"timestamp":"2026-10-21T00:20:33.918Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-usage/pricing, GET} route"}
{"timestamp":"2026-10-21T00:20:33.918Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-usage/pricing, POST} route"}
{"timestamp":"2026-10-21T00:20:33.918Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-usage/credit/:businessId, PUT} route"}
{"timestamp":"2026-10-21T00:20:33.918Z","level":"log","context":"RoutesResolver","message":"AdminAiModelController {/admin/ai-models}:"}
{"timestamp":"2026-10-21T00:20:33.919Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models, POST} route"}
{"timestamp":"2026-10-21T00:20:33.919Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models, GET} route"}
{"timestamp":"2026-10-21T00:20:33.919Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/default, GET} route"}
{"timestamp":"2026-10-21T00:20:33.919Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/:id, GET} route"}
{"timestamp":"2026-10-21T00:20:33.919Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/:id, PUT} route"}
{"timestamp":"2026-10-21T00:20:33.919Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/:id, DELETE} route"}
{"timestamp":"2026-10-21T00:20:33.920Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/:id/set-default, POST} route"}
{"timestamp":"2026-10-21T00:20:33.920Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/assign-to-business, POST} route"}
{"timestamp":"2026-10-21T00:20:33.920Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/business/:businessId, GET} route"}
{"timestamp":"2026-10-21T00:20:33.920Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/:id/businesses, GET} route"}
{"timestamp":"2026-10-21T00:20:33.921Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/initialize-defaults, POST} route"}
{"timestamp":"2026-10-21T00:20:33.921Z","level":"log","context":"RoutesResolver","message":"AdminAiModelController {/api/admin/ai-models}:"}
{"timestamp":"2026-10-21T00:20:33.921Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models, POST} route"}
{"timestamp":"2026-10-21T00:20:33.921Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models, GET} route"}
{"timestamp":"2026-10-21T00:20:33.921Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/default, GET} route"}
{"timestamp":"2026-10-21T00:20:33.921Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/:id, GET} route"}
{"timestamp":"2026-10-21T00:20:33.922Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/:id, PUT} route"}
{"timestamp":"2026-10-21T00:20:33.922Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/:id, DELETE} route"}
{"timestamp":"2026-10-21T00:20:33.922Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/:id/set-default, POST} route"}
{"timestamp":"2026-10-21T00:20:33.922Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/assign-to-business, POST} route"}
{"timestamp":"2026-10-21T00:20:33.922Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/business/:businessId, GET} route"}
{"timestamp":"2026-10-21T00:20:33.923Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/:id/businesses, GET} route"}
{"timestamp":"2026-10-21T00:20:33.923Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/initialize-defaults, POST} route"}
{"timestamp":"2026-10-21T00:20:33.923Z","level":"log","context":"RoutesResolver","message":"AdminBusinessController {/admin/businesses}:"}
{"timestamp":"2026-10-21T00:20:33.923Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/businesses, GET} route"}
{"timestamp":"2026-10-21T00:20:33.923Z","level":"log","context":"RoutesResolver","message":"ResellerManagementController {/admin/resellers}:"}
{"timestamp":"2026-10-21T00:20:33.924Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/resellers, GET} route"}
{"timestamp":"2026-10-21T00:20:33.924Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/resellers/create-default, POST} route"}
{"timestamp":"2026-10-21T00:20:33.924Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/resellers, POST} route"}
{"timestamp":"2026-10-21T00:20:33.924Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/resellers/:id/toggle-status, PUT} route"}
{"timestamp":"2026-10-21T00:20:33.924Z","level":"log","context":"RoutesResolver","message":"SubscriptionController {/subscription}:"}
{"timestamp":"2026-10-21T00:20:33.924Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/plans, GET} route"}
{"timestamp":"2026-10-21T00:20:33.925Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/calculate-price, POST} route"}
{"timestamp":"2026-10-21T00:20:33.925Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/current, GET} route"}
{"timestamp":"2026-10-21T00:20:33.925Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/create, POST} route"}
{"timestamp":"2026-10-21T00:20:33.925Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/:id, PUT} route"}
{"timestamp":"2026-10-21T00:20:33.925Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/:id/cancel, DELETE} route"}
{"timestamp":"2026-10-21T00:20:33.926Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/sync/:stripeSubscriptionId, POST} route"}
{"timestamp":"2026-10-21T00:20:33.926Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/payments, GET} route"}
{"timestamp":"2026-10-21T00:20:33.926Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/payments/stats, GET} route"}
{"timestamp":"2026-10-21T00:20:33.926Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/payment/:id, GET} route"}
{"timestamp":"2026-10-21T00:20:33.926Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/payment-methods/attach, POST} route"}
{"timestamp":"2026-10-21T00:20:33.927Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/payment-methods/:paymentMethodId, DELETE} route"}
{"timestamp":"2026-10-21T00:20:33.927Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/payment-methods, GET} route"}
{"timestamp":"2026-10-21T00:20:33.927Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/setup-intent, POST} route"}
{"timestamp":"2026-10-21T00:20:33.927Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/update-employee-count, POST} route"}
{"timestamp":"2026-10-21T00:20:33.927Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/retry-payment/:subscriptionId, POST} route"}
{"timestamp":"2026-10-21T00:20:33.928Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/invoice/:invoiceId/pdf, GET} route"}
{"timestamp":"2026-10-21T00:20:33.928Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/preview-upgrade, POST} route"}
{"timestamp":"2026-10-21T00:20:33.928Z","level":"log","context":"RoutesResolver","message":"SubscriptionController {/api/subscription}:"}
{"timestamp":"2026-10-21T00:20:33.928Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/plans, GET} route"}
{"timestamp":"2026-10-21T00:20:33.928Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/calculate-price, POST} route"}
{"timestamp":"2026-10-21T00:20:33.929Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/current, GET} route"}
{"timestamp":"2026-10-21T00:20:33.929Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/create, POST} route"}
{"timestamp":"2026-10-21T00:20:33.929Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/:id, PUT} route"}
{"timestamp":"2026-10-21T00:20:33.929Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/:id/cancel, DELETE} route"}
{"timestamp":"2026-10-21T00:20:33.929Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/sync/:stripeSubscriptionId, POST} route"}
{"timestamp":"2026-10-21T00:20:33.930Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/payments, GET} route"}
{"timestamp":"2026-10-21T00:20:33.930Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/payments/stats, GET} route"}
{"timestamp":"2026-10-21T00:20:33.930Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/payment/:id, GET} route"}
{"timestamp":"2026-10-21T00:20:33.930Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/payment-methods/attach, POST} route"}
{"timestamp":"2026-10-21T00:20:33.930Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/payment-methods/:paymentMethodId, DELETE} route"}
{"timestamp":"2026-10-21T00:20:33.930Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/payment-methods, GET} route"}
{"timestamp":"2026-10-21T00:20:33.931Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/setup-intent, POST} route"}
{"timestamp":"2026-10-21T00:20:33.931Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/update-employee-count, POST} route"}
{"timestamp":"2026-10-21T00:20:33.931Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/retry-payment/:subscriptionId, POST} route"}
{"timestamp":"2026-10-21T00:20:33.931Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/invoice/:invoiceId/pdf, GET} route"}
{"timestamp":"2026-10-21T00:20:33.931Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/preview-upgrade, POST} route"}
{"timestamp":"2026-10-21T00:20:33.931Z","level":"log","context":"RoutesResolver","message":"StripeWebhookController {/stripe/webhook}:"}
{"timestamp":"2026-10-21T00:20:33.932Z","level":"log","context":"RouterExplorer","message":"Mapped {/stripe/webhook/test, GET} route"}
{"timestamp":"2026-10-21T00:20:33.932Z","level":"log","context":"RouterExplorer","message":"Mapped {/stripe/webhook, POST} route"}
{"timestamp":"2026-10-21T00:20:33.932Z","level":"log","context":"RoutesResolver","message":"EmailController {/email-templates}:"}
{"timestamp":"2026-10-21T00:20:33.932Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates/test, POST} route"}
{"timestamp":"2026-10-21T00:20:33.932Z","level":"log","context":"RoutesResolver","message":"EmployeeController {/employees}:"}
{"timestamp":"2026-10-21T00:20:33.932Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees, POST} route"}
{"timestamp":"2026-10-21T00:20:33.932Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees, GET} route"}
{"timestamp":"2026-10-21T00:20:33.933Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees/export, GET} route"}
{"timestamp":"2026-10-21T00:20:33.933Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees/risk-stats, GET} route"}
{"timestamp":"2026-10-21T00:20:33.933Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees/:id, GET} route"}
{"timestamp":"2026-10-21T00:20:33.933Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees/:id, PUT} route"}
{"timestamp":"2026-10-21T00:20:33.933Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees/:id, DELETE} route"}
{"timestamp":"2026-10-21T00:20:33.933Z","level":"log","context":"RoutesResolver","message":"GroupController {/groups}:"}
{"timestamp":"2026-10-21T00:20:33.934Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups, POST} route"}
{"timestamp":"2026-10-21T00:20:33.934Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups, GET} route"}
{"timestamp":"2026-10-21T00:20:33.934Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups/standard, GET} route"}
{"timestamp":"2026-10-21T00:20:33.934Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups/:id, GET} route"}
{"timestamp":"2026-10-21T00:20:33.934Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups/:id, PUT} route"}
{"timestamp":"2026-10-21T00:20:33.934Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups/:id, DELETE} route"}
{"timestamp":"2026-10-21T00:20:33.935Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups/:id/info, GET} route"}
{"timestamp":"2026-10-21T00:20:33.935Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups/:id/with-employees, GET} route"}
{"timestamp":"2026-10-21T00:20:33.935Z","level":"log","context":"RoutesResolver","message":"SenderProfileController {/sender-profiles}:"}
{"timestamp":"2026-10-21T00:20:33.935Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles, GET} route"}
{"timestamp":"2026-10-21T00:20:33.935Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles/:id, GET} route"}
{"timestamp":"2026-10-21T00:20:33.936Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles, POST} route"}
{"timestamp":"2026-10-21T00:20:33.936Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles/:id, PUT} route"}
{"timestamp":"2026-10-21T00:20:33.936Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles/:id, DELETE} route"}
{"timestamp":"2026-10-21T00:20:33.936Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles/:id/verify-domain, POST} route"}
{"timestamp":"2026-10-21T00:20:33.936Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles/domain-verification, GET} route"}
{"timestamp":"2026-10-21T00:20:33.936Z","level":"log","context":"RoutesResolver","message":"EmailTemplateController {/email-templates}:"}
{"timestamp":"2026-10-21T00:20:33.936Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates, GET} route"}
{"timestamp":"2026-10-21T00:20:33.937Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates/:id, GET} route"}
{"timestamp":"2026-10-21T00:20:33.937Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates, POST} route"}
{"timestamp":"2026-10-21T00:20:33.937Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates/:id, PUT} route"}
{"timestamp":"2026-10-21T00:20:33.937Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates/:id, DELETE} route"}
{"timestamp":"2026-10-21T00:20:33.937Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates/:id/duplicate, POST} route"}
{"timestamp":"2026-10-21T00:20:33.937Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates/:id/preview, GET} route"}
{"timestamp":"2026-10-21T00:20:33.937Z","level":"log","context":"RoutesResolver","message":"ScenarioController {/scenarios}:"}
{"timestamp":"2026-10-21T00:20:33.938Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios, POST} route"}
{"timestamp":"2026-10-21T00:20:33.938Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios/generate-content, POST} route"}
{"timestamp":"2026-10-21T00:20:33.938Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios, GET} route"}
{"timestamp":"2026-10-21T00:20:33.938Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios/:id, GET} route"}
{"timestamp":"2026-10-21T00:20:33.938Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios/:id, PUT} route"}
{"timestamp":"2026-10-21T00:20:33.938Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios/:id, DELETE} route"}
{"timestamp":"2026-10-21T00:20:33.939Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios/generate-from-json, POST} route"}
{"timestamp":"2026-10-21T00:20:33.939Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios/:id/save-as-custom-scenario, POST} route"}
{"timestamp":"2026-10-21T00:20:33.939Z","level":"log","context":"RoutesResolver","message":"CampaignController {/campaigns}:"}
{"timestamp":"2026-10-21T00:20:33.939Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns, POST} route"}
{"timestamp":"2026-10-21T00:20:33.939Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns, GET} route"}
{"timestamp":"2026-10-21T00:20:33.939Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id, GET} route"}
{"timestamp":"2026-10-21T00:20:33.939Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id/details, GET} route"}
{"timestamp":"2026-10-21T00:20:33.940Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id/employees, GET} route"}
{"timestamp":"2026-10-21T00:20:33.940Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id, PATCH} route"}
{"timestamp":"2026-10-21T00:20:33.940Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id/start, POST} route"}
{"timestamp":"2026-10-21T00:20:33.940Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id/stop, POST} route"}
{"timestamp":"2026-10-21T00:20:33.940Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id/duplicate, POST} route"}
{"timestamp":"2026-10-21T00:20:33.940Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id, DELETE} route"}
{"timestamp":"2026-10-21T00:20:33.941Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/auto-generate-program, POST} route"}
{"timestamp":"2026-10-21T00:20:33.941Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/generate-from-threat-intelligence, POST} route"}
{"timestamp":"2026-10-21T00:20:33.941Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id/risk-score, GET} route"}
{"timestamp":"2026-10-21T00:20:33.941Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/recalculate-risk-scores, POST} route"}
{"timestamp":"2026-10-21T00:20:33.941Z","level":"log","context":"RoutesResolver","message":"CampaignController {/api/campaigns}:"}
{"timestamp":"2026-10-21T00:20:33.941Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns, POST} route"}
{"timestamp":"2026-10-21T00:20:33.941Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns, GET} route"}
{"timestamp":"2026-10-21T00:20:33.941Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id, GET} route"}
{"timestamp":"2026-10-21T00:20:33.942Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id/details, GET} route"}
{"timestamp":"2026-10-21T00:20:33.942Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id/employees, GET} route"}
{"timestamp":"2026-10-21T00:20:33.942Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id, PATCH} route"}
{"timestamp":"2026-10-21T00:20:33.942Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id/start, POST} route"}
{"timestamp":"2026-10-21T00:20:33.942Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id/stop, POST} route"}
{"timestamp":"2026-10-21T00:20:33.942Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id/duplicate, POST} route"}
{"timestamp":"2026-10-21T00:20:33.942Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id, DELETE} route"}
{"timestamp":"2026-10-21T00:20:33.943Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/auto-generate-program, POST} route"}
{"timestamp":"2026-10-21T00:20:33.943Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/generate-from-threat-intelligence, POST} route"}
{"timestamp":"2026-10-21T00:20:33.943Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id/risk-score, GET} route"}
{"timestamp":"2026-10-21T00:20:33.943Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/recalculate-risk-scores, POST} route"}
{"timestamp":"2026-10-21T00:20:33.943Z","level":"log","context":"RoutesResolver","message":"NotificationsController {/notifications}:"}
{"timestamp":"2026-10-21T00:20:33.943Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications, POST} route"}
{"timestamp":"2026-10-21T00:20:33.944Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications, GET} route"}
{"timestamp":"2026-10-21T00:20:33.944Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/unread, GET} route"}
{"timestamp":"2026-10-21T00:20:33.944Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/unread-count, GET} route"}
{"timestamp":"2026-10-21T00:20:33.944Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/:id, GET} route"}
{"timestamp":"2026-10-21T00:20:33.944Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/:id, PATCH} route"}
{"timestamp":"2026-10-21T00:20:33.944Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/:id/read, PATCH} route"}
{"timestamp":"2026-10-21T00:20:33.944Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/mark-all-read, PATCH} route"}
{"timestamp":"2026-10-21T00:20:33.945Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/:id, DELETE} route"}
{"timestamp":"2026-10-21T00:20:33.945Z","level":"log","context":"RoutesResolver","message":"LandingPageController {/lp}:"}
{"timestamp":"2026-10-21T00:20:33.945Z","level":"log","context":"RouterExplorer","message":"Mapped {/lp/image, GET} route"}
{"timestamp":"2026-10-21T00:20:33.945Z","level":"log","context":"RouterExplorer","message":"Mapped {/lp/learning, GET} route"}
{"timestamp":"2026-10-21T00:20:33.945Z","level":"log","context":"RouterExplorer","message":"Mapped {/lp/submit, POST} route"}
{"timestamp":"2026-10-21T00:20:33.946Z","level":"log","context":"RouterExplorer","message":"Mapped {/lp/test, GET} route"}
{"timestamp":"2026-10-21T00:20:33.946Z","level":"warn","context":"LegacyRouteConverter","message":"Unsupported route path: \"/lp/*\". In previous versions, the symbols ?, *, and + were used to denote optional or repeating path parameters. The latest version of \"path-to-regexp\" now requires the use of named parameters. For example, instead of using a route like /users/* to capture all routes starting with \"/users\", you should use /users/*path. For more details, refer to the migration guide. Attempting to auto-convert..."}
{"timestamp":"2026-10-21T00:20:33.946Z","level":"log","context":"RouterExplorer","message":"Mapped {/lp/*, ALL} route"}
{"timestamp":"2026-10-21T00:20:33.946Z","level":"log","context":"RoutesResolver","message":"SupportController {/support}:"}
{"timestamp":"2026-10-21T00:20:33.947Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets, POST} route"}
{"timestamp":"2026-10-21T00:20:33.947Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets, GET} route"}
{"timestamp":"2026-10-21T00:20:33.947Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets/:id, GET} route"}
{"timestamp":"2026-10-21T00:20:33.947Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets/:id, PATCH} route"}
{"timestamp":"2026-10-21T00:20:33.947Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets/:id, DELETE} route"}
{"timestamp":"2026-10-21T00:20:33.947Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets/:id/messages, POST} route"}
{"timestamp":"2026-10-21T00:20:33.948Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets/:id/close, POST} route"}
{"timestamp":"2026-10-21T00:20:33.948Z","level":"log","context":"RoutesResolver","message":"BusninessMetricsController {/business-metrics}:"}
{"timestamp":"2026-10-21T00:20:33.948Z","level":"log","context":"RouterExplorer","message":"Mapped {/business-metrics, GET} route"}
{"timestamp":"2026-10-21T00:20:33.948Z","level":"log","context":"RoutesResolver","message":"UsersController {/users}:"}
{"timestamp":"2026-10-21T00:20:33.948Z","level":"log","context":"RouterExplorer","message":"Mapped {/users/:id, PUT} route"}
{"timestamp":"2026-10-21T00:20:33.948Z","level":"log","context":"RouterExplorer","message":"Mapped {/users/settings, GET} route"}
{"timestamp":"2026-10-21T00:20:33.948Z","level":"log","context":"RouterExplorer","message":"Mapped {/users/settings/general, PUT} route"}
{"timestamp":"2026-10-21T00:20:33.948Z","level":"log","context":"RouterExplorer","message":"Mapped {/users/company/settings, PUT} route"}
{"timestamp":"2026-10-21T00:20:33.949Z","level":"log","context":"RouterExplorer","message":"Mapped {/users/change-password, POST} route"}
{"timestamp":"2026-10-21T00:20:33.949Z","level":"log","context":"RouterExplorer","message":"Mapped {/users/localization/settings, PUT} route"}
{"timestamp":"2026-10-21T00:20:33.949Z","level":"log","context":"RoutesResolver","message":"PartnerController {/partner}:"}
{"timestamp":"2026-10-21T00:20:33.949Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses, POST} route"}
{"timestamp":"2026-10-21T00:20:33.949Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses, GET} route"}
{"timestamp":"2026-10-21T00:20:33.949Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses/:id, GET} route"}
{"timestamp":"2026-10-21T00:20:33.949Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses/:id, PUT} route"}
{"timestamp":"2026-10-21T00:20:33.950Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses/:id, DELETE} route"}
{"timestamp":"2026-10-21T00:20:33.950Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses/:id/impersonate, POST} route"}
{"timestamp":"2026-10-21T00:20:33.950Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses/stop-impersonation, POST} route"}
{"timestamp":"2026-10-21T00:20:33.950Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/license-usage, GET} route"}
{"timestamp":"2026-10-21T00:20:33.950Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/invoices, POST} route"}
{"timestamp":"2026-10-21T00:20:33.950Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/invoices, GET} route"}
{"timestamp":"2026-10-21T00:20:33.951Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/invoices/:id, GET} route"}
{"timestamp":"2026-10-21T00:20:33.951Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/invoices/:id, PUT} route"}
{"timestamp":"2026-10-21T00:20:33.951Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/invoices/:id, DELETE} route"}
{"timestamp":"2026-10-21T00:20:33.951Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/invoices/:id/mark-paid, PUT} route"}
{"timestamp":"2026-10-21T00:20:33.951Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/onboarding/generate-token, POST} route"}
{"timestamp":"2026-10-21T00:20:33.951Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/dashboard, GET} route"}
{"timestamp":"2026-10-21T00:20:33.951Z","level":"log","context":"RoutesResolver","message":"MspSubscriptionController {/partner/msp-subscriptions}:"}
{"timestamp":"2026-10-21T00:20:33.952Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/plans, POST} route"}
{"timestamp":"2026-10-21T00:20:33.952Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/plans, GET} route"}
{"timestamp":"2026-10-21T00:20:33.952Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/plans/:planId, GET} route"}
{"timestamp":"2026-10-21T00:20:33.952Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/plans/:planId, PUT} route"}
{"timestamp":"2026-10-21T00:20:33.952Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/plans/:planId, DELETE} route"}
{"timestamp":"2026-10-21T00:20:33.952Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/businesses/:businessId/subscription, POST} route"}
{"timestamp":"2026-10-21T00:20:33.953Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions, GET} route"}
{"timestamp":"2026-10-21T00:20:33.953Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/businesses/:businessId/subscription, GET} route"}
{"timestamp":"2026-10-21T00:20:33.953Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/businesses/:businessId/subscription, PUT} route"}
{"timestamp":"2026-10-21T00:20:33.953Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/businesses/:businessId/subscription, DELETE} route"}
{"timestamp":"2026-10-21T00:20:33.953Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/businesses/:businessId/subscription/limits, GET} route"}
{"timestamp":"2026-10-21T00:20:33.953Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/businesses/:businessId/subscription/change-plan, PUT} route"}
{"timestamp":"2026-10-21T00:20:33.953Z","level":"log","context":"RoutesResolver","message":"OnboardingController {/onboarding}:"}
{"timestamp":"2026-10-21T00:20:33.954Z","level":"log","context":"RouterExplorer","message":"Mapped {/onboarding/validate/:token, GET} route"}
{"timestamp":"2026-10-21T00:20:33.954Z","level":"log","context":"RouterExplorer","message":"Mapped {/onboarding/complete/:token, POST} route"}
{"timestamp":"2026-10-21T00:20:33.954Z","level":"log","context":"RoutesResolver","message":"ResellerController {/reseller}:"}
{"timestamp":"2026-10-21T00:20:33.954Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/businesses, POST} route"}
{"timestamp":"2026-10-21T00:20:33.954Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/businesses, GET} route"}
{"timestamp":"2026-10-21T00:20:33.954Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/businesses/:id, GET} route"}
{"timestamp":"2026-10-21T00:20:33.954Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/businesses/:id, PUT} route"}
{"timestamp":"2026-10-21T00:20:33.955Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/businesses/:id, DELETE} route"}
{"timestamp":"2026-10-21T00:20:33.955Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/license-usage, GET} route"}
{"timestamp":"2026-10-21T00:20:33.955Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/invoices, POST} route"}
{"timestamp":"2026-10-21T00:20:33.955Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/invoices, GET} route"}
{"timestamp":"2026-10-21T00:20:33.955Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/invoices/:id, GET} route"}
{"timestamp":"2026-10-21T00:20:33.955Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/invoices/:id, PUT} route"}
{"timestamp":"2026-10-21T00:20:33.955Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/invoices/:id, DELETE} route"}
{"timestamp":"2026-10-21T00:20:33.956Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/invoices/:id/mark-paid, PUT} route"}
{"timestamp":"2026-10-21T00:20:33.956Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/onboarding/generate-token, POST} route"}
{"timestamp":"2026-10-21T00:20:33.956Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/dashboard, GET} route"}
{"timestamp":"2026-10-21T00:20:33.956Z","level":"log","context":"RoutesResolver","message":"ResellerSubscriptionController {/reseller}:"}
{"timestamp":"2026-10-21T00:20:33.956Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/plans, POST} route"}
{"timestamp":"2026-10-21T00:20:33.956Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/plans, GET} route"}
{"timestamp":"2026-10-21T00:20:33.956Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/plans/:planId, GET} route"}
{"timestamp":"2026-10-21T00:20:33.957Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/plans/:planId, PUT} route"}
{"timestamp":"2026-10-21T00:20:33.957Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/plans/:planId, DELETE} route"}
{"timestamp":"2026-10-21T00:20:33.957Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/subscriptions/businesses/:businessId/subscription, POST} route"}
{"timestamp":"2026-10-21T00:20:33.957Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/subscriptions, GET} route"}
{"timestamp":"2026-10-21T00:20:33.957Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/subscriptions/businesses/:businessId/subscription, GET} route"}
{"timestamp":"2026-10-21T00:20:33.957Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/subscriptions/businesses/:businessId/subscription, PUT} route"}
{"timestamp":"2026-10-21T00:20:33.957Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/subscriptions/businesses/:businessId/subscription, DELETE} route"}
{"timestamp":"2026-10-21T00:20:33.958Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/subscriptions/businesses/:businessId/subscription/limits, GET} route"}
{"timestamp":"2026-10-21T00:20:33.958Z","level":"log","context":"RoutesResolver","message":"HealthController {/health}:"}
{"timestamp":"2026-10-21T00:20:33.958Z","level":"log","context":"RouterExplorer","message":"Mapped {/health, GET} route"}
{"timestamp":"2026-10-21T00:20:33.958Z","level":"log","context":"RouterExplorer","message":"Mapped {/health/test-logs, GET} route"}
{"timestamp":"2026-10-21T00:20:33.958Z","level":"log","context":"RoutesResolver","message":"AzureAdController {/azure-ad}:"}
{"timestamp":"2026-10-21T00:20:33.958Z","level":"log","context":"RouterExplorer","message":"Mapped {/azure-ad/config, POST} route"}
{"timestamp":"2026-10-21T00:20:33.958Z","level":"log","context":"RouterExplorer","message":"Mapped {/azure-ad/config, GET} route"}
{"timestamp":"2026-10-21T00:20:33.959Z","level":"log","context":"RouterExplorer","message":"Mapped {/azure-ad/test-connection, POST} route"}
{"timestamp":"2026-10-21T00:20:33.959Z","level":"log","context":"RouterExplorer","message":"Mapped {/azure-ad/sync, POST} route"}
{"timestamp":"2026-10-21T00:20:33.959Z","level":"log","context":"RoutesResolver","message":"ThreatsController {/threats}:"}
{"timestamp":"2026-10-21T00:20:33.959Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats, POST} route"}
{"timestamp":"2026-10-21T00:20:33.959Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats, GET} route"}
{"timestamp":"2026-10-21T00:20:33.959Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/chart-data, GET} route"}
{"timestamp":"2026-10-21T00:20:33.959Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/claude-search, POST} route"}
{"timestamp":"2026-10-21T00:20:33.960Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/claude-latest, POST} route"}
{"timestamp":"2026-10-21T00:20:33.960Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/claude-trending, POST} route"}
{"timestamp":"2026-10-21T00:20:33.960Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/claude-categories, POST} route"}
{"timestamp":"2026-10-21T00:20:33.960Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/claude-manual-search, POST} route"}
{"timestamp":"2026-10-21T00:20:33.960Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/claude-quick-search, POST} route"}
{"timestamp":"2026-10-21T00:20:33.960Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/scheduler-status, GET} route"}
{"timestamp":"2026-10-21T00:20:33.960Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/health-check, GET} route"}
{"timestamp":"2026-10-21T00:20:33.961Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/pause-scheduler, POST} route"}
{"timestamp":"2026-10-21T00:20:33.961Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/:id, GET} route"}
{"timestamp":"2026-10-21T00:20:33.961Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/:id, PATCH} route"}
{"timestamp":"2026-10-21T00:20:33.961Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/:id, DELETE} route"}
{"timestamp":"2026-10-21T00:20:33.961Z","level":"log","context":"RoutesResolver","message":"DomainController {/domains}:"}
{"timestamp":"2026-10-21T00:20:33.961Z","level":"log","context":"RouterExplorer","message":"Mapped {/domains, GET} route"}
{"timestamp":"2026-10-21T00:20:33.961Z","level":"log","context":"RouterExplorer","message":"Mapped {/domains/:id, GET} route"}
{"timestamp":"2026-10-21T00:20:33.962Z","level":"log","context":"RouterExplorer","message":"Mapped {/domains, POST} route"}
{"timestamp":"2026-10-21T00:20:33.962Z","level":"log","context":"RouterExplorer","message":"Mapped {/domains/:id, PUT} route"}
{"timestamp":"2026-10-21T00:20:33.962Z","level":"log","context":"RouterExplorer","message":"Mapped {/domains/:id, DELETE} route"}
{"timestamp":"2026-10-21T00:20:33.962Z","level":"log","context":"RouterExplorer","message":"Mapped {/domains/seed, POST} route"}
{"timestamp":"2026-10-21T00:20:33.962Z","level":"log","context":"RoutesResolver","message":"MspSubscriptionController {/msp-subscription}:"}
{"timestamp":"2026-10-21T00:20:33.962Z","level":"log","context":"RouterExplorer","message":"Mapped {/msp-subscription/current, GET} route"}
{"timestamp":"2026-10-21T00:20:33.962Z","level":"log","context":"RouterExplorer","message":"Mapped {/msp-subscription/invoices, GET} route"}
{"timestamp":"2026-10-21T00:20:33.963Z","level":"log","context":"RouterExplorer","message":"Mapped {/msp-subscription/invoice/:invoiceId/pdf, GET} route"}
{"timestamp":"2026-10-21T00:20:33.963Z","level":"log","context":"RoutesResolver","message":"MspSubscriptionController {/api/msp-subscription}:"}
{"timestamp":"2026-10-21T00:20:33.963Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/msp-subscription/current, GET} route"}
{"timestamp":"2026-10-21T00:20:33.963Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/msp-subscription/invoices, GET} route"}
{"timestamp":"2026-10-21T00:20:33.963Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/msp-subscription/invoice/:invoiceId/pdf, GET} route"}
{"timestamp":"2026-10-21T00:20:34.032Z","level":"log","context":"NestApplication","message":"Nest application successfully started"}
{"timestamp":"2026-10-21T00:20:34.039Z","level":"log","context":"Bootstrap","message":"Users API successfully started on port 3842"}
{"timestamp":"2026-10-21T00:20:34.040Z","level":"log","context":"SeedService","message":"🌱 Starting database seeding..."}
{"timestamp":"2026-10-21T00:20:34.046Z","level":"log","context":"SeedService","message":"Admin account already exists, skipping seed"}
{"timestamp":"2026-10-21T00:20:34.049Z","level":"log","context":"SeedService","message":"Reseller account already exists, skipping seed"}
{"timestamp":"2026-10-21T00:20:34.050Z","level":"log","context":"SeedService","message":"MSP account already exists, skipping seed"}
{"timestamp":"2026-10-21T00:20:34.050Z","level":"log","context":"SeedService","message":"✅ Database seeding completed successfully"}
{"timestamp":"2026-10-21T00:20:34.090Z","level":"log","context":"UsersApiController","message":"Hello endpoint accessed"}
{"timestamp":"2026-10-21T00:21:28.343Z","level":"log","context":"UsersApiController","message":"Hello endpoint accessed"}
{"timestamp":"2026-10-21T01:00:04.054Z","level":"warn","context":"LegacyRouteConverter","message":"Unsupported route path: \"/lp/*\". In previous versions, the symbols ?, *, and + were used to denote optional or repeating path parameters. The latest version of \"path-to-regexp\" now requires the use of named parameters. For example, instead of using a route like /users/* to capture all routes starting with \"/users\", you should use /users/*path. For more details, refer to the migration guide. Attempting to auto-convert..."}
{"timestamp":"2026-10-21T01:00:04.114Z","level":"log","context":"Bootstrap","message":"Starting Users API on port 3842..."}
{"timestamp":"2026-10-21T01:00:04.119Z","level":"log","context":"RoutesResolver","message":"UsersApiController {/}:"}
{"timestamp":"2026-10-21T01:00:04.125Z","level":"log","context":"RouterExplorer","message":"Mapped {/, GET} route"}
{"timestamp":"2026-10-21T01:00:04.125Z","level":"log","context":"RoutesResolver","message":"AuthController {/auth}:"}
{"timestamp":"2026-10-21T01:00:04.127Z","level":"log","context":"RouterExplorer","message":"Mapped {/auth/login, POST} route"}
{"timestamp":"2026-10-21T01:00:04.128Z","level":"log","context":"RouterExplorer","message":"Mapped {/auth/admin/login, POST} route"}
{"timestamp":"2026-10-21T01:00:04.128Z","level":"log","context":"RouterExplorer","message":"Mapped {/auth/send-otp, POST} route"}
{"timestamp":"2026-10-21T01:00:04.129Z","level":"log","context":"RouterExplorer","message":"Mapped {/auth/verify-otp, POST} route"}
{"timestamp":"2026-10-21T01:00:04.130Z","level":"log","context":"RouterExplorer","message":"Mapped {/auth/signup, POST} route"}
{"timestamp":"2026-10-21T01:00:04.131Z","level":"log","context":"RouterExplorer","message":"Mapped {/auth/subscription-status, GET} route"}
{"timestamp":"2026-10-21T01:00:04.131Z","level":"log","context":"RoutesResolver","message":"AdminMspController {/admin/msp}:"}
{"timestamp":"2026-10-21T01:00:04.131Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/msp, GET} route"}
{"timestamp":"2026-10-21T01:00:04.133Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/msp/:id, GET} route"}
{"timestamp":"2026-10-21T01:00:04.134Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/msp, POST} route"}
{"timestamp":"2026-10-21T01:00:04.134Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/msp/:id, PUT} route"}
{"timestamp":"2026-10-21T01:00:04.135Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/msp/:id, DELETE} route"}
{"timestamp":"2026-10-21T01:00:04.135Z","level":"log","context":"RoutesResolver","message":"AdminLicenseController {/admin/licenses}:"}
{"timestamp":"2026-10-21T01:00:04.135Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/licenses/summary, GET} route"}
{"timestamp":"2026-10-21T01:00:04.136Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/licenses/msp/:mspId, GET} route"}
{"timestamp":"2026-10-21T01:00:04.136Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/licenses/msp/:mspId, PUT} route"}
{"timestamp":"2026-10-21T01:00:04.136Z","level":"log","context":"RoutesResolver","message":"AdminImpersonationController {/admin/impersonation}:"}
{"timestamp":"2026-10-21T01:00:04.137Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/impersonation/msp-users, GET} route"}
{"timestamp":"2026-10-21T01:00:04.140Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/impersonation/impersonate, POST} route"}
{"timestamp":"2026-10-21T01:00:04.140Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/impersonation/stop, POST} route"}
{"timestamp":"2026-10-21T01:00:04.140Z","level":"log","context":"RoutesResolver","message":"AdminAiUsageController {/admin/ai-usage}:"}
{"timestamp":"2026-10-21T01:00:04.141Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-usage, GET} route"}
{"timestamp":"2026-10-21T01:00:04.141Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-usage/business/:businessId, GET} route"}
{"timestamp":"2026-10-21T01:00:04.142Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-usage/report/monthly, GET} route"}
{"timestamp":"2026-10-21T01:00:04.142Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-usage/pricing, GET} route"}
{"timestamp":"2026-10-21T01:00:04.142Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-usage/pricing, POST} route"}
{"timestamp":"2026-10-21T01:00:04.143Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-usage/credit/:businessId, PUT} route"}
{"timestamp":"2026-10-21T01:00:04.143Z","level":"log","context":"RoutesResolver","message":"AdminAiUsageController {/api/admin/ai-usage}:"}
{"timestamp":"2026-10-21T01:00:04.143Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-usage, GET} route"}
{"timestamp":"2026-10-21T01:00:04.143Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-usage/business/:businessId, GET} route"}
{"timestamp":"2026-10-21T01:00:04.144Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-usage/report/monthly, GET} route"}
{"timestamp":"2026-10-21T01:00:04.144Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-usage/pricing, GET} route"}
{"timestamp":"2026-10-21T01:00:04.144Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-usage/pricing, POST} route"}
{"timestamp":"2026-10-21T01:00:04.144Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-usage/credit/:businessId, PUT} route"}
{"timestamp":"2026-10-21T01:00:04.145Z","level":"log","context":"RoutesResolver","message":"AdminAiModelController {/admin/ai-models}:"}
{"timestamp":"2026-10-21T01:00:04.145Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models, POST} route"}
{"timestamp":"2026-10-21T01:00:04.145Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models, GET} route"}
{"timestamp":"2026-10-21T01:00:04.145Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/default, GET} route"}
{"timestamp":"2026-10-21T01:00:04.146Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/:id, GET} route"}
{"timestamp":"2026-10-21T01:00:04.146Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/:id, PUT} route"}
{"timestamp":"2026-10-21T01:00:04.146Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/:id, DELETE} route"}
{"timestamp":"2026-10-21T01:00:04.146Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/:id/set-default, POST} route"}
{"timestamp":"2026-10-21T01:00:04.147Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/assign-to-business, POST} route"}
{"timestamp":"2026-10-21T01:00:04.147Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/business/:businessId, GET} route"}
{"timestamp":"2026-10-21T01:00:04.148Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/:id/businesses, GET} route"}
{"timestamp":"2026-10-21T01:00:04.148Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/initialize-defaults, POST} route"}
{"timestamp":"2026-10-21T01:00:04.148Z","level":"log","context":"RoutesResolver","message":"AdminAiModelController {/api/admin/ai-models}:"}
{"timestamp":"2026-10-21T01:00:04.148Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models, POST} route"}
{"timestamp":"2026-10-21T01:00:04.149Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models, GET} route"}
{"timestamp":"2026-10-21T01:00:04.149Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/default, GET} route"}
{"timestamp":"2026-10-21T01:00:04.149Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/:id, GET} route"}
{"timestamp":"2026-10-21T01:00:04.149Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/:id, PUT} route"}
{"timestamp":"2026-10-21T01:00:04.150Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/:id, DELETE} route"}
{"timestamp":"2026-10-21T01:00:04.150Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/:id/set-default, POST} route"}
{"timestamp":"2026-10-21T01:00:04.150Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/assign-to-business, POST} route"}
{"timestamp":"2026-10-21T01:00:04.150Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/business/:businessId, GET} route"}
{"timestamp":"2026-10-21T01:00:04.151Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/:id/businesses, GET} route"}
{"timestamp":"2026-10-21T01:00:04.151Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/initialize-defaults, POST} route"}
{"timestamp":"2026-10-21T01:00:04.151Z","level":"log","context":"RoutesResolver","message":"AdminBusinessController {/admin/businesses}:"}
{"timestamp":"2026-10-21T01:00:04.151Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/businesses, GET} route"}
{"timestamp":"2026-10-21T01:00:04.152Z","level":"log","context":"RoutesResolver","message":"ResellerManagementController {/admin/resellers}:"}
{"timestamp":"2026-10-21T01:00:04.152Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/resellers, GET} route"}
{"timestamp":"2026-10-21T01:00:04.152Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/resellers/create-default, POST} route"}
{"timestamp":"2026-10-21T01:00:04.152Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/resellers, POST} route"}
{"timestamp":"2026-10-21T01:00:04.153Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/resellers/:id/toggle-status, PUT} route"}
{"timestamp":"2026-10-21T01:00:04.153Z","level":"log","context":"RoutesResolver","message":"SubscriptionController {/subscription}:"}
{"timestamp":"2026-10-21T01:00:04.153Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/plans, GET} route"}
{"timestamp":"2026-10-21T01:00:04.153Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/calculate-price, POST} route"}
{"timestamp":"2026-10-21T01:00:04.154Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/current, GET} route"}
{"timestamp":"2026-10-21T01:00:04.154Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/create, POST} route"}
{"timestamp":"2026-10-21T01:00:04.154Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/:id, PUT} route"}
{"timestamp":"2026-10-21T01:00:04.154Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/:id/cancel, DELETE} route"}
{"timestamp":"2026-10-21T01:00:04.155Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/sync/:stripeSubscriptionId, POST} route"}
{"timestamp":"2026-10-21T01:00:04.155Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/payments, GET} route"}
{"timestamp":"2026-10-21T01:00:04.155Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/payments/stats, GET} route"}
{"timestamp":"2026-10-21T01:00:04.155Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/payment/:id, GET} route"}
{"timestamp":"2026-10-21T01:00:04.156Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/payment-methods/attach, POST} route"}
{"timestamp":"2026-10-21T01:00:04.156Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/payment-methods/:paymentMethodId, DELETE} route"}
{"timestamp":"2026-10-21T01:00:04.156Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/payment-methods, GET} route"}
{"timestamp":"2026-10-21T01:00:04.156Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/setup-intent, POST} route"}
{"timestamp":"2026-10-21T01:00:04.157Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/update-employee-count, POST} route"}
{"timestamp":"2026-10-21T01:00:04.157Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/retry-payment/:subscriptionId, POST} route"}
{"timestamp":"2026-10-21T01:00:04.157Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/invoice/:invoiceId/pdf, GET} route"}
{"timestamp":"2026-10-21T01:00:04.158Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/preview-upgrade, POST} route"}
{"timestamp":"2026-10-21T01:00:04.158Z","level":"log","context":"RoutesResolver","message":"SubscriptionController {/api/subscription}:"}
{"timestamp":"2026-10-21T01:00:04.158Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/plans, GET} route"}
{"timestamp":"2026-10-21T01:00:04.158Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/calculate-price, POST} route"}
{"timestamp":"2026-10-21T01:00:04.158Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/current, GET} route"}
{"timestamp":"2026-10-21T01:00:04.159Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/create, POST} route"}
{"timestamp":"2026-10-21T01:00:04.159Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/:id, PUT} route"}
{"timestamp":"2026-10-21T01:00:04.159Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/:id/cancel, DELETE} route"}
{"timestamp":"2026-10-21T01:00:04.159Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/sync/:stripeSubscriptionId, POST} route"}
{"timestamp":"2026-10-21T01:00:04.160Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/payments, GET} route"}
{"timestamp":"2026-10-21T01:00:04.160Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/payments/stats, GET} route"}
{"timestamp":"2026-10-21T01:00:04.160Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/payment/:id, GET} route"}
{"timestamp":"2026-10-21T01:00:04.160Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/payment-methods/attach, POST} route"}
{"timestamp":"2026-10-21T01:00:04.160Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/payment-methods/:paymentMethodId, DELETE} route"}
{"timestamp":"2026-10-21T01:00:04.161Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/payment-methods, GET} route"}
{"timestamp":"2026-10-21T01:00:04.161Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/setup-intent, POST} route"}
{"timestamp":"2026-10-21T01:00:04.161Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/update-employee-count, POST} route"}
{"timestamp":"2026-10-21T01:00:04.161Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/retry-payment/:subscriptionId, POST} route"}
{"timestamp":"2026-10-21T01:00:04.162Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/invoice/:invoiceId/pdf, GET} route"}
{"timestamp":"2026-10-21T01:00:04.162Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/preview-upgrade, POST} route"}
{"timestamp":"2026-10-21T01:00:04.162Z","level":"log","context":"RoutesResolver","message":"StripeWebhookController {/stripe/webhook}:"}
{"timestamp":"2026-10-21T01:00:04.162Z","level":"log","context":"RouterExplorer","message":"Mapped {/stripe/webhook/test, GET} route"}
{"timestamp":"2026-10-21T01:00:04.162Z","level":"log","context":"RouterExplorer","message":"Mapped {/stripe/webhook, POST} route"}
{"timestamp":"2026-10-21T01:00:04.163Z","level":"log","context":"RoutesResolver","message":"EmailController {/email-templates}:"}
{"timestamp":"2026-10-21T01:00:04.163Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates/test, POST} route"}
{"timestamp":"2026-10-21T01:00:04.163Z","level":"log","context":"RoutesResolver","message":"EmployeeController {/employees}:"}
{"timestamp":"2026-10-21T01:00:04.163Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees, POST} route"}
{"timestamp":"2026-10-21T01:00:04.163Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees, GET} route"}
{"timestamp":"2026-10-21T01:00:04.164Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees/export, GET} route"}
{"timestamp":"2026-10-21T01:00:04.164Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees/risk-stats, GET} route"}
{"timestamp":"2026-10-21T01:00:04.164Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees/:id, GET} route"}
{"timestamp":"2026-10-21T01:00:04.164Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees/:id, PUT} route"}
{"timestamp":"2026-10-21T01:00:04.165Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees/:id, DELETE} route"}
{"timestamp":"2026-10-21T01:00:04.165Z","level":"log","context":"RoutesResolver","message":"GroupController {/groups}:"}
{"timestamp":"2026-10-21T01:00:04.165Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups, POST} route"}
{"timestamp":"2026-10-21T01:00:04.165Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups, GET} route"}
{"timestamp":"2026-10-21T01:00:04.166Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups/standard, GET} route"}
{"timestamp":"2026-10-21T01:00:04.166Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups/:id, GET} route"}
{"timestamp":"2026-10-21T01:00:04.166Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups/:id, PUT} route"}
{"timestamp":"2026-10-21T01:00:04.166Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups/:id, DELETE} route"}
{"timestamp":"2026-10-21T01:00:04.167Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups/:id/info, GET} route"}
{"timestamp":"2026-10-21T01:00:04.167Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups/:id/with-employees, GET} route"}
{"timestamp":"2026-10-21T01:00:04.167Z","level":"log","context":"RoutesResolver","message":"SenderProfileController {/sender-profiles}:"}
{"timestamp":"2026-10-21T01:00:04.167Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles, GET} route"}
{"timestamp":"2026-10-21T01:00:04.167Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles/:id, GET} route"}
{"timestamp":"2026-10-21T01:00:04.168Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles, POST} route"}
{"timestamp":"2026-10-21T01:00:04.168Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles/:id, PUT} route"}
{"timestamp":"2026-10-21T01:00:04.168Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles/:id, DELETE} route"}
{"timestamp":"2026-10-21T01:00:04.168Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles/:id/verify-domain, POST} route"}
{"timestamp":"2026-10-21T01:00:04.169Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles/domain-verification, GET} route"}
{"timestamp":"2026-10-21T01:00:04.169Z","level":"log","context":"RoutesResolver","message":"EmailTemplateController {/email-templates}:"}
{"timestamp":"2026-10-21T01:00:04.169Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates, GET} route"}
{"timestamp":"2026-10-21T01:00:04.169Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates/:id, GET} route"}
{"timestamp":"2026-10-21T01:00:04.170Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates, POST} route"}
{"timestamp":"2026-10-21T01:00:04.170Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates/:id, PUT} route"}
{"timestamp":"2026-10-21T01:00:04.170Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates/:id, DELETE} route"}
{"timestamp":"2026-10-21T01:00:04.170Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates/:id/duplicate, POST} route"}
{"timestamp":"2026-10-21T01:00:04.170Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates/:id/preview, GET} route"}
{"timestamp":"2026-10-21T01:00:04.171Z","level":"log","context":"RoutesResolver","message":"ScenarioController {/scenarios}:"}
{"timestamp":"2026-10-21T01:00:04.171Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios, POST} route"}
{"timestamp":"2026-10-21T01:00:04.171Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios/generate-content, POST} route"}
{"timestamp":"2026-10-21T01:00:04.171Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios, GET} route"}
{"timestamp":"2026-10-21T01:00:04.172Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios/:id, GET} route"}
{"timestamp":"2026-10-21T01:00:04.172Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios/:id, PUT} route"}
{"timestamp":"2026-10-21T01:00:04.172Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios/:id, DELETE} route"}
{"timestamp":"2026-10-21T01:00:04.172Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios/generate-from-json, POST} route"}
{"timestamp":"2026-10-21T01:00:04.173Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios/:id/save-as-custom-scenario, POST} route"}
{"timestamp":"2026-10-21T01:00:04.173Z","level":"log","context":"RoutesResolver","message":"CampaignController {/campaigns}:"}
{"timestamp":"2026-10-21T01:00:04.173Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns, POST} route"}
{"timestamp":"2026-10-21T01:00:04.173Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns, GET} route"}
{"timestamp":"2026-10-21T01:00:04.173Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id, GET} route"}
{"timestamp":"2026-10-21T01:00:04.174Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id/details, GET} route"}
{"timestamp":"2026-10-21T01:00:04.174Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id/employees, GET} route"}
{"timestamp":"2026-10-21T01:00:04.174Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id, PATCH} route"}
{"timestamp":"2026-10-21T01:00:04.175Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id/start, POST} route"}
{"timestamp":"2026-10-21T01:00:04.175Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id/stop, POST} route"}
{"timestamp":"2026-10-21T01:00:04.175Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id/duplicate, POST} route"}
{"timestamp":"2026-10-21T01:00:04.175Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id, DELETE} route"}
{"timestamp":"2026-10-21T01:00:04.176Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/auto-generate-program, POST} route"}
{"timestamp":"2026-10-21T01:00:04.176Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/generate-from-threat-intelligence, POST} route"}
{"timestamp":"2026-10-21T01:00:04.176Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id/risk-score, GET} route"}
{"timestamp":"2026-10-21T01:00:04.176Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/recalculate-risk-scores, POST} route"}
{"timestamp":"2026-10-21T01:00:04.176Z","level":"log","context":"RoutesResolver","message":"CampaignController {/api/campaigns}:"}
{"timestamp":"2026-10-21T01:00:04.177Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns, POST} route"}
{"timestamp":"2026-10-21T01:00:04.177Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns, GET} route"}
{"timestamp":"2026-10-21T01:00:04.177Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id, GET} route"}
{"timestamp":"2026-10-21T01:00:04.177Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id/details, GET} route"}
{"timestamp":"2026-10-21T01:00:04.178Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id/employees, GET} route"}
{"timestamp":"2026-10-21T01:00:04.178Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id, PATCH} route"}
{"timestamp":"2026-10-21T01:00:04.178Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id/start, POST} route"}
{"timestamp":"2026-10-21T01:00:04.178Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id/stop, POST} route"}
{"timestamp":"2026-10-21T01:00:04.179Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id/duplicate, POST} route"}
{"timestamp":"2026-10-21T01:00:04.179Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id, DELETE} route"}
{"timestamp":"2026-10-21T01:00:04.179Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/auto-generate-program, POST} route"}
{"timestamp":"2026-10-21T01:00:04.179Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/generate-from-threat-intelligence, POST} route"}
{"timestamp":"2026-10-21T01:00:04.180Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id/risk-score, GET} route"}
{"timestamp":"2026-10-21T01:00:04.180Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/recalculate-risk-scores, POST} route"}
{"timestamp":"2026-10-21T01:00:04.180Z","level":"log","context":"RoutesResolver","message":"NotificationsController {/notifications}:"}
{"timestamp":"2026-10-21T01:00:04.181Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications, POST} route"}
{"timestamp":"2026-10-21T01:00:04.181Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications, GET} route"}
{"timestamp":"2026-10-21T01:00:04.181Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/unread, GET} route"}
{"timestamp":"2026-10-21T01:00:04.181Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/unread-count, GET} route"}
{"timestamp":"2026-10-21T01:00:04.182Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/:id, GET} route"}
{"timestamp":"2026-10-21T01:00:04.182Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/:id, PATCH} route"}
{"timestamp":"2026-10-21T01:00:04.182Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/:id/read, PATCH} route"}
{"timestamp":"2026-10-21T01:00:04.183Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/mark-all-read, PATCH} route"}
{"timestamp":"2026-10-21T01:00:04.183Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/:id, DELETE} route"}
{"timestamp":"2026-10-21T01:00:04.183Z","level":"log","context":"RoutesResolver","message":"LandingPageController {/lp}:"}
{"timestamp":"2026-10-21T01:00:04.184Z","level":"log","context":"RouterExplorer","message":"Mapped {/lp/image, GET} route"}
{"timestamp":"2026-10-21T01:00:04.184Z","level":"log","context":"RouterExplorer","message":"Mapped {/lp/learning, GET} route"}
{"timestamp":"2026-10-21T01:00:04.184Z","level":"log","context":"RouterExplorer","message":"Mapped {/lp/submit, POST} route"}
{"timestamp":"2026-10-21T01:00:04.184Z","level":"log","context":"RouterExplorer","message":"Mapped {/lp/test, GET} route"}
{"timestamp":"2026-10-21T01:00:04.185Z","level":"warn","context":"LegacyRouteConverter","message":"Unsupported route path: \"/lp/*\". In previous versions, the symbols ?, *, and + were used to denote optional or repeating path parameters. The latest version of \"path-to-regexp\" now requires the use of named parameters. For example, instead of using a route like /users/* to capture all routes starting with \"/users\", you should use /users/*path. For more details, refer to the migration guide. Attempting to auto-convert..."}
{"timestamp":"2026-10-21T01:00:04.186Z","level":"log","context":"RouterExplorer","message":"Mapped {/lp/*, ALL} route"}
{"timestamp":"2026-10-21T01:00:04.186Z","level":"log","context":"RoutesResolver","message":"SupportController {/support}:"}
{"timestamp":"2026-10-21T01:00:04.186Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets, POST} route"}
{"timestamp":"2026-10-21T01:00:04.187Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets, GET} route"}
{"timestamp":"2026-10-21T01:00:04.187Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets/:id, GET} route"}
{"timestamp":"2026-10-21T01:00:04.187Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets/:id, PATCH} route"}
{"timestamp":"2026-10-21T01:00:04.187Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets/:id, DELETE} route"}
{"timestamp":"2026-10-21T01:00:04.188Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets/:id/messages, POST} route"}
{"timestamp":"2026-10-21T01:00:04.188Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets/:id/close, POST} route"}
{"timestamp":"2026-10-21T01:00:04.188Z","level":"log","context":"RoutesResolver","message":"BusninessMetricsController {/business-metrics}:"}
{"timestamp":"2026-10-21T01:00:04.188Z","level":"log","context":"RouterExplorer","message":"Mapped {/business-metrics, GET} route"}
{"timestamp":"2026-10-21T01:00:04.188Z","level":"log","context":"RoutesResolver","message":"UsersController {/users}:"}
{"timestamp":"2026-10-21T01:00:04.189Z","level":"log","context":"RouterExplorer","message":"Mapped {/users/:id, PUT} route"}
{"timestamp":"2026-10-21T01:00:04.189Z","level":"log","context":"RouterExplorer","message":"Mapped {/users/settings, GET} route"}
{"timestamp":"2026-10-21T01:00:04.189Z","level":"log","context":"RouterExplorer","message":"Mapped {/users/settings/general, PUT} route"}
{"timestamp":"2026-10-21T01:00:04.190Z","level":"log","context":"RouterExplorer","message":"Mapped {/users/company/settings, PUT} route"}
{"timestamp":"2026-10-21T01:00:04.190Z","level":"log","context":"RouterExplorer","message":"Mapped {/users/change-password, POST} route"}
{"timestamp":"2026-10-21T01:00:04.190Z","level":"log","context":"RouterExplorer","message":"Mapped {/users/localization/settings, PUT} route"}
{"timestamp":"2026-10-21T01:00:04.190Z","level":"log","context":"RoutesResolver","message":"PartnerController {/partner}:"}
{"timestamp":"2026-10-21T01:00:04.191Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses, POST} route"}
{"timestamp":"2026-10-21T01:00:04.191Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses, GET} route"}
{"timestamp":"2026-10-21T01:00:04.191Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses/:id, GET} route"}
{"timestamp":"2026-10-21T01:00:04.192Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses/:id, PUT} route"}
{"timestamp":"2026-10-21T01:00:04.192Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses/:id, DELETE} route"}
{"timestamp":"2026-10-21T01:00:04.192Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses/:id/impersonate, POST} route"}
{"timestamp":"2026-10-21T01:00:04.193Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses/stop-impersonation, POST} route"}
{"timestamp":"2026-10-21T01:00:04.193Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/license-usage, GET} route"}
{"timestamp":"2026-10-21T01:00:04.193Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/invoices, POST} route"}
{"timestamp":"2026-10-21T01:00:04.193Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/invoices, GET} route"}
{"timestamp":"2026-10-21T01:00:04.194Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/invoices/:id, GET} route"}
{"timestamp":"2026-10-21T01:00:04.194Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/invoices/:id, PUT} route"}
{"timestamp":"2026-10-21T01:00:04.194Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/invoices/:id, DELETE} route"}
{"timestamp":"2026-10-21T01:00:04.194Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/invoices/:id/mark-paid, PUT} route"}
{"timestamp":"2026-10-21T01:00:04.194Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/onboarding/generate-token, POST} route"}
{"timestamp":"2026-10-21T01:00:04.195Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/dashboard, GET} route"}
{"timestamp":"2026-10-21T01:00:04.195Z","level":"log","context":"RoutesResolver","message":"MspSubscriptionController {/partner/msp-subscriptions}:"}
{"timestamp":"2026-10-21T01:00:04.195Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/plans, POST} route"}
{"timestamp":"2026-10-21T01:00:04.195Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/plans, GET} route"}
{"timestamp":"2026-10-21T01:00:04.196Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/plans/:planId, GET} route"}
{"timestamp":"2026-10-21T01:00:04.196Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/plans/:planId, PUT} route"}
{"timestamp":"2026-10-21T01:00:04.196Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/plans/:planId, DELETE} route"}
{"timestamp":"2026-10-21T01:00:04.196Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/businesses/:businessId/subscription, POST} route"}
{"timestamp":"2026-10-21T01:00:04.197Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions, GET} route"}
{"timestamp":"2026-10-21T01:00:04.197Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/businesses/:businessId/subscription, GET} route"}
{"timestamp":"2026-10-21T01:00:04.197Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/businesses/:businessId/subscription, PUT} route"}
{"timestamp":"2026-10-21T01:00:04.197Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/businesses/:businessId/subscription, DELETE} route"}
{"timestamp":"2026-10-21T01:00:04.198Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/businesses/:businessId/subscription/limits, GET} route"}
{"timestamp":"2026-10-21T01:00:04.198Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/businesses/:businessId/subscription/change-plan, PUT} route"}
{"timestamp":"2026-10-21T01:00:04.198Z","level":"log","context":"RoutesResolver","message":"OnboardingController {/onboarding}:"}
{"timestamp":"2026-10-21T01:00:04.198Z","level":"log","context":"RouterExplorer","message":"Mapped {/onboarding/validate/:token, GET} route"}
{"timestamp":"2026-10-21T01:00:04.199Z","level":"log","context":"RouterExplorer","message":"Mapped {/onboarding/complete/:token, POST} route"}
{"timestamp":"2026-10-21T01:00:04.199Z","level":"log","context":"RoutesResolver","message":"ResellerController {/reseller}:"}
{"timestamp":"2026-10-21T01:00:04.199Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/businesses, POST} route"}
{"timestamp":"2026-10-21T01:00:04.199Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/businesses, GET} route"}
{"timestamp":"2026-10-21T01:00:04.200Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/businesses/:id, GET} route"}
{"timestamp":"2026-10-21T01:00:04.200Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/businesses/:id, PUT} route"}
{"timestamp":"2026-10-21T01:00:04.200Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/businesses/:id, DELETE} route"}
{"timestamp":"2026-10-21T01:00:04.200Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/license-usage, GET} route"}
{"timestamp":"2026-10-21T01:00:04.201Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/invoices, POST} route"}
{"timestamp":"2026-10-21T01:00:04.201Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/invoices, GET} route"}
{"timestamp":"2026-10-21T01:00:04.201Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/invoices/:id, GET} route"}
{"timestamp":"2026-10-21T01:00:04.201Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/invoices/:id, PUT} route"}
{"timestamp":"2026-10-21T01:00:04.202Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/invoices/:id, DELETE} route"}
{"timestamp":"2026-10-21T01:00:04.202Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/invoices/:id/mark-paid, PUT} route"}
{"timestamp":"2026-10-21T01:00:04.202Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/onboarding/generate-token, POST} route"}
{"timestamp":"2026-10-21T01:00:04.203Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/dashboard, GET} route"}
{"timestamp":"2026-10-21T01:00:04.203Z","level":"log","context":"RoutesResolver","message":"ResellerSubscriptionController {/reseller}:"}
{"timestamp":"2026-10-21T01:00:04.203Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/plans, POST} route"}
{"timestamp":"2026-10-21T01:00:04.203Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/plans, GET} route"}
{"timestamp":"2026-10-21T01:00:04.204Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/plans/:planId, GET} route"}
{"timestamp":"2026-10-21T01:00:04.204Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/plans/:planId, PUT} route"}
{"timestamp":"2026-10-21T01:00:04.204Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/plans/:planId, DELETE} route"}
{"timestamp":"2026-10-21T01:00:04.204Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/subscriptions/businesses/:businessId/subscription, POST} route"}
{"timestamp":"2026-10-21T01:00:04.205Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/subscriptions, GET} route"}
{"timestamp":"2026-10-21T01:00:04.205Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/subscriptions/businesses/:businessId/subscription, GET} route"}
{"timestamp":"2026-10-21T01:00:04.205Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/subscriptions/businesses/:businessId/subscription, PUT} route"}
{"timestamp":"2026-10-21T01:00:04.206Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/subscriptions/businesses/:businessId/subscription, DELETE} route"}
{"timestamp":"2026-10-21T01:00:04.206Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/subscriptions/businesses/:businessId/subscription/limits, GET} route"}
{"timestamp":"2026-10-21T01:00:04.206Z","level":"log","context":"RoutesResolver","message":"HealthController {/health}:"}
{"timestamp":"2026-10-21T01:00:04.206Z","level":"log","context":"RouterExplorer","message":"Mapped {/health, GET} route"}
{"timestamp":"2026-10-21T01:00:04.206Z","level":"log","context":"RouterExplorer","message":"Mapped {/health/test-logs, GET} route"}
{"timestamp":"2026-10-21T01:00:04.206Z","level":"log","context":"RoutesResolver","message":"AzureAdController {/azure-ad}:"}
{"timestamp":"2026-10-21T01:00:04.207Z","level":"log","context":"RouterExplorer","message":"Mapped {/azure-ad/config, POST} route"}
{"timestamp":"2026-10-21T01:00:04.207Z","level":"log","context":"RouterExplorer","message":"Mapped {/azure-ad/config, GET} route"}
{"timestamp":"2026-10-21T01:00:04.207Z","level":"log","context":"RouterExplorer","message":"Mapped {/azure-ad/test-connection, POST} route"}
{"timestamp":"2026-10-21T01:00:04.208Z","level":"log","context":"RouterExplorer","message":"Mapped {/azure-ad/sync, POST} route"}
{"timestamp":"2026-10-21T01:00:04.208Z","level":"log","context":"RoutesResolver","message":"ThreatsController {/threats}:"}
{"timestamp":"2026-10-21T01:00:04.208Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats, POST} route"}
{"timestamp":"2026-10-21T01:00:04.208Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats, GET} route"}
{"timestamp":"2026-10-21T01:00:04.209Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/chart-data, GET} route"}
{"timestamp":"2026-10-21T01:00:04.209Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/claude-search, POST} route"}
{"timestamp":"2026-10-21T01:00:04.209Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/claude-latest, POST} route"}
{"timestamp":"2026-10-21T01:00:04.209Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/claude-trending, POST} route"}
{"timestamp":"2026-10-21T01:00:04.210Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/claude-categories, POST} route"}
{"timestamp":"2026-10-21T01:00:04.210Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/claude-manual-search, POST} route"}
{"timestamp":"2026-10-21T01:00:04.210Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/claude-quick-search, POST} route"}
{"timestamp":"2026-10-21T01:00:04.210Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/scheduler-status, GET} route"}
{"timestamp":"2026-10-21T01:00:04.211Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/health-check, GET} route"}
{"timestamp":"2026-10-21T01:00:04.211Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/pause-scheduler, POST} route"}
{"timestamp":"2026-10-21T01:00:04.211Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/:id, GET} route"}
{"timestamp":"2026-10-21T01:00:04.211Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/:id, PATCH} route"}
{"timestamp":"2026-10-21T01:00:04.212Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/:id, DELETE} route"}
{"timestamp":"2026-10-21T01:00:04.212Z","level":"log","context":"RoutesResolver","message":"DomainController {/domains}:"}
{"timestamp":"2026-10-21T01:00:04.212Z","level":"log","context":"RouterExplorer","message":"Mapped {/domains, GET} route"}
{"timestamp":"2026-10-21T01:00:04.212Z","level":"log","context":"RouterExplorer","message":"Mapped {/domains/:id, GET} route"}
{"timestamp":"2026-10-21T01:00:04.212Z","level":"log","context":"RouterExplorer","message":"Mapped {/domains, POST} route"}
{"timestamp":"2026-10-21T01:00:04.213Z","level":"log","context":"RouterExplorer","message":"Mapped {/domains/:id, PUT} route"}
{"timestamp":"2026-10-21T01:00:04.213Z","level":"log","context":"RouterExplorer","message":"Mapped {/domains/:id, DELETE} route"}
{"timestamp":"2026-10-21T01:00:04.213Z","level":"log","context":"RouterExplorer","message":"Mapped {/domains/seed, POST} route"}
{"timestamp":"2026-10-21T01:00:04.213Z","level":"log","context":"RoutesResolver","message":"MspSubscriptionController {/msp-subscription}:"}
{"timestamp":"2026-10-21T01:00:04.214Z","level":"log","context":"RouterExplorer","message":"Mapped {/msp-subscription/current, GET} route"}
{"timestamp":"2026-10-21T01:00:04.214Z","level":"log","context":"RouterExplorer","message":"Mapped {/msp-subscription/invoices, GET} route"}
{"timestamp":"2026-10-21T01:00:04.214Z","level":"log","context":"RouterExplorer","message":"Mapped {/msp-subscription/invoice/:invoiceId/pdf, GET} route"}
{"timestamp":"2026-10-21T01:00:04.214Z","level":"log","context":"RoutesResolver","message":"MspSubscriptionController {/api/msp-subscription}:"}
{"timestamp":"2026-10-21T01:00:04.214Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/msp-subscription/current, GET} route"}
{"timestamp":"2026-10-21T01:00:04.215Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/msp-subscription/invoices, GET} route"}
{"timestamp":"2026-10-21T01:00:04.215Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/msp-subscription/invoice/:invoiceId/pdf, GET} route"}
{"timestamp":"2026-10-21T01:00:04.331Z","level":"log","context":"NestApplication","message":"Nest application successfully started"}
{"timestamp":"2026-10-21T01:00:04.341Z","level":"log","context":"Bootstrap","message":"Users API successfully started on port 3842"}
{"timestamp":"2026-10-21T01:00:04.341Z","level":"log","context":"SeedService","message":"🌱 Starting database seeding..."}
{"timestamp":"2026-10-21T01:00:04.350Z","level":"log","context":"SeedService","message":"Admin account already exists, skipping seed"}
{"timestamp":"2026-10-21T01:00:04.353Z","level":"log","context":"SeedService","message":"Reseller account already exists, skipping seed"}
{"timestamp":"2026-10-21T01:00:04.356Z","level":"log","context":"SeedService","message":"MSP account already exists, skipping seed"}
{"timestamp":"2026-10-21T01:00:04.356Z","level":"log","context":"SeedService","message":"✅ Database seeding completed successfully"}
{"timestamp":"2026-10-21T01:00:04.403Z","level":"log","context":"UsersApiController","message":"Hello endpoint accessed"}
{"timestamp":"2026-10-21T02:05:57.609Z","level":"warn","context":"LegacyRouteConverter","message":"Unsupported route path: \"/lp/*\". In previous versions, the symbols ?, *, and + were used to denote optional or repeating path parameters. The latest version of \"path-to-regexp\" now requires the use of named parameters. For example, instead of using a route like /users/* to capture all routes starting with \"/users\", you should use /users/*path. For more details, refer to the migration guide. Attempting to auto-convert..."}
{"timestamp":"2026-10-21T02:05:57.648Z","level":"log","context":"Bootstrap","message":"Starting Users API on port 3842..."}
{"timestamp":"2026-10-21T02:05:57.651Z","level":"log","context":"RoutesResolver","message":"UsersApiController {/}:"}
{"timestamp":"2026-10-21T02:05:57.655Z","level":"log","context":"RouterExplorer","message":"Mapped {/, GET} route"}
{"timestamp":"2026-10-21T02:05:57.655Z","level":"log","context":"RoutesResolver","message":"AuthController {/auth}:"}
{"timestamp":"2026-10-21T02:05:57.656Z","level":"log","context":"RouterExplorer","message":"Mapped {/auth/login, POST} route"}
{"timestamp":"2026-10-21T02:05:57.656Z","level":"log","context":"RouterExplorer","message":"Mapped {/auth/admin/login, POST} route"}
{"timestamp":"2026-10-21T02:05:57.657Z","level":"log","context":"RouterExplorer","message":"Mapped {/auth/send-otp, POST} route"}
{"timestamp":"2026-10-21T02:05:57.657Z","level":"log","context":"RouterExplorer","message":"Mapped {/auth/verify-otp, POST} route"}
{"timestamp":"2026-10-21T02:05:57.658Z","level":"log","context":"RouterExplorer","message":"Mapped {/auth/signup, POST} route"}
{"timestamp":"2026-10-21T02:05:57.658Z","level":"log","context":"RouterExplorer","message":"Mapped {/auth/subscription-status, GET} route"}
{"timestamp":"2026-10-21T02:05:57.658Z","level":"log","context":"RoutesResolver","message":"AdminMspController {/admin/msp}:"}
{"timestamp":"2026-10-21T02:05:57.659Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/msp, GET} route"}
{"timestamp":"2026-10-21T02:05:57.660Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/msp/:id, GET} route"}
{"timestamp":"2026-10-21T02:05:57.660Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/msp, POST} route"}
{"timestamp":"2026-10-21T02:05:57.661Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/msp/:id, PUT} route"}
{"timestamp":"2026-10-21T02:05:57.661Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/msp/:id, DELETE} route"}
{"timestamp":"2026-10-21T02:05:57.661Z","level":"log","context":"RoutesResolver","message":"AdminLicenseController {/admin/licenses}:"}
{"timestamp":"2026-10-21T02:05:57.661Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/licenses/summary, GET} route"}
{"timestamp":"2026-10-21T02:05:57.662Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/licenses/msp/:mspId, GET} route"}
{"timestamp":"2026-10-21T02:05:57.662Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/licenses/msp/:mspId, PUT} route"}
{"timestamp":"2026-10-21T02:05:57.664Z","level":"log","context":"RoutesResolver","message":"AdminImpersonationController {/admin/impersonation}:"}
{"timestamp":"2026-10-21T02:05:57.664Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/impersonation/msp-users, GET} route"}
{"timestamp":"2026-10-21T02:05:57.665Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/impersonation/impersonate, POST} route"}
{"timestamp":"2026-10-21T02:05:57.665Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/impersonation/stop, POST} route"}
{"timestamp":"2026-10-21T02:05:57.665Z","level":"log","context":"RoutesResolver","message":"AdminAiUsageController {/admin/ai-usage}:"}
{"timestamp":"2026-10-21T02:05:57.665Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-usage, GET} route"}
{"timestamp":"2026-10-21T02:05:57.666Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-usage/business/:businessId, GET} route"}
{"timestamp":"2026-10-21T02:05:57.666Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-usage/report/monthly, GET} route"}
{"timestamp":"2026-10-21T02:05:57.666Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-usage/pricing, GET} route"}
{"timestamp":"2026-10-21T02:05:57.666Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-usage/pricing, POST} route"}
{"timestamp":"2026-10-21T02:05:57.667Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-usage/credit/:businessId, PUT} route"}
{"timestamp":"2026-10-21T02:05:57.667Z","level":"log","context":"RoutesResolver","message":"AdminAiUsageController {/api/admin/ai-usage}:"}
{"timestamp":"2026-10-21T02:05:57.667Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-usage, GET} route"}
{"timestamp":"2026-10-21T02:05:57.667Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-usage/business/:businessId, GET} route"}
{"timestamp":"2026-10-21T02:05:57.667Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-usage/report/monthly, GET} route"}
{"timestamp":"2026-10-21T02:05:57.667Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-usage/pricing, GET} route"}
{"timestamp":"2026-10-21T02:05:57.668Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-usage/pricing, POST} route"}
{"timestamp":"2026-10-21T02:05:57.668Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-usage/credit/:businessId, PUT} route"}
{"timestamp":"2026-10-21T02:05:57.668Z","level":"log","context":"RoutesResolver","message":"AdminAiModelController {/admin/ai-models}:"}
{"timestamp":"2026-10-21T02:05:57.668Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models, POST} route"}
{"timestamp":"2026-10-21T02:05:57.668Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models, GET} route"}
{"timestamp":"2026-10-21T02:05:57.669Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/default, GET} route"}
{"timestamp":"2026-10-21T02:05:57.669Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/:id, GET} route"}
{"timestamp":"2026-10-21T02:05:57.669Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/:id, PUT} route"}
{"timestamp":"2026-10-21T02:05:57.669Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/:id, DELETE} route"}
{"timestamp":"2026-10-21T02:05:57.669Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/:id/set-default, POST} route"}
{"timestamp":"2026-10-21T02:05:57.669Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/assign-to-business, POST} route"}
{"timestamp":"2026-10-21T02:05:57.670Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/business/:businessId, GET} route"}
{"timestamp":"2026-10-21T02:05:57.670Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/:id/businesses, GET} route"}
{"timestamp":"2026-10-21T02:05:57.670Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/initialize-defaults, POST} route"}
{"timestamp":"2026-10-21T02:05:57.670Z","level":"log","context":"RoutesResolver","message":"AdminAiModelController {/api/admin/ai-models}:"}
{"timestamp":"2026-10-21T02:05:57.670Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models, POST} route"}
{"timestamp":"2026-10-21T02:05:57.671Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models, GET} route"}
{"timestamp":"2026-10-21T02:05:57.671Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/default, GET} route"}
{"timestamp":"2026-10-21T02:05:57.671Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/:id, GET} route"}
{"timestamp":"2026-10-21T02:05:57.671Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/:id, PUT} route"}
{"timestamp":"2026-10-21T02:05:57.671Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/:id, DELETE} route"}
{"timestamp":"2026-10-21T02:05:57.671Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/:id/set-default, POST} route"}
{"timestamp":"2026-10-21T02:05:57.672Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/assign-to-business, POST} route"}
{"timestamp":"2026-10-21T02:05:57.672Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/business/:businessId, GET} route"}
{"timestamp":"2026-10-21T02:05:57.672Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/:id/businesses, GET} route"}
{"timestamp":"2026-10-21T02:05:57.672Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/initialize-defaults, POST} route"}
{"timestamp":"2026-10-21T02:05:57.672Z","level":"log","context":"RoutesResolver","message":"AdminBusinessController {/admin/businesses}:"}
{"timestamp":"2026-10-21T02:05:57.673Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/businesses, GET} route"}
{"timestamp":"2026-10-21T02:05:57.673Z","level":"log","context":"RoutesResolver","message":"ResellerManagementController {/admin/resellers}:"}
{"timestamp":"2026-10-21T02:05:57.673Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/resellers, GET} route"}
{"timestamp":"2026-10-21T02:05:57.673Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/resellers/create-default, POST} route"}
{"timestamp":"2026-10-21T02:05:57.673Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/resellers, POST} route"}
{"timestamp":"2026-10-21T02:05:57.673Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/resellers/:id/toggle-status, PUT} route"}
{"timestamp":"2026-10-21T02:05:57.673Z","level":"log","context":"RoutesResolver","message":"SubscriptionController {/subscription}:"}
{"timestamp":"2026-10-21T02:05:57.674Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/plans, GET} route"}
{"timestamp":"2026-10-21T02:05:57.674Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/calculate-price, POST} route"}
{"timestamp":"2026-10-21T02:05:57.674Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/current, GET} route"}
{"timestamp":"2026-10-21T02:05:57.674Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/create, POST} route"}
{"timestamp":"2026-10-21T02:05:57.674Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/:id, PUT} route"}
{"timestamp":"2026-10-21T02:05:57.675Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/:id/cancel, DELETE} route"}
{"timestamp":"2026-10-21T02:05:57.675Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/sync/:stripeSubscriptionId, POST} route"}
{"timestamp":"2026-10-21T02:05:57.675Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/payments, GET} route"}
{"timestamp":"2026-10-21T02:05:57.675Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/payments/stats, GET} route"}
{"timestamp":"2026-10-21T02:05:57.675Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/payment/:id, GET} route"}
{"timestamp":"2026-10-21T02:05:57.675Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/payment-methods/attach, POST} route"}
{"timestamp":"2026-10-21T02:05:57.676Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/payment-methods/:paymentMethodId, DELETE} route"}
{"timestamp":"2026-10-21T02:05:57.676Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/payment-methods, GET} route"}
{"timestamp":"2026-10-21T02:05:57.676Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/setup-intent, POST} route"}
{"timestamp":"2026-10-21T02:05:57.676Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/update-employee-count, POST} route"}
{"timestamp":"2026-10-21T02:05:57.676Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/retry-payment/:subscriptionId, POST} route"}
{"timestamp":"2026-10-21T02:05:57.676Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/invoice/:invoiceId/pdf, GET} route"}
{"timestamp":"2026-10-21T02:05:57.677Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/preview-upgrade, POST} route"}
{"timestamp":"2026-10-21T02:05:57.677Z","level":"log","context":"RoutesResolver","message":"SubscriptionController {/api/subscription}:"}
{"timestamp":"2026-10-21T02:05:57.677Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/plans, GET} route"}
{"timestamp":"2026-10-21T02:05:57.677Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/calculate-price, POST} route"}
{"timestamp":"2026-10-21T02:05:57.677Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/current, GET} route"}
{"timestamp":"2026-10-21T02:05:57.677Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/create, POST} route"}
{"timestamp":"2026-10-21T02:05:57.677Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/:id, PUT} route"}
{"timestamp":"2026-10-21T02:05:57.677Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/:id/cancel, DELETE} route"}
{"timestamp":"2026-10-21T02:05:57.678Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/sync/:stripeSubscriptionId, POST} route"}
{"timestamp":"2026-10-21T02:05:57.678Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/payments, GET} route"}
{"timestamp":"2026-10-21T02:05:57.678Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/payments/stats, GET} route"}
{"timestamp":"2026-10-21T02:05:57.678Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/payment/:id, GET} route"}
{"timestamp":"2026-10-21T02:05:57.678Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/payment-methods/attach, POST} route"}
{"timestamp":"2026-10-21T02:05:57.678Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/payment-methods/:paymentMethodId, DELETE} route"}
{"timestamp":"2026-10-21T02:05:57.679Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/payment-methods, GET} route"}
{"timestamp":"2026-10-21T02:05:57.679Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/setup-intent, POST} route"}
{"timestamp":"2026-10-21T02:05:57.679Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/update-employee-count, POST} route"}
{"timestamp":"2026-10-21T02:05:57.679Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/retry-payment/:subscriptionId, POST} route"}
{"timestamp":"2026-10-21T02:05:57.679Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/invoice/:invoiceId/pdf, GET} route"}
{"timestamp":"2026-10-21T02:05:57.679Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/preview-upgrade, POST} route"}
{"timestamp":"2026-10-21T02:05:57.679Z","level":"log","context":"RoutesResolver","message":"StripeWebhookController {/stripe/webhook}:"}
{"timestamp":"2026-10-21T02:05:57.680Z","level":"log","context":"RouterExplorer","message":"Mapped {/stripe/webhook/test, GET} route"}
{"timestamp":"2026-10-21T02:05:57.680Z","level":"log","context":"RouterExplorer","message":"Mapped {/stripe/webhook, POST} route"}
{"timestamp":"2026-10-21T02:05:57.680Z","level":"log","context":"RoutesResolver","message":"EmailController {/email-templates}:"}
{"timestamp":"2026-10-21T02:05:57.680Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates/test, POST} route"}
{"timestamp":"2026-10-21T02:05:57.680Z","level":"log","context":"RoutesResolver","message":"EmployeeController {/employees}:"}
{"timestamp":"2026-10-21T02:05:57.680Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees, POST} route"}
{"timestamp":"2026-10-21T02:05:57.680Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees, GET} route"}
{"timestamp":"2026-10-21T02:05:57.681Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees/export, GET} route"}
{"timestamp":"2026-10-21T02:05:57.681Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees/risk-stats, GET} route"}
{"timestamp":"2026-10-21T02:05:57.681Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees/:id, GET} route"}
{"timestamp":"2026-10-21T02:05:57.681Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees/:id, PUT} route"}
{"timestamp":"2026-10-21T02:05:57.681Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees/:id, DELETE} route"}
{"timestamp":"2026-10-21T02:05:57.681Z","level":"log","context":"RoutesResolver","message":"GroupController {/groups}:"}
{"timestamp":"2026-10-21T02:05:57.681Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups, POST} route"}
{"timestamp":"2026-10-21T02:05:57.682Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups, GET} route"}
{"timestamp":"2026-10-21T02:05:57.682Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups/standard, GET} route"}
{"timestamp":"2026-10-21T02:05:57.682Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups/:id, GET} route"}
{"timestamp":"2026-10-21T02:05:57.682Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups/:id, PUT} route"}
{"timestamp":"2026-10-21T02:05:57.682Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups/:id, DELETE} route"}
{"timestamp":"2026-10-21T02:05:57.682Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups/:id/info, GET} route"}
{"timestamp":"2026-10-21T02:05:57.683Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups/:id/with-employees, GET} route"}
{"timestamp":"2026-10-21T02:05:57.683Z","level":"log","context":"RoutesResolver","message":"SenderProfileController {/sender-profiles}:"}
{"timestamp":"2026-10-21T02:05:57.683Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles, GET} route"}
{"timestamp":"2026-10-21T02:05:57.683Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles/:id, GET} route"}
{"timestamp":"2026-10-21T02:05:57.683Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles, POST} route"}
{"timestamp":"2026-10-21T02:05:57.683Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles/:id, PUT} route"}
{"timestamp":"2026-10-21T02:05:57.683Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles/:id, DELETE} route"}
{"timestamp":"2026-10-21T02:05:57.684Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles/:id/verify-domain, POST} route"}
{"timestamp":"2026-10-21T02:05:57.684Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles/domain-verification, GET} route"}
{"timestamp":"2026-10-21T02:05:57.684Z","level":"log","context":"RoutesResolver","message":"EmailTemplateController {/email-templates}:"}
{"timestamp":"2026-10-21T02:05:57.684Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates, GET} route"}
{"timestamp":"2026-10-21T02:05:57.684Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates/:id, GET} route"}
{"timestamp":"2026-10-21T02:05:57.684Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates, POST} route"}
{"timestamp":"2026-10-21T02:05:57.685Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates/:id, PUT} route"}
{"timestamp":"2026-10-21T02:05:57.685Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates/:id, DELETE} route"}
{"timestamp":"2026-10-21T02:05:57.685Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates/:id/duplicate, POST} route"}
{"timestamp":"2026-10-21T02:05:57.685Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates/:id/preview, GET} route"}
{"timestamp":"2026-10-21T02:05:57.685Z","level":"log","context":"RoutesResolver","message":"ScenarioController {/scenarios}:"}
{"timestamp":"2026-10-21T02:05:57.685Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios, POST} route"}
{"timestamp":"2026-10-21T02:05:57.685Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios/generate-content, POST} route"}
{"timestamp":"2026-10-21T02:05:57.686Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios, GET} route"}
{"timestamp":"2026-10-21T02:05:57.686Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios/:id, GET} route"}
{"timestamp":"2026-10-21T02:05:57.686Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios/:id, PUT} route"}
{"timestamp":"2026-10-21T02:05:57.686Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios/:id, DELETE} route"}
{"timestamp":"2026-10-21T02:05:57.686Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios/generate-from-json, POST} route"}
{"timestamp":"2026-10-21T02:05:57.686Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios/:id/save-as-custom-scenario, POST} route"}
{"timestamp":"2026-10-21T02:05:57.686Z","level":"log","context":"RoutesResolver","message":"CampaignController {/campaigns}:"}
{"timestamp":"2026-10-21T02:05:57.687Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns, POST} route"}
{"timestamp":"2026-10-21T02:05:57.687Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns, GET} route"}
{"timestamp":"2026-10-21T02:05:57.687Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id, GET} route"}
{"timestamp":"2026-10-21T02:05:57.687Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id/details, GET} route"}
{"timestamp":"2026-10-21T02:05:57.687Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id/employees, GET} route"}
{"timestamp":"2026-10-21T02:05:57.688Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id, PATCH} route"}
{"timestamp":"2026-10-21T02:05:57.688Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id/start, POST} route"}
{"timestamp":"2026-10-21T02:05:57.688Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id/stop, POST} route"}
{"timestamp":"2026-10-21T02:05:57.688Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id/duplicate, POST} route"}
{"timestamp":"2026-10-21T02:05:57.688Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id, DELETE} route"}
{"timestamp":"2026-10-21T02:05:57.688Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/auto-generate-program, POST} route"}
{"timestamp":"2026-10-21T02:05:57.689Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/generate-from-threat-intelligence, POST} route"}
{"timestamp":"2026-10-21T02:05:57.689Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id/risk-score, GET} route"}
{"timestamp":"2026-10-21T02:05:57.689Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/recalculate-risk-scores, POST} route"}
{"timestamp":"2026-10-21T02:05:57.689Z","level":"log","context":"RoutesResolver","message":"CampaignController {/api/campaigns}:"}
{"timestamp":"2026-10-21T02:05:57.689Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns, POST} route"}
{"timestamp":"2026-10-21T02:05:57.689Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns, GET} route"}
{"timestamp":"2026-10-21T02:05:57.689Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id, GET} route"}
{"timestamp":"2026-10-21T02:05:57.690Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id/details, GET} route"}
{"timestamp":"2026-10-21T02:05:57.690Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id/employees, GET} route"}
{"timestamp":"2026-10-21T02:05:57.690Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id, PATCH} route"}
{"timestamp":"2026-10-21T02:05:57.690Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id/start, POST} route"}
{"timestamp":"2026-10-21T02:05:57.690Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id/stop, POST} route"}
{"timestamp":"2026-10-21T02:05:57.690Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id/duplicate, POST} route"}
{"timestamp":"2026-10-21T02:05:57.690Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id, DELETE} route"}
{"timestamp":"2026-10-21T02:05:57.691Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/auto-generate-program, POST} route"}
{"timestamp":"2026-10-21T02:05:57.691Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/generate-from-threat-intelligence, POST} route"}
{"timestamp":"2026-10-21T02:05:57.691Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id/risk-score, GET} route"}
{"timestamp":"2026-10-21T02:05:57.691Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/recalculate-risk-scores, POST} route"}
{"timestamp":"2026-10-21T02:05:57.691Z","level":"log","context":"RoutesResolver","message":"NotificationsController {/notifications}:"}
{"timestamp":"2026-10-21T02:05:57.692Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications, POST} route"}
{"timestamp":"2026-10-21T02:05:57.692Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications, GET} route"}
{"timestamp":"2026-10-21T02:05:57.692Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/unread, GET} route"}
{"timestamp":"2026-10-21T02:05:57.692Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/unread-count, GET} route"}
{"timestamp":"2026-10-21T02:05:57.692Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/:id, GET} route"}
{"timestamp":"2026-10-21T02:05:57.692Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/:id, PATCH} route"}
{"timestamp":"2026-10-21T02:05:57.692Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/:id/read, PATCH} route"}
{"timestamp":"2026-10-21T02:05:57.693Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/mark-all-read, PATCH} route"}
{"timestamp":"2026-10-21T02:05:57.693Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/:id, DELETE} route"}
{"timestamp":"2026-10-21T02:05:57.693Z","level":"log","context":"RoutesResolver","message":"LandingPageController {/lp}:"}
{"timestamp":"2026-10-21T02:05:57.693Z","level":"log","context":"RouterExplorer","message":"Mapped {/lp/image, GET} route"}
{"timestamp":"2026-10-21T02:05:57.694Z","level":"log","context":"RouterExplorer","message":"Mapped {/lp/learning, GET} route"}
{"timestamp":"2026-10-21T02:05:57.694Z","level":"log","context":"RouterExplorer","message":"Mapped {/lp/submit, POST} route"}
{"timestamp":"2026-10-21T02:05:57.694Z","level":"log","context":"RouterExplorer","message":"Mapped {/lp/test, GET} route"}
{"timestamp":"2026-10-21T02:05:57.694Z","level":"warn","context":"LegacyRouteConverter","message":"Unsupported route path: \"/lp/*\". In previous versions, the symbols ?, *, and + were used to denote optional or repeating path parameters. The latest version of \"path-to-regexp\" now requires the use of named parameters. For example, instead of using a route like /users/* to capture all routes starting with \"/users\", you should use /users/*path. For more details, refer to the migration guide. Attempting to auto-convert..."}
{"timestamp":"2026-10-21T02:05:57.695Z","level":"log","context":"RouterExplorer","message":"Mapped {/lp/*, ALL} route"}
{"timestamp":"2026-10-21T02:05:57.695Z","level":"log","context":"RoutesResolver","message":"SupportController {/support}:"}
{"timestamp":"2026-10-21T02:05:57.695Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets, POST} route"}
{"timestamp":"2026-10-21T02:05:57.695Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets, GET} route"}
{"timestamp":"2026-10-21T02:05:57.695Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets/:id, GET} route"}
{"timestamp":"2026-10-21T02:05:57.696Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets/:id, PATCH} route"}
{"timestamp":"2026-10-21T02:05:57.696Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets/:id, DELETE} route"}
{"timestamp":"2026-10-21T02:05:57.696Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets/:id/messages, POST} route"}
{"timestamp":"2026-10-21T02:05:57.696Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets/:id/close, POST} route"}
{"timestamp":"2026-10-21T02:05:57.696Z","level":"log","context":"RoutesResolver","message":"BusninessMetricsController {/business-metrics}:"}
{"timestamp":"2026-10-21T02:05:57.696Z","level":"log","context":"RouterExplorer","message":"Mapped {/business-metrics, GET} route"}
{"timestamp":"2026-10-21T02:05:57.697Z","level":"log","context":"RoutesResolver","message":"UsersController {/users}:"}
{"timestamp":"2026-10-21T02:05:57.697Z","level":"log","context":"RouterExplorer","message":"Mapped {/users/:id, PUT} route"}
{"timestamp":"2026-10-21T02:05:57.697Z","level":"log","context":"RouterExplorer","message":"Mapped {/users/settings, GET} route"}
{"timestamp":"2026-10-21T02:05:57.697Z","level":"log","context":"RouterExplorer","message":"Mapped {/users/settings/general, PUT} route"}
{"timestamp":"2026-10-21T02:05:57.697Z","level":"log","context":"RouterExplorer","message":"Mapped {/users/company/settings, PUT} route"}
{"timestamp":"2026-10-21T02:05:57.697Z","level":"log","context":"RouterExplorer","message":"Mapped {/users/change-password, POST} route"}
{"timestamp":"2026-10-21T02:05:57.698Z","level":"log","context":"RouterExplorer","message":"Mapped {/users/localization/settings, PUT} route"}
{"timestamp":"2026-10-21T02:05:57.698Z","level":"log","context":"RoutesResolver","message":"PartnerController {/partner}:"}
{"timestamp":"2026-10-21T02:05:57.698Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses, POST} route"}
{"timestamp":"2026-10-21T02:05:57.698Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses, GET} route"}
{"timestamp":"2026-10-21T02:05:57.698Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses/:id, GET} route"}
{"timestamp":"2026-10-21T02:05:57.698Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses/:id, PUT} route"}
{"timestamp":"2026-10-21T02:05:57.699Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses/:id, DELETE} route"}
{"timestamp":"2026-10-21T02:05:57.699Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses/:id/impersonate, POST} route"}
{"timestamp":"2026-10-21T02:05:57.699Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses/stop-impersonation, POST} route"}
{"timestamp":"2026-10-21T02:05:57.699Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/license-usage, GET} route"}
{"timestamp":"2026-10-21T02:05:57.699Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/invoices, POST} route"}
{"timestamp":"2026-10-21T02:05:57.699Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/invoices, GET} route"}
{"timestamp":"2026-10-21T02:05:57.700Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/invoices/:id, GET} route"}
{"timestamp":"2026-10-21T02:05:57.700Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/invoices/:id, PUT} route"}
{"timestamp":"2026-10-21T02:05:57.700Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/invoices/:id, DELETE} route"}
{"timestamp":"2026-10-21T02:05:57.700Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/invoices/:id/mark-paid, PUT} route"}
{"timestamp":"2026-10-21T02:05:57.700Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/onboarding/generate-token, POST} route"}
{"timestamp":"2026-10-21T02:05:57.700Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/dashboard, GET} route"}
{"timestamp":"2026-10-21T02:05:57.700Z","level":"log","context":"RoutesResolver","message":"MspSubscriptionController {/partner/msp-subscriptions}:"}
{"timestamp":"2026-10-21T02:05:57.701Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/plans, POST} route"}
{"timestamp":"2026-10-21T02:05:57.701Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/plans, GET} route"}
{"timestamp":"2026-10-21T02:05:57.701Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/plans/:planId, GET} route"}
{"timestamp":"2026-10-21T02:05:57.701Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/plans/:planId, PUT} route"}
{"timestamp":"2026-10-21T02:05:57.701Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/plans/:planId, DELETE} route"}
{"timestamp":"2026-10-21T02:05:57.701Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/businesses/:businessId/subscription, POST} route"}
{"timestamp":"2026-10-21T02:05:57.702Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions, GET} route"}
{"timestamp":"2026-10-21T02:05:57.702Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/businesses/:businessId/subscription, GET} route"}
{"timestamp":"2026-10-21T02:05:57.702Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/businesses/:businessId/subscription, PUT} route"}
{"timestamp":"2026-10-21T02:05:57.702Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/businesses/:businessId/subscription, DELETE} route"}
{"timestamp":"2026-10-21T02:05:57.702Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/businesses/:businessId/subscription/limits, GET} route"}
{"timestamp":"2026-10-21T02:05:57.702Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/businesses/:businessId/subscription/change-plan, PUT} route"}
{"timestamp":"2026-10-21T02:05:57.703Z","level":"log","context":"RoutesResolver","message":"OnboardingController {/onboarding}:"}
{"timestamp":"2026-10-21T02:05:57.703Z","level":"log","context":"RouterExplorer","message":"Mapped {/onboarding/validate/:token, GET} route"}
{"timestamp":"2026-10-21T02:05:57.703Z","level":"log","context":"RouterExplorer","message":"Mapped {/onboarding/complete/:token, POST} route"}
{"timestamp":"2026-10-21T02:05:57.703Z","level":"log","context":"RoutesResolver","message":"ResellerController {/reseller}:"}
{"timestamp":"2026-10-21T02:05:57.703Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/businesses, POST} route"}
{"timestamp":"2026-10-21T02:05:57.703Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/businesses, GET} route"}
{"timestamp":"2026-10-21T02:05:57.703Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/businesses/:id, GET} route"}
{"timestamp":"2026-10-21T02:05:57.704Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/businesses/:id, PUT} route"}
{"timestamp":"2026-10-21T02:05:57.704Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/businesses/:id, DELETE} route"}
{"timestamp":"2026-10-21T02:05:57.704Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/license-usage, GET} route"}
{"timestamp":"2026-10-21T02:05:57.704Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/invoices, POST} route"}
{"timestamp":"2026-10-21T02:05:57.704Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/invoices, GET} route"}
{"timestamp":"2026-10-21T02:05:57.704Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/invoices/:id, GET} route"}
{"timestamp":"2026-10-21T02:05:57.705Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/invoices/:id, PUT} route"}
{"timestamp":"2026-10-21T02:05:57.705Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/invoices/:id, DELETE} route"}
{"timestamp":"2026-10-21T02:05:57.705Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/invoices/:id/mark-paid, PUT} route"}
{"timestamp":"2026-10-21T02:05:57.705Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/onboarding/generate-token, POST} route"}
{"timestamp":"2026-10-21T02:05:57.705Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/dashboard, GET} route"}
{"timestamp":"2026-10-21T02:05:57.705Z","level":"log","context":"RoutesResolver","message":"ResellerSubscriptionController {/reseller}:"}
{"timestamp":"2026-10-21T02:05:57.705Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/plans, POST} route"}
{"timestamp":"2026-10-21T02:05:57.706Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/plans, GET} route"}
{"timestamp":"2026-10-21T02:05:57.706Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/plans/:planId, GET} route"}
{"timestamp":"2026-10-21T02:05:57.706Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/plans/:planId, PUT} route"}
{"timestamp":"2026-10-21T02:05:57.706Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/plans/:planId, DELETE} route"}
{"timestamp":"2026-10-21T02:05:57.706Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/subscriptions/businesses/:businessId/subscription, POST} route"}
{"timestamp":"2026-10-21T02:05:57.706Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/subscriptions, GET} route"}
{"timestamp":"2026-10-21T02:05:57.707Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/subscriptions/businesses/:businessId/subscription, GET} route"}
{"timestamp":"2026-10-21T02:05:57.707Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/subscriptions/businesses/:businessId/subscription, PUT} route"}
{"timestamp":"2026-10-21T02:05:57.707Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/subscriptions/businesses/:businessId/subscription, DELETE} route"}
{"timestamp":"2026-10-21T02:05:57.707Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/subscriptions/businesses/:businessId/subscription/limits, GET} route"}
{"timestamp":"2026-10-21T02:05:57.707Z","level":"log","context":"RoutesResolver","message":"HealthController {/health}:"}
{"timestamp":"2026-10-21T02:05:57.707Z","level":"log","context":"RouterExplorer","message":"Mapped {/health, GET} route"}
{"timestamp":"2026-10-21T02:05:57.707Z","level":"log","context":"RouterExplorer","message":"Mapped {/health/test-logs, GET} route"}
{"timestamp":"2026-10-21T02:05:57.707Z","level":"log","context":"RoutesResolver","message":"AzureAdController {/azure-ad}:"}
{"timestamp":"2026-10-21T02:05:57.708Z","level":"log","context":"RouterExplorer","message":"Mapped {/azure-ad/config, POST} route"}
{"timestamp":"2026-10-21T02:05:57.708Z","level":"log","context":"RouterExplorer","message":"Mapped {/azure-ad/config, GET} route"}
{"timestamp":"2026-10-21T02:05:57.708Z","level":"log","context":"RouterExplorer","message":"Mapped {/azure-ad/test-connection, POST} route"}
{"timestamp":"2026-10-21T02:05:57.708Z","level":"log","context":"RouterExplorer","message":"Mapped {/azure-ad/sync, POST} route"}
{"timestamp":"2026-10-21T02:05:57.708Z","level":"log","context":"RoutesResolver","message":"ThreatsController {/threats}:"}
{"timestamp":"2026-10-21T02:05:57.708Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats, POST} route"}
{"timestamp":"2026-10-21T02:05:57.709Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats, GET} route"}
{"timestamp":"2026-10-21T02:05:57.709Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/chart-data, GET} route"}
{"timestamp":"2026-10-21T02:05:57.709Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/claude-search, POST} route"}
{"timestamp":"2026-10-21T02:05:57.709Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/claude-latest, POST} route"}
{"timestamp":"2026-10-21T02:05:57.709Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/claude-trending, POST} route"}
{"timestamp":"2026-10-21T02:05:57.709Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/claude-categories, POST} route"}
{"timestamp":"2026-10-21T02:05:57.710Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/claude-manual-search, POST} route"}
{"timestamp":"2026-10-21T02:05:57.710Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/claude-quick-search, POST} route"}
{"timestamp":"2026-10-21T02:05:57.710Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/scheduler-status, GET} route"}
{"timestamp":"2026-10-21T02:05:57.710Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/health-check, GET} route"}
{"timestamp":"2026-10-21T02:05:57.710Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/pause-scheduler, POST} route"}
{"timestamp":"2026-10-21T02:05:57.710Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/:id, GET} route"}
{"timestamp":"2026-10-21T02:05:57.710Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/:id, PATCH} route"}
{"timestamp":"2026-10-21T02:05:57.711Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/:id, DELETE} route"}
{"timestamp":"2026-10-21T02:05:57.711Z","level":"log","context":"RoutesResolver","message":"DomainController {/domains}:"}
{"timestamp":"2026-10-21T02:05:57.711Z","level":"log","context":"RouterExplorer","message":"Mapped {/domains, GET} route"}
{"timestamp":"2026-10-21T02:05:57.711Z","level":"log","context":"RouterExplorer","message":"Mapped {/domains/:id, GET} route"}
{"timestamp":"2026-10-21T02:05:57.711Z","level":"log","context":"RouterExplorer","message":"Mapped {/domains, POST} route"}
{"timestamp":"2026-10-21T02:05:57.711Z","level":"log","context":"RouterExplorer","message":"Mapped {/domains/:id, PUT} route"}
{"timestamp":"2026-10-21T02:05:57.712Z","level":"log","context":"RouterExplorer","message":"Mapped {/domains/:id, DELETE} route"}
{"timestamp":"2026-10-21T02:05:57.712Z","level":"log","context":"RouterExplorer","message":"Mapped {/domains/seed, POST} route"}
{"timestamp":"2026-10-21T02:05:57.712Z","level":"log","context":"RoutesResolver","message":"MspSubscriptionController {/msp-subscription}:"}
{"timestamp":"2026-10-21T02:05:57.712Z","level":"log","context":"RouterExplorer","message":"Mapped {/msp-subscription/current, GET} route"}
{"timestamp":"2026-10-21T02:05:57.712Z","level":"log","context":"RouterExplorer","message":"Mapped {/msp-subscription/invoices, GET} route"}
{"timestamp":"2026-10-21T02:05:57.712Z","level":"log","context":"RouterExplorer","message":"Mapped {/msp-subscription/invoice/:invoiceId/pdf, GET} route"}
{"timestamp":"2026-10-21T02:05:57.712Z","level":"log","context":"RoutesResolver","message":"MspSubscriptionController {/api/msp-subscription}:"}
{"timestamp":"2026-10-21T02:05:57.712Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/msp-subscription/current, GET} route"}
{"timestamp":"2026-10-21T02:05:57.713Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/msp-subscription/invoices, GET} route"}
{"timestamp":"2026-10-21T02:05:57.713Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/msp-subscription/invoice/:invoiceId/pdf, GET} route"}
{"timestamp":"2026-10-21T02:05:57.787Z","level":"log","context":"NestApplication","message":"Nest application successfully started"}
{"timestamp":"2026-10-21T02:05:57.804Z","level":"log","context":"Bootstrap","message":"Users API successfully started on port 3842"}
{"timestamp":"2026-10-21T02:05:57.805Z","level":"log","context":"SeedService","message":"🌱 Starting database seeding..."}
{"timestamp":"2026-10-21T02:05:57.811Z","level":"log","context":"SeedService","message":"Admin account already exists, skipping seed"}
{"timestamp":"2026-10-21T02:05:57.813Z","level":"log","context":"SeedService","message":"Reseller account already exists, skipping seed"}
{"timestamp":"2026-10-21T02:05:57.815Z","level":"log","context":"SeedService","message":"MSP account already exists, skipping seed"}
{"timestamp":"2026-10-21T02:05:57.815Z","level":"log","context":"SeedService","message":"✅ Database seeding completed successfully"}
{"timestamp":"2026-10-21T02:05:57.851Z","level":"log","context":"UsersApiController","message":"Hello endpoint accessed"}
{"timestamp":"2026-10-21T04:04:13.879Z","level":"warn","context":"LegacyRouteConverter","message":"Unsupported route path: \"/lp/*\". In previous versions, the symbols ?, *, and + were used to denote optional or repeating path parameters. The latest version of \"path-to-regexp\" now requires the use of named parameters. For example, instead of using a route like /users/* to capture all routes starting with \"/users\", you should use /users/*path. For more details, refer to the migration guide. Attempting to auto-convert..."}
{"timestamp":"2026-10-21T04:04:13.919Z","level":"log","context":"Bootstrap","message":"Starting Users API on port 3842..."}
{"timestamp":"2026-10-21T04:04:13.923Z","level":"log","context":"RoutesResolver","message":"UsersApiController {/}:"}
{"timestamp":"2026-10-21T04:04:13.927Z","level":"log","context":"RouterExplorer","message":"Mapped {/, GET} route"}
{"timestamp":"2026-10-21T04:04:13.927Z","level":"log","context":"RoutesResolver","message":"AuthController {/auth}:"}
{"timestamp":"2026-10-21T04:04:13.928Z","level":"log","context":"RouterExplorer","message":"Mapped {/auth/login, POST} route"}
{"timestamp":"2026-10-21T04:04:13.929Z","level":"log","context":"RouterExplorer","message":"Mapped {/auth/admin/login, POST} route"}
{"timestamp":"2026-10-21T04:04:13.929Z","level":"log","context":"RouterExplorer","message":"Mapped {/auth/send-otp, POST} route"}
{"timestamp":"2026-10-21T04:04:13.930Z","level":"log","context":"RouterExplorer","message":"Mapped {/auth/verify-otp, POST} route"}
{"timestamp":"2026-10-21T04:04:13.930Z","level":"log","context":"RouterExplorer","message":"Mapped {/auth/signup, POST} route"}
{"timestamp":"2026-10-21T04:04:13.931Z","level":"log","context":"RouterExplorer","message":"Mapped {/auth/subscription-status, GET} route"}
{"timestamp":"2026-10-21T04:04:13.931Z","level":"log","context":"RoutesResolver","message":"AdminMspController {/admin/msp}:"}
{"timestamp":"2026-10-21T04:04:13.932Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/msp, GET} route"}
{"timestamp":"2026-10-21T04:04:13.932Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/msp/:id, GET} route"}
{"timestamp":"2026-10-21T04:04:13.933Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/msp, POST} route"}
{"timestamp":"2026-10-21T04:04:13.933Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/msp/:id, PUT} route"}
{"timestamp":"2026-10-21T04:04:13.934Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/msp/:id, DELETE} route"}
{"timestamp":"2026-10-21T04:04:13.934Z","level":"log","context":"RoutesResolver","message":"AdminLicenseController {/admin/licenses}:"}
{"timestamp":"2026-10-21T04:04:13.934Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/licenses/summary, GET} route"}
{"timestamp":"2026-10-21T04:04:13.934Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/licenses/msp/:mspId, GET} route"}
{"timestamp":"2026-10-21T04:04:13.935Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/licenses/msp/:mspId, PUT} route"}
{"timestamp":"2026-10-21T04:04:13.935Z","level":"log","context":"RoutesResolver","message":"AdminImpersonationController {/admin/impersonation}:"}
{"timestamp":"2026-10-21T04:04:13.938Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/impersonation/msp-users, GET} route"}
{"timestamp":"2026-10-21T04:04:13.938Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/impersonation/impersonate, POST} route"}
{"timestamp":"2026-10-21T04:04:13.938Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/impersonation/stop, POST} route"}
{"timestamp":"2026-10-21T04:04:13.938Z","level":"log","context":"RoutesResolver","message":"AdminAiUsageController {/admin/ai-usage}:"}
{"timestamp":"2026-10-21T04:04:13.939Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-usage, GET} route"}
{"timestamp":"2026-10-21T04:04:13.939Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-usage/business/:businessId, GET} route"}
{"timestamp":"2026-10-21T04:04:13.939Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-usage/report/monthly, GET} route"}
{"timestamp":"2026-10-21T04:04:13.939Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-usage/pricing, GET} route"}
{"timestamp":"2026-10-21T04:04:13.940Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-usage/pricing, POST} route"}
{"timestamp":"2026-10-21T04:04:13.940Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-usage/credit/:businessId, PUT} route"}
{"timestamp":"2026-10-21T04:04:13.940Z","level":"log","context":"RoutesResolver","message":"AdminAiUsageController {/api/admin/ai-usage}:"}
{"timestamp":"2026-10-21T04:04:13.940Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-usage, GET} route"}
{"timestamp":"2026-10-21T04:04:13.940Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-usage/business/:businessId, GET} route"}
{"timestamp":"2026-10-21T04:04:13.941Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-usage/report/monthly, GET} route"}
{"timestamp":"2026-10-21T04:04:13.941Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-usage/pricing, GET} route"}
{"timestamp":"2026-10-21T04:04:13.941Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-usage/pricing, POST} route"}
{"timestamp":"2026-10-21T04:04:13.941Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-usage/credit/:businessId, PUT} route"}
{"timestamp":"2026-10-21T04:04:13.941Z","level":"log","context":"RoutesResolver","message":"AdminAiModelController {/admin/ai-models}:"}
{"timestamp":"2026-10-21T04:04:13.941Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models, POST} route"}
{"timestamp":"2026-10-21T04:04:13.942Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models, GET} route"}
{"timestamp":"2026-10-21T04:04:13.942Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/default, GET} route"}
{"timestamp":"2026-10-21T04:04:13.942Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/:id, GET} route"}
{"timestamp":"2026-10-21T04:04:13.942Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/:id, PUT} route"}
{"timestamp":"2026-10-21T04:04:13.942Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/:id, DELETE} route"}
{"timestamp":"2026-10-21T04:04:13.943Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/:id/set-default, POST} route"}
{"timestamp":"2026-10-21T04:04:13.943Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/assign-to-business, POST} route"}
{"timestamp":"2026-10-21T04:04:13.943Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/business/:businessId, GET} route"}
{"timestamp":"2026-10-21T04:04:13.943Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/:id/businesses, GET} route"}
{"timestamp":"2026-10-21T04:04:13.944Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/initialize-defaults, POST} route"}
{"timestamp":"2026-10-21T04:04:13.944Z","level":"log","context":"RoutesResolver","message":"AdminAiModelController {/api/admin/ai-models}:"}
{"timestamp":"2026-10-21T04:04:13.944Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models, POST} route"}
{"timestamp":"2026-10-21T04:04:13.944Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models, GET} route"}
{"timestamp":"2026-10-21T04:04:13.944Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/default, GET} route"}
{"timestamp":"2026-10-21T04:04:13.944Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/:id, GET} route"}
{"timestamp":"2026-10-21T04:04:13.944Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/:id, PUT} route"}
{"timestamp":"2026-10-21T04:04:13.945Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/:id, DELETE} route"}
{"timestamp":"2026-10-21T04:04:13.945Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/:id/set-default, POST} route"}
{"timestamp":"2026-10-21T04:04:13.945Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/assign-to-business, POST} route"}
{"timestamp":"2026-10-21T04:04:13.945Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/business/:businessId, GET} route"}
{"timestamp":"2026-10-21T04:04:13.945Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/:id/businesses, GET} route"}
{"timestamp":"2026-10-21T04:04:13.946Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/initialize-defaults, POST} route"}
{"timestamp":"2026-10-21T04:04:13.946Z","level":"log","context":"RoutesResolver","message":"AdminBusinessController {/admin/businesses}:"}
{"timestamp":"2026-10-21T04:04:13.946Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/businesses, GET} route"}
{"timestamp":"2026-10-21T04:04:13.946Z","level":"log","context":"RoutesResolver","message":"ResellerManagementController {/admin/resellers}:"}
{"timestamp":"2026-10-21T04:04:13.946Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/resellers, GET} route"}
{"timestamp":"2026-10-21T04:04:13.947Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/resellers/create-default, POST} route"}
{"timestamp":"2026-10-21T04:04:13.947Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/resellers, POST} route"}
{"timestamp":"2026-10-21T04:04:13.947Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/resellers/:id/toggle-status, PUT} route"}
{"timestamp":"2026-10-21T04:04:13.947Z","level":"log","context":"RoutesResolver","message":"SubscriptionController {/subscription}:"}
{"timestamp":"2026-10-21T04:04:13.947Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/plans, GET} route"}
{"timestamp":"2026-10-21T04:04:13.947Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/calculate-price, POST} route"}
{"timestamp":"2026-10-21T04:04:13.948Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/current, GET} route"}
{"timestamp":"2026-10-21T04:04:13.948Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/create, POST} route"}
{"timestamp":"2026-10-21T04:04:13.948Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/:id, PUT} route"}
{"timestamp":"2026-10-21T04:04:13.948Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/:id/cancel, DELETE} route"}
{"timestamp":"2026-10-21T04:04:13.948Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/sync/:stripeSubscriptionId, POST} route"}
{"timestamp":"2026-10-21T04:04:13.949Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/payments, GET} route"}
{"timestamp":"2026-10-21T04:04:13.949Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/payments/stats, GET} route"}
{"timestamp":"2026-10-21T04:04:13.949Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/payment/:id, GET} route"}
{"timestamp":"2026-10-21T04:04:13.949Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/payment-methods/attach, POST} route"}
{"timestamp":"2026-10-21T04:04:13.949Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/payment-methods/:paymentMethodId, DELETE} route"}
{"timestamp":"2026-10-21T04:04:13.949Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/payment-methods, GET} route"}
{"timestamp":"2026-10-21T04:04:13.950Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/setup-intent, POST} route"}
{"timestamp":"2026-10-21T04:04:13.950Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/update-employee-count, POST} route"}
{"timestamp":"2026-10-21T04:04:13.950Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/retry-payment/:subscriptionId, POST} route"}
{"timestamp":"2026-10-21T04:04:13.950Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/invoice/:invoiceId/pdf, GET} route"}
{"timestamp":"2026-10-21T04:04:13.950Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/preview-upgrade, POST} route"}
{"timestamp":"2026-10-21T04:04:13.950Z","level":"log","context":"RoutesResolver","message":"SubscriptionController {/api/subscription}:"}
{"timestamp":"2026-10-21T04:04:13.951Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/plans, GET} route"}
{"timestamp":"2026-10-21T04:04:13.951Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/calculate-price, POST} route"}
{"timestamp":"2026-10-21T04:04:13.951Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/current, GET} route"}
{"timestamp":"2026-10-21T04:04:13.951Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/create, POST} route"}
{"timestamp":"2026-10-21T04:04:13.951Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/:id, PUT} route"}
{"timestamp":"2026-10-21T04:04:13.951Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/:id/cancel, DELETE} route"}
{"timestamp":"2026-10-21T04:04:13.952Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/sync/:stripeSubscriptionId, POST} route"}
{"timestamp":"2026-10-21T04:04:13.952Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/payments, GET} route"}
{"timestamp":"2026-10-21T04:04:13.952Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/payments/stats, GET} route"}
{"timestamp":"2026-10-21T04:04:13.952Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/payment/:id, GET} route"}
{"timestamp":"2026-10-21T04:04:13.952Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/payment-methods/attach, POST} route"}
{"timestamp":"2026-10-21T04:04:13.952Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/payment-methods/:paymentMethodId, DELETE} route"}
{"timestamp":"2026-10-21T04:04:13.953Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/payment-methods, GET} route"}
{"timestamp":"2026-10-21T04:04:13.953Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/setup-intent, POST} route"}
{"timestamp":"2026-10-21T04:04:13.953Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/update-employee-count, POST} route"}
{"timestamp":"2026-10-21T04:04:13.953Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/retry-payment/:subscriptionId, POST} route"}
{"timestamp":"2026-10-21T04:04:13.953Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/invoice/:invoiceId/pdf, GET} route"}
{"timestamp":"2026-10-21T04:04:13.953Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/preview-upgrade, POST} route"}
{"timestamp":"2026-10-21T04:04:13.953Z","level":"log","context":"RoutesResolver","message":"StripeWebhookController {/stripe/webhook}:"}
{"timestamp":"2026-10-21T04:04:13.954Z","level":"log","context":"RouterExplorer","message":"Mapped {/stripe/webhook/test, GET} route"}
{"timestamp":"2026-10-21T04:04:13.954Z","level":"log","context":"RouterExplorer","message":"Mapped {/stripe/webhook, POST} route"}
{"timestamp":"2026-10-21T04:04:13.954Z","level":"log","context":"RoutesResolver","message":"EmailController {/email-templates}:"}
{"timestamp":"2026-10-21T04:04:13.954Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates/test, POST} route"}
{"timestamp":"2026-10-21T04:04:13.954Z","level":"log","context":"RoutesResolver","message":"EmployeeController {/employees}:"}
{"timestamp":"2026-10-21T04:04:13.954Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees, POST} route"}
{"timestamp":"2026-10-21T04:04:13.954Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees, GET} route"}
{"timestamp":"2026-10-21T04:04:13.955Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees/export, GET} route"}
{"timestamp":"2026-10-21T04:04:13.955Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees/risk-stats, GET} route"}
{"timestamp":"2026-10-21T04:04:13.955Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees/:id, GET} route"}
{"timestamp":"2026-10-21T04:04:13.955Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees/:id, PUT} route"}
{"timestamp":"2026-10-21T04:04:13.955Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees/:id, DELETE} route"}
{"timestamp":"2026-10-21T04:04:13.955Z","level":"log","context":"RoutesResolver","message":"GroupController {/groups}:"}
{"timestamp":"2026-10-21T04:04:13.956Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups, POST} route"}
{"timestamp":"2026-10-21T04:04:13.956Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups, GET} route"}
{"timestamp":"2026-10-21T04:04:13.956Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups/standard, GET} route"}
{"timestamp":"2026-10-21T04:04:13.956Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups/:id, GET} route"}
{"timestamp":"2026-10-21T04:04:13.956Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups/:id, PUT} route"}
{"timestamp":"2026-10-21T04:04:13.956Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups/:id, DELETE} route"}
{"timestamp":"2026-10-21T04:04:13.957Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups/:id/info, GET} route"}
{"timestamp":"2026-10-21T04:04:13.957Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups/:id/with-employees, GET} route"}
{"timestamp":"2026-10-21T04:04:13.957Z","level":"log","context":"RoutesResolver","message":"SenderProfileController {/sender-profiles}:"}
{"timestamp":"2026-10-21T04:04:13.957Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles, GET} route"}
{"timestamp":"2026-10-21T04:04:13.957Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles/:id, GET} route"}
{"timestamp":"2026-10-21T04:04:13.957Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles, POST} route"}
{"timestamp":"2026-10-21T04:04:13.958Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles/:id, PUT} route"}
{"timestamp":"2026-10-21T04:04:13.958Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles/:id, DELETE} route"}
{"timestamp":"2026-10-21T04:04:13.958Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles/:id/verify-domain, POST} route"}
{"timestamp":"2026-10-21T04:04:13.958Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles/domain-verification, GET} route"}
{"timestamp":"2026-10-21T04:04:13.958Z","level":"log","context":"RoutesResolver","message":"EmailTemplateController {/email-templates}:"}
{"timestamp":"2026-10-21T04:04:13.958Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates, GET} route"}
{"timestamp":"2026-10-21T04:04:13.959Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates/:id, GET} route"}
{"timestamp":"2026-10-21T04:04:13.959Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates, POST} route"}
{"timestamp":"2026-10-21T04:04:13.959Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates/:id, PUT} route"}
{"timestamp":"2026-10-21T04:04:13.959Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates/:id, DELETE} route"}
{"timestamp":"2026-10-21T04:04:13.959Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates/:id/duplicate, POST} route"}
{"timestamp":"2026-10-21T04:04:13.959Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates/:id/preview, GET} route"}
{"timestamp":"2026-10-21T04:04:13.960Z","level":"log","context":"RoutesResolver","message":"ScenarioController {/scenarios}:"}
{"timestamp":"2026-10-21T04:04:13.960Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios, POST} route"}
{"timestamp":"2026-10-21T04:04:13.960Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios/generate-content, POST} route"}
{"timestamp":"2026-10-21T04:04:13.960Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios, GET} route"}
{"timestamp":"2026-10-21T04:04:13.960Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios/:id, GET} route"}
{"timestamp":"2026-10-21T04:04:13.960Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios/:id, PUT} route"}
{"timestamp":"2026-10-21T04:04:13.961Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios/:id, DELETE} route"}
{"timestamp":"2026-10-21T04:04:13.961Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios/generate-from-json, POST} route"}
{"timestamp":"2026-10-21T04:04:13.961Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios/:id/save-as-custom-scenario, POST} route"}
{"timestamp":"2026-10-21T04:04:13.961Z","level":"log","context":"RoutesResolver","message":"CampaignController {/campaigns}:"}
{"timestamp":"2026-10-21T04:04:13.961Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns, POST} route"}
{"timestamp":"2026-10-21T04:04:13.961Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns, GET} route"}
{"timestamp":"2026-10-21T04:04:13.962Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id, GET} route"}
{"timestamp":"2026-10-21T04:04:13.962Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id/details, GET} route"}
{"timestamp":"2026-10-21T04:04:13.962Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id/employees, GET} route"}
{"timestamp":"2026-10-21T04:04:13.962Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id, PATCH} route"}
{"timestamp":"2026-10-21T04:04:13.962Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id/start, POST} route"}
{"timestamp":"2026-10-21T04:04:13.963Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id/stop, POST} route"}
{"timestamp":"2026-10-21T04:04:13.963Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id/duplicate, POST} route"}
{"timestamp":"2026-10-21T04:04:13.963Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id, DELETE} route"}
{"timestamp":"2026-10-21T04:04:13.963Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/auto-generate-program, POST} route"}
{"timestamp":"2026-10-21T04:04:13.963Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/generate-from-threat-intelligence, POST} route"}
{"timestamp":"2026-10-21T04:04:13.964Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id/risk-score, GET} route"}
{"timestamp":"2026-10-21T04:04:13.964Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/recalculate-risk-scores, POST} route"}
{"timestamp":"2026-10-21T04:04:13.964Z","level":"log","context":"RoutesResolver","message":"CampaignController {/api/campaigns}:"}
{"timestamp":"2026-10-21T04:04:13.964Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns, POST} route"}
{"timestamp":"2026-10-21T04:04:13.964Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns, GET} route"}
{"timestamp":"2026-10-21T04:04:13.964Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id, GET} route"}
{"timestamp":"2026-10-21T04:04:13.964Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id/details, GET} route"}
{"timestamp":"2026-10-21T04:04:13.965Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id/employees, GET} route"}
{"timestamp":"2026-10-21T04:04:13.965Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id, PATCH} route"}
{"timestamp":"2026-10-21T04:04:13.965Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id/start, POST} route"}
{"timestamp":"2026-10-21T04:04:13.965Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id/stop, POST} route"}
{"timestamp":"2026-10-21T04:04:13.965Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id/duplicate, POST} route"}
{"timestamp":"2026-10-21T04:04:13.965Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id, DELETE} route"}
{"timestamp":"2026-10-21T04:04:13.966Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/auto-generate-program, POST} route"}
{"timestamp":"2026-10-21T04:04:13.966Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/generate-from-threat-intelligence, POST} route"}
{"timestamp":"2026-10-21T04:04:13.966Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id/risk-score, GET} route"}
{"timestamp":"2026-10-21T04:04:13.966Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/recalculate-risk-scores, POST} route"}
{"timestamp":"2026-10-21T04:04:13.966Z","level":"log","context":"RoutesResolver","message":"NotificationsController {/notifications}:"}
{"timestamp":"2026-10-21T04:04:13.967Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications, POST} route"}
{"timestamp":"2026-10-21T04:04:13.967Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications, GET} route"}
{"timestamp":"2026-10-21T04:04:13.967Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/unread, GET} route"}
{"timestamp":"2026-10-21T04:04:13.967Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/unread-count, GET} route"}
{"timestamp":"2026-10-21T04:04:13.967Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/:id, GET} route"}
{"timestamp":"2026-10-21T04:04:13.967Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/:id, PATCH} route"}
{"timestamp":"2026-10-21T04:04:13.968Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/:id/read, PATCH} route"}
{"timestamp":"2026-10-21T04:04:13.968Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/mark-all-read, PATCH} route"}
{"timestamp":"2026-10-21T04:04:13.968Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/:id, DELETE} route"}
{"timestamp":"2026-10-21T04:04:13.968Z","level":"log","context":"RoutesResolver","message":"LandingPageController {/lp}:"}
{"timestamp":"2026-10-21T04:04:13.969Z","level":"log","context":"RouterExplorer","message":"Mapped {/lp/image, GET} route"}
{"timestamp":"2026-10-21T04:04:13.969Z","level":"log","context":"RouterExplorer","message":"Mapped {/lp/learning, GET} route"}
{"timestamp":"2026-10-21T04:04:13.969Z","level":"log","context":"RouterExplorer","message":"Mapped {/lp/submit, POST} route"}
{"timestamp":"2026-10-21T04:04:13.969Z","level":"log","context":"RouterExplorer","message":"Mapped {/lp/test, GET} route"}
{"timestamp":"2026-10-21T04:04:13.969Z","level":"warn","context":"LegacyRouteConverter","message":"Unsupported route path: \"/lp/*\". In previous versions, the symbols ?, *, and + were used to denote optional or repeating path parameters. The latest version of \"path-to-regexp\" now requires the use of named parameters. For example, instead of using a route like /users/* to capture all routes starting with \"/users\", you should use /users/*path. For more details, refer to the migration guide. Attempting to auto-convert..."}
{"timestamp":"2026-10-21T04:04:13.970Z","level":"log","context":"RouterExplorer","message":"Mapped {/lp/*, ALL} route"}
{"timestamp":"2026-10-21T04:04:13.970Z","level":"log","context":"RoutesResolver","message":"SupportController {/support}:"}
{"timestamp":"2026-10-21T04:04:13.971Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets, POST} route"}
{"timestamp":"2026-10-21T04:04:13.971Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets, GET} route"}
{"timestamp":"2026-10-21T04:04:13.971Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets/:id, GET} route"}
{"timestamp":"2026-10-21T04:04:13.971Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets/:id, PATCH} route"}
{"timestamp":"2026-10-21T04:04:13.971Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets/:id, DELETE} route"}
{"timestamp":"2026-10-21T04:04:13.971Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets/:id/messages, POST} route"}
{"timestamp":"2026-10-21T04:04:13.972Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets/:id/close, POST} route"}
{"timestamp":"2026-10-21T04:04:13.972Z","level":"log","context":"RoutesResolver","message":"BusninessMetricsController {/business-metrics}:"}
{"timestamp":"2026-10-21T04:04:13.972Z","level":"log","context":"RouterExplorer","message":"Mapped {/business-metrics, GET} route"}
{"timestamp":"2026-10-21T04:04:13.972Z","level":"log","context":"RoutesResolver","message":"UsersController {/users}:"}
{"timestamp":"2026-10-21T04:04:13.972Z","level":"log","context":"RouterExplorer","message":"Mapped {/users/:id, PUT} route"}
{"timestamp":"2026-10-21T04:04:13.972Z","level":"log","context":"RouterExplorer","message":"Mapped {/users/settings, GET} route"}
{"timestamp":"2026-10-21T04:04:13.973Z","level":"log","context":"RouterExplorer","message":"Mapped {/users/settings/general, PUT} route"}
{"timestamp":"2026-10-21T04:04:13.973Z","level":"log","context":"RouterExplorer","message":"Mapped {/users/company/settings, PUT} route"}
{"timestamp":"2026-10-21T04:04:13.973Z","level":"log","context":"RouterExplorer","message":"Mapped {/users/change-password, POST} route"}
{"timestamp":"2026-10-21T04:04:13.973Z","level":"log","context":"RouterExplorer","message":"Mapped {/users/localization/settings, PUT} route"}
{"timestamp":"2026-10-21T04:04:13.973Z","level":"log","context":"RoutesResolver","message":"PartnerController {/partner}:"}
{"timestamp":"2026-10-21T04:04:13.973Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses, POST} route"}
{"timestamp":"2026-10-21T04:04:13.974Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses, GET} route"}
{"timestamp":"2026-10-21T04:04:13.974Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses/:id, GET} route"}
{"timestamp":"2026-10-21T04:04:13.974Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses/:id, PUT} route"}
{"timestamp":"2026-10-21T04:04:13.974Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses/:id, DELETE} route"}
{"timestamp":"2026-10-21T04:04:13.974Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses/:id/impersonate, POST} route"}
{"timestamp":"2026-10-21T04:04:13.974Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses/stop-impersonation, POST} route"}
{"timestamp":"2026-10-21T04:04:13.975Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/license-usage, GET} route"}
{"timestamp":"2026-10-21T04:04:13.975Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/invoices, POST} route"}
{"timestamp":"2026-10-21T04:04:13.975Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/invoices, GET} route"}
{"timestamp":"2026-10-21T04:04:13.975Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/invoices/:id, GET} route"}
{"timestamp":"2026-10-21T04:04:13.975Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/invoices/:id, PUT} route"}
{"timestamp":"2026-10-21T04:04:13.976Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/invoices/:id, DELETE} route"}
{"timestamp":"2026-10-21T04:04:13.976Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/invoices/:id/mark-paid, PUT} route"}
{"timestamp":"2026-10-21T04:04:13.976Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/onboarding/generate-token, POST} route"}
{"timestamp":"2026-10-21T04:04:13.976Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/dashboard, GET} route"}
{"timestamp":"2026-10-21T04:04:13.976Z","level":"log","context":"RoutesResolver","message":"MspSubscriptionController {/partner/msp-subscriptions}:"}
{"timestamp":"2026-10-21T04:04:13.976Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/plans, POST} route"}
{"timestamp":"2026-10-21T04:04:13.977Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/plans, GET} route"}
{"timestamp":"2026-10-21T04:04:13.977Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/plans/:planId, GET} route"}
{"timestamp":"2026-10-21T04:04:13.977Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/plans/:planId, PUT} route"}
{"timestamp":"2026-10-21T04:04:13.977Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/plans/:planId, DELETE} route"}
{"timestamp":"2026-10-21T04:04:13.977Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/businesses/:businessId/subscription, POST} route"}
{"timestamp":"2026-10-21T04:04:13.977Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions, GET} route"}
{"timestamp":"2026-10-21T04:04:13.978Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/businesses/:businessId/subscription, GET} route"}
{"timestamp":"2026-10-21T04:04:13.978Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/businesses/:businessId/subscription, PUT} route"}
{"timestamp":"2026-10-21T04:04:13.978Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/businesses/:businessId/subscription, DELETE} route"}
{"timestamp":"2026-10-21T04:04:13.978Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/businesses/:businessId/subscription/limits, GET} route"}
{"timestamp":"2026-10-21T04:04:13.978Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/businesses/:businessId/subscription/change-plan, PUT} route"}
{"timestamp":"2026-10-21T04:04:13.978Z","level":"log","context":"RoutesResolver","message":"OnboardingController {/onboarding}:"}
{"timestamp":"2026-10-21T04:04:13.979Z","level":"log","context":"RouterExplorer","message":"Mapped {/onboarding/validate/:token, GET} route"}
{"timestamp":"2026-10-21T04:04:13.979Z","level":"log","context":"RouterExplorer","message":"Mapped {/onboarding/complete/:token, POST} route"}
{"timestamp":"2026-10-21T04:04:13.979Z","level":"log","context":"RoutesResolver","message":"ResellerController {/reseller}:"}
{"timestamp":"2026-10-21T04:04:13.979Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/businesses, POST} route"}
{"timestamp":"2026-10-21T04:04:13.979Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/businesses, GET} route"}
{"timestamp":"2026-10-21T04:04:13.979Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/businesses/:id, GET} route"}
{"timestamp":"2026-10-21T04:04:13.980Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/businesses/:id, PUT} route"}
{"timestamp":"2026-10-21T04:04:13.980Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/businesses/:id, DELETE} route"}
{"timestamp":"2026-10-21T04:04:13.980Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/license-usage, GET} route"}
{"timestamp":"2026-10-21T04:04:13.980Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/invoices, POST} route"}
{"timestamp":"2026-10-21T04:04:13.980Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/invoices, GET} route"}
{"timestamp":"2026-10-21T04:04:13.980Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/invoices/:id, GET} route"}
{"timestamp":"2026-10-21T04:04:13.981Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/invoices/:id, PUT} route"}
{"timestamp":"2026-10-21T04:04:13.981Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/invoices/:id, DELETE} route"}
{"timestamp":"2026-10-21T04:04:13.981Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/invoices/:id/mark-paid, PUT} route"}
{"timestamp":"2026-10-21T04:04:13.981Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/onboarding/generate-token, POST} route"}
{"timestamp":"2026-10-21T04:04:13.981Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/dashboard, GET} route"}
{"timestamp":"2026-10-21T04:04:13.981Z","level":"log","context":"RoutesResolver","message":"ResellerSubscriptionController {/reseller}:"}
{"timestamp":"2026-10-21T04:04:13.982Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/plans, POST} route"}
{"timestamp":"2026-10-21T04:04:13.982Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/plans, GET} route"}
{"timestamp":"2026-10-21T04:04:13.982Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/plans/:planId, GET} route"}
{"timestamp":"2026-10-21T04:04:13.982Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/plans/:planId, PUT} route"}
{"timestamp":"2026-10-21T04:04:13.982Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/plans/:planId, DELETE} route"}
{"timestamp":"2026-10-21T04:04:13.982Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/subscriptions/businesses/:businessId/subscription, POST} route"}
{"timestamp":"2026-10-21T04:04:13.983Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/subscriptions, GET} route"}
{"timestamp":"2026-10-21T04:04:13.983Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/subscriptions/businesses/:businessId/subscription, GET} route"}
{"timestamp":"2026-10-21T04:04:13.983Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/subscriptions/businesses/:businessId/subscription, PUT} route"}
{"timestamp":"2026-10-21T04:04:13.983Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/subscriptions/businesses/:businessId/subscription, DELETE} route"}
{"timestamp":"2026-10-21T04:04:13.983Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/subscriptions/businesses/:businessId/subscription/limits, GET} route"}
{"timestamp":"2026-10-21T04:04:13.984Z","level":"log","context":"RoutesResolver","message":"HealthController {/health}:"}
{"timestamp":"2026-10-21T04:04:13.984Z","level":"log","context":"RouterExplorer","message":"Mapped {/health, GET} route"}
{"timestamp":"2026-10-21T04:04:13.984Z","level":"log","context":"RouterExplorer","message":"Mapped {/health/test-logs, GET} route"}
{"timestamp":"2026-10-21T04:04:13.984Z","level":"log","context":"RoutesResolver","message":"AzureAdController {/azure-ad}:"}
{"timestamp":"2026-10-21T04:04:13.984Z","level":"log","context":"RouterExplorer","message":"Mapped {/azure-ad/config, POST} route"}
{"timestamp":"2026-10-21T04:04:13.984Z","level":"log","context":"RouterExplorer","message":"Mapped {/azure-ad/config, GET} route"}
{"timestamp":"2026-10-21T04:04:13.984Z","level":"log","context":"RouterExplorer","message":"Mapped {/azure-ad/test-connection, POST} route"}
{"timestamp":"2026-10-21T04:04:13.985Z","level":"log","context":"RouterExplorer","message":"Mapped {/azure-ad/sync, POST} route"}
{"timestamp":"2026-10-21T04:04:13.985Z","level":"log","context":"RoutesResolver","message":"ThreatsController {/threats}:"}
{"timestamp":"2026-10-21T04:04:13.985Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats, POST} route"}
{"timestamp":"2026-10-21T04:04:13.985Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats, GET} route"}
{"timestamp":"2026-10-21T04:04:13.985Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/chart-data, GET} route"}
{"timestamp":"2026-10-21T04:04:13.985Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/claude-search, POST} route"}
{"timestamp":"2026-10-21T04:04:13.986Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/claude-latest, POST} route"}
{"timestamp":"2026-10-21T04:04:13.986Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/claude-trending, POST} route"}
{"timestamp":"2026-10-21T04:04:13.986Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/claude-categories, POST} route"}
{"timestamp":"2026-10-21T04:04:13.986Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/claude-manual-search, POST} route"}
{"timestamp":"2026-10-21T04:04:13.986Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/claude-quick-search, POST} route"}
{"timestamp":"2026-10-21T04:04:13.987Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/scheduler-status, GET} route"}
{"timestamp":"2026-10-21T04:04:13.987Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/health-check, GET} route"}
{"timestamp":"2026-10-21T04:04:13.987Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/pause-scheduler, POST} route"}
{"timestamp":"2026-10-21T04:04:13.987Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/:id, GET} route"}
{"timestamp":"2026-10-21T04:04:13.987Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/:id, PATCH} route"}
{"timestamp":"2026-10-21T04:04:13.987Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/:id, DELETE} route"}
{"timestamp":"2026-10-21T04:04:13.987Z","level":"log","context":"RoutesResolver","message":"DomainController {/domains}:"}
{"timestamp":"2026-10-21T04:04:13.988Z","level":"log","context":"RouterExplorer","message":"Mapped {/domains, GET} route"}
{"timestamp":"2026-10-21T04:04:13.988Z","level":"log","context":"RouterExplorer","message":"Mapped {/domains/:id, GET} route"}
{"timestamp":"2026-10-21T04:04:13.988Z","level":"log","context":"RouterExplorer","message":"Mapped {/domains, POST} route"}
{"timestamp":"2026-10-21T04:04:13.988Z","level":"log","context":"RouterExplorer","message":"Mapped {/domains/:id, PUT} route"}
{"timestamp":"2026-10-21T04:04:13.988Z","level":"log","context":"RouterExplorer","message":"Mapped {/domains/:id, DELETE} route"}
{"timestamp":"2026-10-21T04:04:13.989Z","level":"log","context":"RouterExplorer","message":"Mapped {/domains/seed, POST} route"}
{"timestamp":"2026-10-21T04:04:13.989Z","level":"log","context":"RoutesResolver","message":"MspSubscriptionController {/msp-subscription}:"}
{"timestamp":"2026-10-21T04:04:13.989Z","level":"log","context":"RouterExplorer","message":"Mapped {/msp-subscription/current, GET} route"}
{"timestamp":"2026-10-21T04:04:13.989Z","level":"log","context":"RouterExplorer","message":"Mapped {/msp-subscription/invoices, GET} route"}
{"timestamp":"2026-10-21T04:04:13.989Z","level":"log","context":"RouterExplorer","message":"Mapped {/msp-subscription/invoice/:invoiceId/pdf, GET} route"}
{"timestamp":"2026-10-21T04:04:13.989Z","level":"log","context":"RoutesResolver","message":"MspSubscriptionController {/api/msp-subscription}:"}
{"timestamp":"2026-10-21T04:04:13.989Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/msp-subscription/current, GET} route"}
{"timestamp":"2026-10-21T04:04:13.990Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/msp-subscription/invoices, GET} route"}
{"timestamp":"2026-10-21T04:04:13.990Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/msp-subscription/invoice/:invoiceId/pdf, GET} route"}
{"timestamp":"2026-10-21T04:04:14.067Z","level":"log","context":"NestApplication","message":"Nest application successfully started"}
{"timestamp":"2026-10-21T04:04:14.075Z","level":"log","context":"Bootstrap","message":"Users API successfully started on port 3842"}
{"timestamp":"2026-10-21T04:04:14.075Z","level":"log","context":"SeedService","message":"🌱 Starting database seeding..."}
{"timestamp":"2026-10-21T04:04:14.081Z","level":"log","context":"SeedService","message":"Admin account already exists, skipping seed"}
{"timestamp":"2026-10-21T04:04:14.084Z","level":"log","context":"SeedService","message":"Reseller account already exists, skipping seed"}
{"timestamp":"2026-10-21T04:04:14.086Z","level":"log","context":"SeedService","message":"MSP account already exists, skipping seed"}
{"timestamp":"2026-10-21T04:04:14.086Z","level":"log","context":"SeedService","message":"✅ Database seeding completed successfully"}
{"timestamp":"2026-10-21T06:02:25.744Z","level":"warn","context":"LegacyRouteConverter","message":"Unsupported route path: \"/lp/*\". In previous versions, the symbols ?, *, and + were used to denote optional or repeating path parameters. The latest version of \"path-to-regexp\" now requires the use of named parameters. For example, instead of using a route like /users/* to capture all routes starting with \"/users\", you should use /users/*path. For more details, refer to the migration guide. Attempting to auto-convert..."}
{"timestamp":"2026-10-21T06:02:25.783Z","level":"log","context":"Bootstrap","message":"Starting Users API on port 3842..."}
{"timestamp":"2026-10-21T06:02:25.786Z","level":"log","context":"RoutesResolver","message":"UsersApiController {/}:"}
{"timestamp":"2026-10-21T06:02:25.790Z","level":"log","context":"RouterExplorer","message":"Mapped {/, GET} route"}
{"timestamp":"2026-10-21T06:02:25.790Z","level":"log","context":"RoutesResolver","message":"AuthController {/auth}:"}
{"timestamp":"2026-10-21T06:02:25.791Z","level":"log","context":"RouterExplorer","message":"Mapped {/auth/login, POST} route"}
{"timestamp":"2026-10-21T06:02:25.792Z","level":"log","context":"RouterExplorer","message":"Mapped {/auth/admin/login, POST} route"}
{"timestamp":"2026-10-21T06:02:25.792Z","level":"log","context":"RouterExplorer","message":"Mapped {/auth/send-otp, POST} route"}
{"timestamp":"2026-10-21T06:02:25.793Z","level":"log","context":"RouterExplorer","message":"Mapped {/auth/verify-otp, POST} route"}
{"timestamp":"2026-10-21T06:02:25.793Z","level":"log","context":"RouterExplorer","message":"Mapped {/auth/signup, POST} route"}
{"timestamp":"2026-10-21T06:02:25.794Z","level":"log","context":"RouterExplorer","message":"Mapped {/auth/subscription-status, GET} route"}
{"timestamp":"2026-10-21T06:02:25.794Z","level":"log","context":"RoutesResolver","message":"AdminMspController {/admin/msp}:"}
{"timestamp":"2026-10-21T06:02:25.794Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/msp, GET} route"}
{"timestamp":"2026-10-21T06:02:25.795Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/msp/:id, GET} route"}
{"timestamp":"2026-10-21T06:02:25.796Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/msp, POST} route"}
{"timestamp":"2026-10-21T06:02:25.796Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/msp/:id, PUT} route"}
{"timestamp":"2026-10-21T06:02:25.797Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/msp/:id, DELETE} route"}
{"timestamp":"2026-10-21T06:02:25.797Z","level":"log","context":"RoutesResolver","message":"AdminLicenseController {/admin/licenses}:"}
{"timestamp":"2026-10-21T06:02:25.797Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/licenses/summary, GET} route"}
{"timestamp":"2026-10-21T06:02:25.797Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/licenses/msp/:mspId, GET} route"}
{"timestamp":"2026-10-21T06:02:25.797Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/licenses/msp/:mspId, PUT} route"}
{"timestamp":"2026-10-21T06:02:25.798Z","level":"log","context":"RoutesResolver","message":"AdminImpersonationController {/admin/impersonation}:"}
{"timestamp":"2026-10-21T06:02:25.798Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/impersonation/msp-users, GET} route"}
{"timestamp":"2026-10-21T06:02:25.798Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/impersonation/impersonate, POST} route"}
{"timestamp":"2026-10-21T06:02:25.801Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/impersonation/stop, POST} route"}
{"timestamp":"2026-10-21T06:02:25.801Z","level":"log","context":"RoutesResolver","message":"AdminAiUsageController {/admin/ai-usage}:"}
{"timestamp":"2026-10-21T06:02:25.802Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-usage, GET} route"}
{"timestamp":"2026-10-21T06:02:25.802Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-usage/business/:businessId, GET} route"}
{"timestamp":"2026-10-21T06:02:25.802Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-usage/report/monthly, GET} route"}
{"timestamp":"2026-10-21T06:02:25.802Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-usage/pricing, GET} route"}
{"timestamp":"2026-10-21T06:02:25.803Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-usage/pricing, POST} route"}
{"timestamp":"2026-10-21T06:02:25.803Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-usage/credit/:businessId, PUT} route"}
{"timestamp":"2026-10-21T06:02:25.803Z","level":"log","context":"RoutesResolver","message":"AdminAiUsageController {/api/admin/ai-usage}:"}
{"timestamp":"2026-10-21T06:02:25.803Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-usage, GET} route"}
{"timestamp":"2026-10-21T06:02:25.803Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-usage/business/:businessId, GET} route"}
{"timestamp":"2026-10-21T06:02:25.803Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-usage/report/monthly, GET} route"}
{"timestamp":"2026-10-21T06:02:25.804Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-usage/pricing, GET} route"}
{"timestamp":"2026-10-21T06:02:25.804Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-usage/pricing, POST} route"}
{"timestamp":"2026-10-21T06:02:25.804Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-usage/credit/:businessId, PUT} route"}
{"timestamp":"2026-10-21T06:02:25.804Z","level":"log","context":"RoutesResolver","message":"AdminAiModelController {/admin/ai-models}:"}
{"timestamp":"2026-10-21T06:02:25.804Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models, POST} route"}
{"timestamp":"2026-10-21T06:02:25.805Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models, GET} route"}
{"timestamp":"2026-10-21T06:02:25.805Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/default, GET} route"}
{"timestamp":"2026-10-21T06:02:25.805Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/:id, GET} route"}
{"timestamp":"2026-10-21T06:02:25.805Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/:id, PUT} route"}
{"timestamp":"2026-10-21T06:02:25.805Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/:id, DELETE} route"}
{"timestamp":"2026-10-21T06:02:25.805Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/:id/set-default, POST} route"}
{"timestamp":"2026-10-21T06:02:25.806Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/assign-to-business, POST} route"}
{"timestamp":"2026-10-21T06:02:25.806Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/business/:businessId, GET} route"}
{"timestamp":"2026-10-21T06:02:25.806Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/:id/businesses, GET} route"}
{"timestamp":"2026-10-21T06:02:25.806Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/initialize-defaults, POST} route"}
{"timestamp":"2026-10-21T06:02:25.806Z","level":"log","context":"RoutesResolver","message":"AdminAiModelController {/api/admin/ai-models}:"}
{"timestamp":"2026-10-21T06:02:25.807Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models, POST} route"}
{"timestamp":"2026-10-21T06:02:25.807Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models, GET} route"}
{"timestamp":"2026-10-21T06:02:25.807Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/default, GET} route"}
{"timestamp":"2026-10-21T06:02:25.807Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/:id, GET} route"}
{"timestamp":"2026-10-21T06:02:25.807Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/:id, PUT} route"}
{"timestamp":"2026-10-21T06:02:25.807Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/:id, DELETE} route"}
{"timestamp":"2026-10-21T06:02:25.807Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/:id/set-default, POST} route"}
{"timestamp":"2026-10-21T06:02:25.808Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/assign-to-business, POST} route"}
{"timestamp":"2026-10-21T06:02:25.808Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/business/:businessId, GET} route"}
{"timestamp":"2026-10-21T06:02:25.808Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/:id/businesses, GET} route"}
{"timestamp":"2026-10-21T06:02:25.808Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/initialize-defaults, POST} route"}
{"timestamp":"2026-10-21T06:02:25.808Z","level":"log","context":"RoutesResolver","message":"AdminBusinessController {/admin/businesses}:"}
{"timestamp":"2026-10-21T06:02:25.809Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/businesses, GET} route"}
{"timestamp":"2026-10-21T06:02:25.809Z","level":"log","context":"RoutesResolver","message":"ResellerManagementController {/admin/resellers}:"}
{"timestamp":"2026-10-21T06:02:25.809Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/resellers, GET} route"}
{"timestamp":"2026-10-21T06:02:25.809Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/resellers/create-default, POST} route"}
{"timestamp":"2026-10-21T06:02:25.809Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/resellers, POST} route"}
{"timestamp":"2026-10-21T06:02:25.809Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/resellers/:id/toggle-status, PUT} route"}
{"timestamp":"2026-10-21T06:02:25.809Z","level":"log","context":"RoutesResolver","message":"SubscriptionController {/subscription}:"}
{"timestamp":"2026-10-21T06:02:25.810Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/plans, GET} route"}
{"timestamp":"2026-10-21T06:02:25.810Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/calculate-price, POST} route"}
{"timestamp":"2026-10-21T06:02:25.810Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/current, GET} route"}
{"timestamp":"2026-10-21T06:02:25.810Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/create, POST} route"}
{"timestamp":"2026-10-21T06:02:25.810Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/:id, PUT} route"}
{"timestamp":"2026-10-21T06:02:25.811Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/:id/cancel, DELETE} route"}
{"timestamp":"2026-10-21T06:02:25.811Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/sync/:stripeSubscriptionId, POST} route"}
{"timestamp":"2026-10-21T06:02:25.811Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/payments, GET} route"}
{"timestamp":"2026-10-21T06:02:25.811Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/payments/stats, GET} route"}
{"timestamp":"2026-10-21T06:02:25.811Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/payment/:id, GET} route"}
{"timestamp":"2026-10-21T06:02:25.811Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/payment-methods/attach, POST} route"}
{"timestamp":"2026-10-21T06:02:25.812Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/payment-methods/:paymentMethodId, DELETE} route"}
{"timestamp":"2026-10-21T06:02:25.812Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/payment-methods, GET} route"}
{"timestamp":"2026-10-21T06:02:25.812Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/setup-intent, POST} route"}
{"timestamp":"2026-10-21T06:02:25.812Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/update-employee-count, POST} route"}
{"timestamp":"2026-10-21T06:02:25.812Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/retry-payment/:subscriptionId, POST} route"}
{"timestamp":"2026-10-21T06:02:25.812Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/invoice/:invoiceId/pdf, GET} route"}
{"timestamp":"2026-10-21T06:02:25.813Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/preview-upgrade, POST} route"}
{"timestamp":"2026-10-21T06:02:25.813Z","level":"log","context":"RoutesResolver","message":"SubscriptionController {/api/subscription}:"}
{"timestamp":"2026-10-21T06:02:25.813Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/plans, GET} route"}
{"timestamp":"2026-10-21T06:02:25.813Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/calculate-price, POST} route"}
{"timestamp":"2026-10-21T06:02:25.813Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/current, GET} route"}
{"timestamp":"2026-10-21T06:02:25.813Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/create, POST} route"}
{"timestamp":"2026-10-21T06:02:25.813Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/:id, PUT} route"}
{"timestamp":"2026-10-21T06:02:25.814Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/:id/cancel, DELETE} route"}
{"timestamp":"2026-10-21T06:02:25.814Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/sync/:stripeSubscriptionId, POST} route"}
{"timestamp":"2026-10-21T06:02:25.814Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/payments, GET} route"}
{"timestamp":"2026-10-21T06:02:25.814Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/payments/stats, GET} route"}
{"timestamp":"2026-10-21T06:02:25.814Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/payment/:id, GET} route"}
{"timestamp":"2026-10-21T06:02:25.814Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/payment-methods/attach, POST} route"}
{"timestamp":"2026-10-21T06:02:25.814Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/payment-methods/:paymentMethodId, DELETE} route"}
{"timestamp":"2026-10-21T06:02:25.815Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/payment-methods, GET} route"}
{"timestamp":"2026-10-21T06:02:25.815Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/setup-intent, POST} route"}
{"timestamp":"2026-10-21T06:02:25.815Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/update-employee-count, POST} route"}
{"timestamp":"2026-10-21T06:02:25.815Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/retry-payment/:subscriptionId, POST} route"}
{"timestamp":"2026-10-21T06:02:25.815Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/invoice/:invoiceId/pdf, GET} route"}
{"timestamp":"2026-10-21T06:02:25.815Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/preview-upgrade, POST} route"}
{"timestamp":"2026-10-21T06:02:25.815Z","level":"log","context":"RoutesResolver","message":"StripeWebhookController {/stripe/webhook}:"}
{"timestamp":"2026-10-21T06:02:25.816Z","level":"log","context":"RouterExplorer","message":"Mapped {/stripe/webhook/test, GET} route"}
{"timestamp":"2026-10-21T06:02:25.816Z","level":"log","context":"RouterExplorer","message":"Mapped {/stripe/webhook, POST} route"}
{"timestamp":"2026-10-21T06:02:25.816Z","level":"log","context":"RoutesResolver","message":"EmailController {/email-templates}:"}
{"timestamp":"2026-10-21T06:02:25.816Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates/test, POST} route"}
{"timestamp":"2026-10-21T06:02:25.816Z","level":"log","context":"RoutesResolver","message":"EmployeeController {/employees}:"}
{"timestamp":"2026-10-21T06:02:25.816Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees, POST} route"}
{"timestamp":"2026-10-21T06:02:25.816Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees, GET} route"}
{"timestamp":"2026-10-21T06:02:25.817Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees/export, GET} route"}
{"timestamp":"2026-10-21T06:02:25.817Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees/risk-stats, GET} route"}
{"timestamp":"2026-10-21T06:02:25.817Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees/:id, GET} route"}
{"timestamp":"2026-10-21T06:02:25.817Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees/:id, PUT} route"}
{"timestamp":"2026-10-21T06:02:25.817Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees/:id, DELETE} route"}
{"timestamp":"2026-10-21T06:02:25.817Z","level":"log","context":"RoutesResolver","message":"GroupController {/groups}:"}
{"timestamp":"2026-10-21T06:02:25.818Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups, POST} route"}
{"timestamp":"2026-10-21T06:02:25.818Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups, GET} route"}
{"timestamp":"2026-10-21T06:02:25.818Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups/standard, GET} route"}
{"timestamp":"2026-10-21T06:02:25.818Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups/:id, GET} route"}
{"timestamp":"2026-10-21T06:02:25.818Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups/:id, PUT} route"}
{"timestamp":"2026-10-21T06:02:25.818Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups/:id, DELETE} route"}
{"timestamp":"2026-10-21T06:02:25.818Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups/:id/info, GET} route"}
{"timestamp":"2026-10-21T06:02:25.819Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups/:id/with-employees, GET} route"}
{"timestamp":"2026-10-21T06:02:25.819Z","level":"log","context":"RoutesResolver","message":"SenderProfileController {/sender-profiles}:"}
{"timestamp":"2026-10-21T06:02:25.819Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles, GET} route"}
{"timestamp":"2026-10-21T06:02:25.819Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles/:id, GET} route"}
{"timestamp":"2026-10-21T06:02:25.819Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles, POST} route"}
{"timestamp":"2026-10-21T06:02:25.819Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles/:id, PUT} route"}
{"timestamp":"2026-10-21T06:02:25.820Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles/:id, DELETE} route"}
{"timestamp":"2026-10-21T06:02:25.820Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles/:id/verify-domain, POST} route"}
{"timestamp":"2026-10-21T06:02:25.820Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles/domain-verification, GET} route"}
{"timestamp":"2026-10-21T06:02:25.820Z","level":"log","context":"RoutesResolver","message":"EmailTemplateController {/email-templates}:"}
{"timestamp":"2026-10-21T06:02:25.820Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates, GET} route"}
{"timestamp":"2026-10-21T06:02:25.820Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates/:id, GET} route"}
{"timestamp":"2026-10-21T06:02:25.820Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates, POST} route"}
{"timestamp":"2026-10-21T06:02:25.821Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates/:id, PUT} route"}
{"timestamp":"2026-10-21T06:02:25.821Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates/:id, DELETE} route"}
{"timestamp":"2026-10-21T06:02:25.821Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates/:id/duplicate, POST} route"}
{"timestamp":"2026-10-21T06:02:25.821Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates/:id/preview, GET} route"}
{"timestamp":"2026-10-21T06:02:25.821Z","level":"log","context":"RoutesResolver","message":"ScenarioController {/scenarios}:"}
{"timestamp":"2026-10-21T06:02:25.821Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios, POST} route"}
{"timestamp":"2026-10-21T06:02:25.822Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios/generate-content, POST} route"}
{"timestamp":"2026-10-21T06:02:25.822Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios, GET} route"}
{"timestamp":"2026-10-21T06:02:25.822Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios/:id, GET} route"}
{"timestamp":"2026-10-21T06:02:25.822Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios/:id, PUT} route"}
{"timestamp":"2026-10-21T06:02:25.822Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios/:id, DELETE} route"}
{"timestamp":"2026-10-21T06:02:25.822Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios/generate-from-json, POST} route"}
{"timestamp":"2026-10-21T06:02:25.822Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios/:id/save-as-custom-scenario, POST} route"}
{"timestamp":"2026-10-21T06:02:25.823Z","level":"log","context":"RoutesResolver","message":"CampaignController {/campaigns}:"}
{"timestamp":"2026-10-21T06:02:25.823Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns, POST} route"}
{"timestamp":"2026-10-21T06:02:25.823Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns, GET} route"}
{"timestamp":"2026-10-21T06:02:25.823Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id, GET} route"}
{"timestamp":"2026-10-21T06:02:25.823Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id/details, GET} route"}
{"timestamp":"2026-10-21T06:02:25.823Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id/employees, GET} route"}
{"timestamp":"2026-10-21T06:02:25.824Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id, PATCH} route"}
{"timestamp":"2026-10-21T06:02:25.824Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id/start, POST} route"}
{"timestamp":"2026-10-21T06:02:25.824Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id/stop, POST} route"}
{"timestamp":"2026-10-21T06:02:25.824Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id/duplicate, POST} route"}
{"timestamp":"2026-10-21T06:02:25.824Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id, DELETE} route"}
{"timestamp":"2026-10-21T06:02:25.824Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/auto-generate-program, POST} route"}
{"timestamp":"2026-10-21T06:02:25.825Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/generate-from-threat-intelligence, POST} route"}
{"timestamp":"2026-10-21T06:02:25.825Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id/risk-score, GET} route"}
{"timestamp":"2026-10-21T06:02:25.825Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/recalculate-risk-scores, POST} route"}
{"timestamp":"2026-10-21T06:02:25.825Z","level":"log","context":"RoutesResolver","message":"CampaignController {/api/campaigns}:"}
{"timestamp":"2026-10-21T06:02:25.825Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns, POST} route"}
{"timestamp":"2026-10-21T06:02:25.825Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns, GET} route"}
{"timestamp":"2026-10-21T06:02:25.825Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id, GET} route"}
{"timestamp":"2026-10-21T06:02:25.826Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id/details, GET} route"}
{"timestamp":"2026-10-21T06:02:25.826Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id/employees, GET} route"}
{"timestamp":"2026-10-21T06:02:25.826Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id, PATCH} route"}
{"timestamp":"2026-10-21T06:02:25.826Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id/start, POST} route"}
{"timestamp":"2026-10-21T06:02:25.826Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id/stop, POST} route"}
{"timestamp":"2026-10-21T06:02:25.826Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id/duplicate, POST} route"}
{"timestamp":"2026-10-21T06:02:25.827Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id, DELETE} route"}
{"timestamp":"2026-10-21T06:02:25.827Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/auto-generate-program, POST} route"}
{"timestamp":"2026-10-21T06:02:25.827Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/generate-from-threat-intelligence, POST} route"}
{"timestamp":"2026-10-21T06:02:25.827Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id/risk-score, GET} route"}
{"timestamp":"2026-10-21T06:02:25.827Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/recalculate-risk-scores, POST} route"}
{"timestamp":"2026-10-21T06:02:25.827Z","level":"log","context":"RoutesResolver","message":"NotificationsController {/notifications}:"}
{"timestamp":"2026-10-21T06:02:25.828Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications, POST} route"}
{"timestamp":"2026-10-21T06:02:25.828Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications, GET} route"}
{"timestamp":"2026-10-21T06:02:25.828Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/unread, GET} route"}
{"timestamp":"2026-10-21T06:02:25.828Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/unread-count, GET} route"}
{"timestamp":"2026-10-21T06:02:25.828Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/:id, GET} route"}
{"timestamp":"2026-10-21T06:02:25.828Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/:id, PATCH} route"}
{"timestamp":"2026-10-21T06:02:25.829Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/:id/read, PATCH} route"}
{"timestamp":"2026-10-21T06:02:25.829Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/mark-all-read, PATCH} route"}
{"timestamp":"2026-10-21T06:02:25.829Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/:id, DELETE} route"}
{"timestamp":"2026-10-21T06:02:25.829Z","level":"log","context":"RoutesResolver","message":"LandingPageController {/lp}:"}
{"timestamp":"2026-10-21T06:02:25.829Z","level":"log","context":"RouterExplorer","message":"Mapped {/lp/image, GET} route"}
{"timestamp":"2026-10-21T06:02:25.830Z","level":"log","context":"RouterExplorer","message":"Mapped {/lp/learning, GET} route"}
{"timestamp":"2026-10-21T06:02:25.830Z","level":"log","context":"RouterExplorer","message":"Mapped {/lp/submit, POST} route"}
{"timestamp":"2026-10-21T06:02:25.830Z","level":"log","context":"RouterExplorer","message":"Mapped {/lp/test, GET} route"}
{"timestamp":"2026-10-21T06:02:25.830Z","level":"warn","context":"LegacyRouteConverter","message":"Unsupported route path: \"/lp/*\". In previous versions, the symbols ?, *, and + were used to denote optional or repeating path parameters. The latest version of \"path-to-regexp\" now requires the use of named parameters. For example, instead of using a route like /users/* to capture all routes starting with \"/users\", you should use /users/*path. For more details, refer to the migration guide. Attempting to auto-convert..."}
{"timestamp":"2026-10-21T06:02:25.831Z","level":"log","context":"RouterExplorer","message":"Mapped {/lp/*, ALL} route"}
{"timestamp":"2026-10-21T06:02:25.831Z","level":"log","context":"RoutesResolver","message":"SupportController {/support}:"}
{"timestamp":"2026-10-21T06:02:25.831Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets, POST} route"}
{"timestamp":"2026-10-21T06:02:25.831Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets, GET} route"}
{"timestamp":"2026-10-21T06:02:25.831Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets/:id, GET} route"}
{"timestamp":"2026-10-21T06:02:25.832Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets/:id, PATCH} route"}
{"timestamp":"2026-10-21T06:02:25.832Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets/:id, DELETE} route"}
{"timestamp":"2026-10-21T06:02:25.832Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets/:id/messages, POST} route"}
{"timestamp":"2026-10-21T06:02:25.832Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets/:id/close, POST} route"}
{"timestamp":"2026-10-21T06:02:25.832Z","level":"log","context":"RoutesResolver","message":"BusninessMetricsController {/business-metrics}:"}
{"timestamp":"2026-10-21T06:02:25.832Z","level":"log","context":"RouterExplorer","message":"Mapped {/business-metrics, GET} route"}
{"timestamp":"2026-10-21T06:02:25.832Z","level":"log","context":"RoutesResolver","message":"UsersController {/users}:"}
{"timestamp":"2026-10-21T06:02:25.833Z","level":"log","context":"RouterExplorer","message":"Mapped {/users/:id, PUT} route"}
{"timestamp":"2026-10-21T06:02:25.833Z","level":"log","context":"RouterExplorer","message":"Mapped {/users/settings, GET} route"}
{"timestamp":"2026-10-21T06:02:25.833Z","level":"log","context":"RouterExplorer","message":"Mapped {/users/settings/general, PUT} route"}
{"timestamp":"2026-10-21T06:02:25.833Z","level":"log","context":"RouterExplorer","message":"Mapped {/users/company/settings, PUT} route"}
{"timestamp":"2026-10-21T06:02:25.833Z","level":"log","context":"RouterExplorer","message":"Mapped {/users/change-password, POST} route"}
{"timestamp":"2026-10-21T06:02:25.834Z","level":"log","context":"RouterExplorer","message":"Mapped {/users/localization/settings, PUT} route"}
{"timestamp":"2026-10-21T06:02:25.834Z","level":"log","context":"RoutesResolver","message":"PartnerController {/partner}:"}
{"timestamp":"2026-10-21T06:02:25.834Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses, POST} route"}
{"timestamp":"2026-10-21T06:02:25.834Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses, GET} route"}
{"timestamp":"2026-10-21T06:02:25.834Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses/:id, GET} route"}
{"timestamp":"2026-10-21T06:02:25.834Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses/:id, PUT} route"}
{"timestamp":"2026-10-21T06:02:25.835Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses/:id, DELETE} route"}
{"timestamp":"2026-10-21T06:02:25.835Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses/:id/impersonate, POST} route"}
{"timestamp":"2026-10-21T06:02:25.835Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses/stop-impersonation, POST} route"}
{"timestamp":"2026-10-21T06:02:25.835Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/license-usage, GET} route"}
{"timestamp":"2026-10-21T06:02:25.835Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/invoices, POST} route"}
{"timestamp":"2026-10-21T06:02:25.835Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/invoices, GET} route"}
{"timestamp":"2026-10-21T06:02:25.836Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/invoices/:id, GET} route"}
{"timestamp":"2026-10-21T06:02:25.836Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/invoices/:id, PUT} route"}
{"timestamp":"2026-10-21T06:02:25.836Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/invoices/:id, DELETE} route"}
{"timestamp":"2026-10-21T06:02:25.836Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/invoices/:id/mark-paid, PUT} route"}
{"timestamp":"2026-10-21T06:02:25.836Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/onboarding/generate-token, POST} route"}
{"timestamp":"2026-10-21T06:02:25.836Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/dashboard, GET} route"}
{"timestamp":"2026-10-21T06:02:25.836Z","level":"log","context":"RoutesResolver","message":"MspSubscriptionController {/partner/msp-subscriptions}:"}
{"timestamp":"2026-10-21T06:02:25.837Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/plans, POST} route"}
{"timestamp":"2026-10-21T06:02:25.837Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/plans, GET} route"}
{"timestamp":"2026-10-21T06:02:25.837Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/plans/:planId, GET} route"}
{"timestamp":"2026-10-21T06:02:25.837Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/plans/:planId, PUT} route"}
{"timestamp":"2026-10-21T06:02:25.837Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/plans/:planId, DELETE} route"}
{"timestamp":"2026-10-21T06:02:25.837Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/businesses/:businessId/subscription, POST} route"}
{"timestamp":"2026-10-21T06:02:25.838Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions, GET} route"}
{"timestamp":"2026-10-21T06:02:25.838Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/businesses/:businessId/subscription, GET} route"}
{"timestamp":"2026-10-21T06:02:25.838Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/businesses/:businessId/subscription, PUT} route"}
{"timestamp":"2026-10-21T06:02:25.838Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/businesses/:businessId/subscription, DELETE} route"}
{"timestamp":"2026-10-21T06:02:25.838Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/businesses/:businessId/subscription/limits, GET} route"}
{"timestamp":"2026-10-21T06:02:25.839Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/businesses/:businessId/subscription/change-plan, PUT} route"}
{"timestamp":"2026-10-21T06:02:25.839Z","level":"log","context":"RoutesResolver","message":"OnboardingController {/onboarding}:"}
{"timestamp":"2026-10-21T06:02:25.839Z","level":"log","context":"RouterExplorer","message":"Mapped {/onboarding/validate/:token, GET} route"}
{"timestamp":"2026-10-21T06:02:25.839Z","level":"log","context":"RouterExplorer","message":"Mapped {/onboarding/complete/:token, POST} route"}
{"timestamp":"2026-10-21T06:02:25.839Z","level":"log","context":"RoutesResolver","message":"ResellerController {/reseller}:"}
{"timestamp":"2026-10-21T06:02:25.839Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/businesses, POST} route"}
{"timestamp":"2026-10-21T06:02:25.839Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/businesses, GET} route"}
{"timestamp":"2026-10-21T06:02:25.840Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/businesses/:id, GET} route"}
{"timestamp":"2026-10-21T06:02:25.840Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/businesses/:id, PUT} route"}
{"timestamp":"2026-10-21T06:02:25.840Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/businesses/:id, DELETE} route"}
{"timestamp":"2026-10-21T06:02:25.840Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/license-usage, GET} route"}
{"timestamp":"2026-10-21T06:02:25.840Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/invoices, POST} route"}
{"timestamp":"2026-10-21T06:02:25.840Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/invoices, GET} route"}
{"timestamp":"2026-10-21T06:02:25.841Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/invoices/:id, GET} route"}
{"timestamp":"2026-10-21T06:02:25.841Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/invoices/:id, PUT} route"}
{"timestamp":"2026-10-21T06:02:25.841Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/invoices/:id, DELETE} route"}
{"timestamp":"2026-10-21T06:02:25.841Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/invoices/:id/mark-paid, PUT} route"}
{"timestamp":"2026-10-21T06:02:25.841Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/onboarding/generate-token, POST} route"}
{"timestamp":"2026-10-21T06:02:25.841Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/dashboard, GET} route"}
{"timestamp":"2026-10-21T06:02:25.841Z","level":"log","context":"RoutesResolver","message":"ResellerSubscriptionController {/reseller}:"}
{"timestamp":"2026-10-21T06:02:25.842Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/plans, POST} route"}
{"timestamp":"2026-10-21T06:02:25.842Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/plans, GET} route"}
{"timestamp":"2026-10-21T06:02:25.842Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/plans/:planId, GET} route"}
{"timestamp":"2026-10-21T06:02:25.842Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/plans/:planId, PUT} route"}
{"timestamp":"2026-10-21T06:02:25.842Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/plans/:planId, DELETE} route"}
{"timestamp":"2026-10-21T06:02:25.842Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/subscriptions/businesses/:businessId/subscription, POST} route"}
{"timestamp":"2026-10-21T06:02:25.843Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/subscriptions, GET} route"}
{"timestamp":"2026-10-21T06:02:25.843Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/subscriptions/businesses/:businessId/subscription, GET} route"}
{"timestamp":"2026-10-21T06:02:25.843Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/subscriptions/businesses/:businessId/subscription, PUT} route"}
{"timestamp":"2026-10-21T06:02:25.843Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/subscriptions/businesses/:businessId/subscription, DELETE} route"}
{"timestamp":"2026-10-21T06:02:25.843Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/subscriptions/businesses/:businessId/subscription/limits, GET} route"}
{"timestamp":"2026-10-21T06:02:25.843Z","level":"log","context":"RoutesResolver","message":"HealthController {/health}:"}
{"timestamp":"2026-10-21T06:02:25.843Z","level":"log","context":"RouterExplorer","message":"Mapped {/health, GET} route"}
{"timestamp":"2026-10-21T06:02:25.844Z","level":"log","context":"RouterExplorer","message":"Mapped {/health/test-logs, GET} route"}
{"timestamp":"2026-10-21T06:02:25.844Z","level":"log","context":"RoutesResolver","message":"AzureAdController {/azure-ad}:"}
{"timestamp":"2026-10-21T06:02:25.844Z","level":"log","context":"RouterExplorer","message":"Mapped {/azure-ad/config, POST} route"}
{"timestamp":"2026-10-21T06:02:25.844Z","level":"log","context":"RouterExplorer","message":"Mapped {/azure-ad/config, GET} route"}
{"timestamp":"2026-10-21T06:02:25.844Z","level":"log","context":"RouterExplorer","message":"Mapped {/azure-ad/test-connection, POST} route"}
{"timestamp":"2026-10-21T06:02:25.844Z","level":"log","context":"RouterExplorer","message":"Mapped {/azure-ad/sync, POST} route"}
{"timestamp":"2026-10-21T06:02:25.844Z","level":"log","context":"RoutesResolver","message":"ThreatsController {/threats}:"}
{"timestamp":"2026-10-21T06:02:25.845Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats, POST} route"}
{"timestamp":"2026-10-21T06:02:25.845Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats, GET} route"}
{"timestamp":"2026-10-21T06:02:25.845Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/chart-data, GET} route"}
{"timestamp":"2026-10-21T06:02:25.845Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/claude-search, POST} route"}
{"timestamp":"2026-10-21T06:02:25.845Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/claude-latest, POST} route"}
{"timestamp":"2026-10-21T06:02:25.845Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/claude-trending, POST} route"}
{"timestamp":"2026-10-21T06:02:25.846Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/claude-categories, POST} route"}
{"timestamp":"2026-10-21T06:02:25.846Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/claude-manual-search, POST} route"}
{"timestamp":"2026-10-21T06:02:25.846Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/claude-quick-search, POST} route"}
{"timestamp":"2026-10-21T06:02:25.846Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/scheduler-status, GET} route"}
{"timestamp":"2026-10-21T06:02:25.846Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/health-check, GET} route"}
{"timestamp":"2026-10-21T06:02:25.846Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/pause-scheduler, POST} route"}
{"timestamp":"2026-10-21T06:02:25.847Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/:id, GET} route"}
{"timestamp":"2026-10-21T06:02:25.847Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/:id, PATCH} route"}
{"timestamp":"2026-10-21T06:02:25.847Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/:id, DELETE} route"}
{"timestamp":"2026-10-21T06:02:25.847Z","level":"log","context":"RoutesResolver","message":"DomainController {/domains}:"}
{"timestamp":"2026-10-21T06:02:25.847Z","level":"log","context":"RouterExplorer","message":"Mapped {/domains, GET} route"}
{"timestamp":"2026-10-21T06:02:25.847Z","level":"log","context":"RouterExplorer","message":"Mapped {/domains/:id, GET} route"}
{"timestamp":"2026-10-21T06:02:25.847Z","level":"log","context":"RouterExplorer","message":"Mapped {/domains, POST} route"}
{"timestamp":"2026-10-21T06:02:25.848Z","level":"log","context":"RouterExplorer","message":"Mapped {/domains/:id, PUT} route"}
{"timestamp":"2026-10-21T06:02:25.848Z","level":"log","context":"RouterExplorer","message":"Mapped {/domains/:id, DELETE} route"}
{"timestamp":"2026-10-21T06:02:25.848Z","level":"log","context":"RouterExplorer","message":"Mapped {/domains/seed, POST} route"}
{"timestamp":"2026-10-21T06:02:25.848Z","level":"log","context":"RoutesResolver","message":"MspSubscriptionController {/msp-subscription}:"}
{"timestamp":"2026-10-21T06:02:25.848Z","level":"log","context":"RouterExplorer","message":"Mapped {/msp-subscription/current, GET} route"}
{"timestamp":"2026-10-21T06:02:25.848Z","level":"log","context":"RouterExplorer","message":"Mapped {/msp-subscription/invoices, GET} route"}
{"timestamp":"2026-10-21T06:02:25.849Z","level":"log","context":"RouterExplorer","message":"Mapped {/msp-subscription/invoice/:invoiceId/pdf, GET} route"}
{"timestamp":"2026-10-21T06:02:25.849Z","level":"log","context":"RoutesResolver","message":"MspSubscriptionController {/api/msp-subscription}:"}
{"timestamp":"2026-10-21T06:02:25.849Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/msp-subscription/current, GET} route"}
{"timestamp":"2026-10-21T06:02:25.849Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/msp-subscription/invoices, GET} route"}
{"timestamp":"2026-10-21T06:02:25.849Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/msp-subscription/invoice/:invoiceId/pdf, GET} route"}
{"timestamp":"2026-10-21T06:02:25.921Z","level":"log","context":"NestApplication","message":"Nest application successfully started"}
{"timestamp":"2026-10-21T06:02:25.943Z","level":"log","context":"Bootstrap","message":"Users API successfully started on port 3842"}
{"timestamp":"2026-10-21T06:02:25.943Z","level":"log","context":"SeedService","message":"🌱 Starting database seeding..."}
{"timestamp":"2026-10-21T06:02:25.949Z","level":"log","context":"SeedService","message":"Admin account already exists, skipping seed"}
{"timestamp":"2026-10-21T06:02:25.952Z","level":"log","context":"SeedService","message":"Reseller account already exists, skipping seed"}
{"timestamp":"2026-10-21T06:02:25.954Z","level":"log","context":"SeedService","message":"MSP account already exists, skipping seed"}
{"timestamp":"2026-10-21T06:02:25.954Z","level":"log","context":"SeedService","message":"✅ Database seeding completed successfully"}
{"timestamp":"2026-10-21T10:19:38.024Z","level":"warn","context":"LegacyRouteConverter","message":"Unsupported route path: \"/lp/*\". In previous versions, the symbols ?, *, and + were used to denote optional or repeating path parameters. The latest version of \"path-to-regexp\" now requires the use of named parameters. For example, instead of using a route like /users/* to capture all routes starting with \"/users\", you should use /users/*path. For more details, refer to the migration guide. Attempting to auto-convert..."}
{"timestamp":"2026-10-21T10:19:38.071Z","level":"log","context":"Bootstrap","message":"Starting Users API on port 3842..."}
{"timestamp":"2026-10-21T10:19:38.074Z","level":"log","context":"RoutesResolver","message":"UsersApiController {/}:"}
{"timestamp":"2026-10-21T10:19:38.078Z","level":"log","context":"RouterExplorer","message":"Mapped {/, GET} route"}
{"timestamp":"2026-10-21T10:19:38.078Z","level":"log","context":"RoutesResolver","message":"AuthController {/auth}:"}
{"timestamp":"2026-10-21T10:19:38.079Z","level":"log","context":"RouterExplorer","message":"Mapped {/auth/login, POST} route"}
{"timestamp":"2026-10-21T10:19:38.079Z","level":"log","context":"RouterExplorer","message":"Mapped {/auth/admin/login, POST} route"}
{"timestamp":"2026-10-21T10:19:38.080Z","level":"log","context":"RouterExplorer","message":"Mapped {/auth/send-otp, POST} route"}
{"timestamp":"2026-10-21T10:19:38.080Z","level":"log","context":"RouterExplorer","message":"Mapped {/auth/verify-otp, POST} route"}
{"timestamp":"2026-10-21T10:19:38.081Z","level":"log","context":"RouterExplorer","message":"Mapped {/auth/signup, POST} route"}
{"timestamp":"2026-10-21T10:19:38.081Z","level":"log","context":"RouterExplorer","message":"Mapped {/auth/subscription-status, GET} route"}
{"timestamp":"2026-10-21T10:19:38.081Z","level":"log","context":"RoutesResolver","message":"AdminMspController {/admin/msp}:"}
{"timestamp":"2026-10-21T10:19:38.082Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/msp, GET} route"}
{"timestamp":"2026-10-21T10:19:38.083Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/msp/:id, GET} route"}
{"timestamp":"2026-10-21T10:19:38.083Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/msp, POST} route"}
{"timestamp":"2026-10-21T10:19:38.084Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/msp/:id, PUT} route"}
{"timestamp":"2026-10-21T10:19:38.084Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/msp/:id, DELETE} route"}
{"timestamp":"2026-10-21T10:19:38.084Z","level":"log","context":"RoutesResolver","message":"AdminLicenseController {/admin/licenses}:"}
{"timestamp":"2026-10-21T10:19:38.084Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/licenses/summary, GET} route"}
{"timestamp":"2026-10-21T10:19:38.085Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/licenses/msp/:mspId, GET} route"}
{"timestamp":"2026-10-21T10:19:38.085Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/licenses/msp/:mspId, PUT} route"}
{"timestamp":"2026-10-21T10:19:38.085Z","level":"log","context":"RoutesResolver","message":"AdminImpersonationController {/admin/impersonation}:"}
{"timestamp":"2026-10-21T10:19:38.085Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/impersonation/msp-users, GET} route"}
{"timestamp":"2026-10-21T10:19:38.086Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/impersonation/impersonate, POST} route"}
{"timestamp":"2026-10-21T10:19:38.086Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/impersonation/stop, POST} route"}
{"timestamp":"2026-10-21T10:19:38.086Z","level":"log","context":"RoutesResolver","message":"AdminAiUsageController {/admin/ai-usage}:"}
{"timestamp":"2026-10-21T10:19:38.086Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-usage, GET} route"}
{"timestamp":"2026-10-21T10:19:38.087Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-usage/business/:businessId, GET} route"}
{"timestamp":"2026-10-21T10:19:38.087Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-usage/report/monthly, GET} route"}
{"timestamp":"2026-10-21T10:19:38.087Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-usage/pricing, GET} route"}
{"timestamp":"2026-10-21T10:19:38.087Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-usage/pricing, POST} route"}
{"timestamp":"2026-10-21T10:19:38.087Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-usage/credit/:businessId, PUT} route"}
{"timestamp":"2026-10-21T10:19:38.087Z","level":"log","context":"RoutesResolver","message":"AdminAiUsageController {/api/admin/ai-usage}:"}
{"timestamp":"2026-10-21T10:19:38.088Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-usage, GET} route"}
{"timestamp":"2026-10-21T10:19:38.088Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-usage/business/:businessId, GET} route"}
{"timestamp":"2026-10-21T10:19:38.088Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-usage/report/monthly, GET} route"}
{"timestamp":"2026-10-21T10:19:38.088Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-usage/pricing, GET} route"}
{"timestamp":"2026-10-21T10:19:38.088Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-usage/pricing, POST} route"}
{"timestamp":"2026-10-21T10:19:38.089Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-usage/credit/:businessId, PUT} route"}
{"timestamp":"2026-10-21T10:19:38.089Z","level":"log","context":"RoutesResolver","message":"AdminAiModelController {/admin/ai-models}:"}
{"timestamp":"2026-10-21T10:19:38.089Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models, POST} route"}
{"timestamp":"2026-10-21T10:19:38.089Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models, GET} route"}
{"timestamp":"2026-10-21T10:19:38.089Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/default, GET} route"}
{"timestamp":"2026-10-21T10:19:38.090Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/:id, GET} route"}
{"timestamp":"2026-10-21T10:19:38.090Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/:id, PUT} route"}
{"timestamp":"2026-10-21T10:19:38.090Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/:id, DELETE} route"}
{"timestamp":"2026-10-21T10:19:38.090Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/:id/set-default, POST} route"}
{"timestamp":"2026-10-21T10:19:38.090Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/assign-to-business, POST} route"}
{"timestamp":"2026-10-21T10:19:38.091Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/business/:businessId, GET} route"}
{"timestamp":"2026-10-21T10:19:38.091Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/:id/businesses, GET} route"}
{"timestamp":"2026-10-21T10:19:38.091Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/initialize-defaults, POST} route"}
{"timestamp":"2026-10-21T10:19:38.091Z","level":"log","context":"RoutesResolver","message":"AdminAiModelController {/api/admin/ai-models}:"}
{"timestamp":"2026-10-21T10:19:38.091Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models, POST} route"}
{"timestamp":"2026-10-21T10:19:38.091Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models, GET} route"}
{"timestamp":"2026-10-21T10:19:38.092Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/default, GET} route"}
{"timestamp":"2026-10-21T10:19:38.092Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/:id, GET} route"}
{"timestamp":"2026-10-21T10:19:38.092Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/:id, PUT} route"}
{"timestamp":"2026-10-21T10:19:38.092Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/:id, DELETE} route"}
{"timestamp":"2026-10-21T10:19:38.092Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/:id/set-default, POST} route"}
{"timestamp":"2026-10-21T10:19:38.092Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/assign-to-business, POST} route"}
{"timestamp":"2026-10-21T10:19:38.093Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/business/:businessId, GET} route"}
{"timestamp":"2026-10-21T10:19:38.093Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/:id/businesses, GET} route"}
{"timestamp":"2026-10-21T10:19:38.093Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/initialize-defaults, POST} route"}
{"timestamp":"2026-10-21T10:19:38.093Z","level":"log","context":"RoutesResolver","message":"AdminBusinessController {/admin/businesses}:"}
{"timestamp":"2026-10-21T10:19:38.093Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/businesses, GET} route"}
{"timestamp":"2026-10-21T10:19:38.093Z","level":"log","context":"RoutesResolver","message":"ResellerManagementController {/admin/resellers}:"}
{"timestamp":"2026-10-21T10:19:38.094Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/resellers, GET} route"}
{"timestamp":"2026-10-21T10:19:38.094Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/resellers/create-default, POST} route"}
{"timestamp":"2026-10-21T10:19:38.094Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/resellers, POST} route"}
{"timestamp":"2026-10-21T10:19:38.094Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/resellers/:id/toggle-status, PUT} route"}
{"timestamp":"2026-10-21T10:19:38.094Z","level":"log","context":"RoutesResolver","message":"SubscriptionController {/subscription}:"}
{"timestamp":"2026-10-21T10:19:38.095Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/plans, GET} route"}
{"timestamp":"2026-10-21T10:19:38.095Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/calculate-price, POST} route"}
{"timestamp":"2026-10-21T10:19:38.095Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/current, GET} route"}
{"timestamp":"2026-10-21T10:19:38.095Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/create, POST} route"}
{"timestamp":"2026-10-21T10:19:38.095Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/:id, PUT} route"}
{"timestamp":"2026-10-21T10:19:38.096Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/:id/cancel, DELETE} route"}
{"timestamp":"2026-10-21T10:19:38.096Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/sync/:stripeSubscriptionId, POST} route"}
{"timestamp":"2026-10-21T10:19:38.096Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/payments, GET} route"}
{"timestamp":"2026-10-21T10:19:38.096Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/payments/stats, GET} route"}
{"timestamp":"2026-10-21T10:19:38.096Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/payment/:id, GET} route"}
{"timestamp":"2026-10-21T10:19:38.097Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/payment-methods/attach, POST} route"}
{"timestamp":"2026-10-21T10:19:38.097Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/payment-methods/:paymentMethodId, DELETE} route"}
{"timestamp":"2026-10-21T10:19:38.097Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/payment-methods, GET} route"}
{"timestamp":"2026-10-21T10:19:38.097Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/setup-intent, POST} route"}
{"timestamp":"2026-10-21T10:19:38.097Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/update-employee-count, POST} route"}
{"timestamp":"2026-10-21T10:19:38.097Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/retry-payment/:subscriptionId, POST} route"}
{"timestamp":"2026-10-21T10:19:38.098Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/invoice/:invoiceId/pdf, GET} route"}
{"timestamp":"2026-10-21T10:19:38.098Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/preview-upgrade, POST} route"}
{"timestamp":"2026-10-21T10:19:38.098Z","level":"log","context":"RoutesResolver","message":"SubscriptionController {/api/subscription}:"}
{"timestamp":"2026-10-21T10:19:38.098Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/plans, GET} route"}
{"timestamp":"2026-10-21T10:19:38.098Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/calculate-price, POST} route"}
{"timestamp":"2026-10-21T10:19:38.098Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/current, GET} route"}
{"timestamp":"2026-10-21T10:19:38.099Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/create, POST} route"}
{"timestamp":"2026-10-21T10:19:38.099Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/:id, PUT} route"}
{"timestamp":"2026-10-21T10:19:38.099Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/:id/cancel, DELETE} route"}
{"timestamp":"2026-10-21T10:19:38.099Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/sync/:stripeSubscriptionId, POST} route"}
{"timestamp":"2026-10-21T10:19:38.099Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/payments, GET} route"}
{"timestamp":"2026-10-21T10:19:38.099Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/payments/stats, GET} route"}
{"timestamp":"2026-10-21T10:19:38.100Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/payment/:id, GET} route"}
{"timestamp":"2026-10-21T10:19:38.100Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/payment-methods/attach, POST} route"}
{"timestamp":"2026-10-21T10:19:38.100Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/payment-methods/:paymentMethodId, DELETE} route"}
{"timestamp":"2026-10-21T10:19:38.100Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/payment-methods, GET} route"}
{"timestamp":"2026-10-21T10:19:38.100Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/setup-intent, POST} route"}
{"timestamp":"2026-10-21T10:19:38.100Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/update-employee-count, POST} route"}
{"timestamp":"2026-10-21T10:19:38.101Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/retry-payment/:subscriptionId, POST} route"}
{"timestamp":"2026-10-21T10:19:38.101Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/invoice/:invoiceId/pdf, GET} route"}
{"timestamp":"2026-10-21T10:19:38.101Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/preview-upgrade, POST} route"}
{"timestamp":"2026-10-21T10:19:38.101Z","level":"log","context":"RoutesResolver","message":"StripeWebhookController {/stripe/webhook}:"}
{"timestamp":"2026-10-21T10:19:38.101Z","level":"log","context":"RouterExplorer","message":"Mapped {/stripe/webhook/test, GET} route"}
{"timestamp":"2026-10-21T10:19:38.101Z","level":"log","context":"RouterExplorer","message":"Mapped {/stripe/webhook, POST} route"}
{"timestamp":"2026-10-21T10:19:38.101Z","level":"log","context":"RoutesResolver","message":"EmailController {/email-templates}:"}
{"timestamp":"2026-10-21T10:19:38.102Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates/test, POST} route"}
{"timestamp":"2026-10-21T10:19:38.102Z","level":"log","context":"RoutesResolver","message":"EmployeeController {/employees}:"}
{"timestamp":"2026-10-21T10:19:38.102Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees, POST} route"}
{"timestamp":"2026-10-21T10:19:38.102Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees, GET} route"}
{"timestamp":"2026-10-21T10:19:38.102Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees/export, GET} route"}
{"timestamp":"2026-10-21T10:19:38.102Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees/risk-stats, GET} route"}
{"timestamp":"2026-10-21T10:19:38.103Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees/:id, GET} route"}
{"timestamp":"2026-10-21T10:19:38.103Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees/:id, PUT} route"}
{"timestamp":"2026-10-21T10:19:38.103Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees/:id, DELETE} route"}
{"timestamp":"2026-10-21T10:19:38.103Z","level":"log","context":"RoutesResolver","message":"GroupController {/groups}:"}
{"timestamp":"2026-10-21T10:19:38.103Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups, POST} route"}
{"timestamp":"2026-10-21T10:19:38.103Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups, GET} route"}
{"timestamp":"2026-10-21T10:19:38.104Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups/standard, GET} route"}
{"timestamp":"2026-10-21T10:19:38.104Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups/:id, GET} route"}
{"timestamp":"2026-10-21T10:19:38.104Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups/:id, PUT} route"}
{"timestamp":"2026-10-21T10:19:38.104Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups/:id, DELETE} route"}
{"timestamp":"2026-10-21T10:19:38.104Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups/:id/info, GET} route"}
{"timestamp":"2026-10-21T10:19:38.104Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups/:id/with-employees, GET} route"}
{"timestamp":"2026-10-21T10:19:38.104Z","level":"log","context":"RoutesResolver","message":"SenderProfileController {/sender-profiles}:"}
{"timestamp":"2026-10-21T10:19:38.105Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles, GET} route"}
{"timestamp":"2026-10-21T10:19:38.105Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles/:id, GET} route"}
{"timestamp":"2026-10-21T10:19:38.105Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles, POST} route"}
{"timestamp":"2026-10-21T10:19:38.105Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles/:id, PUT} route"}
{"timestamp":"2026-10-21T10:19:38.105Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles/:id, DELETE} route"}
{"timestamp":"2026-10-21T10:19:38.105Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles/:id/verify-domain, POST} route"}
{"timestamp":"2026-10-21T10:19:38.106Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles/domain-verification, GET} route"}
{"timestamp":"2026-10-21T10:19:38.106Z","level":"log","context":"RoutesResolver","message":"EmailTemplateController {/email-templates}:"}
{"timestamp":"2026-10-21T10:19:38.106Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates, GET} route"}
{"timestamp":"2026-10-21T10:19:38.106Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates/:id, GET} route"}
{"timestamp":"2026-10-21T10:19:38.106Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates, POST} route"}
{"timestamp":"2026-10-21T10:19:38.106Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates/:id, PUT} route"}
{"timestamp":"2026-10-21T10:19:38.107Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates/:id, DELETE} route"}
{"timestamp":"2026-10-21T10:19:38.107Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates/:id/duplicate, POST} route"}
{"timestamp":"2026-10-21T10:19:38.107Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates/:id/preview, GET} route"}
{"timestamp":"2026-10-21T10:19:38.107Z","level":"log","context":"RoutesResolver","message":"ScenarioController {/scenarios}:"}
{"timestamp":"2026-10-21T10:19:38.107Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios, POST} route"}
{"timestamp":"2026-10-21T10:19:38.107Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios/generate-content, POST} route"}
{"timestamp":"2026-10-21T10:19:38.108Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios, GET} route"}
{"timestamp":"2026-10-21T10:19:38.108Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios/:id, GET} route"}
{"timestamp":"2026-10-21T10:19:38.108Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios/:id, PUT} route"}
{"timestamp":"2026-10-21T10:19:38.108Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios/:id, DELETE} route"}
{"timestamp":"2026-10-21T10:19:38.108Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios/generate-from-json, POST} route"}
{"timestamp":"2026-10-21T10:19:38.108Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios/:id/save-as-custom-scenario, POST} route"}
{"timestamp":"2026-10-21T10:19:38.108Z","level":"log","context":"RoutesResolver","message":"CampaignController {/campaigns}:"}
{"timestamp":"2026-10-21T10:19:38.109Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns, POST} route"}
{"timestamp":"2026-10-21T10:19:38.109Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns, GET} route"}
{"timestamp":"2026-10-21T10:19:38.109Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id, GET} route"}
{"timestamp":"2026-10-21T10:19:38.109Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id/details, GET} route"}
{"timestamp":"2026-10-21T10:19:38.109Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id/employees, GET} route"}
{"timestamp":"2026-10-21T10:19:38.110Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id, PATCH} route"}
{"timestamp":"2026-10-21T10:19:38.110Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id/start, POST} route"}
{"timestamp":"2026-10-21T10:19:38.110Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id/stop, POST} route"}
{"timestamp":"2026-10-21T10:19:38.110Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id/duplicate, POST} route"}
{"timestamp":"2026-10-21T10:19:38.110Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id, DELETE} route"}
{"timestamp":"2026-10-21T10:19:38.111Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/auto-generate-program, POST} route"}
{"timestamp":"2026-10-21T10:19:38.111Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/generate-from-threat-intelligence, POST} route"}
{"timestamp":"2026-10-21T10:19:38.111Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id/risk-score, GET} route"}
{"timestamp":"2026-10-21T10:19:38.111Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/recalculate-risk-scores, POST} route"}
{"timestamp":"2026-10-21T10:19:38.111Z","level":"log","context":"RoutesResolver","message":"CampaignController {/api/campaigns}:"}
{"timestamp":"2026-10-21T10:19:38.111Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns, POST} route"}
{"timestamp":"2026-10-21T10:19:38.111Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns, GET} route"}
{"timestamp":"2026-10-21T10:19:38.112Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id, GET} route"}
{"timestamp":"2026-10-21T10:19:38.112Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id/details, GET} route"}
{"timestamp":"2026-10-21T10:19:38.112Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id/employees, GET} route"}
{"timestamp":"2026-10-21T10:19:38.112Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id, PATCH} route"}
{"timestamp":"2026-10-21T10:19:38.112Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id/start, POST} route"}
{"timestamp":"2026-10-21T10:19:38.112Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id/stop, POST} route"}
{"timestamp":"2026-10-21T10:19:38.112Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id/duplicate, POST} route"}
{"timestamp":"2026-10-21T10:19:38.113Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id, DELETE} route"}
{"timestamp":"2026-10-21T10:19:38.113Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/auto-generate-program, POST} route"}
{"timestamp":"2026-10-21T10:19:38.113Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/generate-from-threat-intelligence, POST} route"}
{"timestamp":"2026-10-21T10:19:38.113Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id/risk-score, GET} route"}
{"timestamp":"2026-10-21T10:19:38.113Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/recalculate-risk-scores, POST} route"}
{"timestamp":"2026-10-21T10:19:38.113Z","level":"log","context":"RoutesResolver","message":"NotificationsController {/notifications}:"}
{"timestamp":"2026-10-21T10:19:38.114Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications, POST} route"}
{"timestamp":"2026-10-21T10:19:38.114Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications, GET} route"}
{"timestamp":"2026-10-21T10:19:38.114Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/unread, GET} route"}
{"timestamp":"2026-10-21T10:19:38.114Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/unread-count, GET} route"}
{"timestamp":"2026-10-21T10:19:38.114Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/:id, GET} route"}
{"timestamp":"2026-10-21T10:19:38.115Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/:id, PATCH} route"}
{"timestamp":"2026-10-21T10:19:38.115Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/:id/read, PATCH} route"}
{"timestamp":"2026-10-21T10:19:38.115Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/mark-all-read, PATCH} route"}
{"timestamp":"2026-10-21T10:19:38.115Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/:id, DELETE} route"}
{"timestamp":"2026-10-21T10:19:38.116Z","level":"log","context":"RoutesResolver","message":"LandingPageController {/lp}:"}
{"timestamp":"2026-10-21T10:19:38.116Z","level":"log","context":"RouterExplorer","message":"Mapped {/lp/image, GET} route"}
{"timestamp":"2026-10-21T10:19:38.116Z","level":"log","context":"RouterExplorer","message":"Mapped {/lp/learning, GET} route"}
{"timestamp":"2026-10-21T10:19:38.116Z","level":"log","context":"RouterExplorer","message":"Mapped {/lp/submit, POST} route"}
{"timestamp":"2026-10-21T10:19:38.116Z","level":"log","context":"RouterExplorer","message":"Mapped {/lp/test, GET} route"}
{"timestamp":"2026-10-21T10:19:38.116Z","level":"warn","context":"LegacyRouteConverter","message":"Unsupported route path: \"/lp/*\". In previous versions, the symbols ?, *, and + were used to denote optional or repeating path parameters. The latest version of \"path-to-regexp\" now requires the use of named parameters. For example, instead of using a route like /users/* to capture all routes starting with \"/users\", you should use /users/*path. For more details, refer to the migration guide. Attempting to auto-convert..."}
{"timestamp":"2026-10-21T10:19:38.117Z","level":"log","context":"RouterExplorer","message":"Mapped {/lp/*, ALL} route"}
{"timestamp":"2026-10-21T10:19:38.117Z","level":"log","context":"RoutesResolver","message":"SupportController {/support}:"}
{"timestamp":"2026-10-21T10:19:38.118Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets, POST} route"}
{"timestamp":"2026-10-21T10:19:38.118Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets, GET} route"}
{"timestamp":"2026-10-21T10:19:38.118Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets/:id, GET} route"}
{"timestamp":"2026-10-21T10:19:38.118Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets/:id, PATCH} route"}
{"timestamp":"2026-10-21T10:19:38.118Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets/:id, DELETE} route"}
{"timestamp":"2026-10-21T10:19:38.118Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets/:id/messages, POST} route"}
{"timestamp":"2026-10-21T10:19:38.119Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets/:id/close, POST} route"}
{"timestamp":"2026-10-21T10:19:38.119Z","level":"log","context":"RoutesResolver","message":"BusninessMetricsController {/business-metrics}:"}
{"timestamp":"2026-10-21T10:19:38.119Z","level":"log","context":"RouterExplorer","message":"Mapped {/business-metrics, GET} route"}
{"timestamp":"2026-10-21T10:19:38.119Z","level":"log","context":"RoutesResolver","message":"UsersController {/users}:"}
{"timestamp":"2026-10-21T10:19:38.119Z","level":"log","context":"RouterExplorer","message":"Mapped {/users/:id, PUT} route"}
{"timestamp":"2026-10-21T10:19:38.119Z","level":"log","context":"RouterExplorer","message":"Mapped {/users/settings, GET} route"}
{"timestamp":"2026-10-21T10:19:38.120Z","level":"log","context":"RouterExplorer","message":"Mapped {/users/settings/general, PUT} route"}
{"timestamp":"2026-10-21T10:19:38.120Z","level":"log","context":"RouterExplorer","message":"Mapped {/users/company/settings, PUT} route"}
{"timestamp":"2026-10-21T10:19:38.120Z","level":"log","context":"RouterExplorer","message":"Mapped {/users/change-password, POST} route"}
{"timestamp":"2026-10-21T10:19:38.120Z","level":"log","context":"RouterExplorer","message":"Mapped {/users/localization/settings, PUT} route"}
{"timestamp":"2026-10-21T10:19:38.120Z","level":"log","context":"RoutesResolver","message":"PartnerController {/partner}:"}
{"timestamp":"2026-10-21T10:19:38.120Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses, POST} route"}
{"timestamp":"2026-10-21T10:19:38.121Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses, GET} route"}
{"timestamp":"2026-10-21T10:19:38.121Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses/:id, GET} route"}
{"timestamp":"2026-10-21T10:19:38.121Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses/:id, PUT} route"}
{"timestamp":"2026-10-21T10:19:38.121Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses/:id, DELETE} route"}
{"timestamp":"2026-10-21T10:19:38.121Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses/:id/impersonate, POST} route"}
{"timestamp":"2026-10-21T10:19:38.121Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses/stop-impersonation, POST} route"}
{"timestamp":"2026-10-21T10:19:38.122Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/license-usage, GET} route"}
{"timestamp":"2026-10-21T10:19:38.122Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/invoices, POST} route"}
{"timestamp":"2026-10-21T10:19:38.122Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/invoices, GET} route"}
{"timestamp":"2026-10-21T10:19:38.122Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/invoices/:id, GET} route"}
{"timestamp":"2026-10-21T10:19:38.122Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/invoices/:id, PUT} route"}
{"timestamp":"2026-10-21T10:19:38.122Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/invoices/:id, DELETE} route"}
{"timestamp":"2026-10-21T10:19:38.123Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/invoices/:id/mark-paid, PUT} route"}
{"timestamp":"2026-10-21T10:19:38.123Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/onboarding/generate-token, POST} route"}
{"timestamp":"2026-10-21T10:19:38.123Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/dashboard, GET} route"}
{"timestamp":"2026-10-21T10:19:38.123Z","level":"log","context":"RoutesResolver","message":"MspSubscriptionController {/partner/msp-subscriptions}:"}
{"timestamp":"2026-10-21T10:19:38.123Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/plans, POST} route"}
{"timestamp":"2026-10-21T10:19:38.123Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/plans, GET} route"}
{"timestamp":"2026-10-21T10:19:38.124Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/plans/:planId, GET} route"}
{"timestamp":"2026-10-21T10:19:38.124Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/plans/:planId, PUT} route"}
{"timestamp":"2026-10-21T10:19:38.124Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/plans/:planId, DELETE} route"}
{"timestamp":"2026-10-21T10:19:38.124Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/businesses/:businessId/subscription, POST} route"}
{"timestamp":"2026-10-21T10:19:38.124Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions, GET} route"}
{"timestamp":"2026-10-21T10:19:38.124Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/businesses/:businessId/subscription, GET} route"}
{"timestamp":"2026-10-21T10:19:38.125Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/businesses/:businessId/subscription, PUT} route"}
{"timestamp":"2026-10-21T10:19:38.125Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/businesses/:businessId/subscription, DELETE} route"}
{"timestamp":"2026-10-21T10:19:38.125Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/businesses/:businessId/subscription/limits, GET} route"}
{"timestamp":"2026-10-21T10:19:38.125Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/businesses/:businessId/subscription/change-plan, PUT} route"}
{"timestamp":"2026-10-21T10:19:38.125Z","level":"log","context":"RoutesResolver","message":"OnboardingController {/onboarding}:"}
{"timestamp":"2026-10-21T10:19:38.125Z","level":"log","context":"RouterExplorer","message":"Mapped {/onboarding/validate/:token, GET} route"}
{"timestamp":"2026-10-21T10:19:38.126Z","level":"log","context":"RouterExplorer","message":"Mapped {/onboarding/complete/:token, POST} route"}
{"timestamp":"2026-10-21T10:19:38.126Z","level":"log","context":"RoutesResolver","message":"ResellerController {/reseller}:"}
{"timestamp":"2026-10-21T10:19:38.126Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/businesses, POST} route"}
{"timestamp":"2026-10-21T10:19:38.126Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/businesses, GET} route"}
{"timestamp":"2026-10-21T10:19:38.126Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/businesses/:id, GET} route"}
{"timestamp":"2026-10-21T10:19:38.126Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/businesses/:id, PUT} route"}
{"timestamp":"2026-10-21T10:19:38.127Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/businesses/:id, DELETE} route"}
{"timestamp":"2026-10-21T10:19:38.127Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/license-usage, GET} route"}
{"timestamp":"2026-10-21T10:19:38.127Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/invoices, POST} route"}
{"timestamp":"2026-10-21T10:19:38.127Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/invoices, GET} route"}
{"timestamp":"2026-10-21T10:19:38.127Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/invoices/:id, GET} route"}
{"timestamp":"2026-10-21T10:19:38.127Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/invoices/:id, PUT} route"}
{"timestamp":"2026-10-21T10:19:38.128Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/invoices/:id, DELETE} route"}
{"timestamp":"2026-10-21T10:19:38.128Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/invoices/:id/mark-paid, PUT} route"}
{"timestamp":"2026-10-21T10:19:38.128Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/onboarding/generate-token, POST} route"}
{"timestamp":"2026-10-21T10:19:38.128Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/dashboard, GET} route"}
{"timestamp":"2026-10-21T10:19:38.128Z","level":"log","context":"RoutesResolver","message":"ResellerSubscriptionController {/reseller}:"}
{"timestamp":"2026-10-21T10:19:38.128Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/plans, POST} route"}
{"timestamp":"2026-10-21T10:19:38.129Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/plans, GET} route"}
{"timestamp":"2026-10-21T10:19:38.129Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/plans/:planId, GET} route"}
{"timestamp":"2026-10-21T10:19:38.129Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/plans/:planId, PUT} route"}
{"timestamp":"2026-10-21T10:19:38.129Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/plans/:planId, DELETE} route"}
{"timestamp":"2026-10-21T10:19:38.129Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/subscriptions/businesses/:businessId/subscription, POST} route"}
{"timestamp":"2026-10-21T10:19:38.129Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/subscriptions, GET} route"}
{"timestamp":"2026-10-21T10:19:38.130Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/subscriptions/businesses/:businessId/subscription, GET} route"}
{"timestamp":"2026-10-21T10:19:38.130Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/subscriptions/businesses/:businessId/subscription, PUT} route"}
{"timestamp":"2026-10-21T10:19:38.130Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/subscriptions/businesses/:businessId/subscription, DELETE} route"}
{"timestamp":"2026-10-21T10:19:38.130Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/subscriptions/businesses/:businessId/subscription/limits, GET} route"}
{"timestamp":"2026-10-21T10:19:38.130Z","level":"log","context":"RoutesResolver","message":"HealthController {/health}:"}
{"timestamp":"2026-10-21T10:19:38.130Z","level":"log","context":"RouterExplorer","message":"Mapped {/health, GET} route"}
{"timestamp":"2026-10-21T10:19:38.130Z","level":"log","context":"RouterExplorer","message":"Mapped {/health/test-logs, GET} route"}
{"timestamp":"2026-10-21T10:19:38.131Z","level":"log","context":"RoutesResolver","message":"AzureAdController {/azure-ad}:"}
{"timestamp":"2026-10-21T10:19:38.131Z","level":"log","context":"RouterExplorer","message":"Mapped {/azure-ad/config, POST} route"}
{"timestamp":"2026-10-21T10:19:38.131Z","level":"log","context":"RouterExplorer","message":"Mapped {/azure-ad/config, GET} route"}
{"timestamp":"2026-10-21T10:19:38.131Z","level":"log","context":"RouterExplorer","message":"Mapped {/azure-ad/test-connection, POST} route"}
{"timestamp":"2026-10-21T10:19:38.131Z","level":"log","context":"RouterExplorer","message":"Mapped {/azure-ad/sync, POST} route"}
{"timestamp":"2026-10-21T10:19:38.131Z","level":"log","context":"RoutesResolver","message":"ThreatsController {/threats}:"}
{"timestamp":"2026-10-21T10:19:38.131Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats, POST} route"}
{"timestamp":"2026-10-21T10:19:38.132Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats, GET} route"}
{"timestamp":"2026-10-21T10:19:38.132Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/chart-data, GET} route"}
{"timestamp":"2026-10-21T10:19:38.132Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/claude-search, POST} route"}
{"timestamp":"2026-10-21T10:19:38.132Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/claude-latest, POST} route"}
{"timestamp":"2026-10-21T10:19:38.132Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/claude-trending, POST} route"}
{"timestamp":"2026-10-21T10:19:38.133Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/claude-categories, POST} route"}
{"timestamp":"2026-10-21T10:19:38.133Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/claude-manual-search, POST} route"}
{"timestamp":"2026-10-21T10:19:38.133Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/claude-quick-search, POST} route"}
{"timestamp":"2026-10-21T10:19:38.133Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/scheduler-status, GET} route"}
{"timestamp":"2026-10-21T10:19:38.134Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/health-check, GET} route"}
{"timestamp":"2026-10-21T10:19:38.134Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/pause-scheduler, POST} route"}
{"timestamp":"2026-10-21T10:19:38.134Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/:id, GET} route"}
{"timestamp":"2026-10-21T10:19:38.135Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/:id, PATCH} route"}
{"timestamp":"2026-10-21T10:19:38.135Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/:id, DELETE} route"}
{"timestamp":"2026-10-21T10:19:38.135Z","level":"log","context":"RoutesResolver","message":"DomainController {/domains}:"}
{"timestamp":"2026-10-21T10:19:38.135Z","level":"log","context":"RouterExplorer","message":"Mapped {/domains, GET} route"}
{"timestamp":"2026-10-21T10:19:38.135Z","level":"log","context":"RouterExplorer","message":"Mapped {/domains/:id, GET} route"}
{"timestamp":"2026-10-21T10:19:38.135Z","level":"log","context":"RouterExplorer","message":"Mapped {/domains, POST} route"}
{"timestamp":"2026-10-21T10:19:38.136Z","level":"log","context":"RouterExplorer","message":"Mapped {/domains/:id, PUT} route"}
{"timestamp":"2026-10-21T10:19:38.136Z","level":"log","context":"RouterExplorer","message":"Mapped {/domains/:id, DELETE} route"}
{"timestamp":"2026-10-21T10:19:38.136Z","level":"log","context":"RouterExplorer","message":"Mapped {/domains/seed, POST} route"}
{"timestamp":"2026-10-21T10:19:38.136Z","level":"log","context":"RoutesResolver","message":"MspSubscriptionController {/msp-subscription}:"}
{"timestamp":"2026-10-21T10:19:38.136Z","level":"log","context":"RouterExplorer","message":"Mapped {/msp-subscription/current, GET} route"}
{"timestamp":"2026-10-21T10:19:38.136Z","level":"log","context":"RouterExplorer","message":"Mapped {/msp-subscription/invoices, GET} route"}
{"timestamp":"2026-10-21T10:19:38.137Z","level":"log","context":"RouterExplorer","message":"Mapped {/msp-subscription/invoice/:invoiceId/pdf, GET} route"}
{"timestamp":"2026-10-21T10:19:38.137Z","level":"log","context":"RoutesResolver","message":"MspSubscriptionController {/api/msp-subscription}:"}
{"timestamp":"2026-10-21T10:19:38.137Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/msp-subscription/current, GET} route"}
{"timestamp":"2026-10-21T10:19:38.137Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/msp-subscription/invoices, GET} route"}
{"timestamp":"2026-10-21T10:19:38.137Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/msp-subscription/invoice/:invoiceId/pdf, GET} route"}
{"timestamp":"2026-10-21T10:19:38.214Z","level":"log","context":"NestApplication","message":"Nest application successfully started"}
{"timestamp":"2026-10-21T10:19:38.250Z","level":"log","context":"Bootstrap","message":"Users API successfully started on port 3842"}
{"timestamp":"2026-10-21T10:19:38.250Z","level":"log","context":"SeedService","message":"🌱 Starting database seeding..."}
{"timestamp":"2026-10-21T10:19:38.253Z","level":"log","context":"SeedService","message":"Admin account already exists, skipping seed"}
{"timestamp":"2026-10-21T10:19:38.256Z","level":"log","context":"SeedService","message":"Reseller account already exists, skipping seed"}
{"timestamp":"2026-10-21T10:19:38.257Z","level":"log","context":"SeedService","message":"MSP account already exists, skipping seed"}
{"timestamp":"2026-10-21T10:19:38.257Z","level":"log","context":"SeedService","message":"✅ Database seeding completed successfully"}
{"timestamp":"2026-10-21T11:22:25.714Z","level":"warn","context":"LegacyRouteConverter","message":"Unsupported route path: \"/lp/*\". In previous versions, the symbols ?, *, and + were used to denote optional or repeating path parameters. The latest version of \"path-to-regexp\" now requires the use of named parameters. For example, instead of using a route like /users/* to capture all routes starting with \"/users\", you should use /users/*path. For more details, refer to the migration guide. Attempting to auto-convert..."}
{"timestamp":"2026-10-21T11:22:25.753Z","level":"log","context":"Bootstrap","message":"Starting Users API on port 3842..."}
{"timestamp":"2026-10-21T11:22:25.757Z","level":"log","context":"RoutesResolver","message":"UsersApiController {/}:"}
{"timestamp":"2026-10-21T11:22:25.761Z","level":"log","context":"RouterExplorer","message":"Mapped {/, GET} route"}
{"timestamp":"2026-10-21T11:22:25.761Z","level":"log","context":"RoutesResolver","message":"AuthController {/auth}:"}
{"timestamp":"2026-10-21T11:22:25.762Z","level":"log","context":"RouterExplorer","message":"Mapped {/auth/login, POST} route"}
{"timestamp":"2026-10-21T11:22:25.762Z","level":"log","context":"RouterExplorer","message":"Mapped {/auth/admin/login, POST} route"}
{"timestamp":"2026-10-21T11:22:25.763Z","level":"log","context":"RouterExplorer","message":"Mapped {/auth/send-otp, POST} route"}
{"timestamp":"2026-10-21T11:22:25.763Z","level":"log","context":"RouterExplorer","message":"Mapped {/auth/verify-otp, POST} route"}
{"timestamp":"2026-10-21T11:22:25.764Z","level":"log","context":"RouterExplorer","message":"Mapped {/auth/signup, POST} route"}
{"timestamp":"2026-10-21T11:22:25.764Z","level":"log","context":"RouterExplorer","message":"Mapped {/auth/subscription-status, GET} route"}
{"timestamp":"2026-10-21T11:22:25.765Z","level":"log","context":"RoutesResolver","message":"AdminMspController {/admin/msp}:"}
{"timestamp":"2026-10-21T11:22:25.765Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/msp, GET} route"}
{"timestamp":"2026-10-21T11:22:25.766Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/msp/:id, GET} route"}
{"timestamp":"2026-10-21T11:22:25.766Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/msp, POST} route"}
{"timestamp":"2026-10-21T11:22:25.767Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/msp/:id, PUT} route"}
{"timestamp":"2026-10-21T11:22:25.767Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/msp/:id, DELETE} route"}
{"timestamp":"2026-10-21T11:22:25.767Z","level":"log","context":"RoutesResolver","message":"AdminLicenseController {/admin/licenses}:"}
{"timestamp":"2026-10-21T11:22:25.768Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/licenses/summary, GET} route"}
{"timestamp":"2026-10-21T11:22:25.768Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/licenses/msp/:mspId, GET} route"}
{"timestamp":"2026-10-21T11:22:25.771Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/licenses/msp/:mspId, PUT} route"}
{"timestamp":"2026-10-21T11:22:25.771Z","level":"log","context":"RoutesResolver","message":"AdminImpersonationController {/admin/impersonation}:"}
{"timestamp":"2026-10-21T11:22:25.771Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/impersonation/msp-users, GET} route"}
{"timestamp":"2026-10-21T11:22:25.771Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/impersonation/impersonate, POST} route"}
{"timestamp":"2026-10-21T11:22:25.771Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/impersonation/stop, POST} route"}
{"timestamp":"2026-10-21T11:22:25.772Z","level":"log","context":"RoutesResolver","message":"AdminAiUsageController {/admin/ai-usage}:"}
{"timestamp":"2026-10-21T11:22:25.772Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-usage, GET} route"}
{"timestamp":"2026-10-21T11:22:25.772Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-usage/business/:businessId, GET} route"}
{"timestamp":"2026-10-21T11:22:25.772Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-usage/report/monthly, GET} route"}
{"timestamp":"2026-10-21T11:22:25.773Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-usage/pricing, GET} route"}
{"timestamp":"2026-10-21T11:22:25.773Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-usage/pricing, POST} route"}
{"timestamp":"2026-10-21T11:22:25.773Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-usage/credit/:businessId, PUT} route"}
{"timestamp":"2026-10-21T11:22:25.773Z","level":"log","context":"RoutesResolver","message":"AdminAiUsageController {/api/admin/ai-usage}:"}
{"timestamp":"2026-10-21T11:22:25.773Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-usage, GET} route"}
{"timestamp":"2026-10-21T11:22:25.773Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-usage/business/:businessId, GET} route"}
{"timestamp":"2026-10-21T11:22:25.774Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-usage/report/monthly, GET} route"}
{"timestamp":"2026-10-21T11:22:25.774Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-usage/pricing, GET} route"}
{"timestamp":"2026-10-21T11:22:25.774Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-usage/pricing, POST} route"}
{"timestamp":"2026-10-21T11:22:25.774Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-usage/credit/:businessId, PUT} route"}
{"timestamp":"2026-10-21T11:22:25.774Z","level":"log","context":"RoutesResolver","message":"AdminAiModelController {/admin/ai-models}:"}
{"timestamp":"2026-10-21T11:22:25.774Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models, POST} route"}
{"timestamp":"2026-10-21T11:22:25.775Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models, GET} route"}
{"timestamp":"2026-10-21T11:22:25.775Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/default, GET} route"}
{"timestamp":"2026-10-21T11:22:25.775Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/:id, GET} route"}
{"timestamp":"2026-10-21T11:22:25.775Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/:id, PUT} route"}
{"timestamp":"2026-10-21T11:22:25.775Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/:id, DELETE} route"}
{"timestamp":"2026-10-21T11:22:25.776Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/:id/set-default, POST} route"}
{"timestamp":"2026-10-21T11:22:25.776Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/assign-to-business, POST} route"}
{"timestamp":"2026-10-21T11:22:25.776Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/business/:businessId, GET} route"}
{"timestamp":"2026-10-21T11:22:25.776Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/:id/businesses, GET} route"}
{"timestamp":"2026-10-21T11:22:25.776Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/initialize-defaults, POST} route"}
{"timestamp":"2026-10-21T11:22:25.776Z","level":"log","context":"RoutesResolver","message":"AdminAiModelController {/api/admin/ai-models}:"}
{"timestamp":"2026-10-21T11:22:25.777Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models, POST} route"}
{"timestamp":"2026-10-21T11:22:25.777Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models, GET} route"}
{"timestamp":"2026-10-21T11:22:25.777Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/default, GET} route"}
{"timestamp":"2026-10-21T11:22:25.777Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/:id, GET} route"}
{"timestamp":"2026-10-21T11:22:25.777Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/:id, PUT} route"}
{"timestamp":"2026-10-21T11:22:25.777Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/:id, DELETE} route"}
{"timestamp":"2026-10-21T11:22:25.778Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/:id/set-default, POST} route"}
{"timestamp":"2026-10-21T11:22:25.778Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/assign-to-business, POST} route"}
{"timestamp":"2026-10-21T11:22:25.778Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/business/:businessId, GET} route"}
{"timestamp":"2026-10-21T11:22:25.778Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/:id/businesses, GET} route"}
{"timestamp":"2026-10-21T11:22:25.778Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/initialize-defaults, POST} route"}
{"timestamp":"2026-10-21T11:22:25.778Z","level":"log","context":"RoutesResolver","message":"AdminBusinessController {/admin/businesses}:"}
{"timestamp":"2026-10-21T11:22:25.779Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/businesses, GET} route"}
{"timestamp":"2026-10-21T11:22:25.779Z","level":"log","context":"RoutesResolver","message":"ResellerManagementController {/admin/resellers}:"}
{"timestamp":"2026-10-21T11:22:25.779Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/resellers, GET} route"}
{"timestamp":"2026-10-21T11:22:25.779Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/resellers/create-default, POST} route"}
{"timestamp":"2026-10-21T11:22:25.779Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/resellers, POST} route"}
{"timestamp":"2026-10-21T11:22:25.780Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/resellers/:id/toggle-status, PUT} route"}
{"timestamp":"2026-10-21T11:22:25.780Z","level":"log","context":"RoutesResolver","message":"SubscriptionController {/subscription}:"}
{"timestamp":"2026-10-21T11:22:25.780Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/plans, GET} route"}
{"timestamp":"2026-10-21T11:22:25.780Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/calculate-price, POST} route"}
{"timestamp":"2026-10-21T11:22:25.780Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/current, GET} route"}
{"timestamp":"2026-10-21T11:22:25.780Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/create, POST} route"}
{"timestamp":"2026-10-21T11:22:25.781Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/:id, PUT} route"}
{"timestamp":"2026-10-21T11:22:25.781Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/:id/cancel, DELETE} route"}
{"timestamp":"2026-10-21T11:22:25.781Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/sync/:stripeSubscriptionId, POST} route"}
{"timestamp":"2026-10-21T11:22:25.781Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/payments, GET} route"}
{"timestamp":"2026-10-21T11:22:25.781Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/payments/stats, GET} route"}
{"timestamp":"2026-10-21T11:22:25.782Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/payment/:id, GET} route"}
{"timestamp":"2026-10-21T11:22:25.782Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/payment-methods/attach, POST} route"}
{"timestamp":"2026-10-21T11:22:25.782Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/payment-methods/:paymentMethodId, DELETE} route"}
{"timestamp":"2026-10-21T11:22:25.782Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/payment-methods, GET} route"}
{"timestamp":"2026-10-21T11:22:25.782Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/setup-intent, POST} route"}
{"timestamp":"2026-10-21T11:22:25.782Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/update-employee-count, POST} route"}
{"timestamp":"2026-10-21T11:22:25.783Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/retry-payment/:subscriptionId, POST} route"}
{"timestamp":"2026-10-21T11:22:25.783Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/invoice/:invoiceId/pdf, GET} route"}
{"timestamp":"2026-10-21T11:22:25.783Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/preview-upgrade, POST} route"}
{"timestamp":"2026-10-21T11:22:25.783Z","level":"log","context":"RoutesResolver","message":"SubscriptionController {/api/subscription}:"}
{"timestamp":"2026-10-21T11:22:25.783Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/plans, GET} route"}
{"timestamp":"2026-10-21T11:22:25.783Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/calculate-price, POST} route"}
{"timestamp":"2026-10-21T11:22:25.783Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/current, GET} route"}
{"timestamp":"2026-10-21T11:22:25.784Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/create, POST} route"}
{"timestamp":"2026-10-21T11:22:25.784Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/:id, PUT} route"}
{"timestamp":"2026-10-21T11:22:25.784Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/:id/cancel, DELETE} route"}
{"timestamp":"2026-10-21T11:22:25.784Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/sync/:stripeSubscriptionId, POST} route"}
{"timestamp":"2026-10-21T11:22:25.784Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/payments, GET} route"}
{"timestamp":"2026-10-21T11:22:25.785Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/payments/stats, GET} route"}
{"timestamp":"2026-10-21T11:22:25.785Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/payment/:id, GET} route"}
{"timestamp":"2026-10-21T11:22:25.785Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/payment-methods/attach, POST} route"}
{"timestamp":"2026-10-21T11:22:25.785Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/payment-methods/:paymentMethodId, DELETE} route"}
{"timestamp":"2026-10-21T11:22:25.785Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/payment-methods, GET} route"}
{"timestamp":"2026-10-21T11:22:25.785Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/setup-intent, POST} route"}
{"timestamp":"2026-10-21T11:22:25.786Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/update-employee-count, POST} route"}
{"timestamp":"2026-10-21T11:22:25.786Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/retry-payment/:subscriptionId, POST} route"}
{"timestamp":"2026-10-21T11:22:25.786Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/invoice/:invoiceId/pdf, GET} route"}
{"timestamp":"2026-10-21T11:22:25.786Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/preview-upgrade, POST} route"}
{"timestamp":"2026-10-21T11:22:25.786Z","level":"log","context":"RoutesResolver","message":"StripeWebhookController {/stripe/webhook}:"}
{"timestamp":"2026-10-21T11:22:25.786Z","level":"log","context":"RouterExplorer","message":"Mapped {/stripe/webhook/test, GET} route"}
{"timestamp":"2026-10-21T11:22:25.786Z","level":"log","context":"RouterExplorer","message":"Mapped {/stripe/webhook, POST} route"}
{"timestamp":"2026-10-21T11:22:25.787Z","level":"log","context":"RoutesResolver","message":"EmailController {/email-templates}:"}
{"timestamp":"2026-10-21T11:22:25.787Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates/test, POST} route"}
{"timestamp":"2026-10-21T11:22:25.787Z","level":"log","context":"RoutesResolver","message":"EmployeeController {/employees}:"}
{"timestamp":"2026-10-21T11:22:25.787Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees, POST} route"}
{"timestamp":"2026-10-21T11:22:25.787Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees, GET} route"}
{"timestamp":"2026-10-21T11:22:25.787Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees/export, GET} route"}
{"timestamp":"2026-10-21T11:22:25.788Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees/risk-stats, GET} route"}
{"timestamp":"2026-10-21T11:22:25.788Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees/:id, GET} route"}
{"timestamp":"2026-10-21T11:22:25.788Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees/:id, PUT} route"}
{"timestamp":"2026-10-21T11:22:25.788Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees/:id, DELETE} route"}
{"timestamp":"2026-10-21T11:22:25.788Z","level":"log","context":"RoutesResolver","message":"GroupController {/groups}:"}
{"timestamp":"2026-10-21T11:22:25.788Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups, POST} route"}
{"timestamp":"2026-10-21T11:22:25.789Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups, GET} route"}
{"timestamp":"2026-10-21T11:22:25.789Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups/standard, GET} route"}
{"timestamp":"2026-10-21T11:22:25.789Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups/:id, GET} route"}
{"timestamp":"2026-10-21T11:22:25.789Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups/:id, PUT} route"}
{"timestamp":"2026-10-21T11:22:25.789Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups/:id, DELETE} route"}
{"timestamp":"2026-10-21T11:22:25.789Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups/:id/info, GET} route"}
{"timestamp":"2026-10-21T11:22:25.790Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups/:id/with-employees, GET} route"}
{"timestamp":"2026-10-21T11:22:25.790Z","level":"log","context":"RoutesResolver","message":"SenderProfileController {/sender-profiles}:"}
{"timestamp":"2026-10-21T11:22:25.790Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles, GET} route"}
{"timestamp":"2026-10-21T11:22:25.790Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles/:id, GET} route"}
{"timestamp":"2026-10-21T11:22:25.790Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles, POST} route"}
{"timestamp":"2026-10-21T11:22:25.790Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles/:id, PUT} route"}
{"timestamp":"2026-10-21T11:22:25.790Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles/:id, DELETE} route"}
{"timestamp":"2026-10-21T11:22:25.791Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles/:id/verify-domain, POST} route"}
{"timestamp":"2026-10-21T11:22:25.791Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles/domain-verification, GET} route"}
{"timestamp":"2026-10-21T11:22:25.791Z","level":"log","context":"RoutesResolver","message":"EmailTemplateController {/email-templates}:"}
{"timestamp":"2026-10-21T11:22:25.791Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates, GET} route"}
{"timestamp":"2026-10-21T11:22:25.791Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates/:id, GET} route"}
{"timestamp":"2026-10-21T11:22:25.791Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates, POST} route"}
{"timestamp":"2026-10-21T11:22:25.792Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates/:id, PUT} route"}
{"timestamp":"2026-10-21T11:22:25.792Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates/:id, DELETE} route"}
{"timestamp":"2026-10-21T11:22:25.792Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates/:id/duplicate, POST} route"}
{"timestamp":"2026-10-21T11:22:25.792Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates/:id/preview, GET} route"}
{"timestamp":"2026-10-21T11:22:25.792Z","level":"log","context":"RoutesResolver","message":"ScenarioController {/scenarios}:"}
{"timestamp":"2026-10-21T11:22:25.792Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios, POST} route"}
{"timestamp":"2026-10-21T11:22:25.793Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios/generate-content, POST} route"}
{"timestamp":"2026-10-21T11:22:25.793Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios, GET} route"}
{"timestamp":"2026-10-21T11:22:25.793Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios/:id, GET} route"}
{"timestamp":"2026-10-21T11:22:25.793Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios/:id, PUT} route"}
{"timestamp":"2026-10-21T11:22:25.793Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios/:id, DELETE} route"}
{"timestamp":"2026-10-21T11:22:25.793Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios/generate-from-json, POST} route"}
{"timestamp":"2026-10-21T11:22:25.794Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios/:id/save-as-custom-scenario, POST} route"}
{"timestamp":"2026-10-21T11:22:25.794Z","level":"log","context":"RoutesResolver","message":"CampaignController {/campaigns}:"}
{"timestamp":"2026-10-21T11:22:25.794Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns, POST} route"}
{"timestamp":"2026-10-21T11:22:25.794Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns, GET} route"}
{"timestamp":"2026-10-21T11:22:25.794Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id, GET} route"}
{"timestamp":"2026-10-21T11:22:25.794Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id/details, GET} route"}
{"timestamp":"2026-10-21T11:22:25.795Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id/employees, GET} route"}
{"timestamp":"2026-10-21T11:22:25.795Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id, PATCH} route"}
{"timestamp":"2026-10-21T11:22:25.795Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id/start, POST} route"}
{"timestamp":"2026-10-21T11:22:25.795Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id/stop, POST} route"}
{"timestamp":"2026-10-21T11:22:25.795Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id/duplicate, POST} route"}
{"timestamp":"2026-10-21T11:22:25.796Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id, DELETE} route"}
{"timestamp":"2026-10-21T11:22:25.796Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/auto-generate-program, POST} route"}
{"timestamp":"2026-10-21T11:22:25.796Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/generate-from-threat-intelligence, POST} route"}
{"timestamp":"2026-10-21T11:22:25.796Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id/risk-score, GET} route"}
{"timestamp":"2026-10-21T11:22:25.796Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/recalculate-risk-scores, POST} route"}
{"timestamp":"2026-10-21T11:22:25.796Z","level":"log","context":"RoutesResolver","message":"CampaignController {/api/campaigns}:"}
{"timestamp":"2026-10-21T11:22:25.796Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns, POST} route"}
{"timestamp":"2026-10-21T11:22:25.797Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns, GET} route"}
{"timestamp":"2026-10-21T11:22:25.797Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id, GET} route"}
{"timestamp":"2026-10-21T11:22:25.797Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id/details, GET} route"}
{"timestamp":"2026-10-21T11:22:25.797Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id/employees, GET} route"}
{"timestamp":"2026-10-21T11:22:25.797Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id, PATCH} route"}
{"timestamp":"2026-10-21T11:22:25.797Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id/start, POST} route"}
{"timestamp":"2026-10-21T11:22:25.798Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id/stop, POST} route"}
{"timestamp":"2026-10-21T11:22:25.798Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id/duplicate, POST} route"}
{"timestamp":"2026-10-21T11:22:25.798Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id, DELETE} route"}
{"timestamp":"2026-10-21T11:22:25.798Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/auto-generate-program, POST} route"}
{"timestamp":"2026-10-21T11:22:25.798Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/generate-from-threat-intelligence, POST} route"}
{"timestamp":"2026-10-21T11:22:25.798Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id/risk-score, GET} route"}
{"timestamp":"2026-10-21T11:22:25.799Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/recalculate-risk-scores, POST} route"}
{"timestamp":"2026-10-21T11:22:25.799Z","level":"log","context":"RoutesResolver","message":"NotificationsController {/notifications}:"}
{"timestamp":"2026-10-21T11:22:25.799Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications, POST} route"}
{"timestamp":"2026-10-21T11:22:25.799Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications, GET} route"}
{"timestamp":"2026-10-21T11:22:25.799Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/unread, GET} route"}
{"timestamp":"2026-10-21T11:22:25.799Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/unread-count, GET} route"}
{"timestamp":"2026-10-21T11:22:25.800Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/:id, GET} route"}
{"timestamp":"2026-10-21T11:22:25.800Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/:id, PATCH} route"}
{"timestamp":"2026-10-21T11:22:25.800Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/:id/read, PATCH} route"}
{"timestamp":"2026-10-21T11:22:25.800Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/mark-all-read, PATCH} route"}
{"timestamp":"2026-10-21T11:22:25.801Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/:id, DELETE} route"}
{"timestamp":"2026-10-21T11:22:25.801Z","level":"log","context":"RoutesResolver","message":"LandingPageController {/lp}:"}
{"timestamp":"2026-10-21T11:22:25.801Z","level":"log","context":"RouterExplorer","message":"Mapped {/lp/image, GET} route"}
{"timestamp":"2026-10-21T11:22:25.801Z","level":"log","context":"RouterExplorer","message":"Mapped {/lp/learning, GET} route"}
{"timestamp":"2026-10-21T11:22:25.801Z","level":"log","context":"RouterExplorer","message":"Mapped {/lp/submit, POST} route"}
{"timestamp":"2026-10-21T11:22:25.801Z","level":"log","context":"RouterExplorer","message":"Mapped {/lp/test, GET} route"}
{"timestamp":"2026-10-21T11:22:25.802Z","level":"warn","context":"LegacyRouteConverter","message":"Unsupported route path: \"/lp/*\". In previous versions, the symbols ?, *, and + were used to denote optional or repeating path parameters. The latest version of \"path-to-regexp\" now requires the use of named parameters. For example, instead of using a route like /users/* to capture all routes starting with \"/users\", you should use /users/*path. For more details, refer to the migration guide. Attempting to auto-convert..."}
{"timestamp":"2026-10-21T11:22:25.802Z","level":"log","context":"RouterExplorer","message":"Mapped {/lp/*, ALL} route"}
{"timestamp":"2026-10-21T11:22:25.803Z","level":"log","context":"RoutesResolver","message":"SupportController {/support}:"}
{"timestamp":"2026-10-21T11:22:25.803Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets, POST} route"}
{"timestamp":"2026-10-21T11:22:25.803Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets, GET} route"}
{"timestamp":"2026-10-21T11:22:25.803Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets/:id, GET} route"}
{"timestamp":"2026-10-21T11:22:25.803Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets/:id, PATCH} route"}
{"timestamp":"2026-10-21T11:22:25.803Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets/:id, DELETE} route"}
{"timestamp":"2026-10-21T11:22:25.804Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets/:id/messages, POST} route"}
{"timestamp":"2026-10-21T11:22:25.804Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets/:id/close, POST} route"}
{"timestamp":"2026-10-21T11:22:25.804Z","level":"log","context":"RoutesResolver","message":"BusninessMetricsController {/business-metrics}:"}
{"timestamp":"2026-10-21T11:22:25.804Z","level":"log","context":"RouterExplorer","message":"Mapped {/business-metrics, GET} route"}
{"timestamp":"2026-10-21T11:22:25.804Z","level":"log","context":"RoutesResolver","message":"UsersController {/users}:"}
{"timestamp":"2026-10-21T11:22:25.804Z","level":"log","context":"RouterExplorer","message":"Mapped {/users/:id, PUT} route"}
{"timestamp":"2026-10-21T11:22:25.805Z","level":"log","context":"RouterExplorer","message":"Mapped {/users/settings, GET} route"}
{"timestamp":"2026-10-21T11:22:25.805Z","level":"log","context":"RouterExplorer","message":"Mapped {/users/settings/general, PUT} route"}
{"timestamp":"2026-10-21T11:22:25.805Z","level":"log","context":"RouterExplorer","message":"Mapped {/users/company/settings, PUT} route"}
{"timestamp":"2026-10-21T11:22:25.805Z","level":"log","context":"RouterExplorer","message":"Mapped {/users/change-password, POST} route"}
{"timestamp":"2026-10-21T11:22:25.805Z","level":"log","context":"RouterExplorer","message":"Mapped {/users/localization/settings, PUT} route"}
{"timestamp":"2026-10-21T11:22:25.805Z","level":"log","context":"RoutesResolver","message":"PartnerController {/partner}:"}
{"timestamp":"2026-10-21T11:22:25.806Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses, POST} route"}
{"timestamp":"2026-10-21T11:22:25.806Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses, GET} route"}
{"timestamp":"2026-10-21T11:22:25.806Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses/:id, GET} route"}
{"timestamp":"2026-10-21T11:22:25.806Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses/:id, PUT} route"}
{"timestamp":"2026-10-21T11:22:25.806Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses/:id, DELETE} route"}
{"timestamp":"2026-10-21T11:22:25.807Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses/:id/impersonate, POST} route"}
{"timestamp":"2026-10-21T11:22:25.807Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses/stop-impersonation, POST} route"}
{"timestamp":"2026-10-21T11:22:25.807Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/license-usage, GET} route"}
{"timestamp":"2026-10-21T11:22:25.807Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/invoices, POST} route"}
{"timestamp":"2026-10-21T11:22:25.807Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/invoices, GET} route"}
{"timestamp":"2026-10-21T11:22:25.807Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/invoices/:id, GET} route"}
{"timestamp":"2026-10-21T11:22:25.808Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/invoices/:id, PUT} route"}
{"timestamp":"2026-10-21T11:22:25.808Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/invoices/:id, DELETE} route"}
{"timestamp":"2026-10-21T11:22:25.808Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/invoices/:id/mark-paid, PUT} route"}
{"timestamp":"2026-10-21T11:22:25.808Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/onboarding/generate-token, POST} route"}
{"timestamp":"2026-10-21T11:22:25.808Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/dashboard, GET} route"}
{"timestamp":"2026-10-21T11:22:25.808Z","level":"log","context":"RoutesResolver","message":"MspSubscriptionController {/partner/msp-subscriptions}:"}
{"timestamp":"2026-10-21T11:22:25.809Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/plans, POST} route"}
{"timestamp":"2026-10-21T11:22:25.809Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/plans, GET} route"}
{"timestamp":"2026-10-21T11:22:25.809Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/plans/:planId, GET} route"}
{"timestamp":"2026-10-21T11:22:25.809Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/plans/:planId, PUT} route"}
{"timestamp":"2026-10-21T11:22:25.809Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/plans/:planId, DELETE} route"}
{"timestamp":"2026-10-21T11:22:25.809Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/businesses/:businessId/subscription, POST} route"}
{"timestamp":"2026-10-21T11:22:25.810Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions, GET} route"}
{"timestamp":"2026-10-21T11:22:25.810Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/businesses/:businessId/subscription, GET} route"}
{"timestamp":"2026-10-21T11:22:25.810Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/businesses/:businessId/subscription, PUT} route"}
{"timestamp":"2026-10-21T11:22:25.810Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/businesses/:businessId/subscription, DELETE} route"}
{"timestamp":"2026-10-21T11:22:25.810Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/businesses/:businessId/subscription/limits, GET} route"}
{"timestamp":"2026-10-21T11:22:25.811Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/businesses/:businessId/subscription/change-plan, PUT} route"}
{"timestamp":"2026-10-21T11:22:25.811Z","level":"log","context":"RoutesResolver","message":"OnboardingController {/onboarding}:"}
{"timestamp":"2026-10-21T11:22:25.811Z","level":"log","context":"RouterExplorer","message":"Mapped {/onboarding/validate/:token, GET} route"}
{"timestamp":"2026-10-21T11:22:25.811Z","level":"log","context":"RouterExplorer","message":"Mapped {/onboarding/complete/:token, POST} route"}
{"timestamp":"2026-10-21T11:22:25.811Z","level":"log","context":"RoutesResolver","message":"ResellerController {/reseller}:"}
{"timestamp":"2026-10-21T11:22:25.811Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/businesses, POST} route"}
{"timestamp":"2026-10-21T11:22:25.812Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/businesses, GET} route"}
{"timestamp":"2026-10-21T11:22:25.812Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/businesses/:id, GET} route"}
{"timestamp":"2026-10-21T11:22:25.812Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/businesses/:id, PUT} route"}
{"timestamp":"2026-10-21T11:22:25.812Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/businesses/:id, DELETE} route"}
{"timestamp":"2026-10-21T11:22:25.812Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/license-usage, GET} route"}
{"timestamp":"2026-10-21T11:22:25.812Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/invoices, POST} route"}
{"timestamp":"2026-10-21T11:22:25.813Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/invoices, GET} route"}
{"timestamp":"2026-10-21T11:22:25.813Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/invoices/:id, GET} route"}
{"timestamp":"2026-10-21T11:22:25.813Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/invoices/:id, PUT} route"}
{"timestamp":"2026-10-21T11:22:25.813Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/invoices/:id, DELETE} route"}
{"timestamp":"2026-10-21T11:22:25.813Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/invoices/:id/mark-paid, PUT} route"}
{"timestamp":"2026-10-21T11:22:25.813Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/onboarding/generate-token, POST} route"}
{"timestamp":"2026-10-21T11:22:25.814Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/dashboard, GET} route"}
{"timestamp":"2026-10-21T11:22:25.814Z","level":"log","context":"RoutesResolver","message":"ResellerSubscriptionController {/reseller}:"}
{"timestamp":"2026-10-21T11:22:25.814Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/plans, POST} route"}
{"timestamp":"2026-10-21T11:22:25.814Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/plans, GET} route"}
{"timestamp":"2026-10-21T11:22:25.814Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/plans/:planId, GET} route"}
{"timestamp":"2026-10-21T11:22:25.814Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/plans/:planId, PUT} route"}
{"timestamp":"2026-10-21T11:22:25.815Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/plans/:planId, DELETE} route"}
{"timestamp":"2026-10-21T11:22:25.815Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/subscriptions/businesses/:businessId/subscription, POST} route"}
{"timestamp":"2026-10-21T11:22:25.815Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/subscriptions, GET} route"}
{"timestamp":"2026-10-21T11:22:25.815Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/subscriptions/businesses/:businessId/subscription, GET} route"}
{"timestamp":"2026-10-21T11:22:25.815Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/subscriptions/businesses/:businessId/subscription, PUT} route"}
{"timestamp":"2026-10-21T11:22:25.816Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/subscriptions/businesses/:businessId/subscription, DELETE} route"}
{"timestamp":"2026-10-21T11:22:25.816Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/subscriptions/businesses/:businessId/subscription/limits, GET} route"}
{"timestamp":"2026-10-21T11:22:25.816Z","level":"log","context":"RoutesResolver","message":"HealthController {/health}:"}
{"timestamp":"2026-10-21T11:22:25.816Z","level":"log","context":"RouterExplorer","message":"Mapped {/health, GET} route"}
{"timestamp":"2026-10-21T11:22:25.816Z","level":"log","context":"RouterExplorer","message":"Mapped {/health/test-logs, GET} route"}
{"timestamp":"2026-10-21T11:22:25.816Z","level":"log","context":"RoutesResolver","message":"AzureAdController {/azure-ad}:"}
{"timestamp":"2026-10-21T11:22:25.816Z","level":"log","context":"RouterExplorer","message":"Mapped {/azure-ad/config, POST} route"}
{"timestamp":"2026-10-21T11:22:25.817Z","level":"log","context":"RouterExplorer","message":"Mapped {/azure-ad/config, GET} route"}
{"timestamp":"2026-10-21T11:22:25.817Z","level":"log","context":"RouterExplorer","message":"Mapped {/azure-ad/test-connection, POST} route"}
{"timestamp":"2026-10-21T11:22:25.817Z","level":"log","context":"RouterExplorer","message":"Mapped {/azure-ad/sync, POST} route"}
{"timestamp":"2026-10-21T11:22:25.817Z","level":"log","context":"RoutesResolver","message":"ThreatsController {/threats}:"}
{"timestamp":"2026-10-21T11:22:25.817Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats, POST} route"}
{"timestamp":"2026-10-21T11:22:25.817Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats, GET} route"}
{"timestamp":"2026-10-21T11:22:25.818Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/chart-data, GET} route"}
{"timestamp":"2026-10-21T11:22:25.818Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/claude-search, POST} route"}
{"timestamp":"2026-10-21T11:22:25.818Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/claude-latest, POST} route"}
{"timestamp":"2026-10-21T11:22:25.818Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/claude-trending, POST} route"}
{"timestamp":"2026-10-21T11:22:25.818Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/claude-categories, POST} route"}
{"timestamp":"2026-10-21T11:22:25.818Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/claude-manual-search, POST} route"}
{"timestamp":"2026-10-21T11:22:25.819Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/claude-quick-search, POST} route"}
{"timestamp":"2026-10-21T11:22:25.819Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/scheduler-status, GET} route"}
{"timestamp":"2026-10-21T11:22:25.819Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/health-check, GET} route"}
{"timestamp":"2026-10-21T11:22:25.819Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/pause-scheduler, POST} route"}
{"timestamp":"2026-10-21T11:22:25.819Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/:id, GET} route"}
{"timestamp":"2026-10-21T11:22:25.819Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/:id, PATCH} route"}
{"timestamp":"2026-10-21T11:22:25.820Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/:id, DELETE} route"}
{"timestamp":"2026-10-21T11:22:25.820Z","level":"log","context":"RoutesResolver","message":"DomainController {/domains}:"}
{"timestamp":"2026-10-21T11:22:25.820Z","level":"log","context":"RouterExplorer","message":"Mapped {/domains, GET} route"}
{"timestamp":"2026-10-21T11:22:25.820Z","level":"log","context":"RouterExplorer","message":"Mapped {/domains/:id, GET} route"}
{"timestamp":"2026-10-21T11:22:25.820Z","level":"log","context":"RouterExplorer","message":"Mapped {/domains, POST} route"}
{"timestamp":"2026-10-21T11:22:25.820Z","level":"log","context":"RouterExplorer","message":"Mapped {/domains/:id, PUT} route"}
{"timestamp":"2026-10-21T11:22:25.821Z","level":"log","context":"RouterExplorer","message":"Mapped {/domains/:id, DELETE} route"}
{"timestamp":"2026-10-21T11:22:25.821Z","level":"log","context":"RouterExplorer","message":"Mapped {/domains/seed, POST} route"}
{"timestamp":"2026-10-21T11:22:25.821Z","level":"log","context":"RoutesResolver","message":"MspSubscriptionController {/msp-subscription}:"}
{"timestamp":"2026-10-21T11:22:25.821Z","level":"log","context":"RouterExplorer","message":"Mapped {/msp-subscription/current, GET} route"}
{"timestamp":"2026-10-21T11:22:25.821Z","level":"log","context":"RouterExplorer","message":"Mapped {/msp-subscription/invoices, GET} route"}
{"timestamp":"2026-10-21T11:22:25.821Z","level":"log","context":"RouterExplorer","message":"Mapped {/msp-subscription/invoice/:invoiceId/pdf, GET} route"}
{"timestamp":"2026-10-21T11:22:25.821Z","level":"log","context":"RoutesResolver","message":"MspSubscriptionController {/api/msp-subscription}:"}
{"timestamp":"2026-10-21T11:22:25.822Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/msp-subscription/current, GET} route"}
{"timestamp":"2026-10-21T11:22:25.822Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/msp-subscription/invoices, GET} route"}
{"timestamp":"2026-10-21T11:22:25.822Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/msp-subscription/invoice/:invoiceId/pdf, GET} route"}
{"timestamp":"2026-10-21T11:22:25.898Z","level":"log","context":"NestApplication","message":"Nest application successfully started"}
{"timestamp":"2026-10-21T11:22:25.920Z","level":"log","context":"Bootstrap","message":"Users API successfully started on port 3842"}
{"timestamp":"2026-10-21T11:22:25.920Z","level":"log","context":"SeedService","message":"🌱 Starting database seeding..."}
{"timestamp":"2026-10-21T11:22:25.928Z","level":"log","context":"SeedService","message":"Admin account already exists, skipping seed"}
{"timestamp":"2026-10-21T11:22:25.932Z","level":"log","context":"SeedService","message":"Reseller account already exists, skipping seed"}
{"timestamp":"2026-10-21T11:22:25.934Z","level":"log","context":"SeedService","message":"MSP account already exists, skipping seed"}
{"timestamp":"2026-10-21T11:22:25.934Z","level":"log","context":"SeedService","message":"✅ Database seeding completed successfully"}
{"timestamp":"2026-10-21T11:22:25.962Z","level":"log","context":"UsersApiController","message":"Hello endpoint accessed"}
{"timestamp":"2026-10-21T12:25:17.089Z","level":"warn","context":"LegacyRouteConverter","message":"Unsupported route path: \"/lp/*\". In previous versions, the symbols ?, *, and + were used to denote optional or repeating path parameters. The latest version of \"path-to-regexp\" now requires the use of named parameters. For example, instead of using a route like /users/* to capture all routes starting with \"/users\", you should use /users/*path. For more details, refer to the migration guide. Attempting to auto-convert..."}
{"timestamp":"2026-10-21T12:25:17.126Z","level":"log","context":"Bootstrap","message":"Starting Users API on port 3842..."}
{"timestamp":"2026-10-21T12:25:17.130Z","level":"log","context":"RoutesResolver","message":"UsersApiController {/}:"}
{"timestamp":"2026-10-21T12:25:17.133Z","level":"log","context":"RouterExplorer","message":"Mapped {/, GET} route"}
{"timestamp":"2026-10-21T12:25:17.134Z","level":"log","context":"RoutesResolver","message":"AuthController {/auth}:"}
{"timestamp":"2026-10-21T12:25:17.134Z","level":"log","context":"RouterExplorer","message":"Mapped {/auth/login, POST} route"}
{"timestamp":"2026-10-21T12:25:17.135Z","level":"log","context":"RouterExplorer","message":"Mapped {/auth/admin/login, POST} route"}
{"timestamp":"2026-10-21T12:25:17.135Z","level":"log","context":"RouterExplorer","message":"Mapped {/auth/send-otp, POST} route"}
{"timestamp":"2026-10-21T12:25:17.136Z","level":"log","context":"RouterExplorer","message":"Mapped {/auth/verify-otp, POST} route"}
{"timestamp":"2026-10-21T12:25:17.136Z","level":"log","context":"RouterExplorer","message":"Mapped {/auth/signup, POST} route"}
{"timestamp":"2026-10-21T12:25:17.137Z","level":"log","context":"RouterExplorer","message":"Mapped {/auth/subscription-status, GET} route"}
{"timestamp":"2026-10-21T12:25:17.137Z","level":"log","context":"RoutesResolver","message":"AdminMspController {/admin/msp}:"}
{"timestamp":"2026-10-21T12:25:17.137Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/msp, GET} route"}
{"timestamp":"2026-10-21T12:25:17.138Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/msp/:id, GET} route"}
{"timestamp":"2026-10-21T12:25:17.139Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/msp, POST} route"}
{"timestamp":"2026-10-21T12:25:17.139Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/msp/:id, PUT} route"}
{"timestamp":"2026-10-21T12:25:17.139Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/msp/:id, DELETE} route"}
{"timestamp":"2026-10-21T12:25:17.140Z","level":"log","context":"RoutesResolver","message":"AdminLicenseController {/admin/licenses}:"}
{"timestamp":"2026-10-21T12:25:17.140Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/licenses/summary, GET} route"}
{"timestamp":"2026-10-21T12:25:17.140Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/licenses/msp/:mspId, GET} route"}
{"timestamp":"2026-10-21T12:25:17.140Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/licenses/msp/:mspId, PUT} route"}
{"timestamp":"2026-10-21T12:25:17.140Z","level":"log","context":"RoutesResolver","message":"AdminImpersonationController {/admin/impersonation}:"}
{"timestamp":"2026-10-21T12:25:17.141Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/impersonation/msp-users, GET} route"}
{"timestamp":"2026-10-21T12:25:17.141Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/impersonation/impersonate, POST} route"}
{"timestamp":"2026-10-21T12:25:17.141Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/impersonation/stop, POST} route"}
{"timestamp":"2026-10-21T12:25:17.141Z","level":"log","context":"RoutesResolver","message":"AdminAiUsageController {/admin/ai-usage}:"}
{"timestamp":"2026-10-21T12:25:17.142Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-usage, GET} route"}
{"timestamp":"2026-10-21T12:25:17.145Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-usage/business/:businessId, GET} route"}
{"timestamp":"2026-10-21T12:25:17.145Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-usage/report/monthly, GET} route"}
{"timestamp":"2026-10-21T12:25:17.146Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-usage/pricing, GET} route"}
{"timestamp":"2026-10-21T12:25:17.146Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-usage/pricing, POST} route"}
{"timestamp":"2026-10-21T12:25:17.146Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-usage/credit/:businessId, PUT} route"}
{"timestamp":"2026-10-21T12:25:17.146Z","level":"log","context":"RoutesResolver","message":"AdminAiUsageController {/api/admin/ai-usage}:"}
{"timestamp":"2026-10-21T12:25:17.146Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-usage, GET} route"}
{"timestamp":"2026-10-21T12:25:17.147Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-usage/business/:businessId, GET} route"}
{"timestamp":"2026-10-21T12:25:17.147Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-usage/report/monthly, GET} route"}
{"timestamp":"2026-10-21T12:25:17.147Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-usage/pricing, GET} route"}
{"timestamp":"2026-10-21T12:25:17.147Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-usage/pricing, POST} route"}
{"timestamp":"2026-10-21T12:25:17.147Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-usage/credit/:businessId, PUT} route"}
{"timestamp":"2026-10-21T12:25:17.147Z","level":"log","context":"RoutesResolver","message":"AdminAiModelController {/admin/ai-models}:"}
{"timestamp":"2026-10-21T12:25:17.148Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models, POST} route"}
{"timestamp":"2026-10-21T12:25:17.148Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models, GET} route"}
{"timestamp":"2026-10-21T12:25:17.148Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/default, GET} route"}
{"timestamp":"2026-10-21T12:25:17.148Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/:id, GET} route"}
{"timestamp":"2026-10-21T12:25:17.149Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/:id, PUT} route"}
{"timestamp":"2026-10-21T12:25:17.149Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/:id, DELETE} route"}
{"timestamp":"2026-10-21T12:25:17.149Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/:id/set-default, POST} route"}
{"timestamp":"2026-10-21T12:25:17.149Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/assign-to-business, POST} route"}
{"timestamp":"2026-10-21T12:25:17.149Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/business/:businessId, GET} route"}
{"timestamp":"2026-10-21T12:25:17.150Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/:id/businesses, GET} route"}
{"timestamp":"2026-10-21T12:25:17.150Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/initialize-defaults, POST} route"}
{"timestamp":"2026-10-21T12:25:17.150Z","level":"log","context":"RoutesResolver","message":"AdminAiModelController {/api/admin/ai-models}:"}
{"timestamp":"2026-10-21T12:25:17.150Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models, POST} route"}
{"timestamp":"2026-10-21T12:25:17.150Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models, GET} route"}
{"timestamp":"2026-10-21T12:25:17.150Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/default, GET} route"}
{"timestamp":"2026-10-21T12:25:17.150Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/:id, GET} route"}
{"timestamp":"2026-10-21T12:25:17.151Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/:id, PUT} route"}
{"timestamp":"2026-10-21T12:25:17.151Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/:id, DELETE} route"}
{"timestamp":"2026-10-21T12:25:17.151Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/:id/set-default, POST} route"}
{"timestamp":"2026-10-21T12:25:17.151Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/assign-to-business, POST} route"}
{"timestamp":"2026-10-21T12:25:17.151Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/business/:businessId, GET} route"}
{"timestamp":"2026-10-21T12:25:17.151Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/:id/businesses, GET} route"}
{"timestamp":"2026-10-21T12:25:17.152Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/initialize-defaults, POST} route"}
{"timestamp":"2026-10-21T12:25:17.152Z","level":"log","context":"RoutesResolver","message":"AdminBusinessController {/admin/businesses}:"}
{"timestamp":"2026-10-21T12:25:17.152Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/businesses, GET} route"}
{"timestamp":"2026-10-21T12:25:17.152Z","level":"log","context":"RoutesResolver","message":"ResellerManagementController {/admin/resellers}:"}
{"timestamp":"2026-10-21T12:25:17.152Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/resellers, GET} route"}
{"timestamp":"2026-10-21T12:25:17.152Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/resellers/create-default, POST} route"}
{"timestamp":"2026-10-21T12:25:17.153Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/resellers, POST} route"}
{"timestamp":"2026-10-21T12:25:17.153Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/resellers/:id/toggle-status, PUT} route"}
{"timestamp":"2026-10-21T12:25:17.153Z","level":"log","context":"RoutesResolver","message":"SubscriptionController {/subscription}:"}
{"timestamp":"2026-10-21T12:25:17.153Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/plans, GET} route"}
{"timestamp":"2026-10-21T12:25:17.153Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/calculate-price, POST} route"}
{"timestamp":"2026-10-21T12:25:17.153Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/current, GET} route"}
{"timestamp":"2026-10-21T12:25:17.154Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/create, POST} route"}
{"timestamp":"2026-10-21T12:25:17.154Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/:id, PUT} route"}
{"timestamp":"2026-10-21T12:25:17.154Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/:id/cancel, DELETE} route"}
{"timestamp":"2026-10-21T12:25:17.154Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/sync/:stripeSubscriptionId, POST} route"}
{"timestamp":"2026-10-21T12:25:17.154Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/payments, GET} route"}
{"timestamp":"2026-10-21T12:25:17.154Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/payments/stats, GET} route"}
{"timestamp":"2026-10-21T12:25:17.155Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/payment/:id, GET} route"}
{"timestamp":"2026-10-21T12:25:17.155Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/payment-methods/attach, POST} route"}
{"timestamp":"2026-10-21T12:25:17.155Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/payment-methods/:paymentMethodId, DELETE} route"}
{"timestamp":"2026-10-21T12:25:17.155Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/payment-methods, GET} route"}
{"timestamp":"2026-10-21T12:25:17.155Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/setup-intent, POST} route"}
{"timestamp":"2026-10-21T12:25:17.155Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/update-employee-count, POST} route"}
{"timestamp":"2026-10-21T12:25:17.156Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/retry-payment/:subscriptionId, POST} route"}
{"timestamp":"2026-10-21T12:25:17.156Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/invoice/:invoiceId/pdf, GET} route"}
{"timestamp":"2026-10-21T12:25:17.156Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/preview-upgrade, POST} route"}
{"timestamp":"2026-10-21T12:25:17.156Z","level":"log","context":"RoutesResolver","message":"SubscriptionController {/api/subscription}:"}
{"timestamp":"2026-10-21T12:25:17.156Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/plans, GET} route"}
{"timestamp":"2026-10-21T12:25:17.156Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/calculate-price, POST} route"}
{"timestamp":"2026-10-21T12:25:17.156Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/current, GET} route"}
{"timestamp":"2026-10-21T12:25:17.157Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/create, POST} route"}
{"timestamp":"2026-10-21T12:25:17.157Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/:id, PUT} route"}
{"timestamp":"2026-10-21T12:25:17.157Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/:id/cancel, DELETE} route"}
{"timestamp":"2026-10-21T12:25:17.157Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/sync/:stripeSubscriptionId, POST} route"}
{"timestamp":"2026-10-21T12:25:17.157Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/payments, GET} route"}
{"timestamp":"2026-10-21T12:25:17.157Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/payments/stats, GET} route"}
{"timestamp":"2026-10-21T12:25:17.158Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/payment/:id, GET} route"}
{"timestamp":"2026-10-21T12:25:17.158Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/payment-methods/attach, POST} route"}
{"timestamp":"2026-10-21T12:25:17.158Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/payment-methods/:paymentMethodId, DELETE} route"}
{"timestamp":"2026-10-21T12:25:17.158Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/payment-methods, GET} route"}
{"timestamp":"2026-10-21T12:25:17.158Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/setup-intent, POST} route"}
{"timestamp":"2026-10-21T12:25:17.158Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/update-employee-count, POST} route"}
{"timestamp":"2026-10-21T12:25:17.158Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/retry-payment/:subscriptionId, POST} route"}
{"timestamp":"2026-10-21T12:25:17.159Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/invoice/:invoiceId/pdf, GET} route"}
{"timestamp":"2026-10-21T12:25:17.159Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/preview-upgrade, POST} route"}
{"timestamp":"2026-10-21T12:25:17.159Z","level":"log","context":"RoutesResolver","message":"StripeWebhookController {/stripe/webhook}:"}
{"timestamp":"2026-10-21T12:25:17.159Z","level":"log","context":"RouterExplorer","message":"Mapped {/stripe/webhook/test, GET} route"}
{"timestamp":"2026-10-21T12:25:17.159Z","level":"log","context":"RouterExplorer","message":"Mapped {/stripe/webhook, POST} route"}
{"timestamp":"2026-10-21T12:25:17.159Z","level":"log","context":"RoutesResolver","message":"EmailController {/email-templates}:"}
{"timestamp":"2026-10-21T12:25:17.159Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates/test, POST} route"}
{"timestamp":"2026-10-21T12:25:17.160Z","level":"log","context":"RoutesResolver","message":"EmployeeController {/employees}:"}
{"timestamp":"2026-10-21T12:25:17.160Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees, POST} route"}
{"timestamp":"2026-10-21T12:25:17.160Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees, GET} route"}
{"timestamp":"2026-10-21T12:25:17.160Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees/export, GET} route"}
{"timestamp":"2026-10-21T12:25:17.160Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees/risk-stats, GET} route"}
{"timestamp":"2026-10-21T12:25:17.160Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees/:id, GET} route"}
{"timestamp":"2026-10-21T12:25:17.161Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees/:id, PUT} route"}
{"timestamp":"2026-10-21T12:25:17.161Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees/:id, DELETE} route"}
{"timestamp":"2026-10-21T12:25:17.161Z","level":"log","context":"RoutesResolver","message":"GroupController {/groups}:"}
{"timestamp":"2026-10-21T12:25:17.161Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups, POST} route"}
{"timestamp":"2026-10-21T12:25:17.161Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups, GET} route"}
{"timestamp":"2026-10-21T12:25:17.161Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups/standard, GET} route"}
{"timestamp":"2026-10-21T12:25:17.161Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups/:id, GET} route"}
{"timestamp":"2026-10-21T12:25:17.162Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups/:id, PUT} route"}
{"timestamp":"2026-10-21T12:25:17.162Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups/:id, DELETE} route"}
{"timestamp":"2026-10-21T12:25:17.162Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups/:id/info, GET} route"}
{"timestamp":"2026-10-21T12:25:17.162Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups/:id/with-employees, GET} route"}
{"timestamp":"2026-10-21T12:25:17.162Z","level":"log","context":"RoutesResolver","message":"SenderProfileController {/sender-profiles}:"}
{"timestamp":"2026-10-21T12:25:17.162Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles, GET} route"}
{"timestamp":"2026-10-21T12:25:17.163Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles/:id, GET} route"}
{"timestamp":"2026-10-21T12:25:17.163Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles, POST} route"}
{"timestamp":"2026-10-21T12:25:17.163Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles/:id, PUT} route"}
{"timestamp":"2026-10-21T12:25:17.163Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles/:id, DELETE} route"}
{"timestamp":"2026-10-21T12:25:17.163Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles/:id/verify-domain, POST} route"}
{"timestamp":"2026-10-21T12:25:17.163Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles/domain-verification, GET} route"}
{"timestamp":"2026-10-21T12:25:17.164Z","level":"log","context":"RoutesResolver","message":"EmailTemplateController {/email-templates}:"}
{"timestamp":"2026-10-21T12:25:17.164Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates, GET} route"}
{"timestamp":"2026-10-21T12:25:17.164Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates/:id, GET} route"}
{"timestamp":"2026-10-21T12:25:17.164Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates, POST} route"}
{"timestamp":"2026-10-21T12:25:17.164Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates/:id, PUT} route"}
{"timestamp":"2026-10-21T12:25:17.164Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates/:id, DELETE} route"}
{"timestamp":"2026-10-21T12:25:17.165Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates/:id/duplicate, POST} route"}
{"timestamp":"2026-10-21T12:25:17.165Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates/:id/preview, GET} route"}
{"timestamp":"2026-10-21T12:25:17.165Z","level":"log","context":"RoutesResolver","message":"ScenarioController {/scenarios}:"}
{"timestamp":"2026-10-21T12:25:17.165Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios, POST} route"}
{"timestamp":"2026-10-21T12:25:17.165Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios/generate-content, POST} route"}
{"timestamp":"2026-10-21T12:25:17.165Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios, GET} route"}
{"timestamp":"2026-10-21T12:25:17.165Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios/:id, GET} route"}
{"timestamp":"2026-10-21T12:25:17.166Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios/:id, PUT} route"}
{"timestamp":"2026-10-21T12:25:17.166Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios/:id, DELETE} route"}
{"timestamp":"2026-10-21T12:25:17.166Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios/generate-from-json, POST} route"}
{"timestamp":"2026-10-21T12:25:17.166Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios/:id/save-as-custom-scenario, POST} route"}
{"timestamp":"2026-10-21T12:25:17.166Z","level":"log","context":"RoutesResolver","message":"CampaignController {/campaigns}:"}
{"timestamp":"2026-10-21T12:25:17.166Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns, POST} route"}
{"timestamp":"2026-10-21T12:25:17.167Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns, GET} route"}
{"timestamp":"2026-10-21T12:25:17.167Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id, GET} route"}
{"timestamp":"2026-10-21T12:25:17.167Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id/details, GET} route"}
{"timestamp":"2026-10-21T12:25:17.167Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id/employees, GET} route"}
{"timestamp":"2026-10-21T12:25:17.167Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id, PATCH} route"}
{"timestamp":"2026-10-21T12:25:17.168Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id/start, POST} route"}
{"timestamp":"2026-10-21T12:25:17.168Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id/stop, POST} route"}
{"timestamp":"2026-10-21T12:25:17.168Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id/duplicate, POST} route"}
{"timestamp":"2026-10-21T12:25:17.168Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id, DELETE} route"}
{"timestamp":"2026-10-21T12:25:17.168Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/auto-generate-program, POST} route"}
{"timestamp":"2026-10-21T12:25:17.168Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/generate-from-threat-intelligence, POST} route"}
{"timestamp":"2026-10-21T12:25:17.169Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id/risk-score, GET} route"}
{"timestamp":"2026-10-21T12:25:17.169Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/recalculate-risk-scores, POST} route"}
{"timestamp":"2026-10-21T12:25:17.169Z","level":"log","context":"RoutesResolver","message":"CampaignController {/api/campaigns}:"}
{"timestamp":"2026-10-21T12:25:17.169Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns, POST} route"}
{"timestamp":"2026-10-21T12:25:17.169Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns, GET} route"}
{"timestamp":"2026-10-21T12:25:17.169Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id, GET} route"}
{"timestamp":"2026-10-21T12:25:17.169Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id/details, GET} route"}
{"timestamp":"2026-10-21T12:25:17.169Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id/employees, GET} route"}
{"timestamp":"2026-10-21T12:25:17.170Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id, PATCH} route"}
{"timestamp":"2026-10-21T12:25:17.170Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id/start, POST} route"}
{"timestamp":"2026-10-21T12:25:17.170Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id/stop, POST} route"}
{"timestamp":"2026-10-21T12:25:17.170Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id/duplicate, POST} route"}
{"timestamp":"2026-10-21T12:25:17.170Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id, DELETE} route"}
{"timestamp":"2026-10-21T12:25:17.170Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/auto-generate-program, POST} route"}
{"timestamp":"2026-10-21T12:25:17.171Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/generate-from-threat-intelligence, POST} route"}
{"timestamp":"2026-10-21T12:25:17.171Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id/risk-score, GET} route"}
{"timestamp":"2026-10-21T12:25:17.171Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/recalculate-risk-scores, POST} route"}
{"timestamp":"2026-10-21T12:25:17.171Z","level":"log","context":"RoutesResolver","message":"NotificationsController {/notifications}:"}
{"timestamp":"2026-10-21T12:25:17.171Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications, POST} route"}
{"timestamp":"2026-10-21T12:25:17.171Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications, GET} route"}
{"timestamp":"2026-10-21T12:25:17.172Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/unread, GET} route"}
{"timestamp":"2026-10-21T12:25:17.172Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/unread-count, GET} route"}
{"timestamp":"2026-10-21T12:25:17.172Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/:id, GET} route"}
{"timestamp":"2026-10-21T12:25:17.172Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/:id, PATCH} route"}
{"timestamp":"2026-10-21T12:25:17.172Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/:id/read, PATCH} route"}
{"timestamp":"2026-10-21T12:25:17.172Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/mark-all-read, PATCH} route"}
{"timestamp":"2026-10-21T12:25:17.173Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/:id, DELETE} route"}
{"timestamp":"2026-10-21T12:25:17.173Z","level":"log","context":"RoutesResolver","message":"LandingPageController {/lp}:"}
{"timestamp":"2026-10-21T12:25:17.173Z","level":"log","context":"RouterExplorer","message":"Mapped {/lp/image, GET} route"}
{"timestamp":"2026-10-21T12:25:17.173Z","level":"log","context":"RouterExplorer","message":"Mapped {/lp/learning, GET} route"}
{"timestamp":"2026-10-21T12:25:17.174Z","level":"log","context":"RouterExplorer","message":"Mapped {/lp/submit, POST} route"}
{"timestamp":"2026-10-21T12:25:17.174Z","level":"log","context":"RouterExplorer","message":"Mapped {/lp/test, GET} route"}
{"timestamp":"2026-10-21T12:25:17.174Z","level":"warn","context":"LegacyRouteConverter","message":"Unsupported route path: \"/lp/*\". In previous versions, the symbols ?, *, and + were used to denote optional or repeating path parameters. The latest version of \"path-to-regexp\" now requires the use of named parameters. For example, instead of using a route like /users/* to capture all routes starting with \"/users\", you should use /users/*path. For more details, refer to the migration guide. Attempting to auto-convert..."}
{"timestamp":"2026-10-21T12:25:17.175Z","level":"log","context":"RouterExplorer","message":"Mapped {/lp/*, ALL} route"}
{"timestamp":"2026-10-21T12:25:17.175Z","level":"log","context":"RoutesResolver","message":"SupportController {/support}:"}
{"timestamp":"2026-10-21T12:25:17.175Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets, POST} route"}
{"timestamp":"2026-10-21T12:25:17.175Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets, GET} route"}
{"timestamp":"2026-10-21T12:25:17.175Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets/:id, GET} route"}
{"timestamp":"2026-10-21T12:25:17.176Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets/:id, PATCH} route"}
{"timestamp":"2026-10-21T12:25:17.176Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets/:id, DELETE} route"}
{"timestamp":"2026-10-21T12:25:17.176Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets/:id/messages, POST} route"}
{"timestamp":"2026-10-21T12:25:17.176Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets/:id/close, POST} route"}
{"timestamp":"2026-10-21T12:25:17.176Z","level":"log","context":"RoutesResolver","message":"BusninessMetricsController {/business-metrics}:"}
{"timestamp":"2026-10-21T12:25:17.176Z","level":"log","context":"RouterExplorer","message":"Mapped {/business-metrics, GET} route"}
{"timestamp":"2026-10-21T12:25:17.176Z","level":"log","context":"RoutesResolver","message":"UsersController {/users}:"}
{"timestamp":"2026-10-21T12:25:17.177Z","level":"log","context":"RouterExplorer","message":"Mapped {/users/:id, PUT} route"}
{"timestamp":"2026-10-21T12:25:17.177Z","level":"log","context":"RouterExplorer","message":"Mapped {/users/settings, GET} route"}
{"timestamp":"2026-10-21T12:25:17.177Z","level":"log","context":"RouterExplorer","message":"Mapped {/users/settings/general, PUT} route"}
{"timestamp":"2026-10-21T12:25:17.177Z","level":"log","context":"RouterExplorer","message":"Mapped {/users/company/settings, PUT} route"}
{"timestamp":"2026-10-21T12:25:17.177Z","level":"log","context":"RouterExplorer","message":"Mapped {/users/change-password, POST} route"}
{"timestamp":"2026-10-21T12:25:17.178Z","level":"log","context":"RouterExplorer","message":"Mapped {/users/localization/settings, PUT} route"}
{"timestamp":"2026-10-21T12:25:17.178Z","level":"log","context":"RoutesResolver","message":"PartnerController {/partner}:"}
{"timestamp":"2026-10-21T12:25:17.178Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses, POST} route"}
{"timestamp":"2026-10-21T12:25:17.178Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses, GET} route"}
{"timestamp":"2026-10-21T12:25:17.178Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses/:id, GET} route"}
{"timestamp":"2026-10-21T12:25:17.178Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses/:id, PUT} route"}
{"timestamp":"2026-10-21T12:25:17.179Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses/:id, DELETE} route"}
{"timestamp":"2026-10-21T12:25:17.179Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses/:id/impersonate, POST} route"}
{"timestamp":"2026-10-21T12:25:17.179Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses/stop-impersonation, POST} route"}
{"timestamp":"2026-10-21T12:25:17.179Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/license-usage, GET} route"}
{"timestamp":"2026-10-21T12:25:17.179Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/invoices, POST} route"}
{"timestamp":"2026-10-21T12:25:17.179Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/invoices, GET} route"}
{"timestamp":"2026-10-21T12:25:17.180Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/invoices/:id, GET} route"}
{"timestamp":"2026-10-21T12:25:17.180Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/invoices/:id, PUT} route"}
{"timestamp":"2026-10-21T12:25:17.180Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/invoices/:id, DELETE} route"}
{"timestamp":"2026-10-21T12:25:17.180Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/invoices/:id/mark-paid, PUT} route"}
{"timestamp":"2026-10-21T12:25:17.180Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/onboarding/generate-token, POST} route"}
{"timestamp":"2026-10-21T12:25:17.181Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/dashboard, GET} route"}
{"timestamp":"2026-10-21T12:25:17.181Z","level":"log","context":"RoutesResolver","message":"MspSubscriptionController {/partner/msp-subscriptions}:"}
{"timestamp":"2026-10-21T12:25:17.181Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/plans, POST} route"}
{"timestamp":"2026-10-21T12:25:17.181Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/plans, GET} route"}
{"timestamp":"2026-10-21T12:25:17.181Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/plans/:planId, GET} route"}
{"timestamp":"2026-10-21T12:25:17.181Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/plans/:planId, PUT} route"}
{"timestamp":"2026-10-21T12:25:17.182Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/plans/:planId, DELETE} route"}
{"timestamp":"2026-10-21T12:25:17.182Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/businesses/:businessId/subscription, POST} route"}
{"timestamp":"2026-10-21T12:25:17.182Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions, GET} route"}
{"timestamp":"2026-10-21T12:25:17.182Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/businesses/:businessId/subscription, GET} route"}
{"timestamp":"2026-10-21T12:25:17.182Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/businesses/:businessId/subscription, PUT} route"}
{"timestamp":"2026-10-21T12:25:17.183Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/businesses/:businessId/subscription, DELETE} route"}
{"timestamp":"2026-10-21T12:25:17.183Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/businesses/:businessId/subscription/limits, GET} route"}
{"timestamp":"2026-10-21T12:25:17.183Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/businesses/:businessId/subscription/change-plan, PUT} route"}
{"timestamp":"2026-10-21T12:25:17.183Z","level":"log","context":"RoutesResolver","message":"OnboardingController {/onboarding}:"}
{"timestamp":"2026-10-21T12:25:17.183Z","level":"log","context":"RouterExplorer","message":"Mapped {/onboarding/validate/:token, GET} route"}
{"timestamp":"2026-10-21T12:25:17.183Z","level":"log","context":"RouterExplorer","message":"Mapped {/onboarding/complete/:token, POST} route"}
{"timestamp":"2026-10-21T12:25:17.183Z","level":"log","context":"RoutesResolver","message":"ResellerController {/reseller}:"}
{"timestamp":"2026-10-21T12:25:17.184Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/businesses, POST} route"}
{"timestamp":"2026-10-21T12:25:17.184Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/businesses, GET} route"}
{"timestamp":"2026-10-21T12:25:17.184Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/businesses/:id, GET} route"}
{"timestamp":"2026-10-21T12:25:17.184Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/businesses/:id, PUT} route"}
{"timestamp":"2026-10-21T12:25:17.184Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/businesses/:id, DELETE} route"}
{"timestamp":"2026-10-21T12:25:17.185Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/license-usage, GET} route"}
{"timestamp":"2026-10-21T12:25:17.185Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/invoices, POST} route"}
{"timestamp":"2026-10-21T12:25:17.185Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/invoices, GET} route"}
{"timestamp":"2026-10-21T12:25:17.185Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/invoices/:id, GET} route"}
{"timestamp":"2026-10-21T12:25:17.185Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/invoices/:id, PUT} route"}
{"timestamp":"2026-10-21T12:25:17.185Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/invoices/:id, DELETE} route"}
{"timestamp":"2026-10-21T12:25:17.186Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/invoices/:id/mark-paid, PUT} route"}
{"timestamp":"2026-10-21T12:25:17.186Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/onboarding/generate-token, POST} route"}
{"timestamp":"2026-10-21T12:25:17.186Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/dashboard, GET} route"}
{"timestamp":"2026-10-21T12:25:17.186Z","level":"log","context":"RoutesResolver","message":"ResellerSubscriptionController {/reseller}:"}
{"timestamp":"2026-10-21T12:25:17.186Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/plans, POST} route"}
{"timestamp":"2026-10-21T12:25:17.186Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/plans, GET} route"}
{"timestamp":"2026-10-21T12:25:17.186Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/plans/:planId, GET} route"}
{"timestamp":"2026-10-21T12:25:17.187Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/plans/:planId, PUT} route"}
{"timestamp":"2026-10-21T12:25:17.187Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/plans/:planId, DELETE} route"}
{"timestamp":"2026-10-21T12:25:17.187Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/subscriptions/businesses/:businessId/subscription, POST} route"}
{"timestamp":"2026-10-21T12:25:17.187Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/subscriptions, GET} route"}
{"timestamp":"2026-10-21T12:25:17.187Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/subscriptions/businesses/:businessId/subscription, GET} route"}
{"timestamp":"2026-10-21T12:25:17.188Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/subscriptions/businesses/:businessId/subscription, PUT} route"}
{"timestamp":"2026-10-21T12:25:17.188Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/subscriptions/businesses/:businessId/subscription, DELETE} route"}
{"timestamp":"2026-10-21T12:25:17.188Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/subscriptions/businesses/:businessId/subscription/limits, GET} route"}
{"timestamp":"2026-10-21T12:25:17.188Z","level":"log","context":"RoutesResolver","message":"HealthController {/health}:"}
{"timestamp":"2026-10-21T12:25:17.188Z","level":"log","context":"RouterExplorer","message":"Mapped {/health, GET} route"}
{"timestamp":"2026-10-21T12:25:17.188Z","level":"log","context":"RouterExplorer","message":"Mapped {/health/test-logs, GET} route"}
{"timestamp":"2026-10-21T12:25:17.188Z","level":"log","context":"RoutesResolver","message":"AzureAdController {/azure-ad}:"}
{"timestamp":"2026-10-21T12:25:17.189Z","level":"log","context":"RouterExplorer","message":"Mapped {/azure-ad/config, POST} route"}
{"timestamp":"2026-10-21T12:25:17.189Z","level":"log","context":"RouterExplorer","message":"Mapped {/azure-ad/config, GET} route"}
{"timestamp":"2026-10-21T12:25:17.189Z","level":"log","context":"RouterExplorer","message":"Mapped {/azure-ad/test-connection, POST} route"}
{"timestamp":"2026-10-21T12:25:17.189Z","level":"log","context":"RouterExplorer","message":"Mapped {/azure-ad/sync, POST} route"}
{"timestamp":"2026-10-21T12:25:17.189Z","level":"log","context":"RoutesResolver","message":"ThreatsController {/threats}:"}
{"timestamp":"2026-10-21T12:25:17.189Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats, POST} route"}
{"timestamp":"2026-10-21T12:25:17.190Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats, GET} route"}
{"timestamp":"2026-10-21T12:25:17.190Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/chart-data, GET} route"}
{"timestamp":"2026-10-21T12:25:17.190Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/claude-search, POST} route"}
{"timestamp":"2026-10-21T12:25:17.190Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/claude-latest, POST} route"}
{"timestamp":"2026-10-21T12:25:17.190Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/claude-trending, POST} route"}
{"timestamp":"2026-10-21T12:25:17.190Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/claude-categories, POST} route"}
{"timestamp":"2026-10-21T12:25:17.191Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/claude-manual-search, POST} route"}
{"timestamp":"2026-10-21T12:25:17.191Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/claude-quick-search, POST} route"}
{"timestamp":"2026-10-21T12:25:17.191Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/scheduler-status, GET} route"}
{"timestamp":"2026-10-21T12:25:17.191Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/health-check, GET} route"}
{"timestamp":"2026-10-21T12:25:17.191Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/pause-scheduler, POST} route"}
{"timestamp":"2026-10-21T12:25:17.191Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/:id, GET} route"}
{"timestamp":"2026-10-21T12:25:17.192Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/:id, PATCH} route"}
{"timestamp":"2026-10-21T12:25:17.192Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/:id, DELETE} route"}
{"timestamp":"2026-10-21T12:25:17.192Z","level":"log","context":"RoutesResolver","message":"DomainController {/domains}:"}
{"timestamp":"2026-10-21T12:25:17.192Z","level":"log","context":"RouterExplorer","message":"Mapped {/domains, GET} route"}
{"timestamp":"2026-10-21T12:25:17.192Z","level":"log","context":"RouterExplorer","message":"Mapped {/domains/:id, GET} route"}
{"timestamp":"2026-10-21T12:25:17.192Z","level":"log","context":"RouterExplorer","message":"Mapped {/domains, POST} route"}
{"timestamp":"2026-10-21T12:25:17.193Z","level":"log","context":"RouterExplorer","message":"Mapped {/domains/:id, PUT} route"}
{"timestamp":"2026-10-21T12:25:17.193Z","level":"log","context":"RouterExplorer","message":"Mapped {/domains/:id, DELETE} route"}
{"timestamp":"2026-10-21T12:25:17.193Z","level":"log","context":"RouterExplorer","message":"Mapped {/domains/seed, POST} route"}
{"timestamp":"2026-10-21T12:25:17.193Z","level":"log","context":"RoutesResolver","message":"MspSubscriptionController {/msp-subscription}:"}
{"timestamp":"2026-10-21T12:25:17.193Z","level":"log","context":"RouterExplorer","message":"Mapped {/msp-subscription/current, GET} route"}
{"timestamp":"2026-10-21T12:25:17.193Z","level":"log","context":"RouterExplorer","message":"Mapped {/msp-subscription/invoices, GET} route"}
{"timestamp":"2026-10-21T12:25:17.193Z","level":"log","context":"RouterExplorer","message":"Mapped {/msp-subscription/invoice/:invoiceId/pdf, GET} route"}
{"timestamp":"2026-10-21T12:25:17.194Z","level":"log","context":"RoutesResolver","message":"MspSubscriptionController {/api/msp-subscription}:"}
{"timestamp":"2026-10-21T12:25:17.194Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/msp-subscription/current, GET} route"}
{"timestamp":"2026-10-21T12:25:17.194Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/msp-subscription/invoices, GET} route"}
{"timestamp":"2026-10-21T12:25:17.194Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/msp-subscription/invoice/:invoiceId/pdf, GET} route"}
{"timestamp":"2026-10-21T12:25:17.262Z","level":"log","context":"NestApplication","message":"Nest application successfully started"}
{"timestamp":"2026-10-21T12:25:17.279Z","level":"log","context":"Bootstrap","message":"Users API successfully started on port 3842"}
{"timestamp":"2026-10-21T12:25:17.279Z","level":"log","context":"SeedService","message":"🌱 Starting database seeding..."}
{"timestamp":"2026-10-21T12:25:17.286Z","level":"log","context":"SeedService","message":"Admin account already exists, skipping seed"}
{"timestamp":"2026-10-21T12:25:17.289Z","level":"log","context":"SeedService","message":"Reseller account already exists, skipping seed"}
{"timestamp":"2026-10-21T12:25:17.290Z","level":"log","context":"SeedService","message":"MSP account already exists, skipping seed"}
{"timestamp":"2026-10-21T12:25:17.290Z","level":"log","context":"SeedService","message":"✅ Database seeding completed successfully"}
{"timestamp":"2026-10-21T12:25:17.325Z","level":"log","context":"UsersApiController","message":"Hello endpoint accessed"}
{"timestamp":"2026-10-21T16:38:22.983Z","level":"warn","context":"LegacyRouteConverter","message":"Unsupported route path: \"/lp/*\". In previous versions, the symbols ?, *, and + were used to denote optional or repeating path parameters. The latest version of \"path-to-regexp\" now requires the use of named parameters. For example, instead of using a route like /users/* to capture all routes starting with \"/users\", you should use /users/*path. For more details, refer to the migration guide. Attempting to auto-convert..."}
{"timestamp":"2026-10-21T16:38:23.024Z","level":"log","context":"Bootstrap","message":"Starting Users API on port 3842..."}
{"timestamp":"2026-10-21T16:38:23.028Z","level":"log","context":"RoutesResolver","message":"UsersApiController {/}:"}
{"timestamp":"2026-10-21T16:38:23.032Z","level":"log","context":"RouterExplorer","message":"Mapped {/, GET} route"}
{"timestamp":"2026-10-21T16:38:23.032Z","level":"log","context":"RoutesResolver","message":"AuthController {/auth}:"}
{"timestamp":"2026-10-21T16:38:23.033Z","level":"log","context":"RouterExplorer","message":"Mapped {/auth/login, POST} route"}
{"timestamp":"2026-10-21T16:38:23.033Z","level":"log","context":"RouterExplorer","message":"Mapped {/auth/admin/login, POST} route"}
{"timestamp":"2026-10-21T16:38:23.034Z","level":"log","context":"RouterExplorer","message":"Mapped {/auth/send-otp, POST} route"}
{"timestamp":"2026-10-21T16:38:23.034Z","level":"log","context":"RouterExplorer","message":"Mapped {/auth/verify-otp, POST} route"}
{"timestamp":"2026-10-21T16:38:23.035Z","level":"log","context":"RouterExplorer","message":"Mapped {/auth/signup, POST} route"}
{"timestamp":"2026-10-21T16:38:23.036Z","level":"log","context":"RouterExplorer","message":"Mapped {/auth/subscription-status, GET} route"}
{"timestamp":"2026-10-21T16:38:23.036Z","level":"log","context":"RoutesResolver","message":"AdminMspController {/admin/msp}:"}
{"timestamp":"2026-10-21T16:38:23.036Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/msp, GET} route"}
{"timestamp":"2026-10-21T16:38:23.037Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/msp/:id, GET} route"}
{"timestamp":"2026-10-21T16:38:23.038Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/msp, POST} route"}
{"timestamp":"2026-10-21T16:38:23.038Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/msp/:id, PUT} route"}
{"timestamp":"2026-10-21T16:38:23.038Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/msp/:id, DELETE} route"}
{"timestamp":"2026-10-21T16:38:23.038Z","level":"log","context":"RoutesResolver","message":"AdminLicenseController {/admin/licenses}:"}
{"timestamp":"2026-10-21T16:38:23.039Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/licenses/summary, GET} route"}
{"timestamp":"2026-10-21T16:38:23.039Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/licenses/msp/:mspId, GET} route"}
{"timestamp":"2026-10-21T16:38:23.039Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/licenses/msp/:mspId, PUT} route"}
{"timestamp":"2026-10-21T16:38:23.039Z","level":"log","context":"RoutesResolver","message":"AdminImpersonationController {/admin/impersonation}:"}
{"timestamp":"2026-10-21T16:38:23.040Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/impersonation/msp-users, GET} route"}
{"timestamp":"2026-10-21T16:38:23.040Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/impersonation/impersonate, POST} route"}
{"timestamp":"2026-10-21T16:38:23.042Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/impersonation/stop, POST} route"}
{"timestamp":"2026-10-21T16:38:23.043Z","level":"log","context":"RoutesResolver","message":"AdminAiUsageController {/admin/ai-usage}:"}
{"timestamp":"2026-10-21T16:38:23.043Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-usage, GET} route"}
{"timestamp":"2026-10-21T16:38:23.043Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-usage/business/:businessId, GET} route"}
{"timestamp":"2026-10-21T16:38:23.043Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-usage/report/monthly, GET} route"}
{"timestamp":"2026-10-21T16:38:23.044Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-usage/pricing, GET} route"}
{"timestamp":"2026-10-21T16:38:23.044Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-usage/pricing, POST} route"}
{"timestamp":"2026-10-21T16:38:23.044Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-usage/credit/:businessId, PUT} route"}
{"timestamp":"2026-10-21T16:38:23.044Z","level":"log","context":"RoutesResolver","message":"AdminAiUsageController {/api/admin/ai-usage}:"}
{"timestamp":"2026-10-21T16:38:23.044Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-usage, GET} route"}
{"timestamp":"2026-10-21T16:38:23.045Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-usage/business/:businessId, GET} route"}
{"timestamp":"2026-10-21T16:38:23.045Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-usage/report/monthly, GET} route"}
{"timestamp":"2026-10-21T16:38:23.045Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-usage/pricing, GET} route"}
{"timestamp":"2026-10-21T16:38:23.045Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-usage/pricing, POST} route"}
{"timestamp":"2026-10-21T16:38:23.045Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-usage/credit/:businessId, PUT} route"}
{"timestamp":"2026-10-21T16:38:23.045Z","level":"log","context":"RoutesResolver","message":"AdminAiModelController {/admin/ai-models}:"}
{"timestamp":"2026-10-21T16:38:23.046Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models, POST} route"}
{"timestamp":"2026-10-21T16:38:23.046Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models, GET} route"}
{"timestamp":"2026-10-21T16:38:23.046Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/default, GET} route"}
{"timestamp":"2026-10-21T16:38:23.046Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/:id, GET} route"}
{"timestamp":"2026-10-21T16:38:23.047Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/:id, PUT} route"}
{"timestamp":"2026-10-21T16:38:23.047Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/:id, DELETE} route"}
{"timestamp":"2026-10-21T16:38:23.047Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/:id/set-default, POST} route"}
{"timestamp":"2026-10-21T16:38:23.047Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/assign-to-business, POST} route"}
{"timestamp":"2026-10-21T16:38:23.047Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/business/:businessId, GET} route"}
{"timestamp":"2026-10-21T16:38:23.048Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/:id/businesses, GET} route"}
{"timestamp":"2026-10-21T16:38:23.048Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/initialize-defaults, POST} route"}
{"timestamp":"2026-10-21T16:38:23.048Z","level":"log","context":"RoutesResolver","message":"AdminAiModelController {/api/admin/ai-models}:"}
{"timestamp":"2026-10-21T16:38:23.048Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models, POST} route"}
{"timestamp":"2026-10-21T16:38:23.048Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models, GET} route"}
{"timestamp":"2026-10-21T16:38:23.049Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/default, GET} route"}
{"timestamp":"2026-10-21T16:38:23.049Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/:id, GET} route"}
{"timestamp":"2026-10-21T16:38:23.049Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/:id, PUT} route"}
{"timestamp":"2026-10-21T16:38:23.049Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/:id, DELETE} route"}
{"timestamp":"2026-10-21T16:38:23.049Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/:id/set-default, POST} route"}
{"timestamp":"2026-10-21T16:38:23.049Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/assign-to-business, POST} route"}
{"timestamp":"2026-10-21T16:38:23.050Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/business/:businessId, GET} route"}
{"timestamp":"2026-10-21T16:38:23.050Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/:id/businesses, GET} route"}
{"timestamp":"2026-10-21T16:38:23.050Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/initialize-defaults, POST} route"}
{"timestamp":"2026-10-21T16:38:23.050Z","level":"log","context":"RoutesResolver","message":"AdminBusinessController {/admin/businesses}:"}
{"timestamp":"2026-10-21T16:38:23.050Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/businesses, GET} route"}
{"timestamp":"2026-10-21T16:38:23.050Z","level":"log","context":"RoutesResolver","message":"ResellerManagementController {/admin/resellers}:"}
{"timestamp":"2026-10-21T16:38:23.051Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/resellers, GET} route"}
{"timestamp":"2026-10-21T16:38:23.051Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/resellers/create-default, POST} route"}
{"timestamp":"2026-10-21T16:38:23.051Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/resellers, POST} route"}
{"timestamp":"2026-10-21T16:38:23.051Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/resellers/:id/toggle-status, PUT} route"}
{"timestamp":"2026-10-21T16:38:23.051Z","level":"log","context":"RoutesResolver","message":"SubscriptionController {/subscription}:"}
{"timestamp":"2026-10-21T16:38:23.052Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/plans, GET} route"}
{"timestamp":"2026-10-21T16:38:23.052Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/calculate-price, POST} route"}
{"timestamp":"2026-10-21T16:38:23.052Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/current, GET} route"}
{"timestamp":"2026-10-21T16:38:23.052Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/create, POST} route"}
{"timestamp":"2026-10-21T16:38:23.052Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/:id, PUT} route"}
{"timestamp":"2026-10-21T16:38:23.053Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/:id/cancel, DELETE} route"}
{"timestamp":"2026-10-21T16:38:23.053Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/sync/:stripeSubscriptionId, POST} route"}
{"timestamp":"2026-10-21T16:38:23.053Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/payments, GET} route"}
{"timestamp":"2026-10-21T16:38:23.053Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/payments/stats, GET} route"}
{"timestamp":"2026-10-21T16:38:23.053Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/payment/:id, GET} route"}
{"timestamp":"2026-10-21T16:38:23.053Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/payment-methods/attach, POST} route"}
{"timestamp":"2026-10-21T16:38:23.054Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/payment-methods/:paymentMethodId, DELETE} route"}
{"timestamp":"2026-10-21T16:38:23.054Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/payment-methods, GET} route"}
{"timestamp":"2026-10-21T16:38:23.054Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/setup-intent, POST} route"}
{"timestamp":"2026-10-21T16:38:23.054Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/update-employee-count, POST} route"}
{"timestamp":"2026-10-21T16:38:23.054Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/retry-payment/:subscriptionId, POST} route"}
{"timestamp":"2026-10-21T16:38:23.055Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/invoice/:invoiceId/pdf, GET} route"}
{"timestamp":"2026-10-21T16:38:23.055Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/preview-upgrade, POST} route"}
{"timestamp":"2026-10-21T16:38:23.055Z","level":"log","context":"RoutesResolver","message":"SubscriptionController {/api/subscription}:"}
{"timestamp":"2026-10-21T16:38:23.055Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/plans, GET} route"}
{"timestamp":"2026-10-21T16:38:23.055Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/calculate-price, POST} route"}
{"timestamp":"2026-10-21T16:38:23.055Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/current, GET} route"}
{"timestamp":"2026-10-21T16:38:23.055Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/create, POST} route"}
{"timestamp":"2026-10-21T16:38:23.056Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/:id, PUT} route"}
{"timestamp":"2026-10-21T16:38:23.056Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/:id/cancel, DELETE} route"}
{"timestamp":"2026-10-21T16:38:23.056Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/sync/:stripeSubscriptionId, POST} route"}
{"timestamp":"2026-10-21T16:38:23.056Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/payments, GET} route"}
{"timestamp":"2026-10-21T16:38:23.056Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/payments/stats, GET} route"}
{"timestamp":"2026-10-21T16:38:23.056Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/payment/:id, GET} route"}
{"timestamp":"2026-10-21T16:38:23.057Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/payment-methods/attach, POST} route"}
{"timestamp":"2026-10-21T16:38:23.057Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/payment-methods/:paymentMethodId, DELETE} route"}
{"timestamp":"2026-10-21T16:38:23.057Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/payment-methods, GET} route"}
{"timestamp":"2026-10-21T16:38:23.057Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/setup-intent, POST} route"}
{"timestamp":"2026-10-21T16:38:23.057Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/update-employee-count, POST} route"}
{"timestamp":"2026-10-21T16:38:23.057Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/retry-payment/:subscriptionId, POST} route"}
{"timestamp":"2026-10-21T16:38:23.058Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/invoice/:invoiceId/pdf, GET} route"}
{"timestamp":"2026-10-21T16:38:23.058Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/preview-upgrade, POST} route"}
{"timestamp":"2026-10-21T16:38:23.058Z","level":"log","context":"RoutesResolver","message":"StripeWebhookController {/stripe/webhook}:"}
{"timestamp":"2026-10-21T16:38:23.058Z","level":"log","context":"RouterExplorer","message":"Mapped {/stripe/webhook/test, GET} route"}
{"timestamp":"2026-10-21T16:38:23.058Z","level":"log","context":"RouterExplorer","message":"Mapped {/stripe/webhook, POST} route"}
{"timestamp":"2026-10-21T16:38:23.058Z","level":"log","context":"RoutesResolver","message":"EmailController {/email-templates}:"}
{"timestamp":"2026-10-21T16:38:23.058Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates/test, POST} route"}
{"timestamp":"2026-10-21T16:38:23.058Z","level":"log","context":"RoutesResolver","message":"EmployeeController {/employees}:"}
{"timestamp":"2026-10-21T16:38:23.059Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees, POST} route"}
{"timestamp":"2026-10-21T16:38:23.059Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees, GET} route"}
{"timestamp":"2026-10-21T16:38:23.059Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees/export, GET} route"}
{"timestamp":"2026-10-21T16:38:23.059Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees/risk-stats, GET} route"}
{"timestamp":"2026-10-21T16:38:23.059Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees/:id, GET} route"}
{"timestamp":"2026-10-21T16:38:23.060Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees/:id, PUT} route"}
{"timestamp":"2026-10-21T16:38:23.060Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees/:id, DELETE} route"}
{"timestamp":"2026-10-21T16:38:23.060Z","level":"log","context":"RoutesResolver","message":"GroupController {/groups}:"}
{"timestamp":"2026-10-21T16:38:23.060Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups, POST} route"}
{"timestamp":"2026-10-21T16:38:23.060Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups, GET} route"}
{"timestamp":"2026-10-21T16:38:23.060Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups/standard, GET} route"}
{"timestamp":"2026-10-21T16:38:23.060Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups/:id, GET} route"}
{"timestamp":"2026-10-21T16:38:23.061Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups/:id, PUT} route"}
{"timestamp":"2026-10-21T16:38:23.061Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups/:id, DELETE} route"}
{"timestamp":"2026-10-21T16:38:23.061Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups/:id/info, GET} route"}
{"timestamp":"2026-10-21T16:38:23.061Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups/:id/with-employees, GET} route"}
{"timestamp":"2026-10-21T16:38:23.061Z","level":"log","context":"RoutesResolver","message":"SenderProfileController {/sender-profiles}:"}
{"timestamp":"2026-10-21T16:38:23.061Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles, GET} route"}
{"timestamp":"2026-10-21T16:38:23.062Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles/:id, GET} route"}
{"timestamp":"2026-10-21T16:38:23.062Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles, POST} route"}
{"timestamp":"2026-10-21T16:38:23.062Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles/:id, PUT} route"}
{"timestamp":"2026-10-21T16:38:23.062Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles/:id, DELETE} route"}
{"timestamp":"2026-10-21T16:38:23.062Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles/:id/verify-domain, POST} route"}
{"timestamp":"2026-10-21T16:38:23.062Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles/domain-verification, GET} route"}
{"timestamp":"2026-10-21T16:38:23.063Z","level":"log","context":"RoutesResolver","message":"EmailTemplateController {/email-templates}:"}
{"timestamp":"2026-10-21T16:38:23.063Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates, GET} route"}
{"timestamp":"2026-10-21T16:38:23.063Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates/:id, GET} route"}
{"timestamp":"2026-10-21T16:38:23.063Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates, POST} route"}
{"timestamp":"2026-10-21T16:38:23.063Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates/:id, PUT} route"}
{"timestamp":"2026-10-21T16:38:23.063Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates/:id, DELETE} route"}
{"timestamp":"2026-10-21T16:38:23.064Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates/:id/duplicate, POST} route"}
{"timestamp":"2026-10-21T16:38:23.064Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates/:id/preview, GET} route"}
{"timestamp":"2026-10-21T16:38:23.064Z","level":"log","context":"RoutesResolver","message":"ScenarioController {/scenarios}:"}
{"timestamp":"2026-10-21T16:38:23.064Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios, POST} route"}
{"timestamp":"2026-10-21T16:38:23.064Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios/generate-content, POST} route"}
{"timestamp":"2026-10-21T16:38:23.064Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios, GET} route"}
{"timestamp":"2026-10-21T16:38:23.065Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios/:id, GET} route"}
{"timestamp":"2026-10-21T16:38:23.065Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios/:id, PUT} route"}
{"timestamp":"2026-10-21T16:38:23.065Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios/:id, DELETE} route"}
{"timestamp":"2026-10-21T16:38:23.065Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios/generate-from-json, POST} route"}
{"timestamp":"2026-10-21T16:38:23.065Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios/:id/save-as-custom-scenario, POST} route"}
{"timestamp":"2026-10-21T16:38:23.065Z","level":"log","context":"RoutesResolver","message":"CampaignController {/campaigns}:"}
{"timestamp":"2026-10-21T16:38:23.066Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns, POST} route"}
{"timestamp":"2026-10-21T16:38:23.066Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns, GET} route"}
{"timestamp":"2026-10-21T16:38:23.066Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id, GET} route"}
{"timestamp":"2026-10-21T16:38:23.066Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id/details, GET} route"}
{"timestamp":"2026-10-21T16:38:23.066Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id/employees, GET} route"}
{"timestamp":"2026-10-21T16:38:23.067Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id, PATCH} route"}
{"timestamp":"2026-10-21T16:38:23.067Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id/start, POST} route"}
{"timestamp":"2026-10-21T16:38:23.067Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id/stop, POST} route"}
{"timestamp":"2026-10-21T16:38:23.067Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id/duplicate, POST} route"}
{"timestamp":"2026-10-21T16:38:23.067Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id, DELETE} route"}
{"timestamp":"2026-10-21T16:38:23.067Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/auto-generate-program, POST} route"}
{"timestamp":"2026-10-21T16:38:23.068Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/generate-from-threat-intelligence, POST} route"}
{"timestamp":"2026-10-21T16:38:23.068Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id/risk-score, GET} route"}
{"timestamp":"2026-10-21T16:38:23.068Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/recalculate-risk-scores, POST} route"}
{"timestamp":"2026-10-21T16:38:23.068Z","level":"log","context":"RoutesResolver","message":"CampaignController {/api/campaigns}:"}
{"timestamp":"2026-10-21T16:38:23.068Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns, POST} route"}
{"timestamp":"2026-10-21T16:38:23.068Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns, GET} route"}
{"timestamp":"2026-10-21T16:38:23.068Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id, GET} route"}
{"timestamp":"2026-10-21T16:38:23.069Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id/details, GET} route"}
{"timestamp":"2026-10-21T16:38:23.069Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id/employees, GET} route"}
{"timestamp":"2026-10-21T16:38:23.069Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id, PATCH} route"}
{"timestamp":"2026-10-21T16:38:23.069Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id/start, POST} route"}
{"timestamp":"2026-10-21T16:38:23.069Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id/stop, POST} route"}
{"timestamp":"2026-10-21T16:38:23.069Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id/duplicate, POST} route"}
{"timestamp":"2026-10-21T16:38:23.070Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id, DELETE} route"}
{"timestamp":"2026-10-21T16:38:23.070Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/auto-generate-program, POST} route"}
{"timestamp":"2026-10-21T16:38:23.070Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/generate-from-threat-intelligence, POST} route"}
{"timestamp":"2026-10-21T16:38:23.070Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id/risk-score, GET} route"}
{"timestamp":"2026-10-21T16:38:23.070Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/recalculate-risk-scores, POST} route"}
{"timestamp":"2026-10-21T16:38:23.070Z","level":"log","context":"RoutesResolver","message":"NotificationsController {/notifications}:"}
{"timestamp":"2026-10-21T16:38:23.071Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications, POST} route"}
{"timestamp":"2026-10-21T16:38:23.071Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications, GET} route"}
{"timestamp":"2026-10-21T16:38:23.071Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/unread, GET} route"}
{"timestamp":"2026-10-21T16:38:23.071Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/unread-count, GET} route"}
{"timestamp":"2026-10-21T16:38:23.071Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/:id, GET} route"}
{"timestamp":"2026-10-21T16:38:23.072Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/:id, PATCH} route"}
{"timestamp":"2026-10-21T16:38:23.072Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/:id/read, PATCH} route"}
{"timestamp":"2026-10-21T16:38:23.072Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/mark-all-read, PATCH} route"}
{"timestamp":"2026-10-21T16:38:23.072Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/:id, DELETE} route"}
{"timestamp":"2026-10-21T16:38:23.072Z","level":"log","context":"RoutesResolver","message":"LandingPageController {/lp}:"}
{"timestamp":"2026-10-21T16:38:23.073Z","level":"log","context":"RouterExplorer","message":"Mapped {/lp/image, GET} route"}
{"timestamp":"2026-10-21T16:38:23.073Z","level":"log","context":"RouterExplorer","message":"Mapped {/lp/learning, GET} route"}
{"timestamp":"2026-10-21T16:38:23.073Z","level":"log","context":"RouterExplorer","message":"Mapped {/lp/submit, POST} route"}
{"timestamp":"2026-10-21T16:38:23.073Z","level":"log","context":"RouterExplorer","message":"Mapped {/lp/test, GET} route"}
{"timestamp":"2026-10-21T16:38:23.073Z","level":"warn","context":"LegacyRouteConverter","message":"Unsupported route path: \"/lp/*\". In previous versions, the symbols ?, *, and + were used to denote optional or repeating path parameters. The latest version of \"path-to-regexp\" now requires the use of named parameters. For example, instead of using a route like /users/* to capture all routes starting with \"/users\", you should use /users/*path. For more details, refer to the migration guide. Attempting to auto-convert..."}
{"timestamp":"2026-10-21T16:38:23.074Z","level":"log","context":"RouterExplorer","message":"Mapped {/lp/*, ALL} route"}
{"timestamp":"2026-10-21T16:38:23.074Z","level":"log","context":"RoutesResolver","message":"SupportController {/support}:"}
{"timestamp":"2026-10-21T16:38:23.075Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets, POST} route"}
{"timestamp":"2026-10-21T16:38:23.075Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets, GET} route"}
{"timestamp":"2026-10-21T16:38:23.075Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets/:id, GET} route"}
{"timestamp":"2026-10-21T16:38:23.075Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets/:id, PATCH} route"}
{"timestamp":"2026-10-21T16:38:23.075Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets/:id, DELETE} route"}
{"timestamp":"2026-10-21T16:38:23.076Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets/:id/messages, POST} route"}
{"timestamp":"2026-10-21T16:38:23.076Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets/:id/close, POST} route"}
{"timestamp":"2026-10-21T16:38:23.076Z","level":"log","context":"RoutesResolver","message":"BusninessMetricsController {/business-metrics}:"}
{"timestamp":"2026-10-21T16:38:23.076Z","level":"log","context":"RouterExplorer","message":"Mapped {/business-metrics, GET} route"}
{"timestamp":"2026-10-21T16:38:23.076Z","level":"log","context":"RoutesResolver","message":"UsersController {/users}:"}
{"timestamp":"2026-10-21T16:38:23.076Z","level":"log","context":"RouterExplorer","message":"Mapped {/users/:id, PUT} route"}
{"timestamp":"2026-10-21T16:38:23.077Z","level":"log","context":"RouterExplorer","message":"Mapped {/users/settings, GET} route"}
{"timestamp":"2026-10-21T16:38:23.077Z","level":"log","context":"RouterExplorer","message":"Mapped {/users/settings/general, PUT} route"}
{"timestamp":"2026-10-21T16:38:23.077Z","level":"log","context":"RouterExplorer","message":"Mapped {/users/company/settings, PUT} route"}
{"timestamp":"2026-10-21T16:38:23.077Z","level":"log","context":"RouterExplorer","message":"Mapped {/users/change-password, POST} route"}
{"timestamp":"2026-10-21T16:38:23.077Z","level":"log","context":"RouterExplorer","message":"Mapped {/users/localization/settings, PUT} route"}
{"timestamp":"2026-10-21T16:38:23.077Z","level":"log","context":"RoutesResolver","message":"PartnerController {/partner}:"}
{"timestamp":"2026-10-21T16:38:23.078Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses, POST} route"}
{"timestamp":"2026-10-21T16:38:23.078Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses, GET} route"}
{"timestamp":"2026-10-21T16:38:23.078Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses/:id, GET} route"}
{"timestamp":"2026-10-21T16:38:23.078Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses/:id, PUT} route"}
{"timestamp":"2026-10-21T16:38:23.078Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses/:id, DELETE} route"}
{"timestamp":"2026-10-21T16:38:23.078Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses/:id/impersonate, POST} route"}
{"timestamp":"2026-10-21T16:38:23.079Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses/stop-impersonation, POST} route"}
{"timestamp":"2026-10-21T16:38:23.079Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/license-usage, GET} route"}
{"timestamp":"2026-10-21T16:38:23.079Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/invoices, POST} route"}
{"timestamp":"2026-10-21T16:38:23.079Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/invoices, GET} route"}
{"timestamp":"2026-10-21T16:38:23.079Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/invoices/:id, GET} route"}
{"timestamp":"2026-10-21T16:38:23.080Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/invoices/:id, PUT} route"}
{"timestamp":"2026-10-21T16:38:23.080Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/invoices/:id, DELETE} route"}
{"timestamp":"2026-10-21T16:38:23.080Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/invoices/:id/mark-paid, PUT} route"}
{"timestamp":"2026-10-21T16:38:23.080Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/onboarding/generate-token, POST} route"}
{"timestamp":"2026-10-21T16:38:23.080Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/dashboard, GET} route"}
{"timestamp":"2026-10-21T16:38:23.080Z","level":"log","context":"RoutesResolver","message":"MspSubscriptionController {/partner/msp-subscriptions}:"}
{"timestamp":"2026-10-21T16:38:23.081Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/plans, POST} route"}
{"timestamp":"2026-10-21T16:38:23.081Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/plans, GET} route"}
{"timestamp":"2026-10-21T16:38:23.081Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/plans/:planId, GET} route"}
{"timestamp":"2026-10-21T16:38:23.081Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/plans/:planId, PUT} route"}
{"timestamp":"2026-10-21T16:38:23.081Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/plans/:planId, DELETE} route"}
{"timestamp":"2026-10-21T16:38:23.081Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/businesses/:businessId/subscription, POST} route"}
{"timestamp":"2026-10-21T16:38:23.082Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions, GET} route"}
{"timestamp":"2026-10-21T16:38:23.082Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/businesses/:businessId/subscription, GET} route"}
{"timestamp":"2026-10-21T16:38:23.082Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/businesses/:businessId/subscription, PUT} route"}
{"timestamp":"2026-10-21T16:38:23.082Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/businesses/:businessId/subscription, DELETE} route"}
{"timestamp":"2026-10-21T16:38:23.082Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/businesses/:businessId/subscription/limits, GET} route"}
{"timestamp":"2026-10-21T16:38:23.083Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/businesses/:businessId/subscription/change-plan, PUT} route"}
{"timestamp":"2026-10-21T16:38:23.083Z","level":"log","context":"RoutesResolver","message":"OnboardingController {/onboarding}:"}
{"timestamp":"2026-10-21T16:38:23.083Z","level":"log","context":"RouterExplorer","message":"Mapped {/onboarding/validate/:token, GET} route"}
{"timestamp":"2026-10-21T16:38:23.083Z","level":"log","context":"RouterExplorer","message":"Mapped {/onboarding/complete/:token, POST} route"}
{"timestamp":"2026-10-21T16:38:23.083Z","level":"log","context":"RoutesResolver","message":"ResellerController {/reseller}:"}
{"timestamp":"2026-10-21T16:38:23.083Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/businesses, POST} route"}
{"timestamp":"2026-10-21T16:38:23.084Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/businesses, GET} route"}
{"timestamp":"2026-10-21T16:38:23.084Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/businesses/:id, GET} route"}
{"timestamp":"2026-10-21T16:38:23.084Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/businesses/:id, PUT} route"}
{"timestamp":"2026-10-21T16:38:23.084Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/businesses/:id, DELETE} route"}
{"timestamp":"2026-10-21T16:38:23.084Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/license-usage, GET} route"}
{"timestamp":"2026-10-21T16:38:23.084Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/invoices, POST} route"}
{"timestamp":"2026-10-21T16:38:23.085Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/invoices, GET} route"}
{"timestamp":"2026-10-21T16:38:23.085Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/invoices/:id, GET} route"}
{"timestamp":"2026-10-21T16:38:23.085Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/invoices/:id, PUT} route"}
{"timestamp":"2026-10-21T16:38:23.085Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/invoices/:id, DELETE} route"}
{"timestamp":"2026-10-21T16:38:23.085Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/invoices/:id/mark-paid, PUT} route"}
{"timestamp":"2026-10-21T16:38:23.086Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/onboarding/generate-token, POST} route"}
{"timestamp":"2026-10-21T16:38:23.086Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/dashboard, GET} route"}
{"timestamp":"2026-10-21T16:38:23.086Z","level":"log","context":"RoutesResolver","message":"ResellerSubscriptionController {/reseller}:"}
{"timestamp":"2026-10-21T16:38:23.086Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/plans, POST} route"}
{"timestamp":"2026-10-21T16:38:23.086Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/plans, GET} route"}
{"timestamp":"2026-10-21T16:38:23.086Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/plans/:planId, GET} route"}
{"timestamp":"2026-10-21T16:38:23.087Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/plans/:planId, PUT} route"}
{"timestamp":"2026-10-21T16:38:23.087Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/plans/:planId, DELETE} route"}
{"timestamp":"2026-10-21T16:38:23.087Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/subscriptions/businesses/:businessId/subscription, POST} route"}
{"timestamp":"2026-10-21T16:38:23.087Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/subscriptions, GET} route"}
{"timestamp":"2026-10-21T16:38:23.087Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/subscriptions/businesses/:businessId/subscription, GET} route"}
{"timestamp":"2026-10-21T16:38:23.088Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/subscriptions/businesses/:businessId/subscription, PUT} route"}
{"timestamp":"2026-10-21T16:38:23.088Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/subscriptions/businesses/:businessId/subscription, DELETE} route"}
{"timestamp":"2026-10-21T16:38:23.088Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/subscriptions/businesses/:businessId/subscription/limits, GET} route"}
{"timestamp":"2026-10-21T16:38:23.088Z","level":"log","context":"RoutesResolver","message":"HealthController {/health}:"}
{"timestamp":"2026-10-21T16:38:23.088Z","level":"log","context":"RouterExplorer","message":"Mapped {/health, GET} route"}
{"timestamp":"2026-10-21T16:38:23.088Z","level":"log","context":"RouterExplorer","message":"Mapped {/health/test-logs, GET} route"}
{"timestamp":"2026-10-21T16:38:23.088Z","level":"log","context":"RoutesResolver","message":"AzureAdController {/azure-ad}:"}
{"timestamp":"2026-10-21T16:38:23.089Z","level":"log","context":"RouterExplorer","message":"Mapped {/azure-ad/config, POST} route"}
{"timestamp":"2026-10-21T16:38:23.089Z","level":"log","context":"RouterExplorer","message":"Mapped {/azure-ad/config, GET} route"}
{"timestamp":"2026-10-21T16:38:23.089Z","level":"log","context":"RouterExplorer","message":"Mapped {/azure-ad/test-connection, POST} route"}
{"timestamp":"2026-10-21T16:38:23.089Z","level":"log","context":"RouterExplorer","message":"Mapped {/azure-ad/sync, POST} route"}
{"timestamp":"2026-10-21T16:38:23.089Z","level":"log","context":"RoutesResolver","message":"ThreatsController {/threats}:"}
{"timestamp":"2026-10-21T16:38:23.089Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats, POST} route"}
{"timestamp":"2026-10-21T16:38:23.090Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats, GET} route"}
{"timestamp":"2026-10-21T16:38:23.090Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/chart-data, GET} route"}
{"timestamp":"2026-10-21T16:38:23.090Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/claude-search, POST} route"}
{"timestamp":"2026-10-21T16:38:23.090Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/claude-latest, POST} route"}
{"timestamp":"2026-10-21T16:38:23.090Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/claude-trending, POST} route"}
{"timestamp":"2026-10-21T16:38:23.091Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/claude-categories, POST} route"}
{"timestamp":"2026-10-21T16:38:23.091Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/claude-manual-search, POST} route"}
{"timestamp":"2026-10-21T16:38:23.091Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/claude-quick-search, POST} route"}
{"timestamp":"2026-10-21T16:38:23.091Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/scheduler-status, GET} route"}
{"timestamp":"2026-10-21T16:38:23.091Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/health-check, GET} route"}
{"timestamp":"2026-10-21T16:38:23.091Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/pause-scheduler, POST} route"}
{"timestamp":"2026-10-21T16:38:23.092Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/:id, GET} route"}
{"timestamp":"2026-10-21T16:38:23.092Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/:id, PATCH} route"}
{"timestamp":"2026-10-21T16:38:23.092Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/:id, DELETE} route"}
{"timestamp":"2026-10-21T16:38:23.092Z","level":"log","context":"RoutesResolver","message":"DomainController {/domains}:"}
{"timestamp":"2026-10-21T16:38:23.092Z","level":"log","context":"RouterExplorer","message":"Mapped {/domains, GET} route"}
{"timestamp":"2026-10-21T16:38:23.092Z","level":"log","context":"RouterExplorer","message":"Mapped {/domains/:id, GET} route"}
{"timestamp":"2026-10-21T16:38:23.093Z","level":"log","context":"RouterExplorer","message":"Mapped {/domains, POST} route"}
{"timestamp":"2026-10-21T16:38:23.093Z","level":"log","context":"RouterExplorer","message":"Mapped {/domains/:id, PUT} route"}
{"timestamp":"2026-10-21T16:38:23.093Z","level":"log","context":"RouterExplorer","message":"Mapped {/domains/:id, DELETE} route"}
{"timestamp":"2026-10-21T16:38:23.093Z","level":"log","context":"RouterExplorer","message":"Mapped {/domains/seed, POST} route"}
{"timestamp":"2026-10-21T16:38:23.093Z","level":"log","context":"RoutesResolver","message":"MspSubscriptionController {/msp-subscription}:"}
{"timestamp":"2026-10-21T16:38:23.093Z","level":"log","context":"RouterExplorer","message":"Mapped {/msp-subscription/current, GET} route"}
{"timestamp":"2026-10-21T16:38:23.093Z","level":"log","context":"RouterExplorer","message":"Mapped {/msp-subscription/invoices, GET} route"}
{"timestamp":"2026-10-21T16:38:23.094Z","level":"log","context":"RouterExplorer","message":"Mapped {/msp-subscription/invoice/:invoiceId/pdf, GET} route"}
{"timestamp":"2026-10-21T16:38:23.094Z","level":"log","context":"RoutesResolver","message":"MspSubscriptionController {/api/msp-subscription}:"}
{"timestamp":"2026-10-21T16:38:23.094Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/msp-subscription/current, GET} route"}
{"timestamp":"2026-10-21T16:38:23.094Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/msp-subscription/invoices, GET} route"}
{"timestamp":"2026-10-21T16:38:23.094Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/msp-subscription/invoice/:invoiceId/pdf, GET} route"}
{"timestamp":"2026-10-21T16:38:23.168Z","level":"log","context":"NestApplication","message":"Nest application successfully started"}
{"timestamp":"2026-10-21T16:38:23.179Z","level":"log","context":"Bootstrap","message":"Users API successfully started on port 3842"}
{"timestamp":"2026-10-21T16:38:23.179Z","level":"log","context":"SeedService","message":"🌱 Starting database seeding..."}
{"timestamp":"2026-10-21T16:38:23.185Z","level":"log","context":"SeedService","message":"Admin account already exists, skipping seed"}
{"timestamp":"2026-10-21T16:38:23.188Z","level":"log","context":"SeedService","message":"Reseller account already exists, skipping seed"}
{"timestamp":"2026-10-21T16:38:23.189Z","level":"log","context":"SeedService","message":"MSP account already exists, skipping seed"}
{"timestamp":"2026-10-21T16:38:23.189Z","level":"log","context":"SeedService","message":"✅ Database seeding completed successfully"}
{"timestamp":"2026-10-21T18:01:56.273Z","level":"warn","context":"LegacyRouteConverter","message":"Unsupported route path: \"/lp/*\". In previous versions, the symbols ?, *, and + were used to denote optional or repeating path parameters. The latest version of \"path-to-regexp\" now requires the use of named parameters. For example, instead of using a route like /users/* to capture all routes starting with \"/users\", you should use /users/*path. For more details, refer to the migration guide. Attempting to auto-convert..."}
{"timestamp":"2026-10-21T18:01:56.313Z","level":"log","context":"Bootstrap","message":"Starting Users API on port 3842..."}
{"timestamp":"2026-10-21T18:01:56.316Z","level":"log","context":"RoutesResolver","message":"UsersApiController {/}:"}
{"timestamp":"2026-10-21T18:01:56.320Z","level":"log","context":"RouterExplorer","message":"Mapped {/, GET} route"}
{"timestamp":"2026-10-21T18:01:56.320Z","level":"log","context":"RoutesResolver","message":"AuthController {/auth}:"}
{"timestamp":"2026-10-21T18:01:56.321Z","level":"log","context":"RouterExplorer","message":"Mapped {/auth/login, POST} route"}
{"timestamp":"2026-10-21T18:01:56.322Z","level":"log","context":"RouterExplorer","message":"Mapped {/auth/admin/login, POST} route"}
{"timestamp":"2026-10-21T18:01:56.322Z","level":"log","context":"RouterExplorer","message":"Mapped {/auth/send-otp, POST} route"}
{"timestamp":"2026-10-21T18:01:56.322Z","level":"log","context":"RouterExplorer","message":"Mapped {/auth/verify-otp, POST} route"}
{"timestamp":"2026-10-21T18:01:56.323Z","level":"log","context":"RouterExplorer","message":"Mapped {/auth/signup, POST} route"}
{"timestamp":"2026-10-21T18:01:56.324Z","level":"log","context":"RouterExplorer","message":"Mapped {/auth/subscription-status, GET} route"}
{"timestamp":"2026-10-21T18:01:56.324Z","level":"log","context":"RoutesResolver","message":"AdminMspController {/admin/msp}:"}
{"timestamp":"2026-10-21T18:01:56.324Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/msp, GET} route"}
{"timestamp":"2026-10-21T18:01:56.325Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/msp/:id, GET} route"}
{"timestamp":"2026-10-21T18:01:56.326Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/msp, POST} route"}
{"timestamp":"2026-10-21T18:01:56.326Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/msp/:id, PUT} route"}
{"timestamp":"2026-10-21T18:01:56.326Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/msp/:id, DELETE} route"}
{"timestamp":"2026-10-21T18:01:56.326Z","level":"log","context":"RoutesResolver","message":"AdminLicenseController {/admin/licenses}:"}
{"timestamp":"2026-10-21T18:01:56.327Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/licenses/summary, GET} route"}
{"timestamp":"2026-10-21T18:01:56.329Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/licenses/msp/:mspId, GET} route"}
{"timestamp":"2026-10-21T18:01:56.329Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/licenses/msp/:mspId, PUT} route"}
{"timestamp":"2026-10-21T18:01:56.329Z","level":"log","context":"RoutesResolver","message":"AdminImpersonationController {/admin/impersonation}:"}
{"timestamp":"2026-10-21T18:01:56.330Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/impersonation/msp-users, GET} route"}
{"timestamp":"2026-10-21T18:01:56.330Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/impersonation/impersonate, POST} route"}
{"timestamp":"2026-10-21T18:01:56.330Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/impersonation/stop, POST} route"}
{"timestamp":"2026-10-21T18:01:56.330Z","level":"log","context":"RoutesResolver","message":"AdminAiUsageController {/admin/ai-usage}:"}
{"timestamp":"2026-10-21T18:01:56.331Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-usage, GET} route"}
{"timestamp":"2026-10-21T18:01:56.331Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-usage/business/:businessId, GET} route"}
{"timestamp":"2026-10-21T18:01:56.331Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-usage/report/monthly, GET} route"}
{"timestamp":"2026-10-21T18:01:56.331Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-usage/pricing, GET} route"}
{"timestamp":"2026-10-21T18:01:56.331Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-usage/pricing, POST} route"}
{"timestamp":"2026-10-21T18:01:56.332Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-usage/credit/:businessId, PUT} route"}
{"timestamp":"2026-10-21T18:01:56.332Z","level":"log","context":"RoutesResolver","message":"AdminAiUsageController {/api/admin/ai-usage}:"}
{"timestamp":"2026-10-21T18:01:56.332Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-usage, GET} route"}
{"timestamp":"2026-10-21T18:01:56.332Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-usage/business/:businessId, GET} route"}
{"timestamp":"2026-10-21T18:01:56.332Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-usage/report/monthly, GET} route"}
{"timestamp":"2026-10-21T18:01:56.333Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-usage/pricing, GET} route"}
{"timestamp":"2026-10-21T18:01:56.333Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-usage/pricing, POST} route"}
{"timestamp":"2026-10-21T18:01:56.333Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-usage/credit/:businessId, PUT} route"}
{"timestamp":"2026-10-21T18:01:56.333Z","level":"log","context":"RoutesResolver","message":"AdminAiModelController {/admin/ai-models}:"}
{"timestamp":"2026-10-21T18:01:56.333Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models, POST} route"}
{"timestamp":"2026-10-21T18:01:56.333Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models, GET} route"}
{"timestamp":"2026-10-21T18:01:56.334Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/default, GET} route"}
{"timestamp":"2026-10-21T18:01:56.334Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/:id, GET} route"}
{"timestamp":"2026-10-21T18:01:56.334Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/:id, PUT} route"}
{"timestamp":"2026-10-21T18:01:56.334Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/:id, DELETE} route"}
{"timestamp":"2026-10-21T18:01:56.334Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/:id/set-default, POST} route"}
{"timestamp":"2026-10-21T18:01:56.334Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/assign-to-business, POST} route"}
{"timestamp":"2026-10-21T18:01:56.335Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/business/:businessId, GET} route"}
{"timestamp":"2026-10-21T18:01:56.335Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/:id/businesses, GET} route"}
{"timestamp":"2026-10-21T18:01:56.335Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/initialize-defaults, POST} route"}
{"timestamp":"2026-10-21T18:01:56.335Z","level":"log","context":"RoutesResolver","message":"AdminAiModelController {/api/admin/ai-models}:"}
{"timestamp":"2026-10-21T18:01:56.335Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models, POST} route"}
{"timestamp":"2026-10-21T18:01:56.336Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models, GET} route"}
{"timestamp":"2026-10-21T18:01:56.336Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/default, GET} route"}
{"timestamp":"2026-10-21T18:01:56.336Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/:id, GET} route"}
{"timestamp":"2026-10-21T18:01:56.336Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/:id, PUT} route"}
{"timestamp":"2026-10-21T18:01:56.336Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/:id, DELETE} route"}
{"timestamp":"2026-10-21T18:01:56.336Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/:id/set-default, POST} route"}
{"timestamp":"2026-10-21T18:01:56.337Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/assign-to-business, POST} route"}
{"timestamp":"2026-10-21T18:01:56.337Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/business/:businessId, GET} route"}
{"timestamp":"2026-10-21T18:01:56.337Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/:id/businesses, GET} route"}
{"timestamp":"2026-10-21T18:01:56.337Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/initialize-defaults, POST} route"}
{"timestamp":"2026-10-21T18:01:56.337Z","level":"log","context":"RoutesResolver","message":"AdminBusinessController {/admin/businesses}:"}
{"timestamp":"2026-10-21T18:01:56.338Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/businesses, GET} route"}
{"timestamp":"2026-10-21T18:01:56.338Z","level":"log","context":"RoutesResolver","message":"ResellerManagementController {/admin/resellers}:"}
{"timestamp":"2026-10-21T18:01:56.338Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/resellers, GET} route"}
{"timestamp":"2026-10-21T18:01:56.338Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/resellers/create-default, POST} route"}
{"timestamp":"2026-10-21T18:01:56.338Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/resellers, POST} route"}
{"timestamp":"2026-10-21T18:01:56.338Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/resellers/:id/toggle-status, PUT} route"}
{"timestamp":"2026-10-21T18:01:56.338Z","level":"log","context":"RoutesResolver","message":"SubscriptionController {/subscription}:"}
{"timestamp":"2026-10-21T18:01:56.339Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/plans, GET} route"}
{"timestamp":"2026-10-21T18:01:56.339Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/calculate-price, POST} route"}
{"timestamp":"2026-10-21T18:01:56.339Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/current, GET} route"}
{"timestamp":"2026-10-21T18:01:56.339Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/create, POST} route"}
{"timestamp":"2026-10-21T18:01:56.339Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/:id, PUT} route"}
{"timestamp":"2026-10-21T18:01:56.339Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/:id/cancel, DELETE} route"}
{"timestamp":"2026-10-21T18:01:56.340Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/sync/:stripeSubscriptionId, POST} route"}
{"timestamp":"2026-10-21T18:01:56.340Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/payments, GET} route"}
{"timestamp":"2026-10-21T18:01:56.340Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/payments/stats, GET} route"}
{"timestamp":"2026-10-21T18:01:56.340Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/payment/:id, GET} route"}
{"timestamp":"2026-10-21T18:01:56.340Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/payment-methods/attach, POST} route"}
{"timestamp":"2026-10-21T18:01:56.340Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/payment-methods/:paymentMethodId, DELETE} route"}
{"timestamp":"2026-10-21T18:01:56.341Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/payment-methods, GET} route"}
{"timestamp":"2026-10-21T18:01:56.341Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/setup-intent, POST} route"}
{"timestamp":"2026-10-21T18:01:56.341Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/update-employee-count, POST} route"}
{"timestamp":"2026-10-21T18:01:56.341Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/retry-payment/:subscriptionId, POST} route"}
{"timestamp":"2026-10-21T18:01:56.341Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/invoice/:invoiceId/pdf, GET} route"}
{"timestamp":"2026-10-21T18:01:56.341Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/preview-upgrade, POST} route"}
{"timestamp":"2026-10-21T18:01:56.341Z","level":"log","context":"RoutesResolver","message":"SubscriptionController {/api/subscription}:"}
{"timestamp":"2026-10-21T18:01:56.342Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/plans, GET} route"}
{"timestamp":"2026-10-21T18:01:56.342Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/calculate-price, POST} route"}
{"timestamp":"2026-10-21T18:01:56.342Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/current, GET} route"}
{"timestamp":"2026-10-21T18:01:56.342Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/create, POST} route"}
{"timestamp":"2026-10-21T18:01:56.342Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/:id, PUT} route"}
{"timestamp":"2026-10-21T18:01:56.342Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/:id/cancel, DELETE} route"}
{"timestamp":"2026-10-21T18:01:56.342Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/sync/:stripeSubscriptionId, POST} route"}
{"timestamp":"2026-10-21T18:01:56.343Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/payments, GET} route"}
{"timestamp":"2026-10-21T18:01:56.343Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/payments/stats, GET} route"}
{"timestamp":"2026-10-21T18:01:56.343Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/payment/:id, GET} route"}
{"timestamp":"2026-10-21T18:01:56.343Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/payment-methods/attach, POST} route"}
{"timestamp":"2026-10-21T18:01:56.343Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/payment-methods/:paymentMethodId, DELETE} route"}
{"timestamp":"2026-10-21T18:01:56.343Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/payment-methods, GET} route"}
{"timestamp":"2026-10-21T18:01:56.344Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/setup-intent, POST} route"}
{"timestamp":"2026-10-21T18:01:56.344Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/update-employee-count, POST} route"}
{"timestamp":"2026-10-21T18:01:56.344Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/retry-payment/:subscriptionId, POST} route"}
{"timestamp":"2026-10-21T18:01:56.344Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/invoice/:invoiceId/pdf, GET} route"}
{"timestamp":"2026-10-21T18:01:56.344Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/preview-upgrade, POST} route"}
{"timestamp":"2026-10-21T18:01:56.344Z","level":"log","context":"RoutesResolver","message":"StripeWebhookController {/stripe/webhook}:"}
{"timestamp":"2026-10-21T18:01:56.344Z","level":"log","context":"RouterExplorer","message":"Mapped {/stripe/webhook/test, GET} route"}
{"timestamp":"2026-10-21T18:01:56.345Z","level":"log","context":"RouterExplorer","message":"Mapped {/stripe/webhook, POST} route"}
{"timestamp":"2026-10-21T18:01:56.345Z","level":"log","context":"RoutesResolver","message":"EmailController {/email-templates}:"}
{"timestamp":"2026-10-21T18:01:56.345Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates/test, POST} route"}
{"timestamp":"2026-10-21T18:01:56.345Z","level":"log","context":"RoutesResolver","message":"EmployeeController {/employees}:"}
{"timestamp":"2026-10-21T18:01:56.345Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees, POST} route"}
{"timestamp":"2026-10-21T18:01:56.345Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees, GET} route"}
{"timestamp":"2026-10-21T18:01:56.345Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees/export, GET} route"}
{"timestamp":"2026-10-21T18:01:56.346Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees/risk-stats, GET} route"}
{"timestamp":"2026-10-21T18:01:56.346Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees/:id, GET} route"}
{"timestamp":"2026-10-21T18:01:56.346Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees/:id, PUT} route"}
{"timestamp":"2026-10-21T18:01:56.346Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees/:id, DELETE} route"}
{"timestamp":"2026-10-21T18:01:56.346Z","level":"log","context":"RoutesResolver","message":"GroupController {/groups}:"}
{"timestamp":"2026-10-21T18:01:56.346Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups, POST} route"}
{"timestamp":"2026-10-21T18:01:56.346Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups, GET} route"}
{"timestamp":"2026-10-21T18:01:56.347Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups/standard, GET} route"}
{"timestamp":"2026-10-21T18:01:56.347Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups/:id, GET} route"}
{"timestamp":"2026-10-21T18:01:56.347Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups/:id, PUT} route"}
{"timestamp":"2026-10-21T18:01:56.347Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups/:id, DELETE} route"}
{"timestamp":"2026-10-21T18:01:56.347Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups/:id/info, GET} route"}
{"timestamp":"2026-10-21T18:01:56.347Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups/:id/with-employees, GET} route"}
{"timestamp":"2026-10-21T18:01:56.347Z","level":"log","context":"RoutesResolver","message":"SenderProfileController {/sender-profiles}:"}
{"timestamp":"2026-10-21T18:01:56.348Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles, GET} route"}
{"timestamp":"2026-10-21T18:01:56.348Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles/:id, GET} route"}
{"timestamp":"2026-10-21T18:01:56.348Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles, POST} route"}
{"timestamp":"2026-10-21T18:01:56.348Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles/:id, PUT} route"}
{"timestamp":"2026-10-21T18:01:56.348Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles/:id, DELETE} route"}
{"timestamp":"2026-10-21T18:01:56.348Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles/:id/verify-domain, POST} route"}
{"timestamp":"2026-10-21T18:01:56.349Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles/domain-verification, GET} route"}
{"timestamp":"2026-10-21T18:01:56.349Z","level":"log","context":"RoutesResolver","message":"EmailTemplateController {/email-templates}:"}
{"timestamp":"2026-10-21T18:01:56.349Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates, GET} route"}
{"timestamp":"2026-10-21T18:01:56.349Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates/:id, GET} route"}
{"timestamp":"2026-10-21T18:01:56.349Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates, POST} route"}
{"timestamp":"2026-10-21T18:01:56.349Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates/:id, PUT} route"}
{"timestamp":"2026-10-21T18:01:56.350Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates/:id, DELETE} route"}
{"timestamp":"2026-10-21T18:01:56.350Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates/:id/duplicate, POST} route"}
{"timestamp":"2026-10-21T18:01:56.350Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates/:id/preview, GET} route"}
{"timestamp":"2026-10-21T18:01:56.350Z","level":"log","context":"RoutesResolver","message":"ScenarioController {/scenarios}:"}
{"timestamp":"2026-10-21T18:01:56.350Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios, POST} route"}
{"timestamp":"2026-10-21T18:01:56.350Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios/generate-content, POST} route"}
{"timestamp":"2026-10-21T18:01:56.350Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios, GET} route"}
{"timestamp":"2026-10-21T18:01:56.351Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios/:id, GET} route"}
{"timestamp":"2026-10-21T18:01:56.351Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios/:id, PUT} route"}
{"timestamp":"2026-10-21T18:01:56.351Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios/:id, DELETE} route"}
{"timestamp":"2026-10-21T18:01:56.351Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios/generate-from-json, POST} route"}
{"timestamp":"2026-10-21T18:01:56.351Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios/:id/save-as-custom-scenario, POST} route"}
{"timestamp":"2026-10-21T18:01:56.351Z","level":"log","context":"RoutesResolver","message":"CampaignController {/campaigns}:"}
{"timestamp":"2026-10-21T18:01:56.352Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns, POST} route"}
{"timestamp":"2026-10-21T18:01:56.352Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns, GET} route"}
{"timestamp":"2026-10-21T18:01:56.352Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id, GET} route"}
{"timestamp":"2026-10-21T18:01:56.352Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id/details, GET} route"}
{"timestamp":"2026-10-21T18:01:56.352Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id/employees, GET} route"}
{"timestamp":"2026-10-21T18:01:56.352Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id, PATCH} route"}
{"timestamp":"2026-10-21T18:01:56.353Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id/start, POST} route"}
{"timestamp":"2026-10-21T18:01:56.353Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id/stop, POST} route"}
{"timestamp":"2026-10-21T18:01:56.353Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id/duplicate, POST} route"}
{"timestamp":"2026-10-21T18:01:56.353Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id, DELETE} route"}
{"timestamp":"2026-10-21T18:01:56.353Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/auto-generate-program, POST} route"}
{"timestamp":"2026-10-21T18:01:56.353Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/generate-from-threat-intelligence, POST} route"}
{"timestamp":"2026-10-21T18:01:56.354Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id/risk-score, GET} route"}
{"timestamp":"2026-10-21T18:01:56.354Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/recalculate-risk-scores, POST} route"}
{"timestamp":"2026-10-21T18:01:56.354Z","level":"log","context":"RoutesResolver","message":"CampaignController {/api/campaigns}:"}
{"timestamp":"2026-10-21T18:01:56.354Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns, POST} route"}
{"timestamp":"2026-10-21T18:01:56.354Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns, GET} route"}
{"timestamp":"2026-10-21T18:01:56.354Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id, GET} route"}
{"timestamp":"2026-10-21T18:01:56.354Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id/details, GET} route"}
{"timestamp":"2026-10-21T18:01:56.355Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id/employees, GET} route"}
{"timestamp":"2026-10-21T18:01:56.355Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id, PATCH} route"}
{"timestamp":"2026-10-21T18:01:56.355Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id/start, POST} route"}
{"timestamp":"2026-10-21T18:01:56.355Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id/stop, POST} route"}
{"timestamp":"2026-10-21T18:01:56.355Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id/duplicate, POST} route"}
{"timestamp":"2026-10-21T18:01:56.355Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id, DELETE} route"}
{"timestamp":"2026-10-21T18:01:56.356Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/auto-generate-program, POST} route"}
{"timestamp":"2026-10-21T18:01:56.356Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/generate-from-threat-intelligence, POST} route"}
{"timestamp":"2026-10-21T18:01:56.356Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id/risk-score, GET} route"}
{"timestamp":"2026-10-21T18:01:56.356Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/recalculate-risk-scores, POST} route"}
{"timestamp":"2026-10-21T18:01:56.356Z","level":"log","context":"RoutesResolver","message":"NotificationsController {/notifications}:"}
{"timestamp":"2026-10-21T18:01:56.356Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications, POST} route"}
{"timestamp":"2026-10-21T18:01:56.357Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications, GET} route"}
{"timestamp":"2026-10-21T18:01:56.357Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/unread, GET} route"}
{"timestamp":"2026-10-21T18:01:56.357Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/unread-count, GET} route"}
{"timestamp":"2026-10-21T18:01:56.357Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/:id, GET} route"}
{"timestamp":"2026-10-21T18:01:56.357Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/:id, PATCH} route"}
{"timestamp":"2026-10-21T18:01:56.357Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/:id/read, PATCH} route"}
{"timestamp":"2026-10-21T18:01:56.358Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/mark-all-read, PATCH} route"}
{"timestamp":"2026-10-21T18:01:56.358Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/:id, DELETE} route"}
{"timestamp":"2026-10-21T18:01:56.358Z","level":"log","context":"RoutesResolver","message":"LandingPageController {/lp}:"}
{"timestamp":"2026-10-21T18:01:56.358Z","level":"log","context":"RouterExplorer","message":"Mapped {/lp/image, GET} route"}
{"timestamp":"2026-10-21T18:01:56.358Z","level":"log","context":"RouterExplorer","message":"Mapped {/lp/learning, GET} route"}
{"timestamp":"2026-10-21T18:01:56.359Z","level":"log","context":"RouterExplorer","message":"Mapped {/lp/submit, POST} route"}
{"timestamp":"2026-10-21T18:01:56.359Z","level":"log","context":"RouterExplorer","message":"Mapped {/lp/test, GET} route"}
{"timestamp":"2026-10-21T18:01:56.359Z","level":"warn","context":"LegacyRouteConverter","message":"Unsupported route path: \"/lp/*\". In previous versions, the symbols ?, *, and + were used to denote optional or repeating path parameters. The latest version of \"path-to-regexp\" now requires the use of named parameters. For example, instead of using a route like /users/* to capture all routes starting with \"/users\", you should use /users/*path. For more details, refer to the migration guide. Attempting to auto-convert..."}
{"timestamp":"2026-10-21T18:01:56.360Z","level":"log","context":"RouterExplorer","message":"Mapped {/lp/*, ALL} route"}
{"timestamp":"2026-10-21T18:01:56.360Z","level":"log","context":"RoutesResolver","message":"SupportController {/support}:"}
{"timestamp":"2026-10-21T18:01:56.360Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets, POST} route"}
{"timestamp":"2026-10-21T18:01:56.360Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets, GET} route"}
{"timestamp":"2026-10-21T18:01:56.360Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets/:id, GET} route"}
{"timestamp":"2026-10-21T18:01:56.360Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets/:id, PATCH} route"}
{"timestamp":"2026-10-21T18:01:56.361Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets/:id, DELETE} route"}
{"timestamp":"2026-10-21T18:01:56.361Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets/:id/messages, POST} route"}
{"timestamp":"2026-10-21T18:01:56.361Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets/:id/close, POST} route"}
{"timestamp":"2026-10-21T18:01:56.361Z","level":"log","context":"RoutesResolver","message":"BusninessMetricsController {/business-metrics}:"}
{"timestamp":"2026-10-21T18:01:56.361Z","level":"log","context":"RouterExplorer","message":"Mapped {/business-metrics, GET} route"}
{"timestamp":"2026-10-21T18:01:56.361Z","level":"log","context":"RoutesResolver","message":"UsersController {/users}:"}
{"timestamp":"2026-10-21T18:01:56.362Z","level":"log","context":"RouterExplorer","message":"Mapped {/users/:id, PUT} route"}
{"timestamp":"2026-10-21T18:01:56.362Z","level":"log","context":"RouterExplorer","message":"Mapped {/users/settings, GET} route"}
{"timestamp":"2026-10-21T18:01:56.362Z","level":"log","context":"RouterExplorer","message":"Mapped {/users/settings/general, PUT} route"}
{"timestamp":"2026-10-21T18:01:56.362Z","level":"log","context":"RouterExplorer","message":"Mapped {/users/company/settings, PUT} route"}
{"timestamp":"2026-10-21T18:01:56.363Z","level":"log","context":"RouterExplorer","message":"Mapped {/users/change-password, POST} route"}
{"timestamp":"2026-10-21T18:01:56.363Z","level":"log","context":"RouterExplorer","message":"Mapped {/users/localization/settings, PUT} route"}
{"timestamp":"2026-10-21T18:01:56.363Z","level":"log","context":"RoutesResolver","message":"PartnerController {/partner}:"}
{"timestamp":"2026-10-21T18:01:56.363Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses, POST} route"}
{"timestamp":"2026-10-21T18:01:56.363Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses, GET} route"}
{"timestamp":"2026-10-21T18:01:56.363Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses/:id, GET} route"}
{"timestamp":"2026-10-21T18:01:56.364Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses/:id, PUT} route"}
{"timestamp":"2026-10-21T18:01:56.364Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses/:id, DELETE} route"}
{"timestamp":"2026-10-21T18:01:56.364Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses/:id/impersonate, POST} route"}
{"timestamp":"2026-10-21T18:01:56.364Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses/stop-impersonation, POST} route"}
{"timestamp":"2026-10-21T18:01:56.364Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/license-usage, GET} route"}
{"timestamp":"2026-10-21T18:01:56.364Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/invoices, POST} route"}
{"timestamp":"2026-10-21T18:01:56.365Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/invoices, GET} route"}
{"timestamp":"2026-10-21T18:01:56.365Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/invoices/:id, GET} route"}
{"timestamp":"2026-10-21T18:01:56.365Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/invoices/:id, PUT} route"}
{"timestamp":"2026-10-21T18:01:56.365Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/invoices/:id, DELETE} route"}
{"timestamp":"2026-10-21T18:01:56.365Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/invoices/:id/mark-paid, PUT} route"}
{"timestamp":"2026-10-21T18:01:56.365Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/onboarding/generate-token, POST} route"}
{"timestamp":"2026-10-21T18:01:56.366Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/dashboard, GET} route"}
{"timestamp":"2026-10-21T18:01:56.366Z","level":"log","context":"RoutesResolver","message":"MspSubscriptionController {/partner/msp-subscriptions}:"}
{"timestamp":"2026-10-21T18:01:56.366Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/plans, POST} route"}
{"timestamp":"2026-10-21T18:01:56.366Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/plans, GET} route"}
{"timestamp":"2026-10-21T18:01:56.366Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/plans/:planId, GET} route"}
{"timestamp":"2026-10-21T18:01:56.366Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/plans/:planId, PUT} route"}
{"timestamp":"2026-10-21T18:01:56.367Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/plans/:planId, DELETE} route"}
{"timestamp":"2026-10-21T18:01:56.367Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/businesses/:businessId/subscription, POST} route"}
{"timestamp":"2026-10-21T18:01:56.367Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions, GET} route"}
{"timestamp":"2026-10-21T18:01:56.367Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/businesses/:businessId/subscription, GET} route"}
{"timestamp":"2026-10-21T18:01:56.367Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/businesses/:businessId/subscription, PUT} route"}
{"timestamp":"2026-10-21T18:01:56.368Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/businesses/:businessId/subscription, DELETE} route"}
{"timestamp":"2026-10-21T18:01:56.368Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/businesses/:businessId/subscription/limits, GET} route"}
{"timestamp":"2026-10-21T18:01:56.368Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/businesses/:businessId/subscription/change-plan, PUT} route"}
{"timestamp":"2026-10-21T18:01:56.368Z","level":"log","context":"RoutesResolver","message":"OnboardingController {/onboarding}:"}
{"timestamp":"2026-10-21T18:01:56.368Z","level":"log","context":"RouterExplorer","message":"Mapped {/onboarding/validate/:token, GET} route"}
{"timestamp":"2026-10-21T18:01:56.368Z","level":"log","context":"RouterExplorer","message":"Mapped {/onboarding/complete/:token, POST} route"}
{"timestamp":"2026-10-21T18:01:56.368Z","level":"log","context":"RoutesResolver","message":"ResellerController {/reseller}:"}
{"timestamp":"2026-10-21T18:01:56.369Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/businesses, POST} route"}
{"timestamp":"2026-10-21T18:01:56.369Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/businesses, GET} route"}
{"timestamp":"2026-10-21T18:01:56.369Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/businesses/:id, GET} route"}
{"timestamp":"2026-10-21T18:01:56.369Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/businesses/:id, PUT} route"}
{"timestamp":"2026-10-21T18:01:56.369Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/businesses/:id, DELETE} route"}
{"timestamp":"2026-10-21T18:01:56.370Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/license-usage, GET} route"}
{"timestamp":"2026-10-21T18:01:56.370Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/invoices, POST} route"}
{"timestamp":"2026-10-21T18:01:56.370Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/invoices, GET} route"}
{"timestamp":"2026-10-21T18:01:56.370Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/invoices/:id, GET} route"}
{"timestamp":"2026-10-21T18:01:56.370Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/invoices/:id, PUT} route"}
{"timestamp":"2026-10-21T18:01:56.370Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/invoices/:id, DELETE} route"}
{"timestamp":"2026-10-21T18:01:56.371Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/invoices/:id/mark-paid, PUT} route"}
{"timestamp":"2026-10-21T18:01:56.371Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/onboarding/generate-token, POST} route"}
{"timestamp":"2026-10-21T18:01:56.371Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/dashboard, GET} route"}
{"timestamp":"2026-10-21T18:01:56.371Z","level":"log","context":"RoutesResolver","message":"ResellerSubscriptionController {/reseller}:"}
{"timestamp":"2026-10-21T18:01:56.371Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/plans, POST} route"}
{"timestamp":"2026-10-21T18:01:56.371Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/plans, GET} route"}
{"timestamp":"2026-10-21T18:01:56.371Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/plans/:planId, GET} route"}
{"timestamp":"2026-10-21T18:01:56.372Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/plans/:planId, PUT} route"}
{"timestamp":"2026-10-21T18:01:56.372Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/plans/:planId, DELETE} route"}
{"timestamp":"2026-10-21T18:01:56.372Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/subscriptions/businesses/:businessId/subscription, POST} route"}
{"timestamp":"2026-10-21T18:01:56.372Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/subscriptions, GET} route"}
{"timestamp":"2026-10-21T18:01:56.372Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/subscriptions/businesses/:businessId/subscription, GET} route"}
{"timestamp":"2026-10-21T18:01:56.373Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/subscriptions/businesses/:businessId/subscription, PUT} route"}
{"timestamp":"2026-10-21T18:01:56.373Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/subscriptions/businesses/:businessId/subscription, DELETE} route"}
{"timestamp":"2026-10-21T18:01:56.373Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/subscriptions/businesses/:businessId/subscription/limits, GET} route"}
{"timestamp":"2026-10-21T18:01:56.373Z","level":"log","context":"RoutesResolver","message":"HealthController {/health}:"}
{"timestamp":"2026-10-21T18:01:56.373Z","level":"log","context":"RouterExplorer","message":"Mapped {/health, GET} route"}
{"timestamp":"2026-10-21T18:01:56.373Z","level":"log","context":"RouterExplorer","message":"Mapped {/health/test-logs, GET} route"}
{"timestamp":"2026-10-21T18:01:56.373Z","level":"log","context":"RoutesResolver","message":"AzureAdController {/azure-ad}:"}
{"timestamp":"2026-10-21T18:01:56.373Z","level":"log","context":"RouterExplorer","message":"Mapped {/azure-ad/config, POST} route"}
{"timestamp":"2026-10-21T18:01:56.374Z","level":"log","context":"RouterExplorer","message":"Mapped {/azure-ad/config, GET} route"}
{"timestamp":"2026-10-21T18:01:56.374Z","level":"log","context":"RouterExplorer","message":"Mapped {/azure-ad/test-connection, POST} route"}
{"timestamp":"2026-10-21T18:01:56.374Z","level":"log","context":"RouterExplorer","message":"Mapped {/azure-ad/sync, POST} route"}
{"timestamp":"2026-10-21T18:01:56.374Z","level":"log","context":"RoutesResolver","message":"ThreatsController {/threats}:"}
{"timestamp":"2026-10-21T18:01:56.374Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats, POST} route"}
{"timestamp":"2026-10-21T18:01:56.374Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats, GET} route"}
{"timestamp":"2026-10-21T18:01:56.375Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/chart-data, GET} route"}
{"timestamp":"2026-10-21T18:01:56.375Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/claude-search, POST} route"}
{"timestamp":"2026-10-21T18:01:56.375Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/claude-latest, POST} route"}
{"timestamp":"2026-10-21T18:01:56.375Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/claude-trending, POST} route"}
{"timestamp":"2026-10-21T18:01:56.375Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/claude-categories, POST} route"}
{"timestamp":"2026-10-21T18:01:56.375Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/claude-manual-search, POST} route"}
{"timestamp":"2026-10-21T18:01:56.376Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/claude-quick-search, POST} route"}
{"timestamp":"2026-10-21T18:01:56.376Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/scheduler-status, GET} route"}
{"timestamp":"2026-10-21T18:01:56.376Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/health-check, GET} route"}
{"timestamp":"2026-10-21T18:01:56.376Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/pause-scheduler, POST} route"}
{"timestamp":"2026-10-21T18:01:56.376Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/:id, GET} route"}
{"timestamp":"2026-10-21T18:01:56.376Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/:id, PATCH} route"}
{"timestamp":"2026-10-21T18:01:56.376Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/:id, DELETE} route"}
{"timestamp":"2026-10-21T18:01:56.376Z","level":"log","context":"RoutesResolver","message":"DomainController {/domains}:"}
{"timestamp":"2026-10-21T18:01:56.377Z","level":"log","context":"RouterExplorer","message":"Mapped {/domains, GET} route"}
{"timestamp":"2026-10-21T18:01:56.377Z","level":"log","context":"RouterExplorer","message":"Mapped {/domains/:id, GET} route"}
{"timestamp":"2026-10-21T18:01:56.377Z","level":"log","context":"RouterExplorer","message":"Mapped {/domains, POST} route"}
{"timestamp":"2026-10-21T18:01:56.377Z","level":"log","context":"RouterExplorer","message":"Mapped {/domains/:id, PUT} route"}
{"timestamp":"2026-10-21T18:01:56.377Z","level":"log","context":"RouterExplorer","message":"Mapped {/domains/:id, DELETE} route"}
{"timestamp":"2026-10-21T18:01:56.378Z","level":"log","context":"RouterExplorer","message":"Mapped {/domains/seed, POST} route"}
{"timestamp":"2026-10-21T18:01:56.378Z","level":"log","context":"RoutesResolver","message":"MspSubscriptionController {/msp-subscription}:"}
{"timestamp":"2026-10-21T18:01:56.378Z","level":"log","context":"RouterExplorer","message":"Mapped {/msp-subscription/current, GET} route"}
{"timestamp":"2026-10-21T18:01:56.378Z","level":"log","context":"RouterExplorer","message":"Mapped {/msp-subscription/invoices, GET} route"}
{"timestamp":"2026-10-21T18:01:56.378Z","level":"log","context":"RouterExplorer","message":"Mapped {/msp-subscription/invoice/:invoiceId/pdf, GET} route"}
{"timestamp":"2026-10-21T18:01:56.378Z","level":"log","context":"RoutesResolver","message":"MspSubscriptionController {/api/msp-subscription}:"}
{"timestamp":"2026-10-21T18:01:56.378Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/msp-subscription/current, GET} route"}
{"timestamp":"2026-10-21T18:01:56.378Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/msp-subscription/invoices, GET} route"}
{"timestamp":"2026-10-21T18:01:56.379Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/msp-subscription/invoice/:invoiceId/pdf, GET} route"}
{"timestamp":"2026-10-21T18:01:56.461Z","level":"log","context":"NestApplication","message":"Nest application successfully started"}
{"timestamp":"2026-10-21T18:01:56.469Z","level":"log","context":"Bootstrap","message":"Users API successfully started on port 3842"}
{"timestamp":"2026-10-21T18:01:56.469Z","level":"log","context":"SeedService","message":"🌱 Starting database seeding..."}
{"timestamp":"2026-10-21T18:01:56.473Z","level":"log","context":"SeedService","message":"Admin account already exists, skipping seed"}
{"timestamp":"2026-10-21T18:01:56.475Z","level":"log","context":"SeedService","message":"Reseller account already exists, skipping seed"}
{"timestamp":"2026-10-21T18:01:56.477Z","level":"log","context":"SeedService","message":"MSP account already exists, skipping seed"}
{"timestamp":"2026-10-21T18:01:56.477Z","level":"log","context":"SeedService","message":"✅ Database seeding completed successfully"}
{"timestamp":"2026-10-21T20:03:03.853Z","level":"warn","context":"LegacyRouteConverter","message":"Unsupported route path: \"/lp/*\". In previous versions, the symbols ?, *, and + were used to denote optional or repeating path parameters. The latest version of \"path-to-regexp\" now requires the use of named parameters. For example, instead of using a route like /users/* to capture all routes starting with \"/users\", you should use /users/*path. For more details, refer to the migration guide. Attempting to auto-convert..."}
{"timestamp":"2026-10-21T20:03:03.896Z","level":"log","context":"Bootstrap","message":"Starting Users API on port 3842..."}
{"timestamp":"2026-10-21T20:03:03.900Z","level":"log","context":"RoutesResolver","message":"UsersApiController {/}:"}
{"timestamp":"2026-10-21T20:03:03.904Z","level":"log","context":"RouterExplorer","message":"Mapped {/, GET} route"}
{"timestamp":"2026-10-21T20:03:03.904Z","level":"log","context":"RoutesResolver","message":"AuthController {/auth}:"}
{"timestamp":"2026-10-21T20:03:03.905Z","level":"log","context":"RouterExplorer","message":"Mapped {/auth/login, POST} route"}
{"timestamp":"2026-10-21T20:03:03.906Z","level":"log","context":"RouterExplorer","message":"Mapped {/auth/admin/login, POST} route"}
{"timestamp":"2026-10-21T20:03:03.907Z","level":"log","context":"RouterExplorer","message":"Mapped {/auth/send-otp, POST} route"}
{"timestamp":"2026-10-21T20:03:03.907Z","level":"log","context":"RouterExplorer","message":"Mapped {/auth/verify-otp, POST} route"}
{"timestamp":"2026-10-21T20:03:03.907Z","level":"log","context":"RouterExplorer","message":"Mapped {/auth/signup, POST} route"}
{"timestamp":"2026-10-21T20:03:03.908Z","level":"log","context":"RouterExplorer","message":"Mapped {/auth/subscription-status, GET} route"}
{"timestamp":"2026-10-21T20:03:03.908Z","level":"log","context":"RoutesResolver","message":"AdminMspController {/admin/msp}:"}
{"timestamp":"2026-10-21T20:03:03.909Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/msp, GET} route"}
{"timestamp":"2026-10-21T20:03:03.910Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/msp/:id, GET} route"}
{"timestamp":"2026-10-21T20:03:03.911Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/msp, POST} route"}
{"timestamp":"2026-10-21T20:03:03.911Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/msp/:id, PUT} route"}
{"timestamp":"2026-10-21T20:03:03.911Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/msp/:id, DELETE} route"}
{"timestamp":"2026-10-21T20:03:03.912Z","level":"log","context":"RoutesResolver","message":"AdminLicenseController {/admin/licenses}:"}
{"timestamp":"2026-10-21T20:03:03.912Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/licenses/summary, GET} route"}
{"timestamp":"2026-10-21T20:03:03.912Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/licenses/msp/:mspId, GET} route"}
{"timestamp":"2026-10-21T20:03:03.913Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/licenses/msp/:mspId, PUT} route"}
{"timestamp":"2026-10-21T20:03:03.913Z","level":"log","context":"RoutesResolver","message":"AdminImpersonationController {/admin/impersonation}:"}
{"timestamp":"2026-10-21T20:03:03.913Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/impersonation/msp-users, GET} route"}
{"timestamp":"2026-10-21T20:03:03.913Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/impersonation/impersonate, POST} route"}
{"timestamp":"2026-10-21T20:03:03.914Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/impersonation/stop, POST} route"}
{"timestamp":"2026-10-21T20:03:03.916Z","level":"log","context":"RoutesResolver","message":"AdminAiUsageController {/admin/ai-usage}:"}
{"timestamp":"2026-10-21T20:03:03.917Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-usage, GET} route"}
{"timestamp":"2026-10-21T20:03:03.917Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-usage/business/:businessId, GET} route"}
{"timestamp":"2026-10-21T20:03:03.917Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-usage/report/monthly, GET} route"}
{"timestamp":"2026-10-21T20:03:03.918Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-usage/pricing, GET} route"}
{"timestamp":"2026-10-21T20:03:03.918Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-usage/pricing, POST} route"}
{"timestamp":"2026-10-21T20:03:03.918Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-usage/credit/:businessId, PUT} route"}
{"timestamp":"2026-10-21T20:03:03.918Z","level":"log","context":"RoutesResolver","message":"AdminAiUsageController {/api/admin/ai-usage}:"}
{"timestamp":"2026-10-21T20:03:03.918Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-usage, GET} route"}
{"timestamp":"2026-10-21T20:03:03.919Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-usage/business/:businessId, GET} route"}
{"timestamp":"2026-10-21T20:03:03.919Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-usage/report/monthly, GET} route"}
{"timestamp":"2026-10-21T20:03:03.919Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-usage/pricing, GET} route"}
{"timestamp":"2026-10-21T20:03:03.919Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-usage/pricing, POST} route"}
{"timestamp":"2026-10-21T20:03:03.920Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-usage/credit/:businessId, PUT} route"}
{"timestamp":"2026-10-21T20:03:03.920Z","level":"log","context":"RoutesResolver","message":"AdminAiModelController {/admin/ai-models}:"}
{"timestamp":"2026-10-21T20:03:03.920Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models, POST} route"}
{"timestamp":"2026-10-21T20:03:03.920Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models, GET} route"}
{"timestamp":"2026-10-21T20:03:03.920Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/default, GET} route"}
{"timestamp":"2026-10-21T20:03:03.921Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/:id, GET} route"}
{"timestamp":"2026-10-21T20:03:03.921Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/:id, PUT} route"}
{"timestamp":"2026-10-21T20:03:03.921Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/:id, DELETE} route"}
{"timestamp":"2026-10-21T20:03:03.921Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/:id/set-default, POST} route"}
{"timestamp":"2026-10-21T20:03:03.921Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/assign-to-business, POST} route"}
{"timestamp":"2026-10-21T20:03:03.922Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/business/:businessId, GET} route"}
{"timestamp":"2026-10-21T20:03:03.922Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/:id/businesses, GET} route"}
{"timestamp":"2026-10-21T20:03:03.922Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/initialize-defaults, POST} route"}
{"timestamp":"2026-10-21T20:03:03.922Z","level":"log","context":"RoutesResolver","message":"AdminAiModelController {/api/admin/ai-models}:"}
{"timestamp":"2026-10-21T20:03:03.923Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models, POST} route"}
{"timestamp":"2026-10-21T20:03:03.923Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models, GET} route"}
{"timestamp":"2026-10-21T20:03:03.923Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/default, GET} route"}
{"timestamp":"2026-10-21T20:03:03.923Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/:id, GET} route"}
{"timestamp":"2026-10-21T20:03:03.923Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/:id, PUT} route"}
{"timestamp":"2026-10-21T20:03:03.924Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/:id, DELETE} route"}
{"timestamp":"2026-10-21T20:03:03.924Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/:id/set-default, POST} route"}
{"timestamp":"2026-10-21T20:03:03.924Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/assign-to-business, POST} route"}
{"timestamp":"2026-10-21T20:03:03.924Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/business/:businessId, GET} route"}
{"timestamp":"2026-10-21T20:03:03.924Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/:id/businesses, GET} route"}
{"timestamp":"2026-10-21T20:03:03.925Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/initialize-defaults, POST} route"}
{"timestamp":"2026-10-21T20:03:03.925Z","level":"log","context":"RoutesResolver","message":"AdminBusinessController {/admin/businesses}:"}
{"timestamp":"2026-10-21T20:03:03.925Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/businesses, GET} route"}
{"timestamp":"2026-10-21T20:03:03.925Z","level":"log","context":"RoutesResolver","message":"ResellerManagementController {/admin/resellers}:"}
{"timestamp":"2026-10-21T20:03:03.925Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/resellers, GET} route"}
{"timestamp":"2026-10-21T20:03:03.926Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/resellers/create-default, POST} route"}
{"timestamp":"2026-10-21T20:03:03.926Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/resellers, POST} route"}
{"timestamp":"2026-10-21T20:03:03.926Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/resellers/:id/toggle-status, PUT} route"}
{"timestamp":"2026-10-21T20:03:03.926Z","level":"log","context":"RoutesResolver","message":"SubscriptionController {/subscription}:"}
{"timestamp":"2026-10-21T20:03:03.926Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/plans, GET} route"}
{"timestamp":"2026-10-21T20:03:03.927Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/calculate-price, POST} route"}
{"timestamp":"2026-10-21T20:03:03.927Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/current, GET} route"}
{"timestamp":"2026-10-21T20:03:03.927Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/create, POST} route"}
{"timestamp":"2026-10-21T20:03:03.927Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/:id, PUT} route"}
{"timestamp":"2026-10-21T20:03:03.927Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/:id/cancel, DELETE} route"}
{"timestamp":"2026-10-21T20:03:03.928Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/sync/:stripeSubscriptionId, POST} route"}
{"timestamp":"2026-10-21T20:03:03.928Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/payments, GET} route"}
{"timestamp":"2026-10-21T20:03:03.928Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/payments/stats, GET} route"}
{"timestamp":"2026-10-21T20:03:03.928Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/payment/:id, GET} route"}
{"timestamp":"2026-10-21T20:03:03.928Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/payment-methods/attach, POST} route"}
{"timestamp":"2026-10-21T20:03:03.929Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/payment-methods/:paymentMethodId, DELETE} route"}
{"timestamp":"2026-10-21T20:03:03.929Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/payment-methods, GET} route"}
{"timestamp":"2026-10-21T20:03:03.929Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/setup-intent, POST} route"}
{"timestamp":"2026-10-21T20:03:03.929Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/update-employee-count, POST} route"}
{"timestamp":"2026-10-21T20:03:03.929Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/retry-payment/:subscriptionId, POST} route"}
{"timestamp":"2026-10-21T20:03:03.930Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/invoice/:invoiceId/pdf, GET} route"}
{"timestamp":"2026-10-21T20:03:03.930Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/preview-upgrade, POST} route"}
{"timestamp":"2026-10-21T20:03:03.930Z","level":"log","context":"RoutesResolver","message":"SubscriptionController {/api/subscription}:"}
{"timestamp":"2026-10-21T20:03:03.930Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/plans, GET} route"}
{"timestamp":"2026-10-21T20:03:03.930Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/calculate-price, POST} route"}
{"timestamp":"2026-10-21T20:03:03.930Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/current, GET} route"}
{"timestamp":"2026-10-21T20:03:03.931Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/create, POST} route"}
{"timestamp":"2026-10-21T20:03:03.931Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/:id, PUT} route"}
{"timestamp":"2026-10-21T20:03:03.931Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/:id/cancel, DELETE} route"}
{"timestamp":"2026-10-21T20:03:03.931Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/sync/:stripeSubscriptionId, POST} route"}
{"timestamp":"2026-10-21T20:03:03.931Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/payments, GET} route"}
{"timestamp":"2026-10-21T20:03:03.931Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/payments/stats, GET} route"}
{"timestamp":"2026-10-21T20:03:03.932Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/payment/:id, GET} route"}
{"timestamp":"2026-10-21T20:03:03.932Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/payment-methods/attach, POST} route"}
{"timestamp":"2026-10-21T20:03:03.932Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/payment-methods/:paymentMethodId, DELETE} route"}
{"timestamp":"2026-10-21T20:03:03.932Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/payment-methods, GET} route"}
{"timestamp":"2026-10-21T20:03:03.932Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/setup-intent, POST} route"}
{"timestamp":"2026-10-21T20:03:03.933Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/update-employee-count, POST} route"}
{"timestamp":"2026-10-21T20:03:03.933Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/retry-payment/:subscriptionId, POST} route"}
{"timestamp":"2026-10-21T20:03:03.933Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/invoice/:invoiceId/pdf, GET} route"}
{"timestamp":"2026-10-21T20:03:03.933Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/preview-upgrade, POST} route"}
{"timestamp":"2026-10-21T20:03:03.933Z","level":"log","context":"RoutesResolver","message":"StripeWebhookController {/stripe/webhook}:"}
{"timestamp":"2026-10-21T20:03:03.933Z","level":"log","context":"RouterExplorer","message":"Mapped {/stripe/webhook/test, GET} route"}
{"timestamp":"2026-10-21T20:03:03.934Z","level":"log","context":"RouterExplorer","message":"Mapped {/stripe/webhook, POST} route"}
{"timestamp":"2026-10-21T20:03:03.934Z","level":"log","context":"RoutesResolver","message":"EmailController {/email-templates}:"}
{"timestamp":"2026-10-21T20:03:03.934Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates/test, POST} route"}
{"timestamp":"2026-10-21T20:03:03.934Z","level":"log","context":"RoutesResolver","message":"EmployeeController {/employees}:"}
{"timestamp":"2026-10-21T20:03:03.934Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees, POST} route"}
{"timestamp":"2026-10-21T20:03:03.934Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees, GET} route"}
{"timestamp":"2026-10-21T20:03:03.935Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees/export, GET} route"}
{"timestamp":"2026-10-21T20:03:03.935Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees/risk-stats, GET} route"}
{"timestamp":"2026-10-21T20:03:03.935Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees/:id, GET} route"}
{"timestamp":"2026-10-21T20:03:03.935Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees/:id, PUT} route"}
{"timestamp":"2026-10-21T20:03:03.935Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees/:id, DELETE} route"}
{"timestamp":"2026-10-21T20:03:03.936Z","level":"log","context":"RoutesResolver","message":"GroupController {/groups}:"}
{"timestamp":"2026-10-21T20:03:03.936Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups, POST} route"}
{"timestamp":"2026-10-21T20:03:03.936Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups, GET} route"}
{"timestamp":"2026-10-21T20:03:03.936Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups/standard, GET} route"}
{"timestamp":"2026-10-21T20:03:03.936Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups/:id, GET} route"}
{"timestamp":"2026-10-21T20:03:03.937Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups/:id, PUT} route"}
{"timestamp":"2026-10-21T20:03:03.937Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups/:id, DELETE} route"}
{"timestamp":"2026-10-21T20:03:03.937Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups/:id/info, GET} route"}
{"timestamp":"2026-10-21T20:03:03.937Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups/:id/with-employees, GET} route"}
{"timestamp":"2026-10-21T20:03:03.937Z","level":"log","context":"RoutesResolver","message":"SenderProfileController {/sender-profiles}:"}
{"timestamp":"2026-10-21T20:03:03.937Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles, GET} route"}
{"timestamp":"2026-10-21T20:03:03.938Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles/:id, GET} route"}
{"timestamp":"2026-10-21T20:03:03.938Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles, POST} route"}
{"timestamp":"2026-10-21T20:03:03.938Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles/:id, PUT} route"}
{"timestamp":"2026-10-21T20:03:03.938Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles/:id, DELETE} route"}
{"timestamp":"2026-10-21T20:03:03.938Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles/:id/verify-domain, POST} route"}
{"timestamp":"2026-10-21T20:03:03.939Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles/domain-verification, GET} route"}
{"timestamp":"2026-10-21T20:03:03.939Z","level":"log","context":"RoutesResolver","message":"EmailTemplateController {/email-templates}:"}
{"timestamp":"2026-10-21T20:03:03.939Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates, GET} route"}
{"timestamp":"2026-10-21T20:03:03.939Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates/:id, GET} route"}
{"timestamp":"2026-10-21T20:03:03.939Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates, POST} route"}
{"timestamp":"2026-10-21T20:03:03.939Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates/:id, PUT} route"}
{"timestamp":"2026-10-21T20:03:03.940Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates/:id, DELETE} route"}
{"timestamp":"2026-10-21T20:03:03.940Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates/:id/duplicate, POST} route"}
{"timestamp":"2026-10-21T20:03:03.940Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates/:id/preview, GET} route"}
{"timestamp":"2026-10-21T20:03:03.940Z","level":"log","context":"RoutesResolver","message":"ScenarioController {/scenarios}:"}
{"timestamp":"2026-10-21T20:03:03.940Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios, POST} route"}
{"timestamp":"2026-10-21T20:03:03.940Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios/generate-content, POST} route"}
{"timestamp":"2026-10-21T20:03:03.941Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios, GET} route"}
{"timestamp":"2026-10-21T20:03:03.941Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios/:id, GET} route"}
{"timestamp":"2026-10-21T20:03:03.941Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios/:id, PUT} route"}
{"timestamp":"2026-10-21T20:03:03.941Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios/:id, DELETE} route"}
{"timestamp":"2026-10-21T20:03:03.941Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios/generate-from-json, POST} route"}
{"timestamp":"2026-10-21T20:03:03.942Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios/:id/save-as-custom-scenario, POST} route"}
{"timestamp":"2026-10-21T20:03:03.942Z","level":"log","context":"RoutesResolver","message":"CampaignController {/campaigns}:"}
{"timestamp":"2026-10-21T20:03:03.942Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns, POST} route"}
{"timestamp":"2026-10-21T20:03:03.942Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns, GET} route"}
{"timestamp":"2026-10-21T20:03:03.942Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id, GET} route"}
{"timestamp":"2026-10-21T20:03:03.942Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id/details, GET} route"}
{"timestamp":"2026-10-21T20:03:03.943Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id/employees, GET} route"}
{"timestamp":"2026-10-21T20:03:03.943Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id, PATCH} route"}
{"timestamp":"2026-10-21T20:03:03.943Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id/start, POST} route"}
{"timestamp":"2026-10-21T20:03:03.943Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id/stop, POST} route"}
{"timestamp":"2026-10-21T20:03:03.944Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id/duplicate, POST} route"}
{"timestamp":"2026-10-21T20:03:03.944Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id, DELETE} route"}
{"timestamp":"2026-10-21T20:03:03.944Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/auto-generate-program, POST} route"}
{"timestamp":"2026-10-21T20:03:03.944Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/generate-from-threat-intelligence, POST} route"}
{"timestamp":"2026-10-21T20:03:03.944Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id/risk-score, GET} route"}
{"timestamp":"2026-10-21T20:03:03.945Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/recalculate-risk-scores, POST} route"}
{"timestamp":"2026-10-21T20:03:03.945Z","level":"log","context":"RoutesResolver","message":"CampaignController {/api/campaigns}:"}
{"timestamp":"2026-10-21T20:03:03.945Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns, POST} route"}
{"timestamp":"2026-10-21T20:03:03.945Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns, GET} route"}
{"timestamp":"2026-10-21T20:03:03.945Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id, GET} route"}
{"timestamp":"2026-10-21T20:03:03.945Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id/details, GET} route"}
{"timestamp":"2026-10-21T20:03:03.946Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id/employees, GET} route"}
{"timestamp":"2026-10-21T20:03:03.946Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id, PATCH} route"}
{"timestamp":"2026-10-21T20:03:03.946Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id/start, POST} route"}
{"timestamp":"2026-10-21T20:03:03.946Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id/stop, POST} route"}
{"timestamp":"2026-10-21T20:03:03.946Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id/duplicate, POST} route"}
{"timestamp":"2026-10-21T20:03:03.946Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id, DELETE} route"}
{"timestamp":"2026-10-21T20:03:03.947Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/auto-generate-program, POST} route"}
{"timestamp":"2026-10-21T20:03:03.947Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/generate-from-threat-intelligence, POST} route"}
{"timestamp":"2026-10-21T20:03:03.947Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id/risk-score, GET} route"}
{"timestamp":"2026-10-21T20:03:03.947Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/recalculate-risk-scores, POST} route"}
{"timestamp":"2026-10-21T20:03:03.947Z","level":"log","context":"RoutesResolver","message":"NotificationsController {/notifications}:"}
{"timestamp":"2026-10-21T20:03:03.948Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications, POST} route"}
{"timestamp":"2026-10-21T20:03:03.948Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications, GET} route"}
{"timestamp":"2026-10-21T20:03:03.948Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/unread, GET} route"}
{"timestamp":"2026-10-21T20:03:03.948Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/unread-count, GET} route"}
{"timestamp":"2026-10-21T20:03:03.948Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/:id, GET} route"}
{"timestamp":"2026-10-21T20:03:03.949Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/:id, PATCH} route"}
{"timestamp":"2026-10-21T20:03:03.949Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/:id/read, PATCH} route"}
{"timestamp":"2026-10-21T20:03:03.949Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/mark-all-read, PATCH} route"}
{"timestamp":"2026-10-21T20:03:03.949Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/:id, DELETE} route"}
{"timestamp":"2026-10-21T20:03:03.950Z","level":"log","context":"RoutesResolver","message":"LandingPageController {/lp}:"}
{"timestamp":"2026-10-21T20:03:03.950Z","level":"log","context":"RouterExplorer","message":"Mapped {/lp/image, GET} route"}
{"timestamp":"2026-10-21T20:03:03.950Z","level":"log","context":"RouterExplorer","message":"Mapped {/lp/learning, GET} route"}
{"timestamp":"2026-10-21T20:03:03.950Z","level":"log","context":"RouterExplorer","message":"Mapped {/lp/submit, POST} route"}
{"timestamp":"2026-10-21T20:03:03.950Z","level":"log","context":"RouterExplorer","message":"Mapped {/lp/test, GET} route"}
{"timestamp":"2026-10-21T20:03:03.950Z","level":"warn","context":"LegacyRouteConverter","message":"Unsupported route path: \"/lp/*\". In previous versions, the symbols ?, *, and + were used to denote optional or repeating path parameters. The latest version of \"path-to-regexp\" now requires the use of named parameters. For example, instead of using a route like /users/* to capture all routes starting with \"/users\", you should use /users/*path. For more details, refer to the migration guide. Attempting to auto-convert..."}
{"timestamp":"2026-10-21T20:03:03.952Z","level":"log","context":"RouterExplorer","message":"Mapped {/lp/*, ALL} route"}
{"timestamp":"2026-10-21T20:03:03.952Z","level":"log","context":"RoutesResolver","message":"SupportController {/support}:"}
{"timestamp":"2026-10-21T20:03:03.952Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets, POST} route"}
{"timestamp":"2026-10-21T20:03:03.952Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets, GET} route"}
{"timestamp":"2026-10-21T20:03:03.952Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets/:id, GET} route"}
{"timestamp":"2026-10-21T20:03:03.953Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets/:id, PATCH} route"}
{"timestamp":"2026-10-21T20:03:03.953Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets/:id, DELETE} route"}
{"timestamp":"2026-10-21T20:03:03.953Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets/:id/messages, POST} route"}
{"timestamp":"2026-10-21T20:03:03.953Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets/:id/close, POST} route"}
{"timestamp":"2026-10-21T20:03:03.953Z","level":"log","context":"RoutesResolver","message":"BusninessMetricsController {/business-metrics}:"}
{"timestamp":"2026-10-21T20:03:03.953Z","level":"log","context":"RouterExplorer","message":"Mapped {/business-metrics, GET} route"}
{"timestamp":"2026-10-21T20:03:03.954Z","level":"log","context":"RoutesResolver","message":"UsersController {/users}:"}
{"timestamp":"2026-10-21T20:03:03.954Z","level":"log","context":"RouterExplorer","message":"Mapped {/users/:id, PUT} route"}
{"timestamp":"2026-10-21T20:03:03.954Z","level":"log","context":"RouterExplorer","message":"Mapped {/users/settings, GET} route"}
{"timestamp":"2026-10-21T20:03:03.954Z","level":"log","context":"RouterExplorer","message":"Mapped {/users/settings/general, PUT} route"}
{"timestamp":"2026-10-21T20:03:03.954Z","level":"log","context":"RouterExplorer","message":"Mapped {/users/company/settings, PUT} route"}
{"timestamp":"2026-10-21T20:03:03.955Z","level":"log","context":"RouterExplorer","message":"Mapped {/users/change-password, POST} route"}
{"timestamp":"2026-10-21T20:03:03.955Z","level":"log","context":"RouterExplorer","message":"Mapped {/users/localization/settings, PUT} route"}
{"timestamp":"2026-10-21T20:03:03.955Z","level":"log","context":"RoutesResolver","message":"PartnerController {/partner}:"}
{"timestamp":"2026-10-21T20:03:03.955Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses, POST} route"}
{"timestamp":"2026-10-21T20:03:03.955Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses, GET} route"}
{"timestamp":"2026-10-21T20:03:03.956Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses/:id, GET} route"}
{"timestamp":"2026-10-21T20:03:03.956Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses/:id, PUT} route"}
{"timestamp":"2026-10-21T20:03:03.956Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses/:id, DELETE} route"}
{"timestamp":"2026-10-21T20:03:03.956Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses/:id/impersonate, POST} route"}
{"timestamp":"2026-10-21T20:03:03.956Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses/stop-impersonation, POST} route"}
{"timestamp":"2026-10-21T20:03:03.956Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/license-usage, GET} route"}
{"timestamp":"2026-10-21T20:03:03.957Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/invoices, POST} route"}
{"timestamp":"2026-10-21T20:03:03.957Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/invoices, GET} route"}
{"timestamp":"2026-10-21T20:03:03.957Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/invoices/:id, GET} route"}
{"timestamp":"2026-10-21T20:03:03.957Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/invoices/:id, PUT} route"}
{"timestamp":"2026-10-21T20:03:03.957Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/invoices/:id, DELETE} route"}
{"timestamp":"2026-10-21T20:03:03.958Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/invoices/:id/mark-paid, PUT} route"}
{"timestamp":"2026-10-21T20:03:03.958Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/onboarding/generate-token, POST} route"}
{"timestamp":"2026-10-21T20:03:03.958Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/dashboard, GET} route"}
{"timestamp":"2026-10-21T20:03:03.958Z","level":"log","context":"RoutesResolver","message":"MspSubscriptionController {/partner/msp-subscriptions}:"}
{"timestamp":"2026-10-21T20:03:03.958Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/plans, POST} route"}
{"timestamp":"2026-10-21T20:03:03.959Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/plans, GET} route"}
{"timestamp":"2026-10-21T20:03:03.959Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/plans/:planId, GET} route"}
{"timestamp":"2026-10-21T20:03:03.959Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/plans/:planId, PUT} route"}
{"timestamp":"2026-10-21T20:03:03.959Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/plans/:planId, DELETE} route"}
{"timestamp":"2026-10-21T20:03:03.959Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/businesses/:businessId/subscription, POST} route"}
{"timestamp":"2026-10-21T20:03:03.960Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions, GET} route"}
{"timestamp":"2026-10-21T20:03:03.960Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/businesses/:businessId/subscription, GET} route"}
{"timestamp":"2026-10-21T20:03:03.960Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/businesses/:businessId/subscription, PUT} route"}
{"timestamp":"2026-10-21T20:03:03.960Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/businesses/:businessId/subscription, DELETE} route"}
{"timestamp":"2026-10-21T20:03:03.960Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/businesses/:businessId/subscription/limits, GET} route"}
{"timestamp":"2026-10-21T20:03:03.961Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/businesses/:businessId/subscription/change-plan, PUT} route"}
{"timestamp":"2026-10-21T20:03:03.961Z","level":"log","context":"RoutesResolver","message":"OnboardingController {/onboarding}:"}
{"timestamp":"2026-10-21T20:03:03.961Z","level":"log","context":"RouterExplorer","message":"Mapped {/onboarding/validate/:token, GET} route"}
{"timestamp":"2026-10-21T20:03:03.961Z","level":"log","context":"RouterExplorer","message":"Mapped {/onboarding/complete/:token, POST} route"}
{"timestamp":"2026-10-21T20:03:03.961Z","level":"log","context":"RoutesResolver","message":"ResellerController {/reseller}:"}
{"timestamp":"2026-10-21T20:03:03.961Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/businesses, POST} route"}
{"timestamp":"2026-10-21T20:03:03.962Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/businesses, GET} route"}
{"timestamp":"2026-10-21T20:03:03.962Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/businesses/:id, GET} route"}
{"timestamp":"2026-10-21T20:03:03.962Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/businesses/:id, PUT} route"}
{"timestamp":"2026-10-21T20:03:03.962Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/businesses/:id, DELETE} route"}
{"timestamp":"2026-10-21T20:03:03.962Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/license-usage, GET} route"}
{"timestamp":"2026-10-21T20:03:03.963Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/invoices, POST} route"}
{"timestamp":"2026-10-21T20:03:03.963Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/invoices, GET} route"}
{"timestamp":"2026-10-21T20:03:03.963Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/invoices/:id, GET} route"}
{"timestamp":"2026-10-21T20:03:03.963Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/invoices/:id, PUT} route"}
{"timestamp":"2026-10-21T20:03:03.963Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/invoices/:id, DELETE} route"}
{"timestamp":"2026-10-21T20:03:03.964Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/invoices/:id/mark-paid, PUT} route"}
{"timestamp":"2026-10-21T20:03:03.964Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/onboarding/generate-token, POST} route"}
{"timestamp":"2026-10-21T20:03:03.964Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/dashboard, GET} route"}
{"timestamp":"2026-10-21T20:03:03.964Z","level":"log","context":"RoutesResolver","message":"ResellerSubscriptionController {/reseller}:"}
{"timestamp":"2026-10-21T20:03:03.964Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/plans, POST} route"}
{"timestamp":"2026-10-21T20:03:03.964Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/plans, GET} route"}
{"timestamp":"2026-10-21T20:03:03.965Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/plans/:planId, GET} route"}
{"timestamp":"2026-10-21T20:03:03.965Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/plans/:planId, PUT} route"}
{"timestamp":"2026-10-21T20:03:03.965Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/plans/:planId, DELETE} route"}
{"timestamp":"2026-10-21T20:03:03.965Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/subscriptions/businesses/:businessId/subscription, POST} route"}
{"timestamp":"2026-10-21T20:03:03.965Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/subscriptions, GET} route"}
{"timestamp":"2026-10-21T20:03:03.966Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/subscriptions/businesses/:businessId/subscription, GET} route"}
{"timestamp":"2026-10-21T20:03:03.966Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/subscriptions/businesses/:businessId/subscription, PUT} route"}
{"timestamp":"2026-10-21T20:03:03.966Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/subscriptions/businesses/:businessId/subscription, DELETE} route"}
{"timestamp":"2026-10-21T20:03:03.966Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/subscriptions/businesses/:businessId/subscription/limits, GET} route"}
{"timestamp":"2026-10-21T20:03:03.966Z","level":"log","context":"RoutesResolver","message":"HealthController {/health}:"}
{"timestamp":"2026-10-21T20:03:03.966Z","level":"log","context":"RouterExplorer","message":"Mapped {/health, GET} route"}
{"timestamp":"2026-10-21T20:03:03.967Z","level":"log","context":"RouterExplorer","message":"Mapped {/health/test-logs, GET} route"}
{"timestamp":"2026-10-21T20:03:03.967Z","level":"log","context":"RoutesResolver","message":"AzureAdController {/azure-ad}:"}
{"timestamp":"2026-10-21T20:03:03.967Z","level":"log","context":"RouterExplorer","message":"Mapped {/azure-ad/config, POST} route"}
{"timestamp":"2026-10-21T20:03:03.967Z","level":"log","context":"RouterExplorer","message":"Mapped {/azure-ad/config, GET} route"}
{"timestamp":"2026-10-21T20:03:03.967Z","level":"log","context":"RouterExplorer","message":"Mapped {/azure-ad/test-connection, POST} route"}
{"timestamp":"2026-10-21T20:03:03.967Z","level":"log","context":"RouterExplorer","message":"Mapped {/azure-ad/sync, POST} route"}
{"timestamp":"2026-10-21T20:03:03.967Z","level":"log","context":"RoutesResolver","message":"ThreatsController {/threats}:"}
{"timestamp":"2026-10-21T20:03:03.968Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats, POST} route"}
{"timestamp":"2026-10-21T20:03:03.968Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats, GET} route"}
{"timestamp":"2026-10-21T20:03:03.968Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/chart-data, GET} route"}
{"timestamp":"2026-10-21T20:03:03.968Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/claude-search, POST} route"}
{"timestamp":"2026-10-21T20:03:03.968Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/claude-latest, POST} route"}
{"timestamp":"2026-10-21T20:03:03.969Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/claude-trending, POST} route"}
{"timestamp":"2026-10-21T20:03:03.969Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/claude-categories, POST} route"}
{"timestamp":"2026-10-21T20:03:03.969Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/claude-manual-search, POST} route"}
{"timestamp":"2026-10-21T20:03:03.969Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/claude-quick-search, POST} route"}
{"timestamp":"2026-10-21T20:03:03.969Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/scheduler-status, GET} route"}
{"timestamp":"2026-10-21T20:03:03.970Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/health-check, GET} route"}
{"timestamp":"2026-10-21T20:03:03.970Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/pause-scheduler, POST} route"}
{"timestamp":"2026-10-21T20:03:03.970Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/:id, GET} route"}
{"timestamp":"2026-10-21T20:03:03.970Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/:id, PATCH} route"}
{"timestamp":"2026-10-21T20:03:03.970Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/:id, DELETE} route"}
{"timestamp":"2026-10-21T20:03:03.970Z","level":"log","context":"RoutesResolver","message":"DomainController {/domains}:"}
{"timestamp":"2026-10-21T20:03:03.971Z","level":"log","context":"RouterExplorer","message":"Mapped {/domains, GET} route"}
{"timestamp":"2026-10-21T20:03:03.971Z","level":"log","context":"RouterExplorer","message":"Mapped {/domains/:id, GET} route"}
{"timestamp":"2026-10-21T20:03:03.971Z","level":"log","context":"RouterExplorer","message":"Mapped {/domains, POST} route"}
{"timestamp":"2026-10-21T20:03:03.971Z","level":"log","context":"RouterExplorer","message":"Mapped {/domains/:id, PUT} route"}
{"timestamp":"2026-10-21T20:03:03.971Z","level":"log","context":"RouterExplorer","message":"Mapped {/domains/:id, DELETE} route"}
{"timestamp":"2026-10-21T20:03:03.971Z","level":"log","context":"RouterExplorer","message":"Mapped {/domains/seed, POST} route"}
{"timestamp":"2026-10-21T20:03:03.972Z","level":"log","context":"RoutesResolver","message":"MspSubscriptionController {/msp-subscription}:"}
{"timestamp":"2026-10-21T20:03:03.972Z","level":"log","context":"RouterExplorer","message":"Mapped {/msp-subscription/current, GET} route"}
{"timestamp":"2026-10-21T20:03:03.972Z","level":"log","context":"RouterExplorer","message":"Mapped {/msp-subscription/invoices, GET} route"}
{"timestamp":"2026-10-21T20:03:03.972Z","level":"log","context":"RouterExplorer","message":"Mapped {/msp-subscription/invoice/:invoiceId/pdf, GET} route"}
{"timestamp":"2026-10-21T20:03:03.972Z","level":"log","context":"RoutesResolver","message":"MspSubscriptionController {/api/msp-subscription}:"}
{"timestamp":"2026-10-21T20:03:03.972Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/msp-subscription/current, GET} route"}
{"timestamp":"2026-10-21T20:03:03.973Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/msp-subscription/invoices, GET} route"}
{"timestamp":"2026-10-21T20:03:03.973Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/msp-subscription/invoice/:invoiceId/pdf, GET} route"}
{"timestamp":"2026-10-21T20:03:04.053Z","level":"log","context":"NestApplication","message":"Nest application successfully started"}
{"timestamp":"2026-10-21T20:03:04.077Z","level":"log","context":"Bootstrap","message":"Users API successfully started on port 3842"}
{"timestamp":"2026-10-21T20:03:04.077Z","level":"log","context":"SeedService","message":"🌱 Starting database seeding..."}
{"timestamp":"2026-10-21T20:03:04.083Z","level":"log","context":"SeedService","message":"Admin account already exists, skipping seed"}
{"timestamp":"2026-10-21T20:03:04.085Z","level":"log","context":"SeedService","message":"Reseller account already exists, skipping seed"}
{"timestamp":"2026-10-21T20:03:04.086Z","level":"log","context":"SeedService","message":"MSP account already exists, skipping seed"}
{"timestamp":"2026-10-21T20:03:04.086Z","level":"log","context":"SeedService","message":"✅ Database seeding completed successfully"}
{"timestamp":"2026-10-21T20:03:04.116Z","level":"log","context":"UsersApiController","message":"Hello endpoint accessed"}
{"timestamp":"2026-10-21T20:03:04.123Z","level":"log","context":"UsersApiController","message":"Hello endpoint accessed"}
{"timestamp":"2026-10-21T21:49:32.058Z","level":"warn","context":"LegacyRouteConverter","message":"Unsupported route path: \"/lp/*\". In previous versions, the symbols ?, *, and + were used to denote optional or repeating path parameters. The latest version of \"path-to-regexp\" now requires the use of named parameters. For example, instead of using a route like /users/* to capture all routes starting with \"/users\", you should use /users/*path. For more details, refer to the migration guide. Attempting to auto-convert..."}
{"timestamp":"2026-10-21T21:49:32.095Z","level":"log","context":"Bootstrap","message":"Starting Users API on port 3842..."}
{"timestamp":"2026-10-21T21:49:32.099Z","level":"log","context":"RoutesResolver","message":"UsersApiController {/}:"}
{"timestamp":"2026-10-21T21:49:32.102Z","level":"log","context":"RouterExplorer","message":"Mapped {/, GET} route"}
{"timestamp":"2026-10-21T21:49:32.102Z","level":"log","context":"RoutesResolver","message":"AuthController {/auth}:"}
{"timestamp":"2026-10-21T21:49:32.103Z","level":"log","context":"RouterExplorer","message":"Mapped {/auth/login, POST} route"}
{"timestamp":"2026-10-21T21:49:32.103Z","level":"log","context":"RouterExplorer","message":"Mapped {/auth/admin/login, POST} route"}
{"timestamp":"2026-10-21T21:49:32.104Z","level":"log","context":"RouterExplorer","message":"Mapped {/auth/send-otp, POST} route"}
{"timestamp":"2026-10-21T21:49:32.104Z","level":"log","context":"RouterExplorer","message":"Mapped {/auth/verify-otp, POST} route"}
{"timestamp":"2026-10-21T21:49:32.105Z","level":"log","context":"RouterExplorer","message":"Mapped {/auth/signup, POST} route"}
{"timestamp":"2026-10-21T21:49:32.105Z","level":"log","context":"RouterExplorer","message":"Mapped {/auth/subscription-status, GET} route"}
{"timestamp":"2026-10-21T21:49:32.106Z","level":"log","context":"RoutesResolver","message":"AdminMspController {/admin/msp}:"}
{"timestamp":"2026-10-21T21:49:32.106Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/msp, GET} route"}
{"timestamp":"2026-10-21T21:49:32.107Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/msp/:id, GET} route"}
{"timestamp":"2026-10-21T21:49:32.107Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/msp, POST} route"}
{"timestamp":"2026-10-21T21:49:32.108Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/msp/:id, PUT} route"}
{"timestamp":"2026-10-21T21:49:32.108Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/msp/:id, DELETE} route"}
{"timestamp":"2026-10-21T21:49:32.108Z","level":"log","context":"RoutesResolver","message":"AdminLicenseController {/admin/licenses}:"}
{"timestamp":"2026-10-21T21:49:32.108Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/licenses/summary, GET} route"}
{"timestamp":"2026-10-21T21:49:32.108Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/licenses/msp/:mspId, GET} route"}
{"timestamp":"2026-10-21T21:49:32.109Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/licenses/msp/:mspId, PUT} route"}
{"timestamp":"2026-10-21T21:49:32.109Z","level":"log","context":"RoutesResolver","message":"AdminImpersonationController {/admin/impersonation}:"}
{"timestamp":"2026-10-21T21:49:32.109Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/impersonation/msp-users, GET} route"}
{"timestamp":"2026-10-21T21:49:32.109Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/impersonation/impersonate, POST} route"}
{"timestamp":"2026-10-21T21:49:32.110Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/impersonation/stop, POST} route"}
{"timestamp":"2026-10-21T21:49:32.110Z","level":"log","context":"RoutesResolver","message":"AdminAiUsageController {/admin/ai-usage}:"}
{"timestamp":"2026-10-21T21:49:32.110Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-usage, GET} route"}
{"timestamp":"2026-10-21T21:49:32.110Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-usage/business/:businessId, GET} route"}
{"timestamp":"2026-10-21T21:49:32.110Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-usage/report/monthly, GET} route"}
{"timestamp":"2026-10-21T21:49:32.111Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-usage/pricing, GET} route"}
{"timestamp":"2026-10-21T21:49:32.111Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-usage/pricing, POST} route"}
{"timestamp":"2026-10-21T21:49:32.111Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-usage/credit/:businessId, PUT} route"}
{"timestamp":"2026-10-21T21:49:32.111Z","level":"log","context":"RoutesResolver","message":"AdminAiUsageController {/api/admin/ai-usage}:"}
{"timestamp":"2026-10-21T21:49:32.111Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-usage, GET} route"}
{"timestamp":"2026-10-21T21:49:32.112Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-usage/business/:businessId, GET} route"}
{"timestamp":"2026-10-21T21:49:32.112Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-usage/report/monthly, GET} route"}
{"timestamp":"2026-10-21T21:49:32.112Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-usage/pricing, GET} route"}
{"timestamp":"2026-10-21T21:49:32.112Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-usage/pricing, POST} route"}
{"timestamp":"2026-10-21T21:49:32.112Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-usage/credit/:businessId, PUT} route"}
{"timestamp":"2026-10-21T21:49:32.112Z","level":"log","context":"RoutesResolver","message":"AdminAiModelController {/admin/ai-models}:"}
{"timestamp":"2026-10-21T21:49:32.113Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models, POST} route"}
{"timestamp":"2026-10-21T21:49:32.113Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models, GET} route"}
{"timestamp":"2026-10-21T21:49:32.113Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/default, GET} route"}
{"timestamp":"2026-10-21T21:49:32.113Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/:id, GET} route"}
{"timestamp":"2026-10-21T21:49:32.113Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/:id, PUT} route"}
{"timestamp":"2026-10-21T21:49:32.113Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/:id, DELETE} route"}
{"timestamp":"2026-10-21T21:49:32.114Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/:id/set-default, POST} route"}
{"timestamp":"2026-10-21T21:49:32.114Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/assign-to-business, POST} route"}
{"timestamp":"2026-10-21T21:49:32.114Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/business/:businessId, GET} route"}
{"timestamp":"2026-10-21T21:49:32.114Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/:id/businesses, GET} route"}
{"timestamp":"2026-10-21T21:49:32.114Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/initialize-defaults, POST} route"}
{"timestamp":"2026-10-21T21:49:32.115Z","level":"log","context":"RoutesResolver","message":"AdminAiModelController {/api/admin/ai-models}:"}
{"timestamp":"2026-10-21T21:49:32.115Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models, POST} route"}
{"timestamp":"2026-10-21T21:49:32.115Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models, GET} route"}
{"timestamp":"2026-10-21T21:49:32.115Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/default, GET} route"}
{"timestamp":"2026-10-21T21:49:32.115Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/:id, GET} route"}
{"timestamp":"2026-10-21T21:49:32.115Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/:id, PUT} route"}
{"timestamp":"2026-10-21T21:49:32.115Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/:id, DELETE} route"}
{"timestamp":"2026-10-21T21:49:32.116Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/:id/set-default, POST} route"}
{"timestamp":"2026-10-21T21:49:32.116Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/assign-to-business, POST} route"}
{"timestamp":"2026-10-21T21:49:32.116Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/business/:businessId, GET} route"}
{"timestamp":"2026-10-21T21:49:32.116Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/:id/businesses, GET} route"}
{"timestamp":"2026-10-21T21:49:32.116Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/initialize-defaults, POST} route"}
{"timestamp":"2026-10-21T21:49:32.117Z","level":"log","context":"RoutesResolver","message":"AdminBusinessController {/admin/businesses}:"}
{"timestamp":"2026-10-21T21:49:32.117Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/businesses, GET} route"}
{"timestamp":"2026-10-21T21:49:32.117Z","level":"log","context":"RoutesResolver","message":"ResellerManagementController {/admin/resellers}:"}
{"timestamp":"2026-10-21T21:49:32.117Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/resellers, GET} route"}
{"timestamp":"2026-10-21T21:49:32.117Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/resellers/create-default, POST} route"}
{"timestamp":"2026-10-21T21:49:32.117Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/resellers, POST} route"}
{"timestamp":"2026-10-21T21:49:32.118Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/resellers/:id/toggle-status, PUT} route"}
{"timestamp":"2026-10-21T21:49:32.118Z","level":"log","context":"RoutesResolver","message":"SubscriptionController {/subscription}:"}
{"timestamp":"2026-10-21T21:49:32.118Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/plans, GET} route"}
{"timestamp":"2026-10-21T21:49:32.118Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/calculate-price, POST} route"}
{"timestamp":"2026-10-21T21:49:32.118Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/current, GET} route"}
{"timestamp":"2026-10-21T21:49:32.118Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/create, POST} route"}
{"timestamp":"2026-10-21T21:49:32.119Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/:id, PUT} route"}
{"timestamp":"2026-10-21T21:49:32.119Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/:id/cancel, DELETE} route"}
{"timestamp":"2026-10-21T21:49:32.119Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/sync/:stripeSubscriptionId, POST} route"}
{"timestamp":"2026-10-21T21:49:32.119Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/payments, GET} route"}
{"timestamp":"2026-10-21T21:49:32.119Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/payments/stats, GET} route"}
{"timestamp":"2026-10-21T21:49:32.119Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/payment/:id, GET} route"}
{"timestamp":"2026-10-21T21:49:32.120Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/payment-methods/attach, POST} route"}
{"timestamp":"2026-10-21T21:49:32.120Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/payment-methods/:paymentMethodId, DELETE} route"}
{"timestamp":"2026-10-21T21:49:32.120Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/payment-methods, GET} route"}
{"timestamp":"2026-10-21T21:49:32.120Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/setup-intent, POST} route"}
{"timestamp":"2026-10-21T21:49:32.120Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/update-employee-count, POST} route"}
{"timestamp":"2026-10-21T21:49:32.120Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/retry-payment/:subscriptionId, POST} route"}
{"timestamp":"2026-10-21T21:49:32.121Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/invoice/:invoiceId/pdf, GET} route"}
{"timestamp":"2026-10-21T21:49:32.121Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/preview-upgrade, POST} route"}
{"timestamp":"2026-10-21T21:49:32.121Z","level":"log","context":"RoutesResolver","message":"SubscriptionController {/api/subscription}:"}
{"timestamp":"2026-10-21T21:49:32.121Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/plans, GET} route"}
{"timestamp":"2026-10-21T21:49:32.121Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/calculate-price, POST} route"}
{"timestamp":"2026-10-21T21:49:32.121Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/current, GET} route"}
{"timestamp":"2026-10-21T21:49:32.121Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/create, POST} route"}
{"timestamp":"2026-10-21T21:49:32.122Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/:id, PUT} route"}
{"timestamp":"2026-10-21T21:49:32.122Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/:id/cancel, DELETE} route"}
{"timestamp":"2026-10-21T21:49:32.122Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/sync/:stripeSubscriptionId, POST} route"}
{"timestamp":"2026-10-21T21:49:32.122Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/payments, GET} route"}
{"timestamp":"2026-10-21T21:49:32.122Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/payments/stats, GET} route"}
{"timestamp":"2026-10-21T21:49:32.122Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/payment/:id, GET} route"}
{"timestamp":"2026-10-21T21:49:32.122Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/payment-methods/attach, POST} route"}
{"timestamp":"2026-10-21T21:49:32.123Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/payment-methods/:paymentMethodId, DELETE} route"}
{"timestamp":"2026-10-21T21:49:32.123Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/payment-methods, GET} route"}
{"timestamp":"2026-10-21T21:49:32.123Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/setup-intent, POST} route"}
{"timestamp":"2026-10-21T21:49:32.123Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/update-employee-count, POST} route"}
{"timestamp":"2026-10-21T21:49:32.123Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/retry-payment/:subscriptionId, POST} route"}
{"timestamp":"2026-10-21T21:49:32.123Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/invoice/:invoiceId/pdf, GET} route"}
{"timestamp":"2026-10-21T21:49:32.123Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/preview-upgrade, POST} route"}
{"timestamp":"2026-10-21T21:49:32.124Z","level":"log","context":"RoutesResolver","message":"StripeWebhookController {/stripe/webhook}:"}
{"timestamp":"2026-10-21T21:49:32.124Z","level":"log","context":"RouterExplorer","message":"Mapped {/stripe/webhook/test, GET} route"}
{"timestamp":"2026-10-21T21:49:32.124Z","level":"log","context":"RouterExplorer","message":"Mapped {/stripe/webhook, POST} route"}
{"timestamp":"2026-10-21T21:49:32.124Z","level":"log","context":"RoutesResolver","message":"EmailController {/email-templates}:"}
{"timestamp":"2026-10-21T21:49:32.124Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates/test, POST} route"}
{"timestamp":"2026-10-21T21:49:32.124Z","level":"log","context":"RoutesResolver","message":"EmployeeController {/employees}:"}
{"timestamp":"2026-10-21T21:49:32.124Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees, POST} route"}
{"timestamp":"2026-10-21T21:49:32.125Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees, GET} route"}
{"timestamp":"2026-10-21T21:49:32.125Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees/export, GET} route"}
{"timestamp":"2026-10-21T21:49:32.125Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees/risk-stats, GET} route"}
{"timestamp":"2026-10-21T21:49:32.125Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees/:id, GET} route"}
{"timestamp":"2026-10-21T21:49:32.125Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees/:id, PUT} route"}
{"timestamp":"2026-10-21T21:49:32.125Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees/:id, DELETE} route"}
{"timestamp":"2026-10-21T21:49:32.125Z","level":"log","context":"RoutesResolver","message":"GroupController {/groups}:"}
{"timestamp":"2026-10-21T21:49:32.126Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups, POST} route"}
{"timestamp":"2026-10-21T21:49:32.126Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups, GET} route"}
{"timestamp":"2026-10-21T21:49:32.126Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups/standard, GET} route"}
{"timestamp":"2026-10-21T21:49:32.126Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups/:id, GET} route"}
{"timestamp":"2026-10-21T21:49:32.126Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups/:id, PUT} route"}
{"timestamp":"2026-10-21T21:49:32.126Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups/:id, DELETE} route"}
{"timestamp":"2026-10-21T21:49:32.127Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups/:id/info, GET} route"}
{"timestamp":"2026-10-21T21:49:32.127Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups/:id/with-employees, GET} route"}
{"timestamp":"2026-10-21T21:49:32.127Z","level":"log","context":"RoutesResolver","message":"SenderProfileController {/sender-profiles}:"}
{"timestamp":"2026-10-21T21:49:32.127Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles, GET} route"}
{"timestamp":"2026-10-21T21:49:32.127Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles/:id, GET} route"}
{"timestamp":"2026-10-21T21:49:32.127Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles, POST} route"}
{"timestamp":"2026-10-21T21:49:32.128Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles/:id, PUT} route"}
{"timestamp":"2026-10-21T21:49:32.128Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles/:id, DELETE} route"}
{"timestamp":"2026-10-21T21:49:32.128Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles/:id/verify-domain, POST} route"}
{"timestamp":"2026-10-21T21:49:32.128Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles/domain-verification, GET} route"}
{"timestamp":"2026-10-21T21:49:32.128Z","level":"log","context":"RoutesResolver","message":"EmailTemplateController {/email-templates}:"}
{"timestamp":"2026-10-21T21:49:32.128Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates, GET} route"}
{"timestamp":"2026-10-21T21:49:32.128Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates/:id, GET} route"}
{"timestamp":"2026-10-21T21:49:32.129Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates, POST} route"}
{"timestamp":"2026-10-21T21:49:32.129Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates/:id, PUT} route"}
{"timestamp":"2026-10-21T21:49:32.129Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates/:id, DELETE} route"}
{"timestamp":"2026-10-21T21:49:32.129Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates/:id/duplicate, POST} route"}
{"timestamp":"2026-10-21T21:49:32.129Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates/:id/preview, GET} route"}
{"timestamp":"2026-10-21T21:49:32.129Z","level":"log","context":"RoutesResolver","message":"ScenarioController {/scenarios}:"}
{"timestamp":"2026-10-21T21:49:32.130Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios, POST} route"}
{"timestamp":"2026-10-21T21:49:32.130Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios/generate-content, POST} route"}
{"timestamp":"2026-10-21T21:49:32.130Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios, GET} route"}
{"timestamp":"2026-10-21T21:49:32.130Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios/:id, GET} route"}
{"timestamp":"2026-10-21T21:49:32.130Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios/:id, PUT} route"}
{"timestamp":"2026-10-21T21:49:32.130Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios/:id, DELETE} route"}
{"timestamp":"2026-10-21T21:49:32.130Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios/generate-from-json, POST} route"}
{"timestamp":"2026-10-21T21:49:32.131Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios/:id/save-as-custom-scenario, POST} route"}
{"timestamp":"2026-10-21T21:49:32.131Z","level":"log","context":"RoutesResolver","message":"CampaignController {/campaigns}:"}
{"timestamp":"2026-10-21T21:49:32.131Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns, POST} route"}
{"timestamp":"2026-10-21T21:49:32.131Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns, GET} route"}
{"timestamp":"2026-10-21T21:49:32.131Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id, GET} route"}
{"timestamp":"2026-10-21T21:49:32.131Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id/details, GET} route"}
{"timestamp":"2026-10-21T21:49:32.132Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id/employees, GET} route"}
{"timestamp":"2026-10-21T21:49:32.132Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id, PATCH} route"}
{"timestamp":"2026-10-21T21:49:32.132Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id/start, POST} route"}
{"timestamp":"2026-10-21T21:49:32.132Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id/stop, POST} route"}
{"timestamp":"2026-10-21T21:49:32.132Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id/duplicate, POST} route"}
{"timestamp":"2026-10-21T21:49:32.133Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id, DELETE} route"}
{"timestamp":"2026-10-21T21:49:32.133Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/auto-generate-program, POST} route"}
{"timestamp":"2026-10-21T21:49:32.133Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/generate-from-threat-intelligence, POST} route"}
{"timestamp":"2026-10-21T21:49:32.133Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id/risk-score, GET} route"}
{"timestamp":"2026-10-21T21:49:32.133Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/recalculate-risk-scores, POST} route"}
{"timestamp":"2026-10-21T21:49:32.133Z","level":"log","context":"RoutesResolver","message":"CampaignController {/api/campaigns}:"}
{"timestamp":"2026-10-21T21:49:32.133Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns, POST} route"}
{"timestamp":"2026-10-21T21:49:32.134Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns, GET} route"}
{"timestamp":"2026-10-21T21:49:32.134Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id, GET} route"}
{"timestamp":"2026-10-21T21:49:32.134Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id/details, GET} route"}
{"timestamp":"2026-10-21T21:49:32.134Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id/employees, GET} route"}
{"timestamp":"2026-10-21T21:49:32.134Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id, PATCH} route"}
{"timestamp":"2026-10-21T21:49:32.134Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id/start, POST} route"}
{"timestamp":"2026-10-21T21:49:32.135Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id/stop, POST} route"}
{"timestamp":"2026-10-21T21:49:32.135Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id/duplicate, POST} route"}
{"timestamp":"2026-10-21T21:49:32.135Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id, DELETE} route"}
{"timestamp":"2026-10-21T21:49:32.135Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/auto-generate-program, POST} route"}
{"timestamp":"2026-10-21T21:49:32.135Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/generate-from-threat-intelligence, POST} route"}
{"timestamp":"2026-10-21T21:49:32.135Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id/risk-score, GET} route"}
{"timestamp":"2026-10-21T21:49:32.136Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/recalculate-risk-scores, POST} route"}
{"timestamp":"2026-10-21T21:49:32.136Z","level":"log","context":"RoutesResolver","message":"NotificationsController {/notifications}:"}
{"timestamp":"2026-10-21T21:49:32.136Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications, POST} route"}
{"timestamp":"2026-10-21T21:49:32.136Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications, GET} route"}
{"timestamp":"2026-10-21T21:49:32.136Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/unread, GET} route"}
{"timestamp":"2026-10-21T21:49:32.136Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/unread-count, GET} route"}
{"timestamp":"2026-10-21T21:49:32.137Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/:id, GET} route"}
{"timestamp":"2026-10-21T21:49:32.137Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/:id, PATCH} route"}
{"timestamp":"2026-10-21T21:49:32.137Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/:id/read, PATCH} route"}
{"timestamp":"2026-10-21T21:49:32.137Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/mark-all-read, PATCH} route"}
{"timestamp":"2026-10-21T21:49:32.138Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/:id, DELETE} route"}
{"timestamp":"2026-10-21T21:49:32.138Z","level":"log","context":"RoutesResolver","message":"LandingPageController {/lp}:"}
{"timestamp":"2026-10-21T21:49:32.138Z","level":"log","context":"RouterExplorer","message":"Mapped {/lp/image, GET} route"}
{"timestamp":"2026-10-21T21:49:32.138Z","level":"log","context":"RouterExplorer","message":"Mapped {/lp/learning, GET} route"}
{"timestamp":"2026-10-21T21:49:32.138Z","level":"log","context":"RouterExplorer","message":"Mapped {/lp/submit, POST} route"}
{"timestamp":"2026-10-21T21:49:32.138Z","level":"log","context":"RouterExplorer","message":"Mapped {/lp/test, GET} route"}
{"timestamp":"2026-10-21T21:49:32.138Z","level":"warn","context":"LegacyRouteConverter","message":"Unsupported route path: \"/lp/*\". In previous versions, the symbols ?, *, and + were used to denote optional or repeating path parameters. The latest version of \"path-to-regexp\" now requires the use of named parameters. For example, instead of using a route like /users/* to capture all routes starting with \"/users\", you should use /users/*path. For more details, refer to the migration guide. Attempting to auto-convert..."}
{"timestamp":"2026-10-21T21:49:32.142Z","level":"log","context":"RouterExplorer","message":"Mapped {/lp/*, ALL} route"}
{"timestamp":"2026-10-21T21:49:32.142Z","level":"log","context":"RoutesResolver","message":"SupportController {/support}:"}
{"timestamp":"2026-10-21T21:49:32.143Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets, POST} route"}
{"timestamp":"2026-10-21T21:49:32.143Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets, GET} route"}
{"timestamp":"2026-10-21T21:49:32.143Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets/:id, GET} route"}
{"timestamp":"2026-10-21T21:49:32.143Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets/:id, PATCH} route"}
{"timestamp":"2026-10-21T21:49:32.143Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets/:id, DELETE} route"}
{"timestamp":"2026-10-21T21:49:32.144Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets/:id/messages, POST} route"}
{"timestamp":"2026-10-21T21:49:32.144Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets/:id/close, POST} route"}
{"timestamp":"2026-10-21T21:49:32.144Z","level":"log","context":"RoutesResolver","message":"BusninessMetricsController {/business-metrics}:"}
{"timestamp":"2026-10-21T21:49:32.144Z","level":"log","context":"RouterExplorer","message":"Mapped {/business-metrics, GET} route"}
{"timestamp":"2026-10-21T21:49:32.144Z","level":"log","context":"RoutesResolver","message":"UsersController {/users}:"}
{"timestamp":"2026-10-21T21:49:32.144Z","level":"log","context":"RouterExplorer","message":"Mapped {/users/:id, PUT} route"}
{"timestamp":"2026-10-21T21:49:32.145Z","level":"log","context":"RouterExplorer","message":"Mapped {/users/settings, GET} route"}
{"timestamp":"2026-10-21T21:49:32.145Z","level":"log","context":"RouterExplorer","message":"Mapped {/users/settings/general, PUT} route"}
{"timestamp":"2026-10-21T21:49:32.145Z","level":"log","context":"RouterExplorer","message":"Mapped {/users/company/settings, PUT} route"}
{"timestamp":"2026-10-21T21:49:32.145Z","level":"log","context":"RouterExplorer","message":"Mapped {/users/change-password, POST} route"}
{"timestamp":"2026-10-21T21:49:32.145Z","level":"log","context":"RouterExplorer","message":"Mapped {/users/localization/settings, PUT} route"}
{"timestamp":"2026-10-21T21:49:32.145Z","level":"log","context":"RoutesResolver","message":"PartnerController {/partner}:"}
{"timestamp":"2026-10-21T21:49:32.146Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses, POST} route"}
{"timestamp":"2026-10-21T21:49:32.146Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses, GET} route"}
{"timestamp":"2026-10-21T21:49:32.146Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses/:id, GET} route"}
{"timestamp":"2026-10-21T21:49:32.146Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses/:id, PUT} route"}
{"timestamp":"2026-10-21T21:49:32.146Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses/:id, DELETE} route"}
{"timestamp":"2026-10-21T21:49:32.146Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses/:id/impersonate, POST} route"}
{"timestamp":"2026-10-21T21:49:32.147Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses/stop-impersonation, POST} route"}
{"timestamp":"2026-10-21T21:49:32.147Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/license-usage, GET} route"}
{"timestamp":"2026-10-21T21:49:32.147Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/invoices, POST} route"}
{"timestamp":"2026-10-21T21:49:32.147Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/invoices, GET} route"}
{"timestamp":"2026-10-21T21:49:32.147Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/invoices/:id, GET} route"}
{"timestamp":"2026-10-21T21:49:32.147Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/invoices/:id, PUT} route"}
{"timestamp":"2026-10-21T21:49:32.148Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/invoices/:id, DELETE} route"}
{"timestamp":"2026-10-21T21:49:32.148Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/invoices/:id/mark-paid, PUT} route"}
{"timestamp":"2026-10-21T21:49:32.148Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/onboarding/generate-token, POST} route"}
{"timestamp":"2026-10-21T21:49:32.148Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/dashboard, GET} route"}
{"timestamp":"2026-10-21T21:49:32.148Z","level":"log","context":"RoutesResolver","message":"MspSubscriptionController {/partner/msp-subscriptions}:"}
{"timestamp":"2026-10-21T21:49:32.148Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/plans, POST} route"}
{"timestamp":"2026-10-21T21:49:32.148Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/plans, GET} route"}
{"timestamp":"2026-10-21T21:49:32.149Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/plans/:planId, GET} route"}
{"timestamp":"2026-10-21T21:49:32.149Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/plans/:planId, PUT} route"}
{"timestamp":"2026-10-21T21:49:32.149Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/plans/:planId, DELETE} route"}
{"timestamp":"2026-10-21T21:49:32.149Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/businesses/:businessId/subscription, POST} route"}
{"timestamp":"2026-10-21T21:49:32.149Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions, GET} route"}
{"timestamp":"2026-10-21T21:49:32.149Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/businesses/:businessId/subscription, GET} route"}
{"timestamp":"2026-10-21T21:49:32.150Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/businesses/:businessId/subscription, PUT} route"}
{"timestamp":"2026-10-21T21:49:32.150Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/businesses/:businessId/subscription, DELETE} route"}
{"timestamp":"2026-10-21T21:49:32.150Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/businesses/:businessId/subscription/limits, GET} route"}
{"timestamp":"2026-10-21T21:49:32.150Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/businesses/:businessId/subscription/change-plan, PUT} route"}
{"timestamp":"2026-10-21T21:49:32.150Z","level":"log","context":"RoutesResolver","message":"OnboardingController {/onboarding}:"}
{"timestamp":"2026-10-21T21:49:32.150Z","level":"log","context":"RouterExplorer","message":"Mapped {/onboarding/validate/:token, GET} route"}
{"timestamp":"2026-10-21T21:49:32.151Z","level":"log","context":"RouterExplorer","message":"Mapped {/onboarding/complete/:token, POST} route"}
{"timestamp":"2026-10-21T21:49:32.151Z","level":"log","context":"RoutesResolver","message":"ResellerController {/reseller}:"}
{"timestamp":"2026-10-21T21:49:32.151Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/businesses, POST} route"}
{"timestamp":"2026-10-21T21:49:32.151Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/businesses, GET} route"}
{"timestamp":"2026-10-21T21:49:32.151Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/businesses/:id, GET} route"}
{"timestamp":"2026-10-21T21:49:32.151Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/businesses/:id, PUT} route"}
{"timestamp":"2026-10-21T21:49:32.151Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/businesses/:id, DELETE} route"}
{"timestamp":"2026-10-21T21:49:32.152Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/license-usage, GET} route"}
{"timestamp":"2026-10-21T21:49:32.152Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/invoices, POST} route"}
{"timestamp":"2026-10-21T21:49:32.152Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/invoices, GET} route"}
{"timestamp":"2026-10-21T21:49:32.152Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/invoices/:id, GET} route"}
{"timestamp":"2026-10-21T21:49:32.152Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/invoices/:id, PUT} route"}
{"timestamp":"2026-10-21T21:49:32.152Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/invoices/:id, DELETE} route"}
{"timestamp":"2026-10-21T21:49:32.153Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/invoices/:id/mark-paid, PUT} route"}
{"timestamp":"2026-10-21T21:49:32.153Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/onboarding/generate-token, POST} route"}
{"timestamp":"2026-10-21T21:49:32.153Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/dashboard, GET} route"}
{"timestamp":"2026-10-21T21:49:32.153Z","level":"log","context":"RoutesResolver","message":"ResellerSubscriptionController {/reseller}:"}
{"timestamp":"2026-10-21T21:49:32.153Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/plans, POST} route"}
{"timestamp":"2026-10-21T21:49:32.153Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/plans, GET} route"}
{"timestamp":"2026-10-21T21:49:32.153Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/plans/:planId, GET} route"}
{"timestamp":"2026-10-21T21:49:32.154Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/plans/:planId, PUT} route"}
{"timestamp":"2026-10-21T21:49:32.154Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/plans/:planId, DELETE} route"}
{"timestamp":"2026-10-21T21:49:32.154Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/subscriptions/businesses/:businessId/subscription, POST} route"}
{"timestamp":"2026-10-21T21:49:32.154Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/subscriptions, GET} route"}
{"timestamp":"2026-10-21T21:49:32.154Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/subscriptions/businesses/:businessId/subscription, GET} route"}
{"timestamp":"2026-10-21T21:49:32.154Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/subscriptions/businesses/:businessId/subscription, PUT} route"}
{"timestamp":"2026-10-21T21:49:32.155Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/subscriptions/businesses/:businessId/subscription, DELETE} route"}
{"timestamp":"2026-10-21T21:49:32.155Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/subscriptions/businesses/:businessId/subscription/limits, GET} route"}
{"timestamp":"2026-10-21T21:49:32.155Z","level":"log","context":"RoutesResolver","message":"HealthController {/health}:"}
{"timestamp":"2026-10-21T21:49:32.155Z","level":"log","context":"RouterExplorer","message":"Mapped {/health, GET} route"}
{"timestamp":"2026-10-21T21:49:32.155Z","level":"log","context":"RouterExplorer","message":"Mapped {/health/test-logs, GET} route"}
{"timestamp":"2026-10-21T21:49:32.155Z","level":"log","context":"RoutesResolver","message":"AzureAdController {/azure-ad}:"}
{"timestamp":"2026-10-21T21:49:32.155Z","level":"log","context":"RouterExplorer","message":"Mapped {/azure-ad/config, POST} route"}
{"timestamp":"2026-10-21T21:49:32.155Z","level":"log","context":"RouterExplorer","message":"Mapped {/azure-ad/config, GET} route"}
{"timestamp":"2026-10-21T21:49:32.156Z","level":"log","context":"RouterExplorer","message":"Mapped {/azure-ad/test-connection, POST} route"}
{"timestamp":"2026-10-21T21:49:32.156Z","level":"log","context":"RouterExplorer","message":"Mapped {/azure-ad/sync, POST} route"}
{"timestamp":"2026-10-21T21:49:32.156Z","level":"log","context":"RoutesResolver","message":"ThreatsController {/threats}:"}
{"timestamp":"2026-10-21T21:49:32.156Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats, POST} route"}
{"timestamp":"2026-10-21T21:49:32.156Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats, GET} route"}
{"timestamp":"2026-10-21T21:49:32.156Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/chart-data, GET} route"}
{"timestamp":"2026-10-21T21:49:32.156Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/claude-search, POST} route"}
{"timestamp":"2026-10-21T21:49:32.157Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/claude-latest, POST} route"}
{"timestamp":"2026-10-21T21:49:32.157Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/claude-trending, POST} route"}
{"timestamp":"2026-10-21T21:49:32.157Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/claude-categories, POST} route"}
{"timestamp":"2026-10-21T21:49:32.157Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/claude-manual-search, POST} route"}
{"timestamp":"2026-10-21T21:49:32.157Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/claude-quick-search, POST} route"}
{"timestamp":"2026-10-21T21:49:32.157Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/scheduler-status, GET} route"}
{"timestamp":"2026-10-21T21:49:32.158Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/health-check, GET} route"}
{"timestamp":"2026-10-21T21:49:32.158Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/pause-scheduler, POST} route"}
{"timestamp":"2026-10-21T21:49:32.158Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/:id, GET} route"}
{"timestamp":"2026-10-21T21:49:32.158Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/:id, PATCH} route"}
{"timestamp":"2026-10-21T21:49:32.158Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/:id, DELETE} route"}
{"timestamp":"2026-10-21T21:49:32.158Z","level":"log","context":"RoutesResolver","message":"DomainController {/domains}:"}
{"timestamp":"2026-10-21T21:49:32.158Z","level":"log","context":"RouterExplorer","message":"Mapped {/domains, GET} route"}
{"timestamp":"2026-10-21T21:49:32.159Z","level":"log","context":"RouterExplorer","message":"Mapped {/domains/:id, GET} route"}
{"timestamp":"2026-10-21T21:49:32.159Z","level":"log","context":"RouterExplorer","message":"Mapped {/domains, POST} route"}
{"timestamp":"2026-10-21T21:49:32.159Z","level":"log","context":"RouterExplorer","message":"Mapped {/domains/:id, PUT} route"}
{"timestamp":"2026-10-21T21:49:32.159Z","level":"log","context":"RouterExplorer","message":"Mapped {/domains/:id, DELETE} route"}
{"timestamp":"2026-10-21T21:49:32.159Z","level":"log","context":"RouterExplorer","message":"Mapped {/domains/seed, POST} route"}
{"timestamp":"2026-10-21T21:49:32.159Z","level":"log","context":"RoutesResolver","message":"MspSubscriptionController {/msp-subscription}:"}
{"timestamp":"2026-10-21T21:49:32.159Z","level":"log","context":"RouterExplorer","message":"Mapped {/msp-subscription/current, GET} route"}
{"timestamp":"2026-10-21T21:49:32.160Z","level":"log","context":"RouterExplorer","message":"Mapped {/msp-subscription/invoices, GET} route"}
{"timestamp":"2026-10-21T21:49:32.160Z","level":"log","context":"RouterExplorer","message":"Mapped {/msp-subscription/invoice/:invoiceId/pdf, GET} route"}
{"timestamp":"2026-10-21T21:49:32.160Z","level":"log","context":"RoutesResolver","message":"MspSubscriptionController {/api/msp-subscription}:"}
{"timestamp":"2026-10-21T21:49:32.160Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/msp-subscription/current, GET} route"}
{"timestamp":"2026-10-21T21:49:32.160Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/msp-subscription/invoices, GET} route"}
{"timestamp":"2026-10-21T21:49:32.160Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/msp-subscription/invoice/:invoiceId/pdf, GET} route"}
{"timestamp":"2026-10-21T21:49:32.227Z","level":"log","context":"NestApplication","message":"Nest application successfully started"}
{"timestamp":"2026-10-21T21:49:32.236Z","level":"log","context":"Bootstrap","message":"Users API successfully started on port 3842"}
{"timestamp":"2026-10-21T21:49:32.237Z","level":"log","context":"SeedService","message":"🌱 Starting database seeding..."}
{"timestamp":"2026-10-21T21:49:32.239Z","level":"log","context":"SeedService","message":"Admin account already exists, skipping seed"}
{"timestamp":"2026-10-21T21:49:32.241Z","level":"log","context":"SeedService","message":"Reseller account already exists, skipping seed"}
{"timestamp":"2026-10-21T21:49:32.243Z","level":"log","context":"SeedService","message":"MSP account already exists, skipping seed"}
{"timestamp":"2026-10-21T21:49:32.243Z","level":"log","context":"SeedService","message":"✅ Database seeding completed successfully"}
{"timestamp":"2026-10-22T08:15:44.857Z","level":"warn","context":"LegacyRouteConverter","message":"Unsupported route path: \"/lp/*\". In previous versions, the symbols ?, *, and + were used to denote optional or repeating path parameters. The latest version of \"path-to-regexp\" now requires the use of named parameters. For example, instead of using a route like /users/* to capture all routes starting with \"/users\", you should use /users/*path. For more details, refer to the migration guide. Attempting to auto-convert..."}
{"timestamp":"2026-10-22T08:15:44.897Z","level":"log","context":"Bootstrap","message":"Starting Users API on port 3842..."}
{"timestamp":"2026-10-22T08:15:44.900Z","level":"log","context":"RoutesResolver","message":"UsersApiController {/}:"}
{"timestamp":"2026-10-22T08:15:44.903Z","level":"log","context":"RouterExplorer","message":"Mapped {/, GET} route"}
{"timestamp":"2026-10-22T08:15:44.903Z","level":"log","context":"RoutesResolver","message":"AuthController {/auth}:"}
{"timestamp":"2026-10-22T08:15:44.904Z","level":"log","context":"RouterExplorer","message":"Mapped {/auth/login, POST} route"}
{"timestamp":"2026-10-22T08:15:44.905Z","level":"log","context":"RouterExplorer","message":"Mapped {/auth/admin/login, POST} route"}
{"timestamp":"2026-10-22T08:15:44.905Z","level":"log","context":"RouterExplorer","message":"Mapped {/auth/send-otp, POST} route"}
{"timestamp":"2026-10-22T08:15:44.905Z","level":"log","context":"RouterExplorer","message":"Mapped {/auth/verify-otp, POST} route"}
{"timestamp":"2026-10-22T08:15:44.906Z","level":"log","context":"RouterExplorer","message":"Mapped {/auth/signup, POST} route"}
{"timestamp":"2026-10-22T08:15:44.906Z","level":"log","context":"RouterExplorer","message":"Mapped {/auth/subscription-status, GET} route"}
{"timestamp":"2026-10-22T08:15:44.907Z","level":"log","context":"RoutesResolver","message":"AdminMspController {/admin/msp}:"}
{"timestamp":"2026-10-22T08:15:44.907Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/msp, GET} route"}
{"timestamp":"2026-10-22T08:15:44.908Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/msp/:id, GET} route"}
{"timestamp":"2026-10-22T08:15:44.908Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/msp, POST} route"}
{"timestamp":"2026-10-22T08:15:44.909Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/msp/:id, PUT} route"}
{"timestamp":"2026-10-22T08:15:44.909Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/msp/:id, DELETE} route"}
{"timestamp":"2026-10-22T08:15:44.909Z","level":"log","context":"RoutesResolver","message":"AdminLicenseController {/admin/licenses}:"}
{"timestamp":"2026-10-22T08:15:44.909Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/licenses/summary, GET} route"}
{"timestamp":"2026-10-22T08:15:44.909Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/licenses/msp/:mspId, GET} route"}
{"timestamp":"2026-10-22T08:15:44.910Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/licenses/msp/:mspId, PUT} route"}
{"timestamp":"2026-10-22T08:15:44.910Z","level":"log","context":"RoutesResolver","message":"AdminImpersonationController {/admin/impersonation}:"}
{"timestamp":"2026-10-22T08:15:44.910Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/impersonation/msp-users, GET} route"}
{"timestamp":"2026-10-22T08:15:44.911Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/impersonation/impersonate, POST} route"}
{"timestamp":"2026-10-22T08:15:44.911Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/impersonation/stop, POST} route"}
{"timestamp":"2026-10-22T08:15:44.911Z","level":"log","context":"RoutesResolver","message":"AdminAiUsageController {/admin/ai-usage}:"}
{"timestamp":"2026-10-22T08:15:44.911Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-usage, GET} route"}
{"timestamp":"2026-10-22T08:15:44.911Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-usage/business/:businessId, GET} route"}
{"timestamp":"2026-10-22T08:15:44.912Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-usage/report/monthly, GET} route"}
{"timestamp":"2026-10-22T08:15:44.912Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-usage/pricing, GET} route"}
{"timestamp":"2026-10-22T08:15:44.912Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-usage/pricing, POST} route"}
{"timestamp":"2026-10-22T08:15:44.912Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-usage/credit/:businessId, PUT} route"}
{"timestamp":"2026-10-22T08:15:44.912Z","level":"log","context":"RoutesResolver","message":"AdminAiUsageController {/api/admin/ai-usage}:"}
{"timestamp":"2026-10-22T08:15:44.912Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-usage, GET} route"}
{"timestamp":"2026-10-22T08:15:44.913Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-usage/business/:businessId, GET} route"}
{"timestamp":"2026-10-22T08:15:44.913Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-usage/report/monthly, GET} route"}
{"timestamp":"2026-10-22T08:15:44.913Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-usage/pricing, GET} route"}
{"timestamp":"2026-10-22T08:15:44.913Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-usage/pricing, POST} route"}
{"timestamp":"2026-10-22T08:15:44.913Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-usage/credit/:businessId, PUT} route"}
{"timestamp":"2026-10-22T08:15:44.913Z","level":"log","context":"RoutesResolver","message":"AdminAiModelController {/admin/ai-models}:"}
{"timestamp":"2026-10-22T08:15:44.914Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models, POST} route"}
{"timestamp":"2026-10-22T08:15:44.914Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models, GET} route"}
{"timestamp":"2026-10-22T08:15:44.914Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/default, GET} route"}
{"timestamp":"2026-10-22T08:15:44.914Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/:id, GET} route"}
{"timestamp":"2026-10-22T08:15:44.914Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/:id, PUT} route"}
{"timestamp":"2026-10-22T08:15:44.915Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/:id, DELETE} route"}
{"timestamp":"2026-10-22T08:15:44.915Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/:id/set-default, POST} route"}
{"timestamp":"2026-10-22T08:15:44.915Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/assign-to-business, POST} route"}
{"timestamp":"2026-10-22T08:15:44.915Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/business/:businessId, GET} route"}
{"timestamp":"2026-10-22T08:15:44.915Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/:id/businesses, GET} route"}
{"timestamp":"2026-10-22T08:15:44.916Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/initialize-defaults, POST} route"}
{"timestamp":"2026-10-22T08:15:44.916Z","level":"log","context":"RoutesResolver","message":"AdminAiModelController {/api/admin/ai-models}:"}
{"timestamp":"2026-10-22T08:15:44.916Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models, POST} route"}
{"timestamp":"2026-10-22T08:15:44.916Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models, GET} route"}
{"timestamp":"2026-10-22T08:15:44.916Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/default, GET} route"}
{"timestamp":"2026-10-22T08:15:44.916Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/:id, GET} route"}
{"timestamp":"2026-10-22T08:15:44.916Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/:id, PUT} route"}
{"timestamp":"2026-10-22T08:15:44.917Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/:id, DELETE} route"}
{"timestamp":"2026-10-22T08:15:44.917Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/:id/set-default, POST} route"}
{"timestamp":"2026-10-22T08:15:44.917Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/assign-to-business, POST} route"}
{"timestamp":"2026-10-22T08:15:44.917Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/business/:businessId, GET} route"}
{"timestamp":"2026-10-22T08:15:44.917Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/:id/businesses, GET} route"}
{"timestamp":"2026-10-22T08:15:44.918Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/initialize-defaults, POST} route"}
{"timestamp":"2026-10-22T08:15:44.918Z","level":"log","context":"RoutesResolver","message":"AdminBusinessController {/admin/businesses}:"}
{"timestamp":"2026-10-22T08:15:44.918Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/businesses, GET} route"}
{"timestamp":"2026-10-22T08:15:44.918Z","level":"log","context":"RoutesResolver","message":"ResellerManagementController {/admin/resellers}:"}
{"timestamp":"2026-10-22T08:15:44.918Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/resellers, GET} route"}
{"timestamp":"2026-10-22T08:15:44.918Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/resellers/create-default, POST} route"}
{"timestamp":"2026-10-22T08:15:44.919Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/resellers, POST} route"}
{"timestamp":"2026-10-22T08:15:44.919Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/resellers/:id/toggle-status, PUT} route"}
{"timestamp":"2026-10-22T08:15:44.919Z","level":"log","context":"RoutesResolver","message":"SubscriptionController {/subscription}:"}
{"timestamp":"2026-10-22T08:15:44.919Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/plans, GET} route"}
{"timestamp":"2026-10-22T08:15:44.919Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/calculate-price, POST} route"}
{"timestamp":"2026-10-22T08:15:44.919Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/current, GET} route"}
{"timestamp":"2026-10-22T08:15:44.920Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/create, POST} route"}
{"timestamp":"2026-10-22T08:15:44.920Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/:id, PUT} route"}
{"timestamp":"2026-10-22T08:15:44.920Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/:id/cancel, DELETE} route"}
{"timestamp":"2026-10-22T08:15:44.920Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/sync/:stripeSubscriptionId, POST} route"}
{"timestamp":"2026-10-22T08:15:44.920Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/payments, GET} route"}
{"timestamp":"2026-10-22T08:15:44.920Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/payments/stats, GET} route"}
{"timestamp":"2026-10-22T08:15:44.921Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/payment/:id, GET} route"}
{"timestamp":"2026-10-22T08:15:44.921Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/payment-methods/attach, POST} route"}
{"timestamp":"2026-10-22T08:15:44.921Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/payment-methods/:paymentMethodId, DELETE} route"}
{"timestamp":"2026-10-22T08:15:44.921Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/payment-methods, GET} route"}
{"timestamp":"2026-10-22T08:15:44.921Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/setup-intent, POST} route"}
{"timestamp":"2026-10-22T08:15:44.921Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/update-employee-count, POST} route"}
{"timestamp":"2026-10-22T08:15:44.922Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/retry-payment/:subscriptionId, POST} route"}
{"timestamp":"2026-10-22T08:15:44.922Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/invoice/:invoiceId/pdf, GET} route"}
{"timestamp":"2026-10-22T08:15:44.922Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/preview-upgrade, POST} route"}
{"timestamp":"2026-10-22T08:15:44.922Z","level":"log","context":"RoutesResolver","message":"SubscriptionController {/api/subscription}:"}
{"timestamp":"2026-10-22T08:15:44.922Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/plans, GET} route"}
{"timestamp":"2026-10-22T08:15:44.922Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/calculate-price, POST} route"}
{"timestamp":"2026-10-22T08:15:44.922Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/current, GET} route"}
{"timestamp":"2026-10-22T08:15:44.923Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/create, POST} route"}
{"timestamp":"2026-10-22T08:15:44.923Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/:id, PUT} route"}
{"timestamp":"2026-10-22T08:15:44.923Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/:id/cancel, DELETE} route"}
{"timestamp":"2026-10-22T08:15:44.923Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/sync/:stripeSubscriptionId, POST} route"}
{"timestamp":"2026-10-22T08:15:44.923Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/payments, GET} route"}
{"timestamp":"2026-10-22T08:15:44.923Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/payments/stats, GET} route"}
{"timestamp":"2026-10-22T08:15:44.923Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/payment/:id, GET} route"}
{"timestamp":"2026-10-22T08:15:44.924Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/payment-methods/attach, POST} route"}
{"timestamp":"2026-10-22T08:15:44.924Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/payment-methods/:paymentMethodId, DELETE} route"}
{"timestamp":"2026-10-22T08:15:44.924Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/payment-methods, GET} route"}
{"timestamp":"2026-10-22T08:15:44.924Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/setup-intent, POST} route"}
{"timestamp":"2026-10-22T08:15:44.924Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/update-employee-count, POST} route"}
{"timestamp":"2026-10-22T08:15:44.924Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/retry-payment/:subscriptionId, POST} route"}
{"timestamp":"2026-10-22T08:15:44.924Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/invoice/:invoiceId/pdf, GET} route"}
{"timestamp":"2026-10-22T08:15:44.925Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/preview-upgrade, POST} route"}
{"timestamp":"2026-10-22T08:15:44.925Z","level":"log","context":"RoutesResolver","message":"StripeWebhookController {/stripe/webhook}:"}
{"timestamp":"2026-10-22T08:15:44.925Z","level":"log","context":"RouterExplorer","message":"Mapped {/stripe/webhook/test, GET} route"}
{"timestamp":"2026-10-22T08:15:44.925Z","level":"log","context":"RouterExplorer","message":"Mapped {/stripe/webhook, POST} route"}
{"timestamp":"2026-10-22T08:15:44.925Z","level":"log","context":"RoutesResolver","message":"EmailController {/email-templates}:"}
{"timestamp":"2026-10-22T08:15:44.925Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates/test, POST} route"}
{"timestamp":"2026-10-22T08:15:44.925Z","level":"log","context":"RoutesResolver","message":"EmployeeController {/employees}:"}
{"timestamp":"2026-10-22T08:15:44.925Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees, POST} route"}
{"timestamp":"2026-10-22T08:15:44.926Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees, GET} route"}
{"timestamp":"2026-10-22T08:15:44.926Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees/export, GET} route"}
{"timestamp":"2026-10-22T08:15:44.926Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees/risk-stats, GET} route"}
{"timestamp":"2026-10-22T08:15:44.926Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees/:id, GET} route"}
{"timestamp":"2026-10-22T08:15:44.926Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees/:id, PUT} route"}
{"timestamp":"2026-10-22T08:15:44.926Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees/:id, DELETE} route"}
{"timestamp":"2026-10-22T08:15:44.926Z","level":"log","context":"RoutesResolver","message":"GroupController {/groups}:"}
{"timestamp":"2026-10-22T08:15:44.927Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups, POST} route"}
{"timestamp":"2026-10-22T08:15:44.927Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups, GET} route"}
{"timestamp":"2026-10-22T08:15:44.927Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups/standard, GET} route"}
{"timestamp":"2026-10-22T08:15:44.927Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups/:id, GET} route"}
{"timestamp":"2026-10-22T08:15:44.927Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups/:id, PUT} route"}
{"timestamp":"2026-10-22T08:15:44.927Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups/:id, DELETE} route"}
{"timestamp":"2026-10-22T08:15:44.928Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups/:id/info, GET} route"}
{"timestamp":"2026-10-22T08:15:44.928Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups/:id/with-employees, GET} route"}
{"timestamp":"2026-10-22T08:15:44.928Z","level":"log","context":"RoutesResolver","message":"SenderProfileController {/sender-profiles}:"}
{"timestamp":"2026-10-22T08:15:44.928Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles, GET} route"}
{"timestamp":"2026-10-22T08:15:44.928Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles/:id, GET} route"}
{"timestamp":"2026-10-22T08:15:44.928Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles, POST} route"}
{"timestamp":"2026-10-22T08:15:44.929Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles/:id, PUT} route"}
{"timestamp":"2026-10-22T08:15:44.929Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles/:id, DELETE} route"}
{"timestamp":"2026-10-22T08:15:44.929Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles/:id/verify-domain, POST} route"}
{"timestamp":"2026-10-22T08:15:44.929Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles/domain-verification, GET} route"}
{"timestamp":"2026-10-22T08:15:44.929Z","level":"log","context":"RoutesResolver","message":"EmailTemplateController {/email-templates}:"}
{"timestamp":"2026-10-22T08:15:44.929Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates, GET} route"}
{"timestamp":"2026-10-22T08:15:44.929Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates/:id, GET} route"}
{"timestamp":"2026-10-22T08:15:44.930Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates, POST} route"}
{"timestamp":"2026-10-22T08:15:44.930Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates/:id, PUT} route"}
{"timestamp":"2026-10-22T08:15:44.930Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates/:id, DELETE} route"}
{"timestamp":"2026-10-22T08:15:44.930Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates/:id/duplicate, POST} route"}
{"timestamp":"2026-10-22T08:15:44.930Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates/:id/preview, GET} route"}
{"timestamp":"2026-10-22T08:15:44.930Z","level":"log","context":"RoutesResolver","message":"ScenarioController {/scenarios}:"}
{"timestamp":"2026-10-22T08:15:44.930Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios, POST} route"}
{"timestamp":"2026-10-22T08:15:44.931Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios/generate-content, POST} route"}
{"timestamp":"2026-10-22T08:15:44.931Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios, GET} route"}
{"timestamp":"2026-10-22T08:15:44.931Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios/:id, GET} route"}
{"timestamp":"2026-10-22T08:15:44.931Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios/:id, PUT} route"}
{"timestamp":"2026-10-22T08:15:44.931Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios/:id, DELETE} route"}
{"timestamp":"2026-10-22T08:15:44.931Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios/generate-from-json, POST} route"}
{"timestamp":"2026-10-22T08:15:44.932Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios/:id/save-as-custom-scenario, POST} route"}
{"timestamp":"2026-10-22T08:15:44.932Z","level":"log","context":"RoutesResolver","message":"CampaignController {/campaigns}:"}
{"timestamp":"2026-10-22T08:15:44.932Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns, POST} route"}
{"timestamp":"2026-10-22T08:15:44.932Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns, GET} route"}
{"timestamp":"2026-10-22T08:15:44.932Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id, GET} route"}
{"timestamp":"2026-10-22T08:15:44.932Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id/details, GET} route"}
{"timestamp":"2026-10-22T08:15:44.932Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id/employees, GET} route"}
{"timestamp":"2026-10-22T08:15:44.933Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id, PATCH} route"}
{"timestamp":"2026-10-22T08:15:44.933Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id/start, POST} route"}
{"timestamp":"2026-10-22T08:15:44.933Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id/stop, POST} route"}
{"timestamp":"2026-10-22T08:15:44.933Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id/duplicate, POST} route"}
{"timestamp":"2026-10-22T08:15:44.933Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id, DELETE} route"}
{"timestamp":"2026-10-22T08:15:44.934Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/auto-generate-program, POST} route"}
{"timestamp":"2026-10-22T08:15:44.934Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/generate-from-threat-intelligence, POST} route"}
{"timestamp":"2026-10-22T08:15:44.934Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id/risk-score, GET} route"}
{"timestamp":"2026-10-22T08:15:44.934Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/recalculate-risk-scores, POST} route"}
{"timestamp":"2026-10-22T08:15:44.934Z","level":"log","context":"RoutesResolver","message":"CampaignController {/api/campaigns}:"}
{"timestamp":"2026-10-22T08:15:44.934Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns, POST} route"}
{"timestamp":"2026-10-22T08:15:44.934Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns, GET} route"}
{"timestamp":"2026-10-22T08:15:44.935Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id, GET} route"}
{"timestamp":"2026-10-22T08:15:44.935Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id/details, GET} route"}
{"timestamp":"2026-10-22T08:15:44.935Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id/employees, GET} route"}
{"timestamp":"2026-10-22T08:15:44.935Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id, PATCH} route"}
{"timestamp":"2026-10-22T08:15:44.935Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id/start, POST} route"}
{"timestamp":"2026-10-22T08:15:44.935Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id/stop, POST} route"}
{"timestamp":"2026-10-22T08:15:44.935Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id/duplicate, POST} route"}
{"timestamp":"2026-10-22T08:15:44.936Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id, DELETE} route"}
{"timestamp":"2026-10-22T08:15:44.936Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/auto-generate-program, POST} route"}
{"timestamp":"2026-10-22T08:15:44.936Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/generate-from-threat-intelligence, POST} route"}
{"timestamp":"2026-10-22T08:15:44.936Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id/risk-score, GET} route"}
{"timestamp":"2026-10-22T08:15:44.936Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/recalculate-risk-scores, POST} route"}
{"timestamp":"2026-10-22T08:15:44.936Z","level":"log","context":"RoutesResolver","message":"NotificationsController {/notifications}:"}
{"timestamp":"2026-10-22T08:15:44.937Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications, POST} route"}
{"timestamp":"2026-10-22T08:15:44.937Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications, GET} route"}
{"timestamp":"2026-10-22T08:15:44.937Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/unread, GET} route"}
{"timestamp":"2026-10-22T08:15:44.937Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/unread-count, GET} route"}
{"timestamp":"2026-10-22T08:15:44.937Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/:id, GET} route"}
{"timestamp":"2026-10-22T08:15:44.937Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/:id, PATCH} route"}
{"timestamp":"2026-10-22T08:15:44.938Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/:id/read, PATCH} route"}
{"timestamp":"2026-10-22T08:15:44.938Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/mark-all-read, PATCH} route"}
{"timestamp":"2026-10-22T08:15:44.938Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/:id, DELETE} route"}
{"timestamp":"2026-10-22T08:15:44.938Z","level":"log","context":"RoutesResolver","message":"LandingPageController {/lp}:"}
{"timestamp":"2026-10-22T08:15:44.939Z","level":"log","context":"RouterExplorer","message":"Mapped {/lp/image, GET} route"}
{"timestamp":"2026-10-22T08:15:44.939Z","level":"log","context":"RouterExplorer","message":"Mapped {/lp/learning, GET} route"}
{"timestamp":"2026-10-22T08:15:44.939Z","level":"log","context":"RouterExplorer","message":"Mapped {/lp/submit, POST} route"}
{"timestamp":"2026-10-22T08:15:44.939Z","level":"log","context":"RouterExplorer","message":"Mapped {/lp/test, GET} route"}
{"timestamp":"2026-10-22T08:15:44.939Z","level":"warn","context":"LegacyRouteConverter","message":"Unsupported route path: \"/lp/*\". In previous versions, the symbols ?, *, and + were used to denote optional or repeating path parameters. The latest version of \"path-to-regexp\" now requires the use of named parameters. For example, instead of using a route like /users/* to capture all routes starting with \"/users\", you should use /users/*path. For more details, refer to the migration guide. Attempting to auto-convert..."}
{"timestamp":"2026-10-22T08:15:44.940Z","level":"log","context":"RouterExplorer","message":"Mapped {/lp/*, ALL} route"}
{"timestamp":"2026-10-22T08:15:44.940Z","level":"log","context":"RoutesResolver","message":"SupportController {/support}:"}
{"timestamp":"2026-10-22T08:15:44.940Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets, POST} route"}
{"timestamp":"2026-10-22T08:15:44.941Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets, GET} route"}
{"timestamp":"2026-10-22T08:15:44.941Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets/:id, GET} route"}
{"timestamp":"2026-10-22T08:15:44.941Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets/:id, PATCH} route"}
{"timestamp":"2026-10-22T08:15:44.941Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets/:id, DELETE} route"}
{"timestamp":"2026-10-22T08:15:44.941Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets/:id/messages, POST} route"}
{"timestamp":"2026-10-22T08:15:44.941Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets/:id/close, POST} route"}
{"timestamp":"2026-10-22T08:15:44.941Z","level":"log","context":"RoutesResolver","message":"BusninessMetricsController {/business-metrics}:"}
{"timestamp":"2026-10-22T08:15:44.942Z","level":"log","context":"RouterExplorer","message":"Mapped {/business-metrics, GET} route"}
{"timestamp":"2026-10-22T08:15:44.942Z","level":"log","context":"RoutesResolver","message":"UsersController {/users}:"}
{"timestamp":"2026-10-22T08:15:44.942Z","level":"log","context":"RouterExplorer","message":"Mapped {/users/:id, PUT} route"}
{"timestamp":"2026-10-22T08:15:44.942Z","level":"log","context":"RouterExplorer","message":"Mapped {/users/settings, GET} route"}
{"timestamp":"2026-10-22T08:15:44.942Z","level":"log","context":"RouterExplorer","message":"Mapped {/users/settings/general, PUT} route"}
{"timestamp":"2026-10-22T08:15:44.942Z","level":"log","context":"RouterExplorer","message":"Mapped {/users/company/settings, PUT} route"}
{"timestamp":"2026-10-22T08:15:44.943Z","level":"log","context":"RouterExplorer","message":"Mapped {/users/change-password, POST} route"}
{"timestamp":"2026-10-22T08:15:44.943Z","level":"log","context":"RouterExplorer","message":"Mapped {/users/localization/settings, PUT} route"}
{"timestamp":"2026-10-22T08:15:44.943Z","level":"log","context":"RoutesResolver","message":"PartnerController {/partner}:"}
{"timestamp":"2026-10-22T08:15:44.943Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses, POST} route"}
{"timestamp":"2026-10-22T08:15:44.943Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses, GET} route"}
{"timestamp":"2026-10-22T08:15:44.943Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses/:id, GET} route"}
{"timestamp":"2026-10-22T08:15:44.943Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses/:id, PUT} route"}
{"timestamp":"2026-10-22T08:15:44.944Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses/:id, DELETE} route"}
{"timestamp":"2026-10-22T08:15:44.944Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses/:id/impersonate, POST} route"}
{"timestamp":"2026-10-22T08:15:44.944Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses/stop-impersonation, POST} route"}
{"timestamp":"2026-10-22T08:15:44.944Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/license-usage, GET} route"}
{"timestamp":"2026-10-22T08:15:44.944Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/invoices, POST} route"}
{"timestamp":"2026-10-22T08:15:44.944Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/invoices, GET} route"}
{"timestamp":"2026-10-22T08:15:44.945Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/invoices/:id, GET} route"}
{"timestamp":"2026-10-22T08:15:44.945Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/invoices/:id, PUT} route"}
{"timestamp":"2026-10-22T08:15:44.945Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/invoices/:id, DELETE} route"}
{"timestamp":"2026-10-22T08:15:44.945Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/invoices/:id/mark-paid, PUT} route"}
{"timestamp":"2026-10-22T08:15:44.945Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/onboarding/generate-token, POST} route"}
{"timestamp":"2026-10-22T08:15:44.945Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/dashboard, GET} route"}
{"timestamp":"2026-10-22T08:15:44.945Z","level":"log","context":"RoutesResolver","message":"MspSubscriptionController {/partner/msp-subscriptions}:"}
{"timestamp":"2026-10-22T08:15:44.946Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/plans, POST} route"}
{"timestamp":"2026-10-22T08:15:44.946Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/plans, GET} route"}
{"timestamp":"2026-10-22T08:15:44.946Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/plans/:planId, GET} route"}
{"timestamp":"2026-10-22T08:15:44.946Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/plans/:planId, PUT} route"}
{"timestamp":"2026-10-22T08:15:44.946Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/plans/:planId, DELETE} route"}
{"timestamp":"2026-10-22T08:15:44.946Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/businesses/:businessId/subscription, POST} route"}
{"timestamp":"2026-10-22T08:15:44.947Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions, GET} route"}
{"timestamp":"2026-10-22T08:15:44.947Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/businesses/:businessId/subscription, GET} route"}
{"timestamp":"2026-10-22T08:15:44.947Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/businesses/:businessId/subscription, PUT} route"}
{"timestamp":"2026-10-22T08:15:44.947Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/businesses/:businessId/subscription, DELETE} route"}
{"timestamp":"2026-10-22T08:15:44.947Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/businesses/:businessId/subscription/limits, GET} route"}
{"timestamp":"2026-10-22T08:15:44.947Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/businesses/:businessId/subscription/change-plan, PUT} route"}
{"timestamp":"2026-10-22T08:15:44.947Z","level":"log","context":"RoutesResolver","message":"OnboardingController {/onboarding}:"}
{"timestamp":"2026-10-22T08:15:44.948Z","level":"log","context":"RouterExplorer","message":"Mapped {/onboarding/validate/:token, GET} route"}
{"timestamp":"2026-10-22T08:15:44.948Z","level":"log","context":"RouterExplorer","message":"Mapped {/onboarding/complete/:token, POST} route"}
{"timestamp":"2026-10-22T08:15:44.948Z","level":"log","context":"RoutesResolver","message":"ResellerController {/reseller}:"}
{"timestamp":"2026-10-22T08:15:44.948Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/businesses, POST} route"}
{"timestamp":"2026-10-22T08:15:44.948Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/businesses, GET} route"}
{"timestamp":"2026-10-22T08:15:44.948Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/businesses/:id, GET} route"}
{"timestamp":"2026-10-22T08:15:44.948Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/businesses/:id, PUT} route"}
{"timestamp":"2026-10-22T08:15:44.949Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/businesses/:id, DELETE} route"}
{"timestamp":"2026-10-22T08:15:44.949Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/license-usage, GET} route"}
{"timestamp":"2026-10-22T08:15:44.949Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/invoices, POST} route"}
{"timestamp":"2026-10-22T08:15:44.949Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/invoices, GET} route"}
{"timestamp":"2026-10-22T08:15:44.949Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/invoices/:id, GET} route"}
{"timestamp":"2026-10-22T08:15:44.949Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/invoices/:id, PUT} route"}
{"timestamp":"2026-10-22T08:15:44.949Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/invoices/:id, DELETE} route"}
{"timestamp":"2026-10-22T08:15:44.950Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/invoices/:id/mark-paid, PUT} route"}
{"timestamp":"2026-10-22T08:15:44.950Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/onboarding/generate-token, POST} route"}
{"timestamp":"2026-10-22T08:15:44.950Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/dashboard, GET} route"}
{"timestamp":"2026-10-22T08:15:44.950Z","level":"log","context":"RoutesResolver","message":"ResellerSubscriptionController {/reseller}:"}
{"timestamp":"2026-10-22T08:15:44.950Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/plans, POST} route"}
{"timestamp":"2026-10-22T08:15:44.950Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/plans, GET} route"}
{"timestamp":"2026-10-22T08:15:44.951Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/plans/:planId, GET} route"}
{"timestamp":"2026-10-22T08:15:44.951Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/plans/:planId, PUT} route"}
{"timestamp":"2026-10-22T08:15:44.951Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/plans/:planId, DELETE} route"}
{"timestamp":"2026-10-22T08:15:44.951Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/subscriptions/businesses/:businessId/subscription, POST} route"}
{"timestamp":"2026-10-22T08:15:44.951Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/subscriptions, GET} route"}
{"timestamp":"2026-10-22T08:15:44.951Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/subscriptions/businesses/:businessId/subscription, GET} route"}
{"timestamp":"2026-10-22T08:15:44.951Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/subscriptions/businesses/:businessId/subscription, PUT} route"}
{"timestamp":"2026-10-22T08:15:44.952Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/subscriptions/businesses/:businessId/subscription, DELETE} route"}
{"timestamp":"2026-10-22T08:15:44.952Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/subscriptions/businesses/:businessId/subscription/limits, GET} route"}
{"timestamp":"2026-10-22T08:15:44.952Z","level":"log","context":"RoutesResolver","message":"HealthController {/health}:"}
{"timestamp":"2026-10-22T08:15:44.952Z","level":"log","context":"RouterExplorer","message":"Mapped {/health, GET} route"}
{"timestamp":"2026-10-22T08:15:44.952Z","level":"log","context":"RouterExplorer","message":"Mapped {/health/test-logs, GET} route"}
{"timestamp":"2026-10-22T08:15:44.952Z","level":"log","context":"RoutesResolver","message":"AzureAdController {/azure-ad}:"}
{"timestamp":"2026-10-22T08:15:44.952Z","level":"log","context":"RouterExplorer","message":"Mapped {/azure-ad/config, POST} route"}
{"timestamp":"2026-10-22T08:15:44.953Z","level":"log","context":"RouterExplorer","message":"Mapped {/azure-ad/config, GET} route"}
{"timestamp":"2026-10-22T08:15:44.953Z","level":"log","context":"RouterExplorer","message":"Mapped {/azure-ad/test-connection, POST} route"}
{"timestamp":"2026-10-22T08:15:44.953Z","level":"log","context":"RouterExplorer","message":"Mapped {/azure-ad/sync, POST} route"}
{"timestamp":"2026-10-22T08:15:44.953Z","level":"log","context":"RoutesResolver","message":"ThreatsController {/threats}:"}
{"timestamp":"2026-10-22T08:15:44.953Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats, POST} route"}
{"timestamp":"2026-10-22T08:15:44.953Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats, GET} route"}
{"timestamp":"2026-10-22T08:15:44.953Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/chart-data, GET} route"}
{"timestamp":"2026-10-22T08:15:44.954Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/claude-search, POST} route"}
{"timestamp":"2026-10-22T08:15:44.954Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/claude-latest, POST} route"}
{"timestamp":"2026-10-22T08:15:44.954Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/claude-trending, POST} route"}
{"timestamp":"2026-10-22T08:15:44.954Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/claude-categories, POST} route"}
{"timestamp":"2026-10-22T08:15:44.954Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/claude-manual-search, POST} route"}
{"timestamp":"2026-10-22T08:15:44.954Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/claude-quick-search, POST} route"}
{"timestamp":"2026-10-22T08:15:44.954Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/scheduler-status, GET} route"}
{"timestamp":"2026-10-22T08:15:44.955Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/health-check, GET} route"}
{"timestamp":"2026-10-22T08:15:44.955Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/pause-scheduler, POST} route"}
{"timestamp":"2026-10-22T08:15:44.955Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/:id, GET} route"}
{"timestamp":"2026-10-22T08:15:44.955Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/:id, PATCH} route"}
{"timestamp":"2026-10-22T08:15:44.955Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/:id, DELETE} route"}
{"timestamp":"2026-10-22T08:15:44.955Z","level":"log","context":"RoutesResolver","message":"DomainController {/domains}:"}
{"timestamp":"2026-10-22T08:15:44.955Z","level":"log","context":"RouterExplorer","message":"Mapped {/domains, GET} route"}
{"timestamp":"2026-10-22T08:15:44.956Z","level":"log","context":"RouterExplorer","message":"Mapped {/domains/:id, GET} route"}
{"timestamp":"2026-10-22T08:15:44.956Z","level":"log","context":"RouterExplorer","message":"Mapped {/domains, POST} route"}
{"timestamp":"2026-10-22T08:15:44.956Z","level":"log","context":"RouterExplorer","message":"Mapped {/domains/:id, PUT} route"}
{"timestamp":"2026-10-22T08:15:44.956Z","level":"log","context":"RouterExplorer","message":"Mapped {/domains/:id, DELETE} route"}
{"timestamp":"2026-10-22T08:15:44.956Z","level":"log","context":"RouterExplorer","message":"Mapped {/domains/seed, POST} route"}
{"timestamp":"2026-10-22T08:15:44.956Z","level":"log","context":"RoutesResolver","message":"MspSubscriptionController {/msp-subscription}:"}
{"timestamp":"2026-10-22T08:15:44.956Z","level":"log","context":"RouterExplorer","message":"Mapped {/msp-subscription/current, GET} route"}
{"timestamp":"2026-10-22T08:15:44.957Z","level":"log","context":"RouterExplorer","message":"Mapped {/msp-subscription/invoices, GET} route"}
{"timestamp":"2026-10-22T08:15:44.957Z","level":"log","context":"RouterExplorer","message":"Mapped {/msp-subscription/invoice/:invoiceId/pdf, GET} route"}
{"timestamp":"2026-10-22T08:15:44.957Z","level":"log","context":"RoutesResolver","message":"MspSubscriptionController {/api/msp-subscription}:"}
{"timestamp":"2026-10-22T08:15:44.957Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/msp-subscription/current, GET} route"}
{"timestamp":"2026-10-22T08:15:44.957Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/msp-subscription/invoices, GET} route"}
{"timestamp":"2026-10-22T08:15:44.957Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/msp-subscription/invoice/:invoiceId/pdf, GET} route"}
{"timestamp":"2026-10-22T08:15:45.041Z","level":"log","context":"NestApplication","message":"Nest application successfully started"}
{"timestamp":"2026-10-22T08:15:45.059Z","level":"log","context":"Bootstrap","message":"Users API successfully started on port 3842"}
{"timestamp":"2026-10-22T08:15:45.059Z","level":"log","context":"SeedService","message":"🌱 Starting database seeding..."}
{"timestamp":"2026-10-22T08:15:45.063Z","level":"log","context":"SeedService","message":"Admin account already exists, skipping seed"}
{"timestamp":"2026-10-22T08:15:45.066Z","level":"log","context":"SeedService","message":"Reseller account already exists, skipping seed"}
{"timestamp":"2026-10-22T08:15:45.067Z","level":"log","context":"SeedService","message":"MSP account already exists, skipping seed"}
{"timestamp":"2026-10-22T08:15:45.067Z","level":"log","context":"SeedService","message":"✅ Database seeding completed successfully"}
{"timestamp":"2026-10-22T08:29:01.530Z","level":"log","context":"UsersApiController","message":"Hello endpoint accessed"}
{"timestamp":"2026-10-22T13:11:18.478Z","level":"warn","context":"LegacyRouteConverter","message":"Unsupported route path: \"/lp/*\". In previous versions, the symbols ?, *, and + were used to denote optional or repeating path parameters. The latest version of \"path-to-regexp\" now requires the use of named parameters. For example, instead of using a route like /users/* to capture all routes starting with \"/users\", you should use /users/*path. For more details, refer to the migration guide. Attempting to auto-convert..."}
{"timestamp":"2026-10-22T13:11:18.524Z","level":"log","context":"Bootstrap","message":"Starting Users API on port 3842..."}
{"timestamp":"2026-10-22T13:11:18.527Z","level":"log","context":"RoutesResolver","message":"UsersApiController {/}:"}
{"timestamp":"2026-10-22T13:11:18.531Z","level":"log","context":"RouterExplorer","message":"Mapped {/, GET} route"}
{"timestamp":"2026-10-22T13:11:18.531Z","level":"log","context":"RoutesResolver","message":"AuthController {/auth}:"}
{"timestamp":"2026-10-22T13:11:18.532Z","level":"log","context":"RouterExplorer","message":"Mapped {/auth/login, POST} route"}
{"timestamp":"2026-10-22T13:11:18.532Z","level":"log","context":"RouterExplorer","message":"Mapped {/auth/admin/login, POST} route"}
{"timestamp":"2026-10-22T13:11:18.533Z","level":"log","context":"RouterExplorer","message":"Mapped {/auth/send-otp, POST} route"}
{"timestamp":"2026-10-22T13:11:18.533Z","level":"log","context":"RouterExplorer","message":"Mapped {/auth/verify-otp, POST} route"}
{"timestamp":"2026-10-22T13:11:18.533Z","level":"log","context":"RouterExplorer","message":"Mapped {/auth/signup, POST} route"}
{"timestamp":"2026-10-22T13:11:18.534Z","level":"log","context":"RouterExplorer","message":"Mapped {/auth/subscription-status, GET} route"}
{"timestamp":"2026-10-22T13:11:18.534Z","level":"log","context":"RoutesResolver","message":"AdminMspController {/admin/msp}:"}
{"timestamp":"2026-10-22T13:11:18.534Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/msp, GET} route"}
{"timestamp":"2026-10-22T13:11:18.535Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/msp/:id, GET} route"}
{"timestamp":"2026-10-22T13:11:18.536Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/msp, POST} route"}
{"timestamp":"2026-10-22T13:11:18.536Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/msp/:id, PUT} route"}
{"timestamp":"2026-10-22T13:11:18.536Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/msp/:id, DELETE} route"}
{"timestamp":"2026-10-22T13:11:18.536Z","level":"log","context":"RoutesResolver","message":"AdminLicenseController {/admin/licenses}:"}
{"timestamp":"2026-10-22T13:11:18.537Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/licenses/summary, GET} route"}
{"timestamp":"2026-10-22T13:11:18.537Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/licenses/msp/:mspId, GET} route"}
{"timestamp":"2026-10-22T13:11:18.537Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/licenses/msp/:mspId, PUT} route"}
{"timestamp":"2026-10-22T13:11:18.537Z","level":"log","context":"RoutesResolver","message":"AdminImpersonationController {/admin/impersonation}:"}
{"timestamp":"2026-10-22T13:11:18.538Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/impersonation/msp-users, GET} route"}
{"timestamp":"2026-10-22T13:11:18.538Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/impersonation/impersonate, POST} route"}
{"timestamp":"2026-10-22T13:11:18.538Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/impersonation/stop, POST} route"}
{"timestamp":"2026-10-22T13:11:18.538Z","level":"log","context":"RoutesResolver","message":"AdminAiUsageController {/admin/ai-usage}:"}
{"timestamp":"2026-10-22T13:11:18.538Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-usage, GET} route"}
{"timestamp":"2026-10-22T13:11:18.541Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-usage/business/:businessId, GET} route"}
{"timestamp":"2026-10-22T13:11:18.541Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-usage/report/monthly, GET} route"}
{"timestamp":"2026-10-22T13:11:18.541Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-usage/pricing, GET} route"}
{"timestamp":"2026-10-22T13:11:18.542Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-usage/pricing, POST} route"}
{"timestamp":"2026-10-22T13:11:18.542Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-usage/credit/:businessId, PUT} route"}
{"timestamp":"2026-10-22T13:11:18.542Z","level":"log","context":"RoutesResolver","message":"AdminAiUsageController {/api/admin/ai-usage}:"}
{"timestamp":"2026-10-22T13:11:18.542Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-usage, GET} route"}
{"timestamp":"2026-10-22T13:11:18.542Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-usage/business/:businessId, GET} route"}
{"timestamp":"2026-10-22T13:11:18.542Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-usage/report/monthly, GET} route"}
{"timestamp":"2026-10-22T13:11:18.543Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-usage/pricing, GET} route"}
{"timestamp":"2026-10-22T13:11:18.543Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-usage/pricing, POST} route"}
{"timestamp":"2026-10-22T13:11:18.543Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-usage/credit/:businessId, PUT} route"}
{"timestamp":"2026-10-22T13:11:18.543Z","level":"log","context":"RoutesResolver","message":"AdminAiModelController {/admin/ai-models}:"}
{"timestamp":"2026-10-22T13:11:18.543Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models, POST} route"}
{"timestamp":"2026-10-22T13:11:18.543Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models, GET} route"}
{"timestamp":"2026-10-22T13:11:18.543Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/default, GET} route"}
{"timestamp":"2026-10-22T13:11:18.544Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/:id, GET} route"}
{"timestamp":"2026-10-22T13:11:18.544Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/:id, PUT} route"}
{"timestamp":"2026-10-22T13:11:18.544Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/:id, DELETE} route"}
{"timestamp":"2026-10-22T13:11:18.544Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/:id/set-default, POST} route"}
{"timestamp":"2026-10-22T13:11:18.544Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/assign-to-business, POST} route"}
{"timestamp":"2026-10-22T13:11:18.545Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/business/:businessId, GET} route"}
{"timestamp":"2026-10-22T13:11:18.545Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/:id/businesses, GET} route"}
{"timestamp":"2026-10-22T13:11:18.545Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/initialize-defaults, POST} route"}
{"timestamp":"2026-10-22T13:11:18.545Z","level":"log","context":"RoutesResolver","message":"AdminAiModelController {/api/admin/ai-models}:"}
{"timestamp":"2026-10-22T13:11:18.545Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models, POST} route"}
{"timestamp":"2026-10-22T13:11:18.545Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models, GET} route"}
{"timestamp":"2026-10-22T13:11:18.545Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/default, GET} route"}
{"timestamp":"2026-10-22T13:11:18.546Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/:id, GET} route"}
{"timestamp":"2026-10-22T13:11:18.546Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/:id, PUT} route"}
{"timestamp":"2026-10-22T13:11:18.546Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/:id, DELETE} route"}
{"timestamp":"2026-10-22T13:11:18.546Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/:id/set-default, POST} route"}
{"timestamp":"2026-10-22T13:11:18.546Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/assign-to-business, POST} route"}
{"timestamp":"2026-10-22T13:11:18.546Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/business/:businessId, GET} route"}
{"timestamp":"2026-10-22T13:11:18.547Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/:id/businesses, GET} route"}
{"timestamp":"2026-10-22T13:11:18.547Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/initialize-defaults, POST} route"}
{"timestamp":"2026-10-22T13:11:18.547Z","level":"log","context":"RoutesResolver","message":"AdminBusinessController {/admin/businesses}:"}
{"timestamp":"2026-10-22T13:11:18.547Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/businesses, GET} route"}
{"timestamp":"2026-10-22T13:11:18.547Z","level":"log","context":"RoutesResolver","message":"ResellerManagementController {/admin/resellers}:"}
{"timestamp":"2026-10-22T13:11:18.547Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/resellers, GET} route"}
{"timestamp":"2026-10-22T13:11:18.547Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/resellers/create-default, POST} route"}
{"timestamp":"2026-10-22T13:11:18.548Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/resellers, POST} route"}
{"timestamp":"2026-10-22T13:11:18.548Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/resellers/:id/toggle-status, PUT} route"}
{"timestamp":"2026-10-22T13:11:18.548Z","level":"log","context":"RoutesResolver","message":"SubscriptionController {/subscription}:"}
{"timestamp":"2026-10-22T13:11:18.548Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/plans, GET} route"}
{"timestamp":"2026-10-22T13:11:18.548Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/calculate-price, POST} route"}
{"timestamp":"2026-10-22T13:11:18.548Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/current, GET} route"}
{"timestamp":"2026-10-22T13:11:18.549Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/create, POST} route"}
{"timestamp":"2026-10-22T13:11:18.549Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/:id, PUT} route"}
{"timestamp":"2026-10-22T13:11:18.549Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/:id/cancel, DELETE} route"}
{"timestamp":"2026-10-22T13:11:18.549Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/sync/:stripeSubscriptionId, POST} route"}
{"timestamp":"2026-10-22T13:11:18.549Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/payments, GET} route"}
{"timestamp":"2026-10-22T13:11:18.549Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/payments/stats, GET} route"}
{"timestamp":"2026-10-22T13:11:18.549Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/payment/:id, GET} route"}
{"timestamp":"2026-10-22T13:11:18.550Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/payment-methods/attach, POST} route"}
{"timestamp":"2026-10-22T13:11:18.550Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/payment-methods/:paymentMethodId, DELETE} route"}
{"timestamp":"2026-10-22T13:11:18.550Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/payment-methods, GET} route"}
{"timestamp":"2026-10-22T13:11:18.550Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/setup-intent, POST} route"}
{"timestamp":"2026-10-22T13:11:18.550Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/update-employee-count, POST} route"}
{"timestamp":"2026-10-22T13:11:18.550Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/retry-payment/:subscriptionId, POST} route"}
{"timestamp":"2026-10-22T13:11:18.551Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/invoice/:invoiceId/pdf, GET} route"}
{"timestamp":"2026-10-22T13:11:18.551Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/preview-upgrade, POST} route"}
{"timestamp":"2026-10-22T13:11:18.551Z","level":"log","context":"RoutesResolver","message":"SubscriptionController {/api/subscription}:"}
{"timestamp":"2026-10-22T13:11:18.551Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/plans, GET} route"}
{"timestamp":"2026-10-22T13:11:18.551Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/calculate-price, POST} route"}
{"timestamp":"2026-10-22T13:11:18.551Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/current, GET} route"}
{"timestamp":"2026-10-22T13:11:18.551Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/create, POST} route"}
{"timestamp":"2026-10-22T13:11:18.551Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/:id, PUT} route"}
{"timestamp":"2026-10-22T13:11:18.552Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/:id/cancel, DELETE} route"}
{"timestamp":"2026-10-22T13:11:18.552Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/sync/:stripeSubscriptionId, POST} route"}
{"timestamp":"2026-10-22T13:11:18.552Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/payments, GET} route"}
{"timestamp":"2026-10-22T13:11:18.552Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/payments/stats, GET} route"}
{"timestamp":"2026-10-22T13:11:18.552Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/payment/:id, GET} route"}
{"timestamp":"2026-10-22T13:11:18.552Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/payment-methods/attach, POST} route"}
{"timestamp":"2026-10-22T13:11:18.552Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/payment-methods/:paymentMethodId, DELETE} route"}
{"timestamp":"2026-10-22T13:11:18.553Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/payment-methods, GET} route"}
{"timestamp":"2026-10-22T13:11:18.553Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/setup-intent, POST} route"}
{"timestamp":"2026-10-22T13:11:18.553Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/update-employee-count, POST} route"}
{"timestamp":"2026-10-22T13:11:18.553Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/retry-payment/:subscriptionId, POST} route"}
{"timestamp":"2026-10-22T13:11:18.553Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/invoice/:invoiceId/pdf, GET} route"}
{"timestamp":"2026-10-22T13:11:18.553Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/preview-upgrade, POST} route"}
{"timestamp":"2026-10-22T13:11:18.553Z","level":"log","context":"RoutesResolver","message":"StripeWebhookController {/stripe/webhook}:"}
{"timestamp":"2026-10-22T13:11:18.554Z","level":"log","context":"RouterExplorer","message":"Mapped {/stripe/webhook/test, GET} route"}
{"timestamp":"2026-10-22T13:11:18.554Z","level":"log","context":"RouterExplorer","message":"Mapped {/stripe/webhook, POST} route"}
{"timestamp":"2026-10-22T13:11:18.554Z","level":"log","context":"RoutesResolver","message":"EmailController {/email-templates}:"}
{"timestamp":"2026-10-22T13:11:18.554Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates/test, POST} route"}
{"timestamp":"2026-10-22T13:11:18.554Z","level":"log","context":"RoutesResolver","message":"EmployeeController {/employees}:"}
{"timestamp":"2026-10-22T13:11:18.554Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees, POST} route"}
{"timestamp":"2026-10-22T13:11:18.554Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees, GET} route"}
{"timestamp":"2026-10-22T13:11:18.554Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees/export, GET} route"}
{"timestamp":"2026-10-22T13:11:18.555Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees/risk-stats, GET} route"}
{"timestamp":"2026-10-22T13:11:18.555Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees/:id, GET} route"}
{"timestamp":"2026-10-22T13:11:18.555Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees/:id, PUT} route"}
{"timestamp":"2026-10-22T13:11:18.555Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees/:id, DELETE} route"}
{"timestamp":"2026-10-22T13:11:18.555Z","level":"log","context":"RoutesResolver","message":"GroupController {/groups}:"}
{"timestamp":"2026-10-22T13:11:18.555Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups, POST} route"}
{"timestamp":"2026-10-22T13:11:18.555Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups, GET} route"}
{"timestamp":"2026-10-22T13:11:18.556Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups/standard, GET} route"}
{"timestamp":"2026-10-22T13:11:18.556Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups/:id, GET} route"}
{"timestamp":"2026-10-22T13:11:18.556Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups/:id, PUT} route"}
{"timestamp":"2026-10-22T13:11:18.556Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups/:id, DELETE} route"}
{"timestamp":"2026-10-22T13:11:18.556Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups/:id/info, GET} route"}
{"timestamp":"2026-10-22T13:11:18.556Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups/:id/with-employees, GET} route"}
{"timestamp":"2026-10-22T13:11:18.556Z","level":"log","context":"RoutesResolver","message":"SenderProfileController {/sender-profiles}:"}
{"timestamp":"2026-10-22T13:11:18.557Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles, GET} route"}
{"timestamp":"2026-10-22T13:11:18.557Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles/:id, GET} route"}
{"timestamp":"2026-10-22T13:11:18.557Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles, POST} route"}
{"timestamp":"2026-10-22T13:11:18.557Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles/:id, PUT} route"}
{"timestamp":"2026-10-22T13:11:18.557Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles/:id, DELETE} route"}
{"timestamp":"2026-10-22T13:11:18.557Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles/:id/verify-domain, POST} route"}
{"timestamp":"2026-10-22T13:11:18.558Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles/domain-verification, GET} route"}
{"timestamp":"2026-10-22T13:11:18.558Z","level":"log","context":"RoutesResolver","message":"EmailTemplateController {/email-templates}:"}
{"timestamp":"2026-10-22T13:11:18.558Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates, GET} route"}
{"timestamp":"2026-10-22T13:11:18.558Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates/:id, GET} route"}
{"timestamp":"2026-10-22T13:11:18.558Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates, POST} route"}
{"timestamp":"2026-10-22T13:11:18.558Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates/:id, PUT} route"}
{"timestamp":"2026-10-22T13:11:18.559Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates/:id, DELETE} route"}
{"timestamp":"2026-10-22T13:11:18.559Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates/:id/duplicate, POST} route"}
{"timestamp":"2026-10-22T13:11:18.559Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates/:id/preview, GET} route"}
{"timestamp":"2026-10-22T13:11:18.559Z","level":"log","context":"RoutesResolver","message":"ScenarioController {/scenarios}:"}
{"timestamp":"2026-10-22T13:11:18.559Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios, POST} route"}
{"timestamp":"2026-10-22T13:11:18.559Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios/generate-content, POST} route"}
{"timestamp":"2026-10-22T13:11:18.559Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios, GET} route"}
{"timestamp":"2026-10-22T13:11:18.560Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios/:id, GET} route"}
{"timestamp":"2026-10-22T13:11:18.560Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios/:id, PUT} route"}
{"timestamp":"2026-10-22T13:11:18.560Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios/:id, DELETE} route"}
{"timestamp":"2026-10-22T13:11:18.560Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios/generate-from-json, POST} route"}
{"timestamp":"2026-10-22T13:11:18.560Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios/:id/save-as-custom-scenario, POST} route"}
{"timestamp":"2026-10-22T13:11:18.560Z","level":"log","context":"RoutesResolver","message":"CampaignController {/campaigns}:"}
{"timestamp":"2026-10-22T13:11:18.560Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns, POST} route"}
{"timestamp":"2026-10-22T13:11:18.560Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns, GET} route"}
{"timestamp":"2026-10-22T13:11:18.561Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id, GET} route"}
{"timestamp":"2026-10-22T13:11:18.561Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id/details, GET} route"}
{"timestamp":"2026-10-22T13:11:18.561Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id/employees, GET} route"}
{"timestamp":"2026-10-22T13:11:18.561Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id, PATCH} route"}
{"timestamp":"2026-10-22T13:11:18.561Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id/start, POST} route"}
{"timestamp":"2026-10-22T13:11:18.562Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id/stop, POST} route"}
{"timestamp":"2026-10-22T13:11:18.562Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id/duplicate, POST} route"}
{"timestamp":"2026-10-22T13:11:18.562Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id, DELETE} route"}
{"timestamp":"2026-10-22T13:11:18.562Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/auto-generate-program, POST} route"}
{"timestamp":"2026-10-22T13:11:18.562Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/generate-from-threat-intelligence, POST} route"}
{"timestamp":"2026-10-22T13:11:18.562Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id/risk-score, GET} route"}
{"timestamp":"2026-10-22T13:11:18.562Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/recalculate-risk-scores, POST} route"}
{"timestamp":"2026-10-22T13:11:18.562Z","level":"log","context":"RoutesResolver","message":"CampaignController {/api/campaigns}:"}
{"timestamp":"2026-10-22T13:11:18.563Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns, POST} route"}
{"timestamp":"2026-10-22T13:11:18.563Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns, GET} route"}
{"timestamp":"2026-10-22T13:11:18.563Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id, GET} route"}
{"timestamp":"2026-10-22T13:11:18.563Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id/details, GET} route"}
{"timestamp":"2026-10-22T13:11:18.563Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id/employees, GET} route"}
{"timestamp":"2026-10-22T13:11:18.563Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id, PATCH} route"}
{"timestamp":"2026-10-22T13:11:18.563Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id/start, POST} route"}
{"timestamp":"2026-10-22T13:11:18.564Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id/stop, POST} route"}
{"timestamp":"2026-10-22T13:11:18.564Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id/duplicate, POST} route"}
{"timestamp":"2026-10-22T13:11:18.564Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id, DELETE} route"}
{"timestamp":"2026-10-22T13:11:18.564Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/auto-generate-program, POST} route"}
{"timestamp":"2026-10-22T13:11:18.564Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/generate-from-threat-intelligence, POST} route"}
{"timestamp":"2026-10-22T13:11:18.564Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id/risk-score, GET} route"}
{"timestamp":"2026-10-22T13:11:18.564Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/recalculate-risk-scores, POST} route"}
{"timestamp":"2026-10-22T13:11:18.564Z","level":"log","context":"RoutesResolver","message":"NotificationsController {/notifications}:"}
{"timestamp":"2026-10-22T13:11:18.565Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications, POST} route"}
{"timestamp":"2026-10-22T13:11:18.565Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications, GET} route"}
{"timestamp":"2026-10-22T13:11:18.565Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/unread, GET} route"}
{"timestamp":"2026-10-22T13:11:18.565Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/unread-count, GET} route"}
{"timestamp":"2026-10-22T13:11:18.565Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/:id, GET} route"}
{"timestamp":"2026-10-22T13:11:18.566Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/:id, PATCH} route"}
{"timestamp":"2026-10-22T13:11:18.566Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/:id/read, PATCH} route"}
{"timestamp":"2026-10-22T13:11:18.566Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/mark-all-read, PATCH} route"}
{"timestamp":"2026-10-22T13:11:18.566Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/:id, DELETE} route"}
{"timestamp":"2026-10-22T13:11:18.566Z","level":"log","context":"RoutesResolver","message":"LandingPageController {/lp}:"}
{"timestamp":"2026-10-22T13:11:18.567Z","level":"log","context":"RouterExplorer","message":"Mapped {/lp/image, GET} route"}
{"timestamp":"2026-10-22T13:11:18.567Z","level":"log","context":"RouterExplorer","message":"Mapped {/lp/learning, GET} route"}
{"timestamp":"2026-10-22T13:11:18.567Z","level":"log","context":"RouterExplorer","message":"Mapped {/lp/submit, POST} route"}
{"timestamp":"2026-10-22T13:11:18.567Z","level":"log","context":"RouterExplorer","message":"Mapped {/lp/test, GET} route"}
{"timestamp":"2026-10-22T13:11:18.567Z","level":"warn","context":"LegacyRouteConverter","message":"Unsupported route path: \"/lp/*\". In previous versions, the symbols ?, *, and + were used to denote optional or repeating path parameters. The latest version of \"path-to-regexp\" now requires the use of named parameters. For example, instead of using a route like /users/* to capture all routes starting with \"/users\", you should use /users/*path. For more details, refer to the migration guide. Attempting to auto-convert..."}
{"timestamp":"2026-10-22T13:11:18.568Z","level":"log","context":"RouterExplorer","message":"Mapped {/lp/*, ALL} route"}
{"timestamp":"2026-10-22T13:11:18.568Z","level":"log","context":"RoutesResolver","message":"SupportController {/support}:"}
{"timestamp":"2026-10-22T13:11:18.568Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets, POST} route"}
{"timestamp":"2026-10-22T13:11:18.568Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets, GET} route"}
{"timestamp":"2026-10-22T13:11:18.569Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets/:id, GET} route"}
{"timestamp":"2026-10-22T13:11:18.569Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets/:id, PATCH} route"}
{"timestamp":"2026-10-22T13:11:18.569Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets/:id, DELETE} route"}
{"timestamp":"2026-10-22T13:11:18.569Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets/:id/messages, POST} route"}
{"timestamp":"2026-10-22T13:11:18.569Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets/:id/close, POST} route"}
{"timestamp":"2026-10-22T13:11:18.569Z","level":"log","context":"RoutesResolver","message":"BusninessMetricsController {/business-metrics}:"}
{"timestamp":"2026-10-22T13:11:18.570Z","level":"log","context":"RouterExplorer","message":"Mapped {/business-metrics, GET} route"}
{"timestamp":"2026-10-22T13:11:18.570Z","level":"log","context":"RoutesResolver","message":"UsersController {/users}:"}
{"timestamp":"2026-10-22T13:11:18.570Z","level":"log","context":"RouterExplorer","message":"Mapped {/users/:id, PUT} route"}
{"timestamp":"2026-10-22T13:11:18.570Z","level":"log","context":"RouterExplorer","message":"Mapped {/users/settings, GET} route"}
{"timestamp":"2026-10-22T13:11:18.571Z","level":"log","context":"RouterExplorer","message":"Mapped {/users/settings/general, PUT} route"}
{"timestamp":"2026-10-22T13:11:18.571Z","level":"log","context":"RouterExplorer","message":"Mapped {/users/company/settings, PUT} route"}
{"timestamp":"2026-10-22T13:11:18.571Z","level":"log","context":"RouterExplorer","message":"Mapped {/users/change-password, POST} route"}
{"timestamp":"2026-10-22T13:11:18.571Z","level":"log","context":"RouterExplorer","message":"Mapped {/users/localization/settings, PUT} route"}
{"timestamp":"2026-10-22T13:11:18.571Z","level":"log","context":"RoutesResolver","message":"PartnerController {/partner}:"}
{"timestamp":"2026-10-22T13:11:18.571Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses, POST} route"}
{"timestamp":"2026-10-22T13:11:18.572Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses, GET} route"}
{"timestamp":"2026-10-22T13:11:18.572Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses/:id, GET} route"}
{"timestamp":"2026-10-22T13:11:18.572Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses/:id, PUT} route"}
{"timestamp":"2026-10-22T13:11:18.572Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses/:id, DELETE} route"}
{"timestamp":"2026-10-22T13:11:18.572Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses/:id/impersonate, POST} route"}
{"timestamp":"2026-10-22T13:11:18.572Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses/stop-impersonation, POST} route"}
{"timestamp":"2026-10-22T13:11:18.573Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/license-usage, GET} route"}
{"timestamp":"2026-10-22T13:11:18.573Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/invoices, POST} route"}
{"timestamp":"2026-10-22T13:11:18.573Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/invoices, GET} route"}
{"timestamp":"2026-10-22T13:11:18.573Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/invoices/:id, GET} route"}
{"timestamp":"2026-10-22T13:11:18.573Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/invoices/:id, PUT} route"}
{"timestamp":"2026-10-22T13:11:18.573Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/invoices/:id, DELETE} route"}
{"timestamp":"2026-10-22T13:11:18.574Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/invoices/:id/mark-paid, PUT} route"}
{"timestamp":"2026-10-22T13:11:18.574Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/onboarding/generate-token, POST} route"}
{"timestamp":"2026-10-22T13:11:18.574Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/dashboard, GET} route"}
{"timestamp":"2026-10-22T13:11:18.574Z","level":"log","context":"RoutesResolver","message":"MspSubscriptionController {/partner/msp-subscriptions}:"}
{"timestamp":"2026-10-22T13:11:18.574Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/plans, POST} route"}
{"timestamp":"2026-10-22T13:11:18.574Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/plans, GET} route"}
{"timestamp":"2026-10-22T13:11:18.574Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/plans/:planId, GET} route"}
{"timestamp":"2026-10-22T13:11:18.575Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/plans/:planId, PUT} route"}
{"timestamp":"2026-10-22T13:11:18.575Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/plans/:planId, DELETE} route"}
{"timestamp":"2026-10-22T13:11:18.575Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/businesses/:businessId/subscription, POST} route"}
{"timestamp":"2026-10-22T13:11:18.575Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions, GET} route"}
{"timestamp":"2026-10-22T13:11:18.575Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/businesses/:businessId/subscription, GET} route"}
{"timestamp":"2026-10-22T13:11:18.575Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/businesses/:businessId/subscription, PUT} route"}
{"timestamp":"2026-10-22T13:11:18.576Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/businesses/:businessId/subscription, DELETE} route"}
{"timestamp":"2026-10-22T13:11:18.576Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/businesses/:businessId/subscription/limits, GET} route"}
{"timestamp":"2026-10-22T13:11:18.576Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/businesses/:businessId/subscription/change-plan, PUT} route"}
{"timestamp":"2026-10-22T13:11:18.576Z","level":"log","context":"RoutesResolver","message":"OnboardingController {/onboarding}:"}
{"timestamp":"2026-10-22T13:11:18.576Z","level":"log","context":"RouterExplorer","message":"Mapped {/onboarding/validate/:token, GET} route"}
{"timestamp":"2026-10-22T13:11:18.576Z","level":"log","context":"RouterExplorer","message":"Mapped {/onboarding/complete/:token, POST} route"}
{"timestamp":"2026-10-22T13:11:18.576Z","level":"log","context":"RoutesResolver","message":"ResellerController {/reseller}:"}
{"timestamp":"2026-10-22T13:11:18.577Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/businesses, POST} route"}
{"timestamp":"2026-10-22T13:11:18.577Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/businesses, GET} route"}
{"timestamp":"2026-10-22T13:11:18.577Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/businesses/:id, GET} route"}
{"timestamp":"2026-10-22T13:11:18.577Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/businesses/:id, PUT} route"}
{"timestamp":"2026-10-22T13:11:18.577Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/businesses/:id, DELETE} route"}
{"timestamp":"2026-10-22T13:11:18.577Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/license-usage, GET} route"}
{"timestamp":"2026-10-22T13:11:18.578Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/invoices, POST} route"}
{"timestamp":"2026-10-22T13:11:18.578Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/invoices, GET} route"}
{"timestamp":"2026-10-22T13:11:18.578Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/invoices/:id, GET} route"}
{"timestamp":"2026-10-22T13:11:18.578Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/invoices/:id, PUT} route"}
{"timestamp":"2026-10-22T13:11:18.578Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/invoices/:id, DELETE} route"}
{"timestamp":"2026-10-22T13:11:18.578Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/invoices/:id/mark-paid, PUT} route"}
{"timestamp":"2026-10-22T13:11:18.578Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/onboarding/generate-token, POST} route"}
{"timestamp":"2026-10-22T13:11:18.579Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/dashboard, GET} route"}
{"timestamp":"2026-10-22T13:11:18.579Z","level":"log","context":"RoutesResolver","message":"ResellerSubscriptionController {/reseller}:"}
{"timestamp":"2026-10-22T13:11:18.579Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/plans, POST} route"}
{"timestamp":"2026-10-22T13:11:18.579Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/plans, GET} route"}
{"timestamp":"2026-10-22T13:11:18.579Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/plans/:planId, GET} route"}
{"timestamp":"2026-10-22T13:11:18.579Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/plans/:planId, PUT} route"}
{"timestamp":"2026-10-22T13:11:18.580Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/plans/:planId, DELETE} route"}
{"timestamp":"2026-10-22T13:11:18.580Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/subscriptions/businesses/:businessId/subscription, POST} route"}
{"timestamp":"2026-10-22T13:11:18.580Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/subscriptions, GET} route"}
{"timestamp":"2026-10-22T13:11:18.580Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/subscriptions/businesses/:businessId/subscription, GET} route"}
{"timestamp":"2026-10-22T13:11:18.580Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/subscriptions/businesses/:businessId/subscription, PUT} route"}
{"timestamp":"2026-10-22T13:11:18.580Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/subscriptions/businesses/:businessId/subscription, DELETE} route"}
{"timestamp":"2026-10-22T13:11:18.581Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/subscriptions/businesses/:businessId/subscription/limits, GET} route"}
{"timestamp":"2026-10-22T13:11:18.581Z","level":"log","context":"RoutesResolver","message":"HealthController {/health}:"}
{"timestamp":"2026-10-22T13:11:18.581Z","level":"log","context":"RouterExplorer","message":"Mapped {/health, GET} route"}
{"timestamp":"2026-10-22T13:11:18.581Z","level":"log","context":"RouterExplorer","message":"Mapped {/health/test-logs, GET} route"}
{"timestamp":"2026-10-22T13:11:18.581Z","level":"log","context":"RoutesResolver","message":"AzureAdController {/azure-ad}:"}
{"timestamp":"2026-10-22T13:11:18.581Z","level":"log","context":"RouterExplorer","message":"Mapped {/azure-ad/config, POST} route"}
{"timestamp":"2026-10-22T13:11:18.581Z","level":"log","context":"RouterExplorer","message":"Mapped {/azure-ad/config, GET} route"}
{"timestamp":"2026-10-22T13:11:18.581Z","level":"log","context":"RouterExplorer","message":"Mapped {/azure-ad/test-connection, POST} route"}
{"timestamp":"2026-10-22T13:11:18.582Z","level":"log","context":"RouterExplorer","message":"Mapped {/azure-ad/sync, POST} route"}
{"timestamp":"2026-10-22T13:11:18.582Z","level":"log","context":"RoutesResolver","message":"ThreatsController {/threats}:"}
{"timestamp":"2026-10-22T13:11:18.582Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats, POST} route"}
{"timestamp":"2026-10-22T13:11:18.582Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats, GET} route"}
{"timestamp":"2026-10-22T13:11:18.582Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/chart-data, GET} route"}
{"timestamp":"2026-10-22T13:11:18.582Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/claude-search, POST} route"}
{"timestamp":"2026-10-22T13:11:18.582Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/claude-latest, POST} route"}
{"timestamp":"2026-10-22T13:11:18.583Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/claude-trending, POST} route"}
{"timestamp":"2026-10-22T13:11:18.583Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/claude-categories, POST} route"}
{"timestamp":"2026-10-22T13:11:18.583Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/claude-manual-search, POST} route"}
{"timestamp":"2026-10-22T13:11:18.583Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/claude-quick-search, POST} route"}
{"timestamp":"2026-10-22T13:11:18.583Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/scheduler-status, GET} route"}
{"timestamp":"2026-10-22T13:11:18.583Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/health-check, GET} route"}
{"timestamp":"2026-10-22T13:11:18.583Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/pause-scheduler, POST} route"}
{"timestamp":"2026-10-22T13:11:18.584Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/:id, GET} route"}
{"timestamp":"2026-10-22T13:11:18.584Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/:id, PATCH} route"}
{"timestamp":"2026-10-22T13:11:18.584Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/:id, DELETE} route"}
{"timestamp":"2026-10-22T13:11:18.584Z","level":"log","context":"RoutesResolver","message":"DomainController {/domains}:"}
{"timestamp":"2026-10-22T13:11:18.584Z","level":"log","context":"RouterExplorer","message":"Mapped {/domains, GET} route"}
{"timestamp":"2026-10-22T13:11:18.584Z","level":"log","context":"RouterExplorer","message":"Mapped {/domains/:id, GET} route"}
{"timestamp":"2026-10-22T13:11:18.585Z","level":"log","context":"RouterExplorer","message":"Mapped {/domains, POST} route"}
{"timestamp":"2026-10-22T13:11:18.585Z","level":"log","context":"RouterExplorer","message":"Mapped {/domains/:id, PUT} route"}
{"timestamp":"2026-10-22T13:11:18.585Z","level":"log","context":"RouterExplorer","message":"Mapped {/domains/:id, DELETE} route"}
{"timestamp":"2026-10-22T13:11:18.585Z","level":"log","context":"RouterExplorer","message":"Mapped {/domains/seed, POST} route"}
{"timestamp":"2026-10-22T13:11:18.585Z","level":"log","context":"RoutesResolver","message":"MspSubscriptionController {/msp-subscription}:"}
{"timestamp":"2026-10-22T13:11:18.585Z","level":"log","context":"RouterExplorer","message":"Mapped {/msp-subscription/current, GET} route"}
{"timestamp":"2026-10-22T13:11:18.585Z","level":"log","context":"RouterExplorer","message":"Mapped {/msp-subscription/invoices, GET} route"}
{"timestamp":"2026-10-22T13:11:18.586Z","level":"log","context":"RouterExplorer","message":"Mapped {/msp-subscription/invoice/:invoiceId/pdf, GET} route"}
{"timestamp":"2026-10-22T13:11:18.586Z","level":"log","context":"RoutesResolver","message":"MspSubscriptionController {/api/msp-subscription}:"}
{"timestamp":"2026-10-22T13:11:18.586Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/msp-subscription/current, GET} route"}
{"timestamp":"2026-10-22T13:11:18.586Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/msp-subscription/invoices, GET} route"}
{"timestamp":"2026-10-22T13:11:18.586Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/msp-subscription/invoice/:invoiceId/pdf, GET} route"}
{"timestamp":"2026-10-22T13:11:18.660Z","level":"log","context":"NestApplication","message":"Nest application successfully started"}
{"timestamp":"2026-10-22T13:11:18.678Z","level":"log","context":"Bootstrap","message":"Users API successfully started on port 3842"}
{"timestamp":"2026-10-22T13:11:18.678Z","level":"log","context":"SeedService","message":"🌱 Starting database seeding..."}
{"timestamp":"2026-10-22T13:11:18.683Z","level":"log","context":"SeedService","message":"Admin account already exists, skipping seed"}
{"timestamp":"2026-10-22T13:11:18.686Z","level":"log","context":"SeedService","message":"Reseller account already exists, skipping seed"}
{"timestamp":"2026-10-22T13:11:18.687Z","level":"log","context":"SeedService","message":"MSP account already exists, skipping seed"}
{"timestamp":"2026-10-22T13:11:18.687Z","level":"log","context":"SeedService","message":"✅ Database seeding completed successfully"}
{"timestamp":"2026-10-22T13:11:18.723Z","level":"log","context":"UsersApiController","message":"Hello endpoint accessed"}
{"timestamp":"2026-10-22T15:10:52.325Z","level":"warn","context":"LegacyRouteConverter","message":"Unsupported route path: \"/lp/*\". In previous versions, the symbols ?, *, and + were used to denote optional or repeating path parameters. The latest version of \"path-to-regexp\" now requires the use of named parameters. For example, instead of using a route like /users/* to capture all routes starting with \"/users\", you should use /users/*path. For more details, refer to the migration guide. Attempting to auto-convert..."}
{"timestamp":"2026-10-22T15:10:52.358Z","level":"log","context":"Bootstrap","message":"Starting Users API on port 3842..."}
{"timestamp":"2026-10-22T15:10:52.361Z","level":"log","context":"RoutesResolver","message":"UsersApiController {/}:"}
{"timestamp":"2026-10-22T15:10:52.364Z","level":"log","context":"RouterExplorer","message":"Mapped {/, GET} route"}
{"timestamp":"2026-10-22T15:10:52.364Z","level":"log","context":"RoutesResolver","message":"AuthController {/auth}:"}
{"timestamp":"2026-10-22T15:10:52.365Z","level":"log","context":"RouterExplorer","message":"Mapped {/auth/login, POST} route"}
{"timestamp":"2026-10-22T15:10:52.365Z","level":"log","context":"RouterExplorer","message":"Mapped {/auth/admin/login, POST} route"}
{"timestamp":"2026-10-22T15:10:52.366Z","level":"log","context":"RouterExplorer","message":"Mapped {/auth/send-otp, POST} route"}
{"timestamp":"2026-10-22T15:10:52.366Z","level":"log","context":"RouterExplorer","message":"Mapped {/auth/verify-otp, POST} route"}
{"timestamp":"2026-10-22T15:10:52.366Z","level":"log","context":"RouterExplorer","message":"Mapped {/auth/signup, POST} route"}
{"timestamp":"2026-10-22T15:10:52.367Z","level":"log","context":"RouterExplorer","message":"Mapped {/auth/subscription-status, GET} route"}
{"timestamp":"2026-10-22T15:10:52.367Z","level":"log","context":"RoutesResolver","message":"AdminMspController {/admin/msp}:"}
{"timestamp":"2026-10-22T15:10:52.367Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/msp, GET} route"}
{"timestamp":"2026-10-22T15:10:52.368Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/msp/:id, GET} route"}
{"timestamp":"2026-10-22T15:10:52.369Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/msp, POST} route"}
{"timestamp":"2026-10-22T15:10:52.369Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/msp/:id, PUT} route"}
{"timestamp":"2026-10-22T15:10:52.369Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/msp/:id, DELETE} route"}
{"timestamp":"2026-10-22T15:10:52.369Z","level":"log","context":"RoutesResolver","message":"AdminLicenseController {/admin/licenses}:"}
{"timestamp":"2026-10-22T15:10:52.369Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/licenses/summary, GET} route"}
{"timestamp":"2026-10-22T15:10:52.370Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/licenses/msp/:mspId, GET} route"}
{"timestamp":"2026-10-22T15:10:52.372Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/licenses/msp/:mspId, PUT} route"}
{"timestamp":"2026-10-22T15:10:52.372Z","level":"log","context":"RoutesResolver","message":"AdminImpersonationController {/admin/impersonation}:"}
{"timestamp":"2026-10-22T15:10:52.372Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/impersonation/msp-users, GET} route"}
{"timestamp":"2026-10-22T15:10:52.373Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/impersonation/impersonate, POST} route"}
{"timestamp":"2026-10-22T15:10:52.373Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/impersonation/stop, POST} route"}
{"timestamp":"2026-10-22T15:10:52.373Z","level":"log","context":"RoutesResolver","message":"AdminAiUsageController {/admin/ai-usage}:"}
{"timestamp":"2026-10-22T15:10:52.373Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-usage, GET} route"}
{"timestamp":"2026-10-22T15:10:52.374Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-usage/business/:businessId, GET} route"}
{"timestamp":"2026-10-22T15:10:52.374Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-usage/report/monthly, GET} route"}
{"timestamp":"2026-10-22T15:10:52.374Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-usage/pricing, GET} route"}
{"timestamp":"2026-10-22T15:10:52.374Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-usage/pricing, POST} route"}
{"timestamp":"2026-10-22T15:10:52.374Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-usage/credit/:businessId, PUT} route"}
{"timestamp":"2026-10-22T15:10:52.374Z","level":"log","context":"RoutesResolver","message":"AdminAiUsageController {/api/admin/ai-usage}:"}
{"timestamp":"2026-10-22T15:10:52.375Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-usage, GET} route"}
{"timestamp":"2026-10-22T15:10:52.375Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-usage/business/:businessId, GET} route"}
{"timestamp":"2026-10-22T15:10:52.375Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-usage/report/monthly, GET} route"}
{"timestamp":"2026-10-22T15:10:52.375Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-usage/pricing, GET} route"}
{"timestamp":"2026-10-22T15:10:52.375Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-usage/pricing, POST} route"}
{"timestamp":"2026-10-22T15:10:52.375Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-usage/credit/:businessId, PUT} route"}
{"timestamp":"2026-10-22T15:10:52.375Z","level":"log","context":"RoutesResolver","message":"AdminAiModelController {/admin/ai-models}:"}
{"timestamp":"2026-10-22T15:10:52.376Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models, POST} route"}
{"timestamp":"2026-10-22T15:10:52.376Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models, GET} route"}
{"timestamp":"2026-10-22T15:10:52.376Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/default, GET} route"}
{"timestamp":"2026-10-22T15:10:52.376Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/:id, GET} route"}
{"timestamp":"2026-10-22T15:10:52.376Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/:id, PUT} route"}
{"timestamp":"2026-10-22T15:10:52.376Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/:id, DELETE} route"}
{"timestamp":"2026-10-22T15:10:52.377Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/:id/set-default, POST} route"}
{"timestamp":"2026-10-22T15:10:52.377Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/assign-to-business, POST} route"}
{"timestamp":"2026-10-22T15:10:52.377Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/business/:businessId, GET} route"}
{"timestamp":"2026-10-22T15:10:52.377Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/:id/businesses, GET} route"}
{"timestamp":"2026-10-22T15:10:52.377Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/initialize-defaults, POST} route"}
{"timestamp":"2026-10-22T15:10:52.377Z","level":"log","context":"RoutesResolver","message":"AdminAiModelController {/api/admin/ai-models}:"}
{"timestamp":"2026-10-22T15:10:52.378Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models, POST} route"}
{"timestamp":"2026-10-22T15:10:52.378Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models, GET} route"}
{"timestamp":"2026-10-22T15:10:52.378Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/default, GET} route"}
{"timestamp":"2026-10-22T15:10:52.378Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/:id, GET} route"}
{"timestamp":"2026-10-22T15:10:52.378Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/:id, PUT} route"}
{"timestamp":"2026-10-22T15:10:52.378Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/:id, DELETE} route"}
{"timestamp":"2026-10-22T15:10:52.378Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/:id/set-default, POST} route"}
{"timestamp":"2026-10-22T15:10:52.379Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/assign-to-business, POST} route"}
{"timestamp":"2026-10-22T15:10:52.379Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/business/:businessId, GET} route"}
{"timestamp":"2026-10-22T15:10:52.379Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/:id/businesses, GET} route"}
{"timestamp":"2026-10-22T15:10:52.379Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/initialize-defaults, POST} route"}
{"timestamp":"2026-10-22T15:10:52.379Z","level":"log","context":"RoutesResolver","message":"AdminBusinessController {/admin/businesses}:"}
{"timestamp":"2026-10-22T15:10:52.379Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/businesses, GET} route"}
{"timestamp":"2026-10-22T15:10:52.379Z","level":"log","context":"RoutesResolver","message":"ResellerManagementController {/admin/resellers}:"}
{"timestamp":"2026-10-22T15:10:52.380Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/resellers, GET} route"}
{"timestamp":"2026-10-22T15:10:52.380Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/resellers/create-default, POST} route"}
{"timestamp":"2026-10-22T15:10:52.380Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/resellers, POST} route"}
{"timestamp":"2026-10-22T15:10:52.380Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/resellers/:id/toggle-status, PUT} route"}
{"timestamp":"2026-10-22T15:10:52.380Z","level":"log","context":"RoutesResolver","message":"SubscriptionController {/subscription}:"}
{"timestamp":"2026-10-22T15:10:52.380Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/plans, GET} route"}
{"timestamp":"2026-10-22T15:10:52.381Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/calculate-price, POST} route"}
{"timestamp":"2026-10-22T15:10:52.381Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/current, GET} route"}
{"timestamp":"2026-10-22T15:10:52.381Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/create, POST} route"}
{"timestamp":"2026-10-22T15:10:52.381Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/:id, PUT} route"}
{"timestamp":"2026-10-22T15:10:52.381Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/:id/cancel, DELETE} route"}
{"timestamp":"2026-10-22T15:10:52.381Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/sync/:stripeSubscriptionId, POST} route"}
{"timestamp":"2026-10-22T15:10:52.381Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/payments, GET} route"}
{"timestamp":"2026-10-22T15:10:52.382Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/payments/stats, GET} route"}
{"timestamp":"2026-10-22T15:10:52.382Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/payment/:id, GET} route"}
{"timestamp":"2026-10-22T15:10:52.382Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/payment-methods/attach, POST} route"}
{"timestamp":"2026-10-22T15:10:52.382Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/payment-methods/:paymentMethodId, DELETE} route"}
{"timestamp":"2026-10-22T15:10:52.382Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/payment-methods, GET} route"}
{"timestamp":"2026-10-22T15:10:52.382Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/setup-intent, POST} route"}
{"timestamp":"2026-10-22T15:10:52.382Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/update-employee-count, POST} route"}
{"timestamp":"2026-10-22T15:10:52.383Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/retry-payment/:subscriptionId, POST} route"}
{"timestamp":"2026-10-22T15:10:52.383Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/invoice/:invoiceId/pdf, GET} route"}
{"timestamp":"2026-10-22T15:10:52.383Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/preview-upgrade, POST} route"}
{"timestamp":"2026-10-22T15:10:52.383Z","level":"log","context":"RoutesResolver","message":"SubscriptionController {/api/subscription}:"}
{"timestamp":"2026-10-22T15:10:52.383Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/plans, GET} route"}
{"timestamp":"2026-10-22T15:10:52.383Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/calculate-price, POST} route"}
{"timestamp":"2026-10-22T15:10:52.383Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/current, GET} route"}
{"timestamp":"2026-10-22T15:10:52.383Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/create, POST} route"}
{"timestamp":"2026-10-22T15:10:52.384Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/:id, PUT} route"}
{"timestamp":"2026-10-22T15:10:52.384Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/:id/cancel, DELETE} route"}
{"timestamp":"2026-10-22T15:10:52.384Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/sync/:stripeSubscriptionId, POST} route"}
{"timestamp":"2026-10-22T15:10:52.384Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/payments, GET} route"}
{"timestamp":"2026-10-22T15:10:52.384Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/payments/stats, GET} route"}
{"timestamp":"2026-10-22T15:10:52.384Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/payment/:id, GET} route"}
{"timestamp":"2026-10-22T15:10:52.384Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/payment-methods/attach, POST} route"}
{"timestamp":"2026-10-22T15:10:52.385Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/payment-methods/:paymentMethodId, DELETE} route"}
{"timestamp":"2026-10-22T15:10:52.385Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/payment-methods, GET} route"}
{"timestamp":"2026-10-22T15:10:52.385Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/setup-intent, POST} route"}
{"timestamp":"2026-10-22T15:10:52.385Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/update-employee-count, POST} route"}
{"timestamp":"2026-10-22T15:10:52.385Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/retry-payment/:subscriptionId, POST} route"}
{"timestamp":"2026-10-22T15:10:52.385Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/invoice/:invoiceId/pdf, GET} route"}
{"timestamp":"2026-10-22T15:10:52.385Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/preview-upgrade, POST} route"}
{"timestamp":"2026-10-22T15:10:52.385Z","level":"log","context":"RoutesResolver","message":"StripeWebhookController {/stripe/webhook}:"}
{"timestamp":"2026-10-22T15:10:52.386Z","level":"log","context":"RouterExplorer","message":"Mapped {/stripe/webhook/test, GET} route"}
{"timestamp":"2026-10-22T15:10:52.386Z","level":"log","context":"RouterExplorer","message":"Mapped {/stripe/webhook, POST} route"}
{"timestamp":"2026-10-22T15:10:52.386Z","level":"log","context":"RoutesResolver","message":"EmailController {/email-templates}:"}
{"timestamp":"2026-10-22T15:10:52.386Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates/test, POST} route"}
{"timestamp":"2026-10-22T15:10:52.386Z","level":"log","context":"RoutesResolver","message":"EmployeeController {/employees}:"}
{"timestamp":"2026-10-22T15:10:52.386Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees, POST} route"}
{"timestamp":"2026-10-22T15:10:52.386Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees, GET} route"}
{"timestamp":"2026-10-22T15:10:52.386Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees/export, GET} route"}
{"timestamp":"2026-10-22T15:10:52.387Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees/risk-stats, GET} route"}
{"timestamp":"2026-10-22T15:10:52.387Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees/:id, GET} route"}
{"timestamp":"2026-10-22T15:10:52.387Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees/:id, PUT} route"}
{"timestamp":"2026-10-22T15:10:52.387Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees/:id, DELETE} route"}
{"timestamp":"2026-10-22T15:10:52.387Z","level":"log","context":"RoutesResolver","message":"GroupController {/groups}:"}
{"timestamp":"2026-10-22T15:10:52.387Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups, POST} route"}
{"timestamp":"2026-10-22T15:10:52.387Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups, GET} route"}
{"timestamp":"2026-10-22T15:10:52.388Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups/standard, GET} route"}
{"timestamp":"2026-10-22T15:10:52.388Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups/:id, GET} route"}
{"timestamp":"2026-10-22T15:10:52.388Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups/:id, PUT} route"}
{"timestamp":"2026-10-22T15:10:52.388Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups/:id, DELETE} route"}
{"timestamp":"2026-10-22T15:10:52.388Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups/:id/info, GET} route"}
{"timestamp":"2026-10-22T15:10:52.388Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups/:id/with-employees, GET} route"}
{"timestamp":"2026-10-22T15:10:52.388Z","level":"log","context":"RoutesResolver","message":"SenderProfileController {/sender-profiles}:"}
{"timestamp":"2026-10-22T15:10:52.388Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles, GET} route"}
{"timestamp":"2026-10-22T15:10:52.389Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles/:id, GET} route"}
{"timestamp":"2026-10-22T15:10:52.389Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles, POST} route"}
{"timestamp":"2026-10-22T15:10:52.389Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles/:id, PUT} route"}
{"timestamp":"2026-10-22T15:10:52.389Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles/:id, DELETE} route"}
{"timestamp":"2026-10-22T15:10:52.389Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles/:id/verify-domain, POST} route"}
{"timestamp":"2026-10-22T15:10:52.389Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles/domain-verification, GET} route"}
{"timestamp":"2026-10-22T15:10:52.389Z","level":"log","context":"RoutesResolver","message":"EmailTemplateController {/email-templates}:"}
{"timestamp":"2026-10-22T15:10:52.390Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates, GET} route"}
{"timestamp":"2026-10-22T15:10:52.390Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates/:id, GET} route"}
{"timestamp":"2026-10-22T15:10:52.390Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates, POST} route"}
{"timestamp":"2026-10-22T15:10:52.390Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates/:id, PUT} route"}
{"timestamp":"2026-10-22T15:10:52.390Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates/:id, DELETE} route"}
{"timestamp":"2026-10-22T15:10:52.390Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates/:id/duplicate, POST} route"}
{"timestamp":"2026-10-22T15:10:52.390Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates/:id/preview, GET} route"}
{"timestamp":"2026-10-22T15:10:52.390Z","level":"log","context":"RoutesResolver","message":"ScenarioController {/scenarios}:"}
{"timestamp":"2026-10-22T15:10:52.391Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios, POST} route"}
{"timestamp":"2026-10-22T15:10:52.391Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios/generate-content, POST} route"}
{"timestamp":"2026-10-22T15:10:52.391Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios, GET} route"}
{"timestamp":"2026-10-22T15:10:52.391Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios/:id, GET} route"}
{"timestamp":"2026-10-22T15:10:52.391Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios/:id, PUT} route"}
{"timestamp":"2026-10-22T15:10:52.391Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios/:id, DELETE} route"}
{"timestamp":"2026-10-22T15:10:52.391Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios/generate-from-json, POST} route"}
{"timestamp":"2026-10-22T15:10:52.392Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios/:id/save-as-custom-scenario, POST} route"}
{"timestamp":"2026-10-22T15:10:52.392Z","level":"log","context":"RoutesResolver","message":"CampaignController {/campaigns}:"}
{"timestamp":"2026-10-22T15:10:52.392Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns, POST} route"}
{"timestamp":"2026-10-22T15:10:52.392Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns, GET} route"}
{"timestamp":"2026-10-22T15:10:52.392Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id, GET} route"}
{"timestamp":"2026-10-22T15:10:52.392Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id/details, GET} route"}
{"timestamp":"2026-10-22T15:10:52.392Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id/employees, GET} route"}
{"timestamp":"2026-10-22T15:10:52.393Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id, PATCH} route"}
{"timestamp":"2026-10-22T15:10:52.393Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id/start, POST} route"}
{"timestamp":"2026-10-22T15:10:52.393Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id/stop, POST} route"}
{"timestamp":"2026-10-22T15:10:52.393Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id/duplicate, POST} route"}
{"timestamp":"2026-10-22T15:10:52.393Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id, DELETE} route"}
{"timestamp":"2026-10-22T15:10:52.393Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/auto-generate-program, POST} route"}
{"timestamp":"2026-10-22T15:10:52.394Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/generate-from-threat-intelligence, POST} route"}
{"timestamp":"2026-10-22T15:10:52.394Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id/risk-score, GET} route"}
{"timestamp":"2026-10-22T15:10:52.394Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/recalculate-risk-scores, POST} route"}
{"timestamp":"2026-10-22T15:10:52.394Z","level":"log","context":"RoutesResolver","message":"CampaignController {/api/campaigns}:"}
{"timestamp":"2026-10-22T15:10:52.394Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns, POST} route"}
{"timestamp":"2026-10-22T15:10:52.394Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns, GET} route"}
{"timestamp":"2026-10-22T15:10:52.394Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id, GET} route"}
{"timestamp":"2026-10-22T15:10:52.394Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id/details, GET} route"}
{"timestamp":"2026-10-22T15:10:52.395Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id/employees, GET} route"}
{"timestamp":"2026-10-22T15:10:52.395Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id, PATCH} route"}
{"timestamp":"2026-10-22T15:10:52.395Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id/start, POST} route"}
{"timestamp":"2026-10-22T15:10:52.395Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id/stop, POST} route"}
{"timestamp":"2026-10-22T15:10:52.395Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id/duplicate, POST} route"}
{"timestamp":"2026-10-22T15:10:52.395Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id, DELETE} route"}
{"timestamp":"2026-10-22T15:10:52.395Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/auto-generate-program, POST} route"}
{"timestamp":"2026-10-22T15:10:52.395Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/generate-from-threat-intelligence, POST} route"}
{"timestamp":"2026-10-22T15:10:52.396Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id/risk-score, GET} route"}
{"timestamp":"2026-10-22T15:10:52.396Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/recalculate-risk-scores, POST} route"}
{"timestamp":"2026-10-22T15:10:52.396Z","level":"log","context":"RoutesResolver","message":"NotificationsController {/notifications}:"}
{"timestamp":"2026-10-22T15:10:52.396Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications, POST} route"}
{"timestamp":"2026-10-22T15:10:52.396Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications, GET} route"}
{"timestamp":"2026-10-22T15:10:52.396Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/unread, GET} route"}
{"timestamp":"2026-10-22T15:10:52.396Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/unread-count, GET} route"}
{"timestamp":"2026-10-22T15:10:52.397Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/:id, GET} route"}
{"timestamp":"2026-10-22T15:10:52.397Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/:id, PATCH} route"}
{"timestamp":"2026-10-22T15:10:52.397Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/:id/read, PATCH} route"}
{"timestamp":"2026-10-22T15:10:52.397Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/mark-all-read, PATCH} route"}
{"timestamp":"2026-10-22T15:10:52.397Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/:id, DELETE} route"}
{"timestamp":"2026-10-22T15:10:52.397Z","level":"log","context":"RoutesResolver","message":"LandingPageController {/lp}:"}
{"timestamp":"2026-10-22T15:10:52.398Z","level":"log","context":"RouterExplorer","message":"Mapped {/lp/image, GET} route"}
{"timestamp":"2026-10-22T15:10:52.398Z","level":"log","context":"RouterExplorer","message":"Mapped {/lp/learning, GET} route"}
{"timestamp":"2026-10-22T15:10:52.398Z","level":"log","context":"RouterExplorer","message":"Mapped {/lp/submit, POST} route"}
{"timestamp":"2026-10-22T15:10:52.398Z","level":"log","context":"RouterExplorer","message":"Mapped {/lp/test, GET} route"}
{"timestamp":"2026-10-22T15:10:52.398Z","level":"warn","context":"LegacyRouteConverter","message":"Unsupported route path: \"/lp/*\". In previous versions, the symbols ?, *, and + were used to denote optional or repeating path parameters. The latest version of \"path-to-regexp\" now requires the use of named parameters. For example, instead of using a route like /users/* to capture all routes starting with \"/users\", you should use /users/*path. For more details, refer to the migration guide. Attempting to auto-convert..."}
{"timestamp":"2026-10-22T15:10:52.399Z","level":"log","context":"RouterExplorer","message":"Mapped {/lp/*, ALL} route"}
{"timestamp":"2026-10-22T15:10:52.399Z","level":"log","context":"RoutesResolver","message":"SupportController {/support}:"}
{"timestamp":"2026-10-22T15:10:52.399Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets, POST} route"}
{"timestamp":"2026-10-22T15:10:52.399Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets, GET} route"}
{"timestamp":"2026-10-22T15:10:52.399Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets/:id, GET} route"}
{"timestamp":"2026-10-22T15:10:52.400Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets/:id, PATCH} route"}
{"timestamp":"2026-10-22T15:10:52.400Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets/:id, DELETE} route"}
{"timestamp":"2026-10-22T15:10:52.400Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets/:id/messages, POST} route"}
{"timestamp":"2026-10-22T15:10:52.400Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets/:id/close, POST} route"}
{"timestamp":"2026-10-22T15:10:52.400Z","level":"log","context":"RoutesResolver","message":"BusninessMetricsController {/business-metrics}:"}
{"timestamp":"2026-10-22T15:10:52.400Z","level":"log","context":"RouterExplorer","message":"Mapped {/business-metrics, GET} route"}
{"timestamp":"2026-10-22T15:10:52.400Z","level":"log","context":"RoutesResolver","message":"UsersController {/users}:"}
{"timestamp":"2026-10-22T15:10:52.400Z","level":"log","context":"RouterExplorer","message":"Mapped {/users/:id, PUT} route"}
{"timestamp":"2026-10-22T15:10:52.401Z","level":"log","context":"RouterExplorer","message":"Mapped {/users/settings, GET} route"}
{"timestamp":"2026-10-22T15:10:52.401Z","level":"log","context":"RouterExplorer","message":"Mapped {/users/settings/general, PUT} route"}
{"timestamp":"2026-10-22T15:10:52.401Z","level":"log","context":"RouterExplorer","message":"Mapped {/users/company/settings, PUT} route"}
{"timestamp":"2026-10-22T15:10:52.401Z","level":"log","context":"RouterExplorer","message":"Mapped {/users/change-password, POST} route"}
{"timestamp":"2026-10-22T15:10:52.401Z","level":"log","context":"RouterExplorer","message":"Mapped {/users/localization/settings, PUT} route"}
{"timestamp":"2026-10-22T15:10:52.401Z","level":"log","context":"RoutesResolver","message":"PartnerController {/partner}:"}
{"timestamp":"2026-10-22T15:10:52.402Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses, POST} route"}
{"timestamp":"2026-10-22T15:10:52.402Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses, GET} route"}
{"timestamp":"2026-10-22T15:10:52.402Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses/:id, GET} route"}
{"timestamp":"2026-10-22T15:10:52.402Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses/:id, PUT} route"}
{"timestamp":"2026-10-22T15:10:52.402Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses/:id, DELETE} route"}
{"timestamp":"2026-10-22T15:10:52.402Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses/:id/impersonate, POST} route"}
{"timestamp":"2026-10-22T15:10:52.402Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses/stop-impersonation, POST} route"}
{"timestamp":"2026-10-22T15:10:52.403Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/license-usage, GET} route"}
{"timestamp":"2026-10-22T15:10:52.403Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/invoices, POST} route"}
{"timestamp":"2026-10-22T15:10:52.403Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/invoices, GET} route"}
{"timestamp":"2026-10-22T15:10:52.403Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/invoices/:id, GET} route"}
{"timestamp":"2026-10-22T15:10:52.403Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/invoices/:id, PUT} route"}
{"timestamp":"2026-10-22T15:10:52.403Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/invoices/:id, DELETE} route"}
{"timestamp":"2026-10-22T15:10:52.403Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/invoices/:id/mark-paid, PUT} route"}
{"timestamp":"2026-10-22T15:10:52.404Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/onboarding/generate-token, POST} route"}
{"timestamp":"2026-10-22T15:10:52.404Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/dashboard, GET} route"}
{"timestamp":"2026-10-22T15:10:52.404Z","level":"log","context":"RoutesResolver","message":"MspSubscriptionController {/partner/msp-subscriptions}:"}
{"timestamp":"2026-10-22T15:10:52.404Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/plans, POST} route"}
{"timestamp":"2026-10-22T15:10:52.404Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/plans, GET} route"}
{"timestamp":"2026-10-22T15:10:52.404Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/plans/:planId, GET} route"}
{"timestamp":"2026-10-22T15:10:52.404Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/plans/:planId, PUT} route"}
{"timestamp":"2026-10-22T15:10:52.405Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/plans/:planId, DELETE} route"}
{"timestamp":"2026-10-22T15:10:52.405Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/businesses/:businessId/subscription, POST} route"}
{"timestamp":"2026-10-22T15:10:52.405Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions, GET} route"}
{"timestamp":"2026-10-22T15:10:52.405Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/businesses/:businessId/subscription, GET} route"}
{"timestamp":"2026-10-22T15:10:52.405Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/businesses/:businessId/subscription, PUT} route"}
{"timestamp":"2026-10-22T15:10:52.405Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/businesses/:businessId/subscription, DELETE} route"}
{"timestamp":"2026-10-22T15:10:52.405Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/businesses/:businessId/subscription/limits, GET} route"}
{"timestamp":"2026-10-22T15:10:52.406Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/businesses/:businessId/subscription/change-plan, PUT} route"}
{"timestamp":"2026-10-22T15:10:52.406Z","level":"log","context":"RoutesResolver","message":"OnboardingController {/onboarding}:"}
{"timestamp":"2026-10-22T15:10:52.406Z","level":"log","context":"RouterExplorer","message":"Mapped {/onboarding/validate/:token, GET} route"}
{"timestamp":"2026-10-22T15:10:52.406Z","level":"log","context":"RouterExplorer","message":"Mapped {/onboarding/complete/:token, POST} route"}
{"timestamp":"2026-10-22T15:10:52.406Z","level":"log","context":"RoutesResolver","message":"ResellerController {/reseller}:"}
{"timestamp":"2026-10-22T15:10:52.406Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/businesses, POST} route"}
{"timestamp":"2026-10-22T15:10:52.406Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/businesses, GET} route"}
{"timestamp":"2026-10-22T15:10:52.406Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/businesses/:id, GET} route"}
{"timestamp":"2026-10-22T15:10:52.407Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/businesses/:id, PUT} route"}
{"timestamp":"2026-10-22T15:10:52.407Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/businesses/:id, DELETE} route"}
{"timestamp":"2026-10-22T15:10:52.407Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/license-usage, GET} route"}
{"timestamp":"2026-10-22T15:10:52.407Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/invoices, POST} route"}
{"timestamp":"2026-10-22T15:10:52.407Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/invoices, GET} route"}
{"timestamp":"2026-10-22T15:10:52.407Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/invoices/:id, GET} route"}
{"timestamp":"2026-10-22T15:10:52.407Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/invoices/:id, PUT} route"}
{"timestamp":"2026-10-22T15:10:52.408Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/invoices/:id, DELETE} route"}
{"timestamp":"2026-10-22T15:10:52.408Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/invoices/:id/mark-paid, PUT} route"}
{"timestamp":"2026-10-22T15:10:52.408Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/onboarding/generate-token, POST} route"}
{"timestamp":"2026-10-22T15:10:52.408Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/dashboard, GET} route"}
{"timestamp":"2026-10-22T15:10:52.408Z","level":"log","context":"RoutesResolver","message":"ResellerSubscriptionController {/reseller}:"}
{"timestamp":"2026-10-22T15:10:52.408Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/plans, POST} route"}
{"timestamp":"2026-10-22T15:10:52.408Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/plans, GET} route"}
{"timestamp":"2026-10-22T15:10:52.408Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/plans/:planId, GET} route"}
{"timestamp":"2026-10-22T15:10:52.409Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/plans/:planId, PUT} route"}
{"timestamp":"2026-10-22T15:10:52.409Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/plans/:planId, DELETE} route"}
{"timestamp":"2026-10-22T15:10:52.409Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/subscriptions/businesses/:businessId/subscription, POST} route"}
{"timestamp":"2026-10-22T15:10:52.409Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/subscriptions, GET} route"}
{"timestamp":"2026-10-22T15:10:52.409Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/subscriptions/businesses/:businessId/subscription, GET} route"}
{"timestamp":"2026-10-22T15:10:52.409Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/subscriptions/businesses/:businessId/subscription, PUT} route"}
{"timestamp":"2026-10-22T15:10:52.409Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/subscriptions/businesses/:businessId/subscription, DELETE} route"}
{"timestamp":"2026-10-22T15:10:52.410Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/subscriptions/businesses/:businessId/subscription/limits, GET} route"}
{"timestamp":"2026-10-22T15:10:52.410Z","level":"log","context":"RoutesResolver","message":"HealthController {/health}:"}
{"timestamp":"2026-10-22T15:10:52.410Z","level":"log","context":"RouterExplorer","message":"Mapped {/health, GET} route"}
{"timestamp":"2026-10-22T15:10:52.410Z","level":"log","context":"RouterExplorer","message":"Mapped {/health/test-logs, GET} route"}
{"timestamp":"2026-10-22T15:10:52.410Z","level":"log","context":"RoutesResolver","message":"AzureAdController {/azure-ad}:"}
{"timestamp":"2026-10-22T15:10:52.410Z","level":"log","context":"RouterExplorer","message":"Mapped {/azure-ad/config, POST} route"}
{"timestamp":"2026-10-22T15:10:52.410Z","level":"log","context":"RouterExplorer","message":"Mapped {/azure-ad/config, GET} route"}
{"timestamp":"2026-10-22T15:10:52.410Z","level":"log","context":"RouterExplorer","message":"Mapped {/azure-ad/test-connection, POST} route"}
{"timestamp":"2026-10-22T15:10:52.411Z","level":"log","context":"RouterExplorer","message":"Mapped {/azure-ad/sync, POST} route"}
{"timestamp":"2026-10-22T15:10:52.411Z","level":"log","context":"RoutesResolver","message":"ThreatsController {/threats}:"}
{"timestamp":"2026-10-22T15:10:52.411Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats, POST} route"}
{"timestamp":"2026-10-22T15:10:52.411Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats, GET} route"}
{"timestamp":"2026-10-22T15:10:52.411Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/chart-data, GET} route"}
{"timestamp":"2026-10-22T15:10:52.411Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/claude-search, POST} route"}
{"timestamp":"2026-10-22T15:10:52.411Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/claude-latest, POST} route"}
{"timestamp":"2026-10-22T15:10:52.411Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/claude-trending, POST} route"}
{"timestamp":"2026-10-22T15:10:52.412Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/claude-categories, POST} route"}
{"timestamp":"2026-10-22T15:10:52.412Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/claude-manual-search, POST} route"}
{"timestamp":"2026-10-22T15:10:52.412Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/claude-quick-search, POST} route"}
{"timestamp":"2026-10-22T15:10:52.412Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/scheduler-status, GET} route"}
{"timestamp":"2026-10-22T15:10:52.412Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/health-check, GET} route"}
{"timestamp":"2026-10-22T15:10:52.412Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/pause-scheduler, POST} route"}
{"timestamp":"2026-10-22T15:10:52.412Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/:id, GET} route"}
{"timestamp":"2026-10-22T15:10:52.413Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/:id, PATCH} route"}
{"timestamp":"2026-10-22T15:10:52.413Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/:id, DELETE} route"}
{"timestamp":"2026-10-22T15:10:52.413Z","level":"log","context":"RoutesResolver","message":"DomainController {/domains}:"}
{"timestamp":"2026-10-22T15:10:52.413Z","level":"log","context":"RouterExplorer","message":"Mapped {/domains, GET} route"}
{"timestamp":"2026-10-22T15:10:52.413Z","level":"log","context":"RouterExplorer","message":"Mapped {/domains/:id, GET} route"}
{"timestamp":"2026-10-22T15:10:52.413Z","level":"log","context":"RouterExplorer","message":"Mapped {/domains, POST} route"}
{"timestamp":"2026-10-22T15:10:52.413Z","level":"log","context":"RouterExplorer","message":"Mapped {/domains/:id, PUT} route"}
{"timestamp":"2026-10-22T15:10:52.413Z","level":"log","context":"RouterExplorer","message":"Mapped {/domains/:id, DELETE} route"}
{"timestamp":"2026-10-22T15:10:52.414Z","level":"log","context":"RouterExplorer","message":"Mapped {/domains/seed, POST} route"}
{"timestamp":"2026-10-22T15:10:52.414Z","level":"log","context":"RoutesResolver","message":"MspSubscriptionController {/msp-subscription}:"}
{"timestamp":"2026-10-22T15:10:52.414Z","level":"log","context":"RouterExplorer","message":"Mapped {/msp-subscription/current, GET} route"}
{"timestamp":"2026-10-22T15:10:52.414Z","level":"log","context":"RouterExplorer","message":"Mapped {/msp-subscription/invoices, GET} route"}
{"timestamp":"2026-10-22T15:10:52.414Z","level":"log","context":"RouterExplorer","message":"Mapped {/msp-subscription/invoice/:invoiceId/pdf, GET} route"}
{"timestamp":"2026-10-22T15:10:52.414Z","level":"log","context":"RoutesResolver","message":"MspSubscriptionController {/api/msp-subscription}:"}
{"timestamp":"2026-10-22T15:10:52.414Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/msp-subscription/current, GET} route"}
{"timestamp":"2026-10-22T15:10:52.414Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/msp-subscription/invoices, GET} route"}
{"timestamp":"2026-10-22T15:10:52.415Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/msp-subscription/invoice/:invoiceId/pdf, GET} route"}
{"timestamp":"2026-10-22T15:10:52.474Z","level":"log","context":"NestApplication","message":"Nest application successfully started"}
{"timestamp":"2026-10-22T15:10:52.480Z","level":"log","context":"Bootstrap","message":"Users API successfully started on port 3842"}
{"timestamp":"2026-10-22T15:10:52.480Z","level":"log","context":"SeedService","message":"🌱 Starting database seeding..."}
{"timestamp":"2026-10-22T15:10:52.485Z","level":"log","context":"SeedService","message":"Admin account already exists, skipping seed"}
{"timestamp":"2026-10-22T15:10:52.487Z","level":"log","context":"SeedService","message":"Reseller account already exists, skipping seed"}
{"timestamp":"2026-10-22T15:10:52.488Z","level":"log","context":"SeedService","message":"MSP account already exists, skipping seed"}
{"timestamp":"2026-10-22T15:10:52.488Z","level":"log","context":"SeedService","message":"✅ Database seeding completed successfully"}
{"timestamp":"2026-10-22T16:53:32.064Z","level":"warn","context":"LegacyRouteConverter","message":"Unsupported route path: \"/lp/*\". In previous versions, the symbols ?, *, and + were used to denote optional or repeating path parameters. The latest version of \"path-to-regexp\" now requires the use of named parameters. For example, instead of using a route like /users/* to capture all routes starting with \"/users\", you should use /users/*path. For more details, refer to the migration guide. Attempting to auto-convert..."}
{"timestamp":"2026-10-22T16:53:32.099Z","level":"log","context":"Bootstrap","message":"Starting Users API on port 3842..."}
{"timestamp":"2026-10-22T16:53:32.103Z","level":"log","context":"RoutesResolver","message":"UsersApiController {/}:"}
{"timestamp":"2026-10-22T16:53:32.107Z","level":"log","context":"RouterExplorer","message":"Mapped {/, GET} route"}
{"timestamp":"2026-10-22T16:53:32.107Z","level":"log","context":"RoutesResolver","message":"AuthController {/auth}:"}
{"timestamp":"2026-10-22T16:53:32.108Z","level":"log","context":"RouterExplorer","message":"Mapped {/auth/login, POST} route"}
{"timestamp":"2026-10-22T16:53:32.108Z","level":"log","context":"RouterExplorer","message":"Mapped {/auth/admin/login, POST} route"}
{"timestamp":"2026-10-22T16:53:32.109Z","level":"log","context":"RouterExplorer","message":"Mapped {/auth/send-otp, POST} route"}
{"timestamp":"2026-10-22T16:53:32.109Z","level":"log","context":"RouterExplorer","message":"Mapped {/auth/verify-otp, POST} route"}
{"timestamp":"2026-10-22T16:53:32.110Z","level":"log","context":"RouterExplorer","message":"Mapped {/auth/signup, POST} route"}
{"timestamp":"2026-10-22T16:53:32.110Z","level":"log","context":"RouterExplorer","message":"Mapped {/auth/subscription-status, GET} route"}
{"timestamp":"2026-10-22T16:53:32.110Z","level":"log","context":"RoutesResolver","message":"AdminMspController {/admin/msp}:"}
{"timestamp":"2026-10-22T16:53:32.111Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/msp, GET} route"}
{"timestamp":"2026-10-22T16:53:32.112Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/msp/:id, GET} route"}
{"timestamp":"2026-10-22T16:53:32.112Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/msp, POST} route"}
{"timestamp":"2026-10-22T16:53:32.113Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/msp/:id, PUT} route"}
{"timestamp":"2026-10-22T16:53:32.113Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/msp/:id, DELETE} route"}
{"timestamp":"2026-10-22T16:53:32.113Z","level":"log","context":"RoutesResolver","message":"AdminLicenseController {/admin/licenses}:"}
{"timestamp":"2026-10-22T16:53:32.113Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/licenses/summary, GET} route"}
{"timestamp":"2026-10-22T16:53:32.114Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/licenses/msp/:mspId, GET} route"}
{"timestamp":"2026-10-22T16:53:32.114Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/licenses/msp/:mspId, PUT} route"}
{"timestamp":"2026-10-22T16:53:32.114Z","level":"log","context":"RoutesResolver","message":"AdminImpersonationController {/admin/impersonation}:"}
{"timestamp":"2026-10-22T16:53:32.114Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/impersonation/msp-users, GET} route"}
{"timestamp":"2026-10-22T16:53:32.115Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/impersonation/impersonate, POST} route"}
{"timestamp":"2026-10-22T16:53:32.115Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/impersonation/stop, POST} route"}
{"timestamp":"2026-10-22T16:53:32.115Z","level":"log","context":"RoutesResolver","message":"AdminAiUsageController {/admin/ai-usage}:"}
{"timestamp":"2026-10-22T16:53:32.118Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-usage, GET} route"}
{"timestamp":"2026-10-22T16:53:32.118Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-usage/business/:businessId, GET} route"}
{"timestamp":"2026-10-22T16:53:32.118Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-usage/report/monthly, GET} route"}
{"timestamp":"2026-10-22T16:53:32.119Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-usage/pricing, GET} route"}
{"timestamp":"2026-10-22T16:53:32.119Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-usage/pricing, POST} route"}
{"timestamp":"2026-10-22T16:53:32.119Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-usage/credit/:businessId, PUT} route"}
{"timestamp":"2026-10-22T16:53:32.119Z","level":"log","context":"RoutesResolver","message":"AdminAiUsageController {/api/admin/ai-usage}:"}
{"timestamp":"2026-10-22T16:53:32.119Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-usage, GET} route"}
{"timestamp":"2026-10-22T16:53:32.120Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-usage/business/:businessId, GET} route"}
{"timestamp":"2026-10-22T16:53:32.120Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-usage/report/monthly, GET} route"}
{"timestamp":"2026-10-22T16:53:32.120Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-usage/pricing, GET} route"}
{"timestamp":"2026-10-22T16:53:32.120Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-usage/pricing, POST} route"}
{"timestamp":"2026-10-22T16:53:32.120Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-usage/credit/:businessId, PUT} route"}
{"timestamp":"2026-10-22T16:53:32.120Z","level":"log","context":"RoutesResolver","message":"AdminAiModelController {/admin/ai-models}:"}
{"timestamp":"2026-10-22T16:53:32.121Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models, POST} route"}
{"timestamp":"2026-10-22T16:53:32.121Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models, GET} route"}
{"timestamp":"2026-10-22T16:53:32.121Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/default, GET} route"}
{"timestamp":"2026-10-22T16:53:32.121Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/:id, GET} route"}
{"timestamp":"2026-10-22T16:53:32.121Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/:id, PUT} route"}
{"timestamp":"2026-10-22T16:53:32.122Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/:id, DELETE} route"}
{"timestamp":"2026-10-22T16:53:32.122Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/:id/set-default, POST} route"}
{"timestamp":"2026-10-22T16:53:32.122Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/assign-to-business, POST} route"}
{"timestamp":"2026-10-22T16:53:32.122Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/business/:businessId, GET} route"}
{"timestamp":"2026-10-22T16:53:32.122Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/:id/businesses, GET} route"}
{"timestamp":"2026-10-22T16:53:32.123Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/initialize-defaults, POST} route"}
{"timestamp":"2026-10-22T16:53:32.123Z","level":"log","context":"RoutesResolver","message":"AdminAiModelController {/api/admin/ai-models}:"}
{"timestamp":"2026-10-22T16:53:32.123Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models, POST} route"}
{"timestamp":"2026-10-22T16:53:32.123Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models, GET} route"}
{"timestamp":"2026-10-22T16:53:32.123Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/default, GET} route"}
{"timestamp":"2026-10-22T16:53:32.123Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/:id, GET} route"}
{"timestamp":"2026-10-22T16:53:32.124Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/:id, PUT} route"}
{"timestamp":"2026-10-22T16:53:32.124Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/:id, DELETE} route"}
{"timestamp":"2026-10-22T16:53:32.124Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/:id/set-default, POST} route"}
{"timestamp":"2026-10-22T16:53:32.124Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/assign-to-business, POST} route"}
{"timestamp":"2026-10-22T16:53:32.124Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/business/:businessId, GET} route"}
{"timestamp":"2026-10-22T16:53:32.124Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/:id/businesses, GET} route"}
{"timestamp":"2026-10-22T16:53:32.125Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/initialize-defaults, POST} route"}
{"timestamp":"2026-10-22T16:53:32.125Z","level":"log","context":"RoutesResolver","message":"AdminBusinessController {/admin/businesses}:"}
{"timestamp":"2026-10-22T16:53:32.125Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/businesses, GET} route"}
{"timestamp":"2026-10-22T16:53:32.125Z","level":"log","context":"RoutesResolver","message":"ResellerManagementController {/admin/resellers}:"}
{"timestamp":"2026-10-22T16:53:32.125Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/resellers, GET} route"}
{"timestamp":"2026-10-22T16:53:32.125Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/resellers/create-default, POST} route"}
{"timestamp":"2026-10-22T16:53:32.126Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/resellers, POST} route"}
{"timestamp":"2026-10-22T16:53:32.126Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/resellers/:id/toggle-status, PUT} route"}
{"timestamp":"2026-10-22T16:53:32.126Z","level":"log","context":"RoutesResolver","message":"SubscriptionController {/subscription}:"}
{"timestamp":"2026-10-22T16:53:32.126Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/plans, GET} route"}
{"timestamp":"2026-10-22T16:53:32.126Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/calculate-price, POST} route"}
{"timestamp":"2026-10-22T16:53:32.126Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/current, GET} route"}
{"timestamp":"2026-10-22T16:53:32.127Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/create, POST} route"}
{"timestamp":"2026-10-22T16:53:32.127Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/:id, PUT} route"}
{"timestamp":"2026-10-22T16:53:32.127Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/:id/cancel, DELETE} route"}
{"timestamp":"2026-10-22T16:53:32.127Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/sync/:stripeSubscriptionId, POST} route"}
{"timestamp":"2026-10-22T16:53:32.127Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/payments, GET} route"}
{"timestamp":"2026-10-22T16:53:32.128Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/payments/stats, GET} route"}
{"timestamp":"2026-10-22T16:53:32.128Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/payment/:id, GET} route"}
{"timestamp":"2026-10-22T16:53:32.128Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/payment-methods/attach, POST} route"}
{"timestamp":"2026-10-22T16:53:32.128Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/payment-methods/:paymentMethodId, DELETE} route"}
{"timestamp":"2026-10-22T16:53:32.128Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/payment-methods, GET} route"}
{"timestamp":"2026-10-22T16:53:32.128Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/setup-intent, POST} route"}
{"timestamp":"2026-10-22T16:53:32.129Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/update-employee-count, POST} route"}
{"timestamp":"2026-10-22T16:53:32.129Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/retry-payment/:subscriptionId, POST} route"}
{"timestamp":"2026-10-22T16:53:32.129Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/invoice/:invoiceId/pdf, GET} route"}
{"timestamp":"2026-10-22T16:53:32.129Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/preview-upgrade, POST} route"}
{"timestamp":"2026-10-22T16:53:32.129Z","level":"log","context":"RoutesResolver","message":"SubscriptionController {/api/subscription}:"}
{"timestamp":"2026-10-22T16:53:32.129Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/plans, GET} route"}
{"timestamp":"2026-10-22T16:53:32.129Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/calculate-price, POST} route"}
{"timestamp":"2026-10-22T16:53:32.130Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/current, GET} route"}
{"timestamp":"2026-10-22T16:53:32.130Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/create, POST} route"}
{"timestamp":"2026-10-22T16:53:32.130Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/:id, PUT} route"}
{"timestamp":"2026-10-22T16:53:32.130Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/:id/cancel, DELETE} route"}
{"timestamp":"2026-10-22T16:53:32.130Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/sync/:stripeSubscriptionId, POST} route"}
{"timestamp":"2026-10-22T16:53:32.130Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/payments, GET} route"}
{"timestamp":"2026-10-22T16:53:32.130Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/payments/stats, GET} route"}
{"timestamp":"2026-10-22T16:53:32.131Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/payment/:id, GET} route"}
{"timestamp":"2026-10-22T16:53:32.131Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/payment-methods/attach, POST} route"}
{"timestamp":"2026-10-22T16:53:32.131Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/payment-methods/:paymentMethodId, DELETE} route"}
{"timestamp":"2026-10-22T16:53:32.131Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/payment-methods, GET} route"}
{"timestamp":"2026-10-22T16:53:32.131Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/setup-intent, POST} route"}
{"timestamp":"2026-10-22T16:53:32.131Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/update-employee-count, POST} route"}
{"timestamp":"2026-10-22T16:53:32.132Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/retry-payment/:subscriptionId, POST} route"}
{"timestamp":"2026-10-22T16:53:32.132Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/invoice/:invoiceId/pdf, GET} route"}
{"timestamp":"2026-10-22T16:53:32.132Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/preview-upgrade, POST} route"}
{"timestamp":"2026-10-22T16:53:32.132Z","level":"log","context":"RoutesResolver","message":"StripeWebhookController {/stripe/webhook}:"}
{"timestamp":"2026-10-22T16:53:32.132Z","level":"log","context":"RouterExplorer","message":"Mapped {/stripe/webhook/test, GET} route"}
{"timestamp":"2026-10-22T16:53:32.132Z","level":"log","context":"RouterExplorer","message":"Mapped {/stripe/webhook, POST} route"}
{"timestamp":"2026-10-22T16:53:32.132Z","level":"log","context":"RoutesResolver","message":"EmailController {/email-templates}:"}
{"timestamp":"2026-10-22T16:53:32.133Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates/test, POST} route"}
{"timestamp":"2026-10-22T16:53:32.133Z","level":"log","context":"RoutesResolver","message":"EmployeeController {/employees}:"}
{"timestamp":"2026-10-22T16:53:32.133Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees, POST} route"}
{"timestamp":"2026-10-22T16:53:32.133Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees, GET} route"}
{"timestamp":"2026-10-22T16:53:32.133Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees/export, GET} route"}
{"timestamp":"2026-10-22T16:53:32.133Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees/risk-stats, GET} route"}
{"timestamp":"2026-10-22T16:53:32.133Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees/:id, GET} route"}
{"timestamp":"2026-10-22T16:53:32.134Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees/:id, PUT} route"}
{"timestamp":"2026-10-22T16:53:32.134Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees/:id, DELETE} route"}
{"timestamp":"2026-10-22T16:53:32.134Z","level":"log","context":"RoutesResolver","message":"GroupController {/groups}:"}
{"timestamp":"2026-10-22T16:53:32.134Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups, POST} route"}
{"timestamp":"2026-10-22T16:53:32.134Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups, GET} route"}
{"timestamp":"2026-10-22T16:53:32.134Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups/standard, GET} route"}
{"timestamp":"2026-10-22T16:53:32.135Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups/:id, GET} route"}
{"timestamp":"2026-10-22T16:53:32.135Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups/:id, PUT} route"}
{"timestamp":"2026-10-22T16:53:32.135Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups/:id, DELETE} route"}
{"timestamp":"2026-10-22T16:53:32.135Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups/:id/info, GET} route"}
{"timestamp":"2026-10-22T16:53:32.135Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups/:id/with-employees, GET} route"}
{"timestamp":"2026-10-22T16:53:32.135Z","level":"log","context":"RoutesResolver","message":"SenderProfileController {/sender-profiles}:"}
{"timestamp":"2026-10-22T16:53:32.135Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles, GET} route"}
{"timestamp":"2026-10-22T16:53:32.136Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles/:id, GET} route"}
{"timestamp":"2026-10-22T16:53:32.136Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles, POST} route"}
{"timestamp":"2026-10-22T16:53:32.136Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles/:id, PUT} route"}
{"timestamp":"2026-10-22T16:53:32.136Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles/:id, DELETE} route"}
{"timestamp":"2026-10-22T16:53:32.136Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles/:id/verify-domain, POST} route"}
{"timestamp":"2026-10-22T16:53:32.136Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles/domain-verification, GET} route"}
{"timestamp":"2026-10-22T16:53:32.136Z","level":"log","context":"RoutesResolver","message":"EmailTemplateController {/email-templates}:"}
{"timestamp":"2026-10-22T16:53:32.137Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates, GET} route"}
{"timestamp":"2026-10-22T16:53:32.137Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates/:id, GET} route"}
{"timestamp":"2026-10-22T16:53:32.137Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates, POST} route"}
{"timestamp":"2026-10-22T16:53:32.137Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates/:id, PUT} route"}
{"timestamp":"2026-10-22T16:53:32.137Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates/:id, DELETE} route"}
{"timestamp":"2026-10-22T16:53:32.137Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates/:id/duplicate, POST} route"}
{"timestamp":"2026-10-22T16:53:32.138Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates/:id/preview, GET} route"}
{"timestamp":"2026-10-22T16:53:32.138Z","level":"log","context":"RoutesResolver","message":"ScenarioController {/scenarios}:"}
{"timestamp":"2026-10-22T16:53:32.138Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios, POST} route"}
{"timestamp":"2026-10-22T16:53:32.138Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios/generate-content, POST} route"}
{"timestamp":"2026-10-22T16:53:32.138Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios, GET} route"}
{"timestamp":"2026-10-22T16:53:32.138Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios/:id, GET} route"}
{"timestamp":"2026-10-22T16:53:32.139Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios/:id, PUT} route"}
{"timestamp":"2026-10-22T16:53:32.139Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios/:id, DELETE} route"}
{"timestamp":"2026-10-22T16:53:32.139Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios/generate-from-json, POST} route"}
{"timestamp":"2026-10-22T16:53:32.139Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios/:id/save-as-custom-scenario, POST} route"}
{"timestamp":"2026-10-22T16:53:32.139Z","level":"log","context":"RoutesResolver","message":"CampaignController {/campaigns}:"}
{"timestamp":"2026-10-22T16:53:32.139Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns, POST} route"}
{"timestamp":"2026-10-22T16:53:32.139Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns, GET} route"}
{"timestamp":"2026-10-22T16:53:32.140Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id, GET} route"}
{"timestamp":"2026-10-22T16:53:32.140Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id/details, GET} route"}
{"timestamp":"2026-10-22T16:53:32.140Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id/employees, GET} route"}
{"timestamp":"2026-10-22T16:53:32.140Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id, PATCH} route"}
{"timestamp":"2026-10-22T16:53:32.140Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id/start, POST} route"}
{"timestamp":"2026-10-22T16:53:32.141Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id/stop, POST} route"}
{"timestamp":"2026-10-22T16:53:32.141Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id/duplicate, POST} route"}
{"timestamp":"2026-10-22T16:53:32.141Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id, DELETE} route"}
{"timestamp":"2026-10-22T16:53:32.141Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/auto-generate-program, POST} route"}
{"timestamp":"2026-10-22T16:53:32.141Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/generate-from-threat-intelligence, POST} route"}
{"timestamp":"2026-10-22T16:53:32.141Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id/risk-score, GET} route"}
{"timestamp":"2026-10-22T16:53:32.142Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/recalculate-risk-scores, POST} route"}
{"timestamp":"2026-10-22T16:53:32.142Z","level":"log","context":"RoutesResolver","message":"CampaignController {/api/campaigns}:"}
{"timestamp":"2026-10-22T16:53:32.142Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns, POST} route"}
{"timestamp":"2026-10-22T16:53:32.142Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns, GET} route"}
{"timestamp":"2026-10-22T16:53:32.142Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id, GET} route"}
{"timestamp":"2026-10-22T16:53:32.142Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id/details, GET} route"}
{"timestamp":"2026-10-22T16:53:32.142Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id/employees, GET} route"}
{"timestamp":"2026-10-22T16:53:32.142Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id, PATCH} route"}
{"timestamp":"2026-10-22T16:53:32.143Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id/start, POST} route"}
{"timestamp":"2026-10-22T16:53:32.143Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id/stop, POST} route"}
{"timestamp":"2026-10-22T16:53:32.143Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id/duplicate, POST} route"}
{"timestamp":"2026-10-22T16:53:32.143Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id, DELETE} route"}
{"timestamp":"2026-10-22T16:53:32.143Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/auto-generate-program, POST} route"}
{"timestamp":"2026-10-22T16:53:32.143Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/generate-from-threat-intelligence, POST} route"}
{"timestamp":"2026-10-22T16:53:32.144Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id/risk-score, GET} route"}
{"timestamp":"2026-10-22T16:53:32.144Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/recalculate-risk-scores, POST} route"}
{"timestamp":"2026-10-22T16:53:32.144Z","level":"log","context":"RoutesResolver","message":"NotificationsController {/notifications}:"}
{"timestamp":"2026-10-22T16:53:32.144Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications, POST} route"}
{"timestamp":"2026-10-22T16:53:32.144Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications, GET} route"}
{"timestamp":"2026-10-22T16:53:32.144Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/unread, GET} route"}
{"timestamp":"2026-10-22T16:53:32.145Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/unread-count, GET} route"}
{"timestamp":"2026-10-22T16:53:32.145Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/:id, GET} route"}
{"timestamp":"2026-10-22T16:53:32.145Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/:id, PATCH} route"}
{"timestamp":"2026-10-22T16:53:32.145Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/:id/read, PATCH} route"}
{"timestamp":"2026-10-22T16:53:32.145Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/mark-all-read, PATCH} route"}
{"timestamp":"2026-10-22T16:53:32.146Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/:id, DELETE} route"}
{"timestamp":"2026-10-22T16:53:32.146Z","level":"log","context":"RoutesResolver","message":"LandingPageController {/lp}:"}
{"timestamp":"2026-10-22T16:53:32.146Z","level":"log","context":"RouterExplorer","message":"Mapped {/lp/image, GET} route"}
{"timestamp":"2026-10-22T16:53:32.146Z","level":"log","context":"RouterExplorer","message":"Mapped {/lp/learning, GET} route"}
{"timestamp":"2026-10-22T16:53:32.146Z","level":"log","context":"RouterExplorer","message":"Mapped {/lp/submit, POST} route"}
{"timestamp":"2026-10-22T16:53:32.146Z","level":"log","context":"RouterExplorer","message":"Mapped {/lp/test, GET} route"}
{"timestamp":"2026-10-22T16:53:32.146Z","level":"warn","context":"LegacyRouteConverter","message":"Unsupported route path: \"/lp/*\". In previous versions, the symbols ?, *, and + were used to denote optional or repeating path parameters. The latest version of \"path-to-regexp\" now requires the use of named parameters. For example, instead of using a route like /users/* to capture all routes starting with \"/users\", you should use /users/*path. For more details, refer to the migration guide. Attempting to auto-convert..."}
{"timestamp":"2026-10-22T16:53:32.147Z","level":"log","context":"RouterExplorer","message":"Mapped {/lp/*, ALL} route"}
{"timestamp":"2026-10-22T16:53:32.147Z","level":"log","context":"RoutesResolver","message":"SupportController {/support}:"}
{"timestamp":"2026-10-22T16:53:32.148Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets, POST} route"}
{"timestamp":"2026-10-22T16:53:32.148Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets, GET} route"}
{"timestamp":"2026-10-22T16:53:32.148Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets/:id, GET} route"}
{"timestamp":"2026-10-22T16:53:32.148Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets/:id, PATCH} route"}
{"timestamp":"2026-10-22T16:53:32.148Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets/:id, DELETE} route"}
{"timestamp":"2026-10-22T16:53:32.148Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets/:id/messages, POST} route"}
{"timestamp":"2026-10-22T16:53:32.149Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets/:id/close, POST} route"}
{"timestamp":"2026-10-22T16:53:32.149Z","level":"log","context":"RoutesResolver","message":"BusninessMetricsController {/business-metrics}:"}
{"timestamp":"2026-10-22T16:53:32.149Z","level":"log","context":"RouterExplorer","message":"Mapped {/business-metrics, GET} route"}
{"timestamp":"2026-10-22T16:53:32.149Z","level":"log","context":"RoutesResolver","message":"UsersController {/users}:"}
{"timestamp":"2026-10-22T16:53:32.149Z","level":"log","context":"RouterExplorer","message":"Mapped {/users/:id, PUT} route"}
{"timestamp":"2026-10-22T16:53:32.149Z","level":"log","context":"RouterExplorer","message":"Mapped {/users/settings, GET} route"}
{"timestamp":"2026-10-22T16:53:32.149Z","level":"log","context":"RouterExplorer","message":"Mapped {/users/settings/general, PUT} route"}
{"timestamp":"2026-10-22T16:53:32.150Z","level":"log","context":"RouterExplorer","message":"Mapped {/users/company/settings, PUT} route"}
{"timestamp":"2026-10-22T16:53:32.150Z","level":"log","context":"RouterExplorer","message":"Mapped {/users/change-password, POST} route"}
{"timestamp":"2026-10-22T16:53:32.150Z","level":"log","context":"RouterExplorer","message":"Mapped {/users/localization/settings, PUT} route"}
{"timestamp":"2026-10-22T16:53:32.150Z","level":"log","context":"RoutesResolver","message":"PartnerController {/partner}:"}
{"timestamp":"2026-10-22T16:53:32.150Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses, POST} route"}
{"timestamp":"2026-10-22T16:53:32.150Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses, GET} route"}
{"timestamp":"2026-10-22T16:53:32.151Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses/:id, GET} route"}
{"timestamp":"2026-10-22T16:53:32.151Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses/:id, PUT} route"}
{"timestamp":"2026-10-22T16:53:32.151Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses/:id, DELETE} route"}
{"timestamp":"2026-10-22T16:53:32.151Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses/:id/impersonate, POST} route"}
{"timestamp":"2026-10-22T16:53:32.151Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses/stop-impersonation, POST} route"}
{"timestamp":"2026-10-22T16:53:32.151Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/license-usage, GET} route"}
{"timestamp":"2026-10-22T16:53:32.152Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/invoices, POST} route"}
{"timestamp":"2026-10-22T16:53:32.152Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/invoices, GET} route"}
{"timestamp":"2026-10-22T16:53:32.152Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/invoices/:id, GET} route"}
{"timestamp":"2026-10-22T16:53:32.152Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/invoices/:id, PUT} route"}
{"timestamp":"2026-10-22T16:53:32.152Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/invoices/:id, DELETE} route"}
{"timestamp":"2026-10-22T16:53:32.152Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/invoices/:id/mark-paid, PUT} route"}
{"timestamp":"2026-10-22T16:53:32.153Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/onboarding/generate-token, POST} route"}
{"timestamp":"2026-10-22T16:53:32.153Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/dashboard, GET} route"}
{"timestamp":"2026-10-22T16:53:32.153Z","level":"log","context":"RoutesResolver","message":"MspSubscriptionController {/partner/msp-subscriptions}:"}
{"timestamp":"2026-10-22T16:53:32.153Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/plans, POST} route"}
{"timestamp":"2026-10-22T16:53:32.153Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/plans, GET} route"}
{"timestamp":"2026-10-22T16:53:32.153Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/plans/:planId, GET} route"}
{"timestamp":"2026-10-22T16:53:32.154Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/plans/:planId, PUT} route"}
{"timestamp":"2026-10-22T16:53:32.154Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/plans/:planId, DELETE} route"}
{"timestamp":"2026-10-22T16:53:32.154Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/businesses/:businessId/subscription, POST} route"}
{"timestamp":"2026-10-22T16:53:32.154Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions, GET} route"}
{"timestamp":"2026-10-22T16:53:32.154Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/businesses/:businessId/subscription, GET} route"}
{"timestamp":"2026-10-22T16:53:32.154Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/businesses/:businessId/subscription, PUT} route"}
{"timestamp":"2026-10-22T16:53:32.155Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/businesses/:businessId/subscription, DELETE} route"}
{"timestamp":"2026-10-22T16:53:32.155Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/businesses/:businessId/subscription/limits, GET} route"}
{"timestamp":"2026-10-22T16:53:32.155Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/businesses/:businessId/subscription/change-plan, PUT} route"}
{"timestamp":"2026-10-22T16:53:32.155Z","level":"log","context":"RoutesResolver","message":"OnboardingController {/onboarding}:"}
{"timestamp":"2026-10-22T16:53:32.155Z","level":"log","context":"RouterExplorer","message":"Mapped {/onboarding/validate/:token, GET} route"}
{"timestamp":"2026-10-22T16:53:32.155Z","level":"log","context":"RouterExplorer","message":"Mapped {/onboarding/complete/:token, POST} route"}
{"timestamp":"2026-10-22T16:53:32.155Z","level":"log","context":"RoutesResolver","message":"ResellerController {/reseller}:"}
{"timestamp":"2026-10-22T16:53:32.156Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/businesses, POST} route"}
{"timestamp":"2026-10-22T16:53:32.156Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/businesses, GET} route"}
{"timestamp":"2026-10-22T16:53:32.156Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/businesses/:id, GET} route"}
{"timestamp":"2026-10-22T16:53:32.156Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/businesses/:id, PUT} route"}
{"timestamp":"2026-10-22T16:53:32.156Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/businesses/:id, DELETE} route"}
{"timestamp":"2026-10-22T16:53:32.156Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/license-usage, GET} route"}
{"timestamp":"2026-10-22T16:53:32.157Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/invoices, POST} route"}
{"timestamp":"2026-10-22T16:53:32.157Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/invoices, GET} route"}
{"timestamp":"2026-10-22T16:53:32.157Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/invoices/:id, GET} route"}
{"timestamp":"2026-10-22T16:53:32.157Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/invoices/:id, PUT} route"}
{"timestamp":"2026-10-22T16:53:32.157Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/invoices/:id, DELETE} route"}
{"timestamp":"2026-10-22T16:53:32.158Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/invoices/:id/mark-paid, PUT} route"}
{"timestamp":"2026-10-22T16:53:32.158Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/onboarding/generate-token, POST} route"}
{"timestamp":"2026-10-22T16:53:32.158Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/dashboard, GET} route"}
{"timestamp":"2026-10-22T16:53:32.158Z","level":"log","context":"RoutesResolver","message":"ResellerSubscriptionController {/reseller}:"}
{"timestamp":"2026-10-22T16:53:32.158Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/plans, POST} route"}
{"timestamp":"2026-10-22T16:53:32.159Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/plans, GET} route"}
{"timestamp":"2026-10-22T16:53:32.159Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/plans/:planId, GET} route"}
{"timestamp":"2026-10-22T16:53:32.159Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/plans/:planId, PUT} route"}
{"timestamp":"2026-10-22T16:53:32.159Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/plans/:planId, DELETE} route"}
{"timestamp":"2026-10-22T16:53:32.159Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/subscriptions/businesses/:businessId/subscription, POST} route"}
{"timestamp":"2026-10-22T16:53:32.159Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/subscriptions, GET} route"}
{"timestamp":"2026-10-22T16:53:32.160Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/subscriptions/businesses/:businessId/subscription, GET} route"}
{"timestamp":"2026-10-22T16:53:32.160Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/subscriptions/businesses/:businessId/subscription, PUT} route"}
{"timestamp":"2026-10-22T16:53:32.160Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/subscriptions/businesses/:businessId/subscription, DELETE} route"}
{"timestamp":"2026-10-22T16:53:32.160Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/subscriptions/businesses/:businessId/subscription/limits, GET} route"}
{"timestamp":"2026-10-22T16:53:32.160Z","level":"log","context":"RoutesResolver","message":"HealthController {/health}:"}
{"timestamp":"2026-10-22T16:53:32.160Z","level":"log","context":"RouterExplorer","message":"Mapped {/health, GET} route"}
{"timestamp":"2026-10-22T16:53:32.160Z","level":"log","context":"RouterExplorer","message":"Mapped {/health/test-logs, GET} route"}
{"timestamp":"2026-10-22T16:53:32.160Z","level":"log","context":"RoutesResolver","message":"AzureAdController {/azure-ad}:"}
{"timestamp":"2026-10-22T16:53:32.161Z","level":"log","context":"RouterExplorer","message":"Mapped {/azure-ad/config, POST} route"}
{"timestamp":"2026-10-22T16:53:32.161Z","level":"log","context":"RouterExplorer","message":"Mapped {/azure-ad/config, GET} route"}
{"timestamp":"2026-10-22T16:53:32.161Z","level":"log","context":"RouterExplorer","message":"Mapped {/azure-ad/test-connection, POST} route"}
{"timestamp":"2026-10-22T16:53:32.161Z","level":"log","context":"RouterExplorer","message":"Mapped {/azure-ad/sync, POST} route"}
{"timestamp":"2026-10-22T16:53:32.161Z","level":"log","context":"RoutesResolver","message":"ThreatsController {/threats}:"}
{"timestamp":"2026-10-22T16:53:32.161Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats, POST} route"}
{"timestamp":"2026-10-22T16:53:32.161Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats, GET} route"}
{"timestamp":"2026-10-22T16:53:32.162Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/chart-data, GET} route"}
{"timestamp":"2026-10-22T16:53:32.162Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/claude-search, POST} route"}
{"timestamp":"2026-10-22T16:53:32.162Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/claude-latest, POST} route"}
{"timestamp":"2026-10-22T16:53:32.162Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/claude-trending, POST} route"}
{"timestamp":"2026-10-22T16:53:32.162Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/claude-categories, POST} route"}
{"timestamp":"2026-10-22T16:53:32.162Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/claude-manual-search, POST} route"}
{"timestamp":"2026-10-22T16:53:32.162Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/claude-quick-search, POST} route"}
{"timestamp":"2026-10-22T16:53:32.163Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/scheduler-status, GET} route"}
{"timestamp":"2026-10-22T16:53:32.163Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/health-check, GET} route"}
{"timestamp":"2026-10-22T16:53:32.163Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/pause-scheduler, POST} route"}
{"timestamp":"2026-10-22T16:53:32.163Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/:id, GET} route"}
{"timestamp":"2026-10-22T16:53:32.163Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/:id, PATCH} route"}
{"timestamp":"2026-10-22T16:53:32.163Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/:id, DELETE} route"}
{"timestamp":"2026-10-22T16:53:32.163Z","level":"log","context":"RoutesResolver","message":"DomainController {/domains}:"}
{"timestamp":"2026-10-22T16:53:32.164Z","level":"log","context":"RouterExplorer","message":"Mapped {/domains, GET} route"}
{"timestamp":"2026-10-22T16:53:32.164Z","level":"log","context":"RouterExplorer","message":"Mapped {/domains/:id, GET} route"}
{"timestamp":"2026-10-22T16:53:32.164Z","level":"log","context":"RouterExplorer","message":"Mapped {/domains, POST} route"}
{"timestamp":"2026-10-22T16:53:32.164Z","level":"log","context":"RouterExplorer","message":"Mapped {/domains/:id, PUT} route"}
{"timestamp":"2026-10-22T16:53:32.164Z","level":"log","context":"RouterExplorer","message":"Mapped {/domains/:id, DELETE} route"}
{"timestamp":"2026-10-22T16:53:32.164Z","level":"log","context":"RouterExplorer","message":"Mapped {/domains/seed, POST} route"}
{"timestamp":"2026-10-22T16:53:32.164Z","level":"log","context":"RoutesResolver","message":"MspSubscriptionController {/msp-subscription}:"}
{"timestamp":"2026-10-22T16:53:32.165Z","level":"log","context":"RouterExplorer","message":"Mapped {/msp-subscription/current, GET} route"}
{"timestamp":"2026-10-22T16:53:32.165Z","level":"log","context":"RouterExplorer","message":"Mapped {/msp-subscription/invoices, GET} route"}
{"timestamp":"2026-10-22T16:53:32.165Z","level":"log","context":"RouterExplorer","message":"Mapped {/msp-subscription/invoice/:invoiceId/pdf, GET} route"}
{"timestamp":"2026-10-22T16:53:32.165Z","level":"log","context":"RoutesResolver","message":"MspSubscriptionController {/api/msp-subscription}:"}
{"timestamp":"2026-10-22T16:53:32.165Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/msp-subscription/current, GET} route"}
{"timestamp":"2026-10-22T16:53:32.165Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/msp-subscription/invoices, GET} route"}
{"timestamp":"2026-10-22T16:53:32.165Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/msp-subscription/invoice/:invoiceId/pdf, GET} route"}
{"timestamp":"2026-10-22T16:53:32.229Z","level":"log","context":"NestApplication","message":"Nest application successfully started"}
{"timestamp":"2026-10-22T16:53:32.245Z","level":"log","context":"Bootstrap","message":"Users API successfully started on port 3842"}
{"timestamp":"2026-10-22T16:53:32.246Z","level":"log","context":"SeedService","message":"🌱 Starting database seeding..."}
{"timestamp":"2026-10-22T16:53:32.251Z","level":"log","context":"SeedService","message":"Admin account already exists, skipping seed"}
{"timestamp":"2026-10-22T16:53:32.254Z","level":"log","context":"SeedService","message":"Reseller account already exists, skipping seed"}
{"timestamp":"2026-10-22T16:53:32.255Z","level":"log","context":"SeedService","message":"MSP account already exists, skipping seed"}
{"timestamp":"2026-10-22T16:53:32.255Z","level":"log","context":"SeedService","message":"✅ Database seeding completed successfully"}
{"timestamp":"2026-10-22T20:02:07.404Z","level":"warn","context":"LegacyRouteConverter","message":"Unsupported route path: \"/lp/*\". In previous versions, the symbols ?, *, and + were used to denote optional or repeating path parameters. The latest version of \"path-to-regexp\" now requires the use of named parameters. For example, instead of using a route like /users/* to capture all routes starting with \"/users\", you should use /users/*path. For more details, refer to the migration guide. Attempting to auto-convert..."}
{"timestamp":"2026-10-22T20:02:07.446Z","level":"log","context":"Bootstrap","message":"Starting Users API on port 3842..."}
{"timestamp":"2026-10-22T20:02:07.449Z","level":"log","context":"RoutesResolver","message":"UsersApiController {/}:"}
{"timestamp":"2026-10-22T20:02:07.452Z","level":"log","context":"RouterExplorer","message":"Mapped {/, GET} route"}
{"timestamp":"2026-10-22T20:02:07.452Z","level":"log","context":"RoutesResolver","message":"AuthController {/auth}:"}
{"timestamp":"2026-10-22T20:02:07.453Z","level":"log","context":"RouterExplorer","message":"Mapped {/auth/login, POST} route"}
{"timestamp":"2026-10-22T20:02:07.453Z","level":"log","context":"RouterExplorer","message":"Mapped {/auth/admin/login, POST} route"}
{"timestamp":"2026-10-22T20:02:07.454Z","level":"log","context":"RouterExplorer","message":"Mapped {/auth/send-otp, POST} route"}
{"timestamp":"2026-10-22T20:02:07.454Z","level":"log","context":"RouterExplorer","message":"Mapped {/auth/verify-otp, POST} route"}
{"timestamp":"2026-10-22T20:02:07.454Z","level":"log","context":"RouterExplorer","message":"Mapped {/auth/signup, POST} route"}
{"timestamp":"2026-10-22T20:02:07.455Z","level":"log","context":"RouterExplorer","message":"Mapped {/auth/subscription-status, GET} route"}
{"timestamp":"2026-10-22T20:02:07.455Z","level":"log","context":"RoutesResolver","message":"AdminMspController {/admin/msp}:"}
{"timestamp":"2026-10-22T20:02:07.455Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/msp, GET} route"}
{"timestamp":"2026-10-22T20:02:07.456Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/msp/:id, GET} route"}
{"timestamp":"2026-10-22T20:02:07.457Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/msp, POST} route"}
{"timestamp":"2026-10-22T20:02:07.457Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/msp/:id, PUT} route"}
{"timestamp":"2026-10-22T20:02:07.457Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/msp/:id, DELETE} route"}
{"timestamp":"2026-10-22T20:02:07.457Z","level":"log","context":"RoutesResolver","message":"AdminLicenseController {/admin/licenses}:"}
{"timestamp":"2026-10-22T20:02:07.458Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/licenses/summary, GET} route"}
{"timestamp":"2026-10-22T20:02:07.458Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/licenses/msp/:mspId, GET} route"}
{"timestamp":"2026-10-22T20:02:07.458Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/licenses/msp/:mspId, PUT} route"}
{"timestamp":"2026-10-22T20:02:07.458Z","level":"log","context":"RoutesResolver","message":"AdminImpersonationController {/admin/impersonation}:"}
{"timestamp":"2026-10-22T20:02:07.458Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/impersonation/msp-users, GET} route"}
{"timestamp":"2026-10-22T20:02:07.459Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/impersonation/impersonate, POST} route"}
{"timestamp":"2026-10-22T20:02:07.459Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/impersonation/stop, POST} route"}
{"timestamp":"2026-10-22T20:02:07.459Z","level":"log","context":"RoutesResolver","message":"AdminAiUsageController {/admin/ai-usage}:"}
{"timestamp":"2026-10-22T20:02:07.459Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-usage, GET} route"}
{"timestamp":"2026-10-22T20:02:07.459Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-usage/business/:businessId, GET} route"}
{"timestamp":"2026-10-22T20:02:07.460Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-usage/report/monthly, GET} route"}
{"timestamp":"2026-10-22T20:02:07.460Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-usage/pricing, GET} route"}
{"timestamp":"2026-10-22T20:02:07.460Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-usage/pricing, POST} route"}
{"timestamp":"2026-10-22T20:02:07.460Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-usage/credit/:businessId, PUT} route"}
{"timestamp":"2026-10-22T20:02:07.460Z","level":"log","context":"RoutesResolver","message":"AdminAiUsageController {/api/admin/ai-usage}:"}
{"timestamp":"2026-10-22T20:02:07.460Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-usage, GET} route"}
{"timestamp":"2026-10-22T20:02:07.460Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-usage/business/:businessId, GET} route"}
{"timestamp":"2026-10-22T20:02:07.461Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-usage/report/monthly, GET} route"}
{"timestamp":"2026-10-22T20:02:07.461Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-usage/pricing, GET} route"}
{"timestamp":"2026-10-22T20:02:07.461Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-usage/pricing, POST} route"}
{"timestamp":"2026-10-22T20:02:07.461Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-usage/credit/:businessId, PUT} route"}
{"timestamp":"2026-10-22T20:02:07.461Z","level":"log","context":"RoutesResolver","message":"AdminAiModelController {/admin/ai-models}:"}
{"timestamp":"2026-10-22T20:02:07.461Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models, POST} route"}
{"timestamp":"2026-10-22T20:02:07.462Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models, GET} route"}
{"timestamp":"2026-10-22T20:02:07.462Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/default, GET} route"}
{"timestamp":"2026-10-22T20:02:07.462Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/:id, GET} route"}
{"timestamp":"2026-10-22T20:02:07.462Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/:id, PUT} route"}
{"timestamp":"2026-10-22T20:02:07.462Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/:id, DELETE} route"}
{"timestamp":"2026-10-22T20:02:07.462Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/:id/set-default, POST} route"}
{"timestamp":"2026-10-22T20:02:07.463Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/assign-to-business, POST} route"}
{"timestamp":"2026-10-22T20:02:07.463Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/business/:businessId, GET} route"}
{"timestamp":"2026-10-22T20:02:07.463Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/:id/businesses, GET} route"}
{"timestamp":"2026-10-22T20:02:07.463Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/initialize-defaults, POST} route"}
{"timestamp":"2026-10-22T20:02:07.463Z","level":"log","context":"RoutesResolver","message":"AdminAiModelController {/api/admin/ai-models}:"}
{"timestamp":"2026-10-22T20:02:07.463Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models, POST} route"}
{"timestamp":"2026-10-22T20:02:07.464Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models, GET} route"}
{"timestamp":"2026-10-22T20:02:07.464Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/default, GET} route"}
{"timestamp":"2026-10-22T20:02:07.464Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/:id, GET} route"}
{"timestamp":"2026-10-22T20:02:07.464Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/:id, PUT} route"}
{"timestamp":"2026-10-22T20:02:07.464Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/:id, DELETE} route"}
{"timestamp":"2026-10-22T20:02:07.464Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/:id/set-default, POST} route"}
{"timestamp":"2026-10-22T20:02:07.465Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/assign-to-business, POST} route"}
{"timestamp":"2026-10-22T20:02:07.465Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/business/:businessId, GET} route"}
{"timestamp":"2026-10-22T20:02:07.465Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/:id/businesses, GET} route"}
{"timestamp":"2026-10-22T20:02:07.465Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/initialize-defaults, POST} route"}
{"timestamp":"2026-10-22T20:02:07.465Z","level":"log","context":"RoutesResolver","message":"AdminBusinessController {/admin/businesses}:"}
{"timestamp":"2026-10-22T20:02:07.465Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/businesses, GET} route"}
{"timestamp":"2026-10-22T20:02:07.465Z","level":"log","context":"RoutesResolver","message":"ResellerManagementController {/admin/resellers}:"}
{"timestamp":"2026-10-22T20:02:07.466Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/resellers, GET} route"}
{"timestamp":"2026-10-22T20:02:07.466Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/resellers/create-default, POST} route"}
{"timestamp":"2026-10-22T20:02:07.466Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/resellers, POST} route"}
{"timestamp":"2026-10-22T20:02:07.466Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/resellers/:id/toggle-status, PUT} route"}
{"timestamp":"2026-10-22T20:02:07.466Z","level":"log","context":"RoutesResolver","message":"SubscriptionController {/subscription}:"}
{"timestamp":"2026-10-22T20:02:07.466Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/plans, GET} route"}
{"timestamp":"2026-10-22T20:02:07.466Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/calculate-price, POST} route"}
{"timestamp":"2026-10-22T20:02:07.467Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/current, GET} route"}
{"timestamp":"2026-10-22T20:02:07.467Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/create, POST} route"}
{"timestamp":"2026-10-22T20:02:07.467Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/:id, PUT} route"}
{"timestamp":"2026-10-22T20:02:07.467Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/:id/cancel, DELETE} route"}
{"timestamp":"2026-10-22T20:02:07.467Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/sync/:stripeSubscriptionId, POST} route"}
{"timestamp":"2026-10-22T20:02:07.467Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/payments, GET} route"}
{"timestamp":"2026-10-22T20:02:07.467Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/payments/stats, GET} route"}
{"timestamp":"2026-10-22T20:02:07.468Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/payment/:id, GET} route"}
{"timestamp":"2026-10-22T20:02:07.468Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/payment-methods/attach, POST} route"}
{"timestamp":"2026-10-22T20:02:07.468Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/payment-methods/:paymentMethodId, DELETE} route"}
{"timestamp":"2026-10-22T20:02:07.468Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/payment-methods, GET} route"}
{"timestamp":"2026-10-22T20:02:07.468Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/setup-intent, POST} route"}
{"timestamp":"2026-10-22T20:02:07.468Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/update-employee-count, POST} route"}
{"timestamp":"2026-10-22T20:02:07.468Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/retry-payment/:subscriptionId, POST} route"}
{"timestamp":"2026-10-22T20:02:07.469Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/invoice/:invoiceId/pdf, GET} route"}
{"timestamp":"2026-10-22T20:02:07.469Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/preview-upgrade, POST} route"}
{"timestamp":"2026-10-22T20:02:07.469Z","level":"log","context":"RoutesResolver","message":"SubscriptionController {/api/subscription}:"}
{"timestamp":"2026-10-22T20:02:07.469Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/plans, GET} route"}
{"timestamp":"2026-10-22T20:02:07.469Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/calculate-price, POST} route"}
{"timestamp":"2026-10-22T20:02:07.469Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/current, GET} route"}
{"timestamp":"2026-10-22T20:02:07.469Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/create, POST} route"}
{"timestamp":"2026-10-22T20:02:07.470Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/:id, PUT} route"}
{"timestamp":"2026-10-22T20:02:07.470Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/:id/cancel, DELETE} route"}
{"timestamp":"2026-10-22T20:02:07.470Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/sync/:stripeSubscriptionId, POST} route"}
{"timestamp":"2026-10-22T20:02:07.470Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/payments, GET} route"}
{"timestamp":"2026-10-22T20:02:07.470Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/payments/stats, GET} route"}
{"timestamp":"2026-10-22T20:02:07.470Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/payment/:id, GET} route"}
{"timestamp":"2026-10-22T20:02:07.470Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/payment-methods/attach, POST} route"}
{"timestamp":"2026-10-22T20:02:07.470Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/payment-methods/:paymentMethodId, DELETE} route"}
{"timestamp":"2026-10-22T20:02:07.471Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/payment-methods, GET} route"}
{"timestamp":"2026-10-22T20:02:07.471Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/setup-intent, POST} route"}
{"timestamp":"2026-10-22T20:02:07.471Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/update-employee-count, POST} route"}
{"timestamp":"2026-10-22T20:02:07.471Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/retry-payment/:subscriptionId, POST} route"}
{"timestamp":"2026-10-22T20:02:07.471Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/invoice/:invoiceId/pdf, GET} route"}
{"timestamp":"2026-10-22T20:02:07.471Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/preview-upgrade, POST} route"}
{"timestamp":"2026-10-22T20:02:07.471Z","level":"log","context":"RoutesResolver","message":"StripeWebhookController {/stripe/webhook}:"}
{"timestamp":"2026-10-22T20:02:07.471Z","level":"log","context":"RouterExplorer","message":"Mapped {/stripe/webhook/test, GET} route"}
{"timestamp":"2026-10-22T20:02:07.472Z","level":"log","context":"RouterExplorer","message":"Mapped {/stripe/webhook, POST} route"}
{"timestamp":"2026-10-22T20:02:07.472Z","level":"log","context":"RoutesResolver","message":"EmailController {/email-templates}:"}
{"timestamp":"2026-10-22T20:02:07.472Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates/test, POST} route"}
{"timestamp":"2026-10-22T20:02:07.472Z","level":"log","context":"RoutesResolver","message":"EmployeeController {/employees}:"}
{"timestamp":"2026-10-22T20:02:07.472Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees, POST} route"}
{"timestamp":"2026-10-22T20:02:07.472Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees, GET} route"}
{"timestamp":"2026-10-22T20:02:07.472Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees/export, GET} route"}
{"timestamp":"2026-10-22T20:02:07.473Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees/risk-stats, GET} route"}
{"timestamp":"2026-10-22T20:02:07.473Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees/:id, GET} route"}
{"timestamp":"2026-10-22T20:02:07.473Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees/:id, PUT} route"}
{"timestamp":"2026-10-22T20:02:07.473Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees/:id, DELETE} route"}
{"timestamp":"2026-10-22T20:02:07.473Z","level":"log","context":"RoutesResolver","message":"GroupController {/groups}:"}
{"timestamp":"2026-10-22T20:02:07.473Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups, POST} route"}
{"timestamp":"2026-10-22T20:02:07.473Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups, GET} route"}
{"timestamp":"2026-10-22T20:02:07.473Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups/standard, GET} route"}
{"timestamp":"2026-10-22T20:02:07.474Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups/:id, GET} route"}
{"timestamp":"2026-10-22T20:02:07.474Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups/:id, PUT} route"}
{"timestamp":"2026-10-22T20:02:07.474Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups/:id, DELETE} route"}
{"timestamp":"2026-10-22T20:02:07.474Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups/:id/info, GET} route"}
{"timestamp":"2026-10-22T20:02:07.474Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups/:id/with-employees, GET} route"}
{"timestamp":"2026-10-22T20:02:07.474Z","level":"log","context":"RoutesResolver","message":"SenderProfileController {/sender-profiles}:"}
{"timestamp":"2026-10-22T20:02:07.474Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles, GET} route"}
{"timestamp":"2026-10-22T20:02:07.475Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles/:id, GET} route"}
{"timestamp":"2026-10-22T20:02:07.475Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles, POST} route"}
{"timestamp":"2026-10-22T20:02:07.475Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles/:id, PUT} route"}
{"timestamp":"2026-10-22T20:02:07.475Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles/:id, DELETE} route"}
{"timestamp":"2026-10-22T20:02:07.475Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles/:id/verify-domain, POST} route"}
{"timestamp":"2026-10-22T20:02:07.475Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles/domain-verification, GET} route"}
{"timestamp":"2026-10-22T20:02:07.475Z","level":"log","context":"RoutesResolver","message":"EmailTemplateController {/email-templates}:"}
{"timestamp":"2026-10-22T20:02:07.476Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates, GET} route"}
{"timestamp":"2026-10-22T20:02:07.476Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates/:id, GET} route"}
{"timestamp":"2026-10-22T20:02:07.476Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates, POST} route"}
{"timestamp":"2026-10-22T20:02:07.476Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates/:id, PUT} route"}
{"timestamp":"2026-10-22T20:02:07.476Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates/:id, DELETE} route"}
{"timestamp":"2026-10-22T20:02:07.476Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates/:id/duplicate, POST} route"}
{"timestamp":"2026-10-22T20:02:07.476Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates/:id/preview, GET} route"}
{"timestamp":"2026-10-22T20:02:07.476Z","level":"log","context":"RoutesResolver","message":"ScenarioController {/scenarios}:"}
{"timestamp":"2026-10-22T20:02:07.477Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios, POST} route"}
{"timestamp":"2026-10-22T20:02:07.477Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios/generate-content, POST} route"}
{"timestamp":"2026-10-22T20:02:07.477Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios, GET} route"}
{"timestamp":"2026-10-22T20:02:07.477Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios/:id, GET} route"}
{"timestamp":"2026-10-22T20:02:07.477Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios/:id, PUT} route"}
{"timestamp":"2026-10-22T20:02:07.477Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios/:id, DELETE} route"}
{"timestamp":"2026-10-22T20:02:07.477Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios/generate-from-json, POST} route"}
{"timestamp":"2026-10-22T20:02:07.478Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios/:id/save-as-custom-scenario, POST} route"}
{"timestamp":"2026-10-22T20:02:07.478Z","level":"log","context":"RoutesResolver","message":"CampaignController {/campaigns}:"}
{"timestamp":"2026-10-22T20:02:07.478Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns, POST} route"}
{"timestamp":"2026-10-22T20:02:07.478Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns, GET} route"}
{"timestamp":"2026-10-22T20:02:07.478Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id, GET} route"}
{"timestamp":"2026-10-22T20:02:07.478Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id/details, GET} route"}
{"timestamp":"2026-10-22T20:02:07.478Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id/employees, GET} route"}
{"timestamp":"2026-10-22T20:02:07.479Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id, PATCH} route"}
{"timestamp":"2026-10-22T20:02:07.479Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id/start, POST} route"}
{"timestamp":"2026-10-22T20:02:07.479Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id/stop, POST} route"}
{"timestamp":"2026-10-22T20:02:07.479Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id/duplicate, POST} route"}
{"timestamp":"2026-10-22T20:02:07.479Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id, DELETE} route"}
{"timestamp":"2026-10-22T20:02:07.479Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/auto-generate-program, POST} route"}
{"timestamp":"2026-10-22T20:02:07.480Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/generate-from-threat-intelligence, POST} route"}
{"timestamp":"2026-10-22T20:02:07.480Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id/risk-score, GET} route"}
{"timestamp":"2026-10-22T20:02:07.480Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/recalculate-risk-scores, POST} route"}
{"timestamp":"2026-10-22T20:02:07.480Z","level":"log","context":"RoutesResolver","message":"CampaignController {/api/campaigns}:"}
{"timestamp":"2026-10-22T20:02:07.480Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns, POST} route"}
{"timestamp":"2026-10-22T20:02:07.480Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns, GET} route"}
{"timestamp":"2026-10-22T20:02:07.480Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id, GET} route"}
{"timestamp":"2026-10-22T20:02:07.480Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id/details, GET} route"}
{"timestamp":"2026-10-22T20:02:07.481Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id/employees, GET} route"}
{"timestamp":"2026-10-22T20:02:07.481Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id, PATCH} route"}
{"timestamp":"2026-10-22T20:02:07.481Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id/start, POST} route"}
{"timestamp":"2026-10-22T20:02:07.481Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id/stop, POST} route"}
{"timestamp":"2026-10-22T20:02:07.481Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id/duplicate, POST} route"}
{"timestamp":"2026-10-22T20:02:07.481Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id, DELETE} route"}
{"timestamp":"2026-10-22T20:02:07.481Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/auto-generate-program, POST} route"}
{"timestamp":"2026-10-22T20:02:07.482Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/generate-from-threat-intelligence, POST} route"}
{"timestamp":"2026-10-22T20:02:07.482Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id/risk-score, GET} route"}
{"timestamp":"2026-10-22T20:02:07.482Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/recalculate-risk-scores, POST} route"}
{"timestamp":"2026-10-22T20:02:07.482Z","level":"log","context":"RoutesResolver","message":"NotificationsController {/notifications}:"}
{"timestamp":"2026-10-22T20:02:07.482Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications, POST} route"}
{"timestamp":"2026-10-22T20:02:07.482Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications, GET} route"}
{"timestamp":"2026-10-22T20:02:07.482Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/unread, GET} route"}
{"timestamp":"2026-10-22T20:02:07.483Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/unread-count, GET} route"}
{"timestamp":"2026-10-22T20:02:07.483Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/:id, GET} route"}
{"timestamp":"2026-10-22T20:02:07.483Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/:id, PATCH} route"}
{"timestamp":"2026-10-22T20:02:07.483Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/:id/read, PATCH} route"}
{"timestamp":"2026-10-22T20:02:07.483Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/mark-all-read, PATCH} route"}
{"timestamp":"2026-10-22T20:02:07.484Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/:id, DELETE} route"}
{"timestamp":"2026-10-22T20:02:07.484Z","level":"log","context":"RoutesResolver","message":"LandingPageController {/lp}:"}
{"timestamp":"2026-10-22T20:02:07.484Z","level":"log","context":"RouterExplorer","message":"Mapped {/lp/image, GET} route"}
{"timestamp":"2026-10-22T20:02:07.484Z","level":"log","context":"RouterExplorer","message":"Mapped {/lp/learning, GET} route"}
{"timestamp":"2026-10-22T20:02:07.484Z","level":"log","context":"RouterExplorer","message":"Mapped {/lp/submit, POST} route"}
{"timestamp":"2026-10-22T20:02:07.484Z","level":"log","context":"RouterExplorer","message":"Mapped {/lp/test, GET} route"}
{"timestamp":"2026-10-22T20:02:07.484Z","level":"warn","context":"LegacyRouteConverter","message":"Unsupported route path: \"/lp/*\". In previous versions, the symbols ?, *, and + were used to denote optional or repeating path parameters. The latest version of \"path-to-regexp\" now requires the use of named parameters. For example, instead of using a route like /users/* to capture all routes starting with \"/users\", you should use /users/*path. For more details, refer to the migration guide. Attempting to auto-convert..."}
{"timestamp":"2026-10-22T20:02:07.485Z","level":"log","context":"RouterExplorer","message":"Mapped {/lp/*, ALL} route"}
{"timestamp":"2026-10-22T20:02:07.485Z","level":"log","context":"RoutesResolver","message":"SupportController {/support}:"}
{"timestamp":"2026-10-22T20:02:07.485Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets, POST} route"}
{"timestamp":"2026-10-22T20:02:07.485Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets, GET} route"}
{"timestamp":"2026-10-22T20:02:07.486Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets/:id, GET} route"}
{"timestamp":"2026-10-22T20:02:07.486Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets/:id, PATCH} route"}
{"timestamp":"2026-10-22T20:02:07.486Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets/:id, DELETE} route"}
{"timestamp":"2026-10-22T20:02:07.486Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets/:id/messages, POST} route"}
{"timestamp":"2026-10-22T20:02:07.486Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets/:id/close, POST} route"}
{"timestamp":"2026-10-22T20:02:07.486Z","level":"log","context":"RoutesResolver","message":"BusninessMetricsController {/business-metrics}:"}
{"timestamp":"2026-10-22T20:02:07.486Z","level":"log","context":"RouterExplorer","message":"Mapped {/business-metrics, GET} route"}
{"timestamp":"2026-10-22T20:02:07.486Z","level":"log","context":"RoutesResolver","message":"UsersController {/users}:"}
{"timestamp":"2026-10-22T20:02:07.487Z","level":"log","context":"RouterExplorer","message":"Mapped {/users/:id, PUT} route"}
{"timestamp":"2026-10-22T20:02:07.487Z","level":"log","context":"RouterExplorer","message":"Mapped {/users/settings, GET} route"}
{"timestamp":"2026-10-22T20:02:07.487Z","level":"log","context":"RouterExplorer","message":"Mapped {/users/settings/general, PUT} route"}
{"timestamp":"2026-10-22T20:02:07.487Z","level":"log","context":"RouterExplorer","message":"Mapped {/users/company/settings, PUT} route"}
{"timestamp":"2026-10-22T20:02:07.487Z","level":"log","context":"RouterExplorer","message":"Mapped {/users/change-password, POST} route"}
{"timestamp":"2026-10-22T20:02:07.487Z","level":"log","context":"RouterExplorer","message":"Mapped {/users/localization/settings, PUT} route"}
{"timestamp":"2026-10-22T20:02:07.487Z","level":"log","context":"RoutesResolver","message":"PartnerController {/partner}:"}
{"timestamp":"2026-10-22T20:02:07.488Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses, POST} route"}
{"timestamp":"2026-10-22T20:02:07.488Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses, GET} route"}
{"timestamp":"2026-10-22T20:02:07.488Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses/:id, GET} route"}
{"timestamp":"2026-10-22T20:02:07.488Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses/:id, PUT} route"}
{"timestamp":"2026-10-22T20:02:07.488Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses/:id, DELETE} route"}
{"timestamp":"2026-10-22T20:02:07.488Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses/:id/impersonate, POST} route"}
{"timestamp":"2026-10-22T20:02:07.489Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses/stop-impersonation, POST} route"}
{"timestamp":"2026-10-22T20:02:07.489Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/license-usage, GET} route"}
{"timestamp":"2026-10-22T20:02:07.489Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/invoices, POST} route"}
{"timestamp":"2026-10-22T20:02:07.489Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/invoices, GET} route"}
{"timestamp":"2026-10-22T20:02:07.489Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/invoices/:id, GET} route"}
{"timestamp":"2026-10-22T20:02:07.489Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/invoices/:id, PUT} route"}
{"timestamp":"2026-10-22T20:02:07.489Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/invoices/:id, DELETE} route"}
{"timestamp":"2026-10-22T20:02:07.490Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/invoices/:id/mark-paid, PUT} route"}
{"timestamp":"2026-10-22T20:02:07.490Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/onboarding/generate-token, POST} route"}
{"timestamp":"2026-10-22T20:02:07.490Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/dashboard, GET} route"}
{"timestamp":"2026-10-22T20:02:07.490Z","level":"log","context":"RoutesResolver","message":"MspSubscriptionController {/partner/msp-subscriptions}:"}
{"timestamp":"2026-10-22T20:02:07.490Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/plans, POST} route"}
{"timestamp":"2026-10-22T20:02:07.490Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/plans, GET} route"}
{"timestamp":"2026-10-22T20:02:07.490Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/plans/:planId, GET} route"}
{"timestamp":"2026-10-22T20:02:07.491Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/plans/:planId, PUT} route"}
{"timestamp":"2026-10-22T20:02:07.491Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/plans/:planId, DELETE} route"}
{"timestamp":"2026-10-22T20:02:07.491Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/businesses/:businessId/subscription, POST} route"}
{"timestamp":"2026-10-22T20:02:07.491Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions, GET} route"}
{"timestamp":"2026-10-22T20:02:07.491Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/businesses/:businessId/subscription, GET} route"}
{"timestamp":"2026-10-22T20:02:07.491Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/businesses/:businessId/subscription, PUT} route"}
{"timestamp":"2026-10-22T20:02:07.491Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/businesses/:businessId/subscription, DELETE} route"}
{"timestamp":"2026-10-22T20:02:07.492Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/businesses/:businessId/subscription/limits, GET} route"}
{"timestamp":"2026-10-22T20:02:07.492Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/businesses/:businessId/subscription/change-plan, PUT} route"}
{"timestamp":"2026-10-22T20:02:07.492Z","level":"log","context":"RoutesResolver","message":"OnboardingController {/onboarding}:"}
{"timestamp":"2026-10-22T20:02:07.492Z","level":"log","context":"RouterExplorer","message":"Mapped {/onboarding/validate/:token, GET} route"}
{"timestamp":"2026-10-22T20:02:07.492Z","level":"log","context":"RouterExplorer","message":"Mapped {/onboarding/complete/:token, POST} route"}
{"timestamp":"2026-10-22T20:02:07.492Z","level":"log","context":"RoutesResolver","message":"ResellerController {/reseller}:"}
{"timestamp":"2026-10-22T20:02:07.492Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/businesses, POST} route"}
{"timestamp":"2026-10-22T20:02:07.493Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/businesses, GET} route"}
{"timestamp":"2026-10-22T20:02:07.493Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/businesses/:id, GET} route"}
{"timestamp":"2026-10-22T20:02:07.493Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/businesses/:id, PUT} route"}
{"timestamp":"2026-10-22T20:02:07.493Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/businesses/:id, DELETE} route"}
{"timestamp":"2026-10-22T20:02:07.493Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/license-usage, GET} route"}
{"timestamp":"2026-10-22T20:02:07.493Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/invoices, POST} route"}
{"timestamp":"2026-10-22T20:02:07.493Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/invoices, GET} route"}
{"timestamp":"2026-10-22T20:02:07.494Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/invoices/:id, GET} route"}
{"timestamp":"2026-10-22T20:02:07.494Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/invoices/:id, PUT} route"}
{"timestamp":"2026-10-22T20:02:07.494Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/invoices/:id, DELETE} route"}
{"timestamp":"2026-10-22T20:02:07.494Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/invoices/:id/mark-paid, PUT} route"}
{"timestamp":"2026-10-22T20:02:07.494Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/onboarding/generate-token, POST} route"}
{"timestamp":"2026-10-22T20:02:07.494Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/dashboard, GET} route"}
{"timestamp":"2026-10-22T20:02:07.494Z","level":"log","context":"RoutesResolver","message":"ResellerSubscriptionController {/reseller}:"}
{"timestamp":"2026-10-22T20:02:07.494Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/plans, POST} route"}
{"timestamp":"2026-10-22T20:02:07.495Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/plans, GET} route"}
{"timestamp":"2026-10-22T20:02:07.495Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/plans/:planId, GET} route"}
{"timestamp":"2026-10-22T20:02:07.495Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/plans/:planId, PUT} route"}
{"timestamp":"2026-10-22T20:02:07.495Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/plans/:planId, DELETE} route"}
{"timestamp":"2026-10-22T20:02:07.495Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/subscriptions/businesses/:businessId/subscription, POST} route"}
{"timestamp":"2026-10-22T20:02:07.495Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/subscriptions, GET} route"}
{"timestamp":"2026-10-22T20:02:07.496Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/subscriptions/businesses/:businessId/subscription, GET} route"}
{"timestamp":"2026-10-22T20:02:07.496Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/subscriptions/businesses/:businessId/subscription, PUT} route"}
{"timestamp":"2026-10-22T20:02:07.496Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/subscriptions/businesses/:businessId/subscription, DELETE} route"}
{"timestamp":"2026-10-22T20:02:07.496Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/subscriptions/businesses/:businessId/subscription/limits, GET} route"}
{"timestamp":"2026-10-22T20:02:07.496Z","level":"log","context":"RoutesResolver","message":"HealthController {/health}:"}
{"timestamp":"2026-10-22T20:02:07.496Z","level":"log","context":"RouterExplorer","message":"Mapped {/health, GET} route"}
{"timestamp":"2026-10-22T20:02:07.496Z","level":"log","context":"RouterExplorer","message":"Mapped {/health/test-logs, GET} route"}
{"timestamp":"2026-10-22T20:02:07.496Z","level":"log","context":"RoutesResolver","message":"AzureAdController {/azure-ad}:"}
{"timestamp":"2026-10-22T20:02:07.497Z","level":"log","context":"RouterExplorer","message":"Mapped {/azure-ad/config, POST} route"}
{"timestamp":"2026-10-22T20:02:07.497Z","level":"log","context":"RouterExplorer","message":"Mapped {/azure-ad/config, GET} route"}
{"timestamp":"2026-10-22T20:02:07.497Z","level":"log","context":"RouterExplorer","message":"Mapped {/azure-ad/test-connection, POST} route"}
{"timestamp":"2026-10-22T20:02:07.497Z","level":"log","context":"RouterExplorer","message":"Mapped {/azure-ad/sync, POST} route"}
{"timestamp":"2026-10-22T20:02:07.497Z","level":"log","context":"RoutesResolver","message":"ThreatsController {/threats}:"}
{"timestamp":"2026-10-22T20:02:07.497Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats, POST} route"}
{"timestamp":"2026-10-22T20:02:07.497Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats, GET} route"}
{"timestamp":"2026-10-22T20:02:07.497Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/chart-data, GET} route"}
{"timestamp":"2026-10-22T20:02:07.498Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/claude-search, POST} route"}
{"timestamp":"2026-10-22T20:02:07.498Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/claude-latest, POST} route"}
{"timestamp":"2026-10-22T20:02:07.498Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/claude-trending, POST} route"}
{"timestamp":"2026-10-22T20:02:07.498Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/claude-categories, POST} route"}
{"timestamp":"2026-10-22T20:02:07.498Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/claude-manual-search, POST} route"}
{"timestamp":"2026-10-22T20:02:07.498Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/claude-quick-search, POST} route"}
{"timestamp":"2026-10-22T20:02:07.498Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/scheduler-status, GET} route"}
{"timestamp":"2026-10-22T20:02:07.499Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/health-check, GET} route"}
{"timestamp":"2026-10-22T20:02:07.499Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/pause-scheduler, POST} route"}
{"timestamp":"2026-10-22T20:02:07.499Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/:id, GET} route"}
{"timestamp":"2026-10-22T20:02:07.499Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/:id, PATCH} route"}
{"timestamp":"2026-10-22T20:02:07.499Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/:id, DELETE} route"}
{"timestamp":"2026-10-22T20:02:07.499Z","level":"log","context":"RoutesResolver","message":"DomainController {/domains}:"}
{"timestamp":"2026-10-22T20:02:07.499Z","level":"log","context":"RouterExplorer","message":"Mapped {/domains, GET} route"}
{"timestamp":"2026-10-22T20:02:07.500Z","level":"log","context":"RouterExplorer","message":"Mapped {/domains/:id, GET} route"}
{"timestamp":"2026-10-22T20:02:07.500Z","level":"log","context":"RouterExplorer","message":"Mapped {/domains, POST} route"}
{"timestamp":"2026-10-22T20:02:07.500Z","level":"log","context":"RouterExplorer","message":"Mapped {/domains/:id, PUT} route"}
{"timestamp":"2026-10-22T20:02:07.500Z","level":"log","context":"RouterExplorer","message":"Mapped {/domains/:id, DELETE} route"}
{"timestamp":"2026-10-22T20:02:07.500Z","level":"log","context":"RouterExplorer","message":"Mapped {/domains/seed, POST} route"}
{"timestamp":"2026-10-22T20:02:07.500Z","level":"log","context":"RoutesResolver","message":"MspSubscriptionController {/msp-subscription}:"}
{"timestamp":"2026-10-22T20:02:07.500Z","level":"log","context":"RouterExplorer","message":"Mapped {/msp-subscription/current, GET} route"}
{"timestamp":"2026-10-22T20:02:07.501Z","level":"log","context":"RouterExplorer","message":"Mapped {/msp-subscription/invoices, GET} route"}
{"timestamp":"2026-10-22T20:02:07.501Z","level":"log","context":"RouterExplorer","message":"Mapped {/msp-subscription/invoice/:invoiceId/pdf, GET} route"}
{"timestamp":"2026-10-22T20:02:07.501Z","level":"log","context":"RoutesResolver","message":"MspSubscriptionController {/api/msp-subscription}:"}
{"timestamp":"2026-10-22T20:02:07.501Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/msp-subscription/current, GET} route"}
{"timestamp":"2026-10-22T20:02:07.501Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/msp-subscription/invoices, GET} route"}
{"timestamp":"2026-10-22T20:02:07.501Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/msp-subscription/invoice/:invoiceId/pdf, GET} route"}
{"timestamp":"2026-10-22T20:02:07.564Z","level":"log","context":"NestApplication","message":"Nest application successfully started"}
{"timestamp":"2026-10-22T20:02:07.582Z","level":"log","context":"Bootstrap","message":"Users API successfully started on port 3842"}
{"timestamp":"2026-10-22T20:02:07.582Z","level":"log","context":"SeedService","message":"🌱 Starting database seeding..."}
{"timestamp":"2026-10-22T20:02:07.584Z","level":"log","context":"SeedService","message":"Admin account already exists, skipping seed"}
{"timestamp":"2026-10-22T20:02:07.588Z","level":"log","context":"SeedService","message":"Reseller account already exists, skipping seed"}
{"timestamp":"2026-10-22T20:02:07.589Z","level":"log","context":"SeedService","message":"MSP account already exists, skipping seed"}
{"timestamp":"2026-10-22T20:02:07.589Z","level":"log","context":"SeedService","message":"✅ Database seeding completed successfully"}
{"timestamp":"2026-10-22T20:02:07.623Z","level":"log","context":"UsersApiController","message":"Hello endpoint accessed"}
{"timestamp":"2026-10-22T21:26:41.445Z","level":"log","context":"UsersApiController","message":"Hello endpoint accessed"}
{"timestamp":"2026-10-22T21:27:06.340Z","level":"log","context":"UsersApiController","message":"Hello endpoint accessed"}
{"timestamp":"2026-10-22T23:12:12.931Z","level":"warn","context":"LegacyRouteConverter","message":"Unsupported route path: \"/lp/*\". In previous versions, the symbols ?, *, and + were used to denote optional or repeating path parameters. The latest version of \"path-to-regexp\" now requires the use of named parameters. For example, instead of using a route like /users/* to capture all routes starting with \"/users\", you should use /users/*path. For more details, refer to the migration guide. Attempting to auto-convert..."}
{"timestamp":"2026-10-22T23:12:12.969Z","level":"log","context":"Bootstrap","message":"Starting Users API on port 3842..."}
{"timestamp":"2026-10-22T23:12:12.973Z","level":"log","context":"RoutesResolver","message":"UsersApiController {/}:"}
{"timestamp":"2026-10-22T23:12:12.976Z","level":"log","context":"RouterExplorer","message":"Mapped {/, GET} route"}
{"timestamp":"2026-10-22T23:12:12.977Z","level":"log","context":"RoutesResolver","message":"AuthController {/auth}:"}
{"timestamp":"2026-10-22T23:12:12.978Z","level":"log","context":"RouterExplorer","message":"Mapped {/auth/login, POST} route"}
{"timestamp":"2026-10-22T23:12:12.978Z","level":"log","context":"RouterExplorer","message":"Mapped {/auth/admin/login, POST} route"}
{"timestamp":"2026-10-22T23:12:12.979Z","level":"log","context":"RouterExplorer","message":"Mapped {/auth/send-otp, POST} route"}
{"timestamp":"2026-10-22T23:12:12.979Z","level":"log","context":"RouterExplorer","message":"Mapped {/auth/verify-otp, POST} route"}
{"timestamp":"2026-10-22T23:12:12.980Z","level":"log","context":"RouterExplorer","message":"Mapped {/auth/signup, POST} route"}
{"timestamp":"2026-10-22T23:12:12.980Z","level":"log","context":"RouterExplorer","message":"Mapped {/auth/subscription-status, GET} route"}
{"timestamp":"2026-10-22T23:12:12.980Z","level":"log","context":"RoutesResolver","message":"AdminMspController {/admin/msp}:"}
{"timestamp":"2026-10-22T23:12:12.981Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/msp, GET} route"}
{"timestamp":"2026-10-22T23:12:12.982Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/msp/:id, GET} route"}
{"timestamp":"2026-10-22T23:12:12.983Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/msp, POST} route"}
{"timestamp":"2026-10-22T23:12:12.983Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/msp/:id, PUT} route"}
{"timestamp":"2026-10-22T23:12:12.983Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/msp/:id, DELETE} route"}
{"timestamp":"2026-10-22T23:12:12.983Z","level":"log","context":"RoutesResolver","message":"AdminLicenseController {/admin/licenses}:"}
{"timestamp":"2026-10-22T23:12:12.984Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/licenses/summary, GET} route"}
{"timestamp":"2026-10-22T23:12:12.984Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/licenses/msp/:mspId, GET} route"}
{"timestamp":"2026-10-22T23:12:12.984Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/licenses/msp/:mspId, PUT} route"}
{"timestamp":"2026-10-22T23:12:12.984Z","level":"log","context":"RoutesResolver","message":"AdminImpersonationController {/admin/impersonation}:"}
{"timestamp":"2026-10-22T23:12:12.987Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/impersonation/msp-users, GET} route"}
{"timestamp":"2026-10-22T23:12:12.987Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/impersonation/impersonate, POST} route"}
{"timestamp":"2026-10-22T23:12:12.988Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/impersonation/stop, POST} route"}
{"timestamp":"2026-10-22T23:12:12.988Z","level":"log","context":"RoutesResolver","message":"AdminAiUsageController {/admin/ai-usage}:"}
{"timestamp":"2026-10-22T23:12:12.988Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-usage, GET} route"}
{"timestamp":"2026-10-22T23:12:12.988Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-usage/business/:businessId, GET} route"}
{"timestamp":"2026-10-22T23:12:12.988Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-usage/report/monthly, GET} route"}
{"timestamp":"2026-10-22T23:12:12.989Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-usage/pricing, GET} route"}
{"timestamp":"2026-10-22T23:12:12.989Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-usage/pricing, POST} route"}
{"timestamp":"2026-10-22T23:12:12.989Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-usage/credit/:businessId, PUT} route"}
{"timestamp":"2026-10-22T23:12:12.989Z","level":"log","context":"RoutesResolver","message":"AdminAiUsageController {/api/admin/ai-usage}:"}
{"timestamp":"2026-10-22T23:12:12.989Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-usage, GET} route"}
{"timestamp":"2026-10-22T23:12:12.990Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-usage/business/:businessId, GET} route"}
{"timestamp":"2026-10-22T23:12:12.990Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-usage/report/monthly, GET} route"}
{"timestamp":"2026-10-22T23:12:12.990Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-usage/pricing, GET} route"}
{"timestamp":"2026-10-22T23:12:12.990Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-usage/pricing, POST} route"}
{"timestamp":"2026-10-22T23:12:12.991Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-usage/credit/:businessId, PUT} route"}
{"timestamp":"2026-10-22T23:12:12.991Z","level":"log","context":"RoutesResolver","message":"AdminAiModelController {/admin/ai-models}:"}
{"timestamp":"2026-10-22T23:12:12.991Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models, POST} route"}
{"timestamp":"2026-10-22T23:12:12.991Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models, GET} route"}
{"timestamp":"2026-10-22T23:12:12.991Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/default, GET} route"}
{"timestamp":"2026-10-22T23:12:12.992Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/:id, GET} route"}
{"timestamp":"2026-10-22T23:12:12.992Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/:id, PUT} route"}
{"timestamp":"2026-10-22T23:12:12.992Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/:id, DELETE} route"}
{"timestamp":"2026-10-22T23:12:12.992Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/:id/set-default, POST} route"}
{"timestamp":"2026-10-22T23:12:12.992Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/assign-to-business, POST} route"}
{"timestamp":"2026-10-22T23:12:12.993Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/business/:businessId, GET} route"}
{"timestamp":"2026-10-22T23:12:12.993Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/:id/businesses, GET} route"}
{"timestamp":"2026-10-22T23:12:12.993Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/initialize-defaults, POST} route"}
{"timestamp":"2026-10-22T23:12:12.993Z","level":"log","context":"RoutesResolver","message":"AdminAiModelController {/api/admin/ai-models}:"}
{"timestamp":"2026-10-22T23:12:12.993Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models, POST} route"}
{"timestamp":"2026-10-22T23:12:12.994Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models, GET} route"}
{"timestamp":"2026-10-22T23:12:12.994Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/default, GET} route"}
{"timestamp":"2026-10-22T23:12:12.994Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/:id, GET} route"}
{"timestamp":"2026-10-22T23:12:12.994Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/:id, PUT} route"}
{"timestamp":"2026-10-22T23:12:12.994Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/:id, DELETE} route"}
{"timestamp":"2026-10-22T23:12:12.995Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/:id/set-default, POST} route"}
{"timestamp":"2026-10-22T23:12:12.995Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/assign-to-business, POST} route"}
{"timestamp":"2026-10-22T23:12:12.995Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/business/:businessId, GET} route"}
{"timestamp":"2026-10-22T23:12:12.995Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/:id/businesses, GET} route"}
{"timestamp":"2026-10-22T23:12:12.995Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/initialize-defaults, POST} route"}
{"timestamp":"2026-10-22T23:12:12.996Z","level":"log","context":"RoutesResolver","message":"AdminBusinessController {/admin/businesses}:"}
{"timestamp":"2026-10-22T23:12:12.996Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/businesses, GET} route"}
{"timestamp":"2026-10-22T23:12:12.996Z","level":"log","context":"RoutesResolver","message":"ResellerManagementController {/admin/resellers}:"}
{"timestamp":"2026-10-22T23:12:12.996Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/resellers, GET} route"}
{"timestamp":"2026-10-22T23:12:12.996Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/resellers/create-default, POST} route"}
{"timestamp":"2026-10-22T23:12:12.996Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/resellers, POST} route"}
{"timestamp":"2026-10-22T23:12:12.997Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/resellers/:id/toggle-status, PUT} route"}
{"timestamp":"2026-10-22T23:12:12.997Z","level":"log","context":"RoutesResolver","message":"SubscriptionController {/subscription}:"}
{"timestamp":"2026-10-22T23:12:12.997Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/plans, GET} route"}
{"timestamp":"2026-10-22T23:12:12.997Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/calculate-price, POST} route"}
{"timestamp":"2026-10-22T23:12:12.997Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/current, GET} route"}
{"timestamp":"2026-10-22T23:12:12.998Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/create, POST} route"}
{"timestamp":"2026-10-22T23:12:12.998Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/:id, PUT} route"}
{"timestamp":"2026-10-22T23:12:12.998Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/:id/cancel, DELETE} route"}
{"timestamp":"2026-10-22T23:12:12.998Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/sync/:stripeSubscriptionId, POST} route"}
{"timestamp":"2026-10-22T23:12:12.998Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/payments, GET} route"}
{"timestamp":"2026-10-22T23:12:12.999Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/payments/stats, GET} route"}
{"timestamp":"2026-10-22T23:12:12.999Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/payment/:id, GET} route"}
{"timestamp":"2026-10-22T23:12:12.999Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/payment-methods/attach, POST} route"}
{"timestamp":"2026-10-22T23:12:12.999Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/payment-methods/:paymentMethodId, DELETE} route"}
{"timestamp":"2026-10-22T23:12:12.999Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/payment-methods, GET} route"}
{"timestamp":"2026-10-22T23:12:13.000Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/setup-intent, POST} route"}
{"timestamp":"2026-10-22T23:12:13.000Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/update-employee-count, POST} route"}
{"timestamp":"2026-10-22T23:12:13.000Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/retry-payment/:subscriptionId, POST} route"}
{"timestamp":"2026-10-22T23:12:13.000Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/invoice/:invoiceId/pdf, GET} route"}
{"timestamp":"2026-10-22T23:12:13.000Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/preview-upgrade, POST} route"}
{"timestamp":"2026-10-22T23:12:13.000Z","level":"log","context":"RoutesResolver","message":"SubscriptionController {/api/subscription}:"}
{"timestamp":"2026-10-22T23:12:13.001Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/plans, GET} route"}
{"timestamp":"2026-10-22T23:12:13.001Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/calculate-price, POST} route"}
{"timestamp":"2026-10-22T23:12:13.001Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/current, GET} route"}
{"timestamp":"2026-10-22T23:12:13.001Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/create, POST} route"}
{"timestamp":"2026-10-22T23:12:13.001Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/:id, PUT} route"}
{"timestamp":"2026-10-22T23:12:13.002Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/:id/cancel, DELETE} route"}
{"timestamp":"2026-10-22T23:12:13.002Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/sync/:stripeSubscriptionId, POST} route"}
{"timestamp":"2026-10-22T23:12:13.002Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/payments, GET} route"}
{"timestamp":"2026-10-22T23:12:13.002Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/payments/stats, GET} route"}
{"timestamp":"2026-10-22T23:12:13.002Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/payment/:id, GET} route"}
{"timestamp":"2026-10-22T23:12:13.002Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/payment-methods/attach, POST} route"}
{"timestamp":"2026-10-22T23:12:13.003Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/payment-methods/:paymentMethodId, DELETE} route"}
{"timestamp":"2026-10-22T23:12:13.003Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/payment-methods, GET} route"}
{"timestamp":"2026-10-22T23:12:13.003Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/setup-intent, POST} route"}
{"timestamp":"2026-10-22T23:12:13.003Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/update-employee-count, POST} route"}
{"timestamp":"2026-10-22T23:12:13.003Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/retry-payment/:subscriptionId, POST} route"}
{"timestamp":"2026-10-22T23:12:13.004Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/invoice/:invoiceId/pdf, GET} route"}
{"timestamp":"2026-10-22T23:12:13.004Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/preview-upgrade, POST} route"}
{"timestamp":"2026-10-22T23:12:13.004Z","level":"log","context":"RoutesResolver","message":"StripeWebhookController {/stripe/webhook}:"}
{"timestamp":"2026-10-22T23:12:13.004Z","level":"log","context":"RouterExplorer","message":"Mapped {/stripe/webhook/test, GET} route"}
{"timestamp":"2026-10-22T23:12:13.004Z","level":"log","context":"RouterExplorer","message":"Mapped {/stripe/webhook, POST} route"}
{"timestamp":"2026-10-22T23:12:13.004Z","level":"log","context":"RoutesResolver","message":"EmailController {/email-templates}:"}
{"timestamp":"2026-10-22T23:12:13.004Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates/test, POST} route"}
{"timestamp":"2026-10-22T23:12:13.004Z","level":"log","context":"RoutesResolver","message":"EmployeeController {/employees}:"}
{"timestamp":"2026-10-22T23:12:13.005Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees, POST} route"}
{"timestamp":"2026-10-22T23:12:13.005Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees, GET} route"}
{"timestamp":"2026-10-22T23:12:13.005Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees/export, GET} route"}
{"timestamp":"2026-10-22T23:12:13.005Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees/risk-stats, GET} route"}
{"timestamp":"2026-10-22T23:12:13.005Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees/:id, GET} route"}
{"timestamp":"2026-10-22T23:12:13.006Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees/:id, PUT} route"}
{"timestamp":"2026-10-22T23:12:13.006Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees/:id, DELETE} route"}
{"timestamp":"2026-10-22T23:12:13.006Z","level":"log","context":"RoutesResolver","message":"GroupController {/groups}:"}
{"timestamp":"2026-10-22T23:12:13.006Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups, POST} route"}
{"timestamp":"2026-10-22T23:12:13.006Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups, GET} route"}
{"timestamp":"2026-10-22T23:12:13.006Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups/standard, GET} route"}
{"timestamp":"2026-10-22T23:12:13.007Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups/:id, GET} route"}
{"timestamp":"2026-10-22T23:12:13.007Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups/:id, PUT} route"}
{"timestamp":"2026-10-22T23:12:13.007Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups/:id, DELETE} route"}
{"timestamp":"2026-10-22T23:12:13.007Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups/:id/info, GET} route"}
{"timestamp":"2026-10-22T23:12:13.007Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups/:id/with-employees, GET} route"}
{"timestamp":"2026-10-22T23:12:13.007Z","level":"log","context":"RoutesResolver","message":"SenderProfileController {/sender-profiles}:"}
{"timestamp":"2026-10-22T23:12:13.007Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles, GET} route"}
{"timestamp":"2026-10-22T23:12:13.008Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles/:id, GET} route"}
{"timestamp":"2026-10-22T23:12:13.008Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles, POST} route"}
{"timestamp":"2026-10-22T23:12:13.008Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles/:id, PUT} route"}
{"timestamp":"2026-10-22T23:12:13.008Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles/:id, DELETE} route"}
{"timestamp":"2026-10-22T23:12:13.008Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles/:id/verify-domain, POST} route"}
{"timestamp":"2026-10-22T23:12:13.008Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles/domain-verification, GET} route"}
{"timestamp":"2026-10-22T23:12:13.008Z","level":"log","context":"RoutesResolver","message":"EmailTemplateController {/email-templates}:"}
{"timestamp":"2026-10-22T23:12:13.009Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates, GET} route"}
{"timestamp":"2026-10-22T23:12:13.009Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates/:id, GET} route"}
{"timestamp":"2026-10-22T23:12:13.009Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates, POST} route"}
{"timestamp":"2026-10-22T23:12:13.009Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates/:id, PUT} route"}
{"timestamp":"2026-10-22T23:12:13.009Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates/:id, DELETE} route"}
{"timestamp":"2026-10-22T23:12:13.010Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates/:id/duplicate, POST} route"}
{"timestamp":"2026-10-22T23:12:13.010Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates/:id/preview, GET} route"}
{"timestamp":"2026-10-22T23:12:13.010Z","level":"log","context":"RoutesResolver","message":"ScenarioController {/scenarios}:"}
{"timestamp":"2026-10-22T23:12:13.010Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios, POST} route"}
{"timestamp":"2026-10-22T23:12:13.010Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios/generate-content, POST} route"}
{"timestamp":"2026-10-22T23:12:13.010Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios, GET} route"}
{"timestamp":"2026-10-22T23:12:13.010Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios/:id, GET} route"}
{"timestamp":"2026-10-22T23:12:13.011Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios/:id, PUT} route"}
{"timestamp":"2026-10-22T23:12:13.011Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios/:id, DELETE} route"}
{"timestamp":"2026-10-22T23:12:13.011Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios/generate-from-json, POST} route"}
{"timestamp":"2026-10-22T23:12:13.011Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios/:id/save-as-custom-scenario, POST} route"}
{"timestamp":"2026-10-22T23:12:13.011Z","level":"log","context":"RoutesResolver","message":"CampaignController {/campaigns}:"}
{"timestamp":"2026-10-22T23:12:13.011Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns, POST} route"}
{"timestamp":"2026-10-22T23:12:13.012Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns, GET} route"}
{"timestamp":"2026-10-22T23:12:13.012Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id, GET} route"}
{"timestamp":"2026-10-22T23:12:13.012Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id/details, GET} route"}
{"timestamp":"2026-10-22T23:12:13.012Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id/employees, GET} route"}
{"timestamp":"2026-10-22T23:12:13.012Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id, PATCH} route"}
{"timestamp":"2026-10-22T23:12:13.013Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id/start, POST} route"}
{"timestamp":"2026-10-22T23:12:13.013Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id/stop, POST} route"}
{"timestamp":"2026-10-22T23:12:13.013Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id/duplicate, POST} route"}
{"timestamp":"2026-10-22T23:12:13.013Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id, DELETE} route"}
{"timestamp":"2026-10-22T23:12:13.013Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/auto-generate-program, POST} route"}
{"timestamp":"2026-10-22T23:12:13.013Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/generate-from-threat-intelligence, POST} route"}
{"timestamp":"2026-10-22T23:12:13.014Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id/risk-score, GET} route"}
{"timestamp":"2026-10-22T23:12:13.014Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/recalculate-risk-scores, POST} route"}
{"timestamp":"2026-10-22T23:12:13.014Z","level":"log","context":"RoutesResolver","message":"CampaignController {/api/campaigns}:"}
{"timestamp":"2026-10-22T23:12:13.014Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns, POST} route"}
{"timestamp":"2026-10-22T23:12:13.014Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns, GET} route"}
{"timestamp":"2026-10-22T23:12:13.014Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id, GET} route"}
{"timestamp":"2026-10-22T23:12:13.014Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id/details, GET} route"}
{"timestamp":"2026-10-22T23:12:13.015Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id/employees, GET} route"}
{"timestamp":"2026-10-22T23:12:13.015Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id, PATCH} route"}
{"timestamp":"2026-10-22T23:12:13.015Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id/start, POST} route"}
{"timestamp":"2026-10-22T23:12:13.015Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id/stop, POST} route"}
{"timestamp":"2026-10-22T23:12:13.015Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id/duplicate, POST} route"}
{"timestamp":"2026-10-22T23:12:13.015Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id, DELETE} route"}
{"timestamp":"2026-10-22T23:12:13.015Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/auto-generate-program, POST} route"}
{"timestamp":"2026-10-22T23:12:13.016Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/generate-from-threat-intelligence, POST} route"}
{"timestamp":"2026-10-22T23:12:13.016Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id/risk-score, GET} route"}
{"timestamp":"2026-10-22T23:12:13.016Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/recalculate-risk-scores, POST} route"}
{"timestamp":"2026-10-22T23:12:13.016Z","level":"log","context":"RoutesResolver","message":"NotificationsController {/notifications}:"}
{"timestamp":"2026-10-22T23:12:13.016Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications, POST} route"}
{"timestamp":"2026-10-22T23:12:13.016Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications, GET} route"}
{"timestamp":"2026-10-22T23:12:13.017Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/unread, GET} route"}
{"timestamp":"2026-10-22T23:12:13.017Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/unread-count, GET} route"}
{"timestamp":"2026-10-22T23:12:13.017Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/:id, GET} route"}
{"timestamp":"2026-10-22T23:12:13.017Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/:id, PATCH} route"}
{"timestamp":"2026-10-22T23:12:13.017Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/:id/read, PATCH} route"}
{"timestamp":"2026-10-22T23:12:13.017Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/mark-all-read, PATCH} route"}
{"timestamp":"2026-10-22T23:12:13.018Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/:id, DELETE} route"}
{"timestamp":"2026-10-22T23:12:13.018Z","level":"log","context":"RoutesResolver","message":"LandingPageController {/lp}:"}
{"timestamp":"2026-10-22T23:12:13.018Z","level":"log","context":"RouterExplorer","message":"Mapped {/lp/image, GET} route"}
{"timestamp":"2026-10-22T23:12:13.018Z","level":"log","context":"RouterExplorer","message":"Mapped {/lp/learning, GET} route"}
{"timestamp":"2026-10-22T23:12:13.019Z","level":"log","context":"RouterExplorer","message":"Mapped {/lp/submit, POST} route"}
{"timestamp":"2026-10-22T23:12:13.019Z","level":"log","context":"RouterExplorer","message":"Mapped {/lp/test, GET} route"}
{"timestamp":"2026-10-22T23:12:13.019Z","level":"warn","context":"LegacyRouteConverter","message":"Unsupported route path: \"/lp/*\". In previous versions, the symbols ?, *, and + were used to denote optional or repeating path parameters. The latest version of \"path-to-regexp\" now requires the use of named parameters. For example, instead of using a route like /users/* to capture all routes starting with \"/users\", you should use /users/*path. For more details, refer to the migration guide. Attempting to auto-convert..."}
{"timestamp":"2026-10-22T23:12:13.020Z","level":"log","context":"RouterExplorer","message":"Mapped {/lp/*, ALL} route"}
{"timestamp":"2026-10-22T23:12:13.020Z","level":"log","context":"RoutesResolver","message":"SupportController {/support}:"}
{"timestamp":"2026-10-22T23:12:13.020Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets, POST} route"}
{"timestamp":"2026-10-22T23:12:13.020Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets, GET} route"}
{"timestamp":"2026-10-22T23:12:13.020Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets/:id, GET} route"}
{"timestamp":"2026-10-22T23:12:13.021Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets/:id, PATCH} route"}
{"timestamp":"2026-10-22T23:12:13.021Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets/:id, DELETE} route"}
{"timestamp":"2026-10-22T23:12:13.021Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets/:id/messages, POST} route"}
{"timestamp":"2026-10-22T23:12:13.021Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets/:id/close, POST} route"}
{"timestamp":"2026-10-22T23:12:13.021Z","level":"log","context":"RoutesResolver","message":"BusninessMetricsController {/business-metrics}:"}
{"timestamp":"2026-10-22T23:12:13.021Z","level":"log","context":"RouterExplorer","message":"Mapped {/business-metrics, GET} route"}
{"timestamp":"2026-10-22T23:12:13.021Z","level":"log","context":"RoutesResolver","message":"UsersController {/users}:"}
{"timestamp":"2026-10-22T23:12:13.022Z","level":"log","context":"RouterExplorer","message":"Mapped {/users/:id, PUT} route"}
{"timestamp":"2026-10-22T23:12:13.022Z","level":"log","context":"RouterExplorer","message":"Mapped {/users/settings, GET} route"}
{"timestamp":"2026-10-22T23:12:13.022Z","level":"log","context":"RouterExplorer","message":"Mapped {/users/settings/general, PUT} route"}
{"timestamp":"2026-10-22T23:12:13.022Z","level":"log","context":"RouterExplorer","message":"Mapped {/users/company/settings, PUT} route"}
{"timestamp":"2026-10-22T23:12:13.022Z","level":"log","context":"RouterExplorer","message":"Mapped {/users/change-password, POST} route"}
{"timestamp":"2026-10-22T23:12:13.023Z","level":"log","context":"RouterExplorer","message":"Mapped {/users/localization/settings, PUT} route"}
{"timestamp":"2026-10-22T23:12:13.023Z","level":"log","context":"RoutesResolver","message":"PartnerController {/partner}:"}
{"timestamp":"2026-10-22T23:12:13.023Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses, POST} route"}
{"timestamp":"2026-10-22T23:12:13.023Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses, GET} route"}
{"timestamp":"2026-10-22T23:12:13.023Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses/:id, GET} route"}
{"timestamp":"2026-10-22T23:12:13.023Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses/:id, PUT} route"}
{"timestamp":"2026-10-22T23:12:13.024Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses/:id, DELETE} route"}
{"timestamp":"2026-10-22T23:12:13.024Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses/:id/impersonate, POST} route"}
{"timestamp":"2026-10-22T23:12:13.024Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses/stop-impersonation, POST} route"}
{"timestamp":"2026-10-22T23:12:13.024Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/license-usage, GET} route"}
{"timestamp":"2026-10-22T23:12:13.024Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/invoices, POST} route"}
{"timestamp":"2026-10-22T23:12:13.024Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/invoices, GET} route"}
{"timestamp":"2026-10-22T23:12:13.025Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/invoices/:id, GET} route"}
{"timestamp":"2026-10-22T23:12:13.025Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/invoices/:id, PUT} route"}
{"timestamp":"2026-10-22T23:12:13.025Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/invoices/:id, DELETE} route"}
{"timestamp":"2026-10-22T23:12:13.025Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/invoices/:id/mark-paid, PUT} route"}
{"timestamp":"2026-10-22T23:12:13.025Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/onboarding/generate-token, POST} route"}
{"timestamp":"2026-10-22T23:12:13.025Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/dashboard, GET} route"}
{"timestamp":"2026-10-22T23:12:13.025Z","level":"log","context":"RoutesResolver","message":"MspSubscriptionController {/partner/msp-subscriptions}:"}
{"timestamp":"2026-10-22T23:12:13.026Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/plans, POST} route"}
{"timestamp":"2026-10-22T23:12:13.026Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/plans, GET} route"}
{"timestamp":"2026-10-22T23:12:13.026Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/plans/:planId, GET} route"}
{"timestamp":"2026-10-22T23:12:13.026Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/plans/:planId, PUT} route"}
{"timestamp":"2026-10-22T23:12:13.026Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/plans/:planId, DELETE} route"}
{"timestamp":"2026-10-22T23:12:13.027Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/businesses/:businessId/subscription, POST} route"}
{"timestamp":"2026-10-22T23:12:13.027Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions, GET} route"}
{"timestamp":"2026-10-22T23:12:13.027Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/businesses/:businessId/subscription, GET} route"}
{"timestamp":"2026-10-22T23:12:13.027Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/businesses/:businessId/subscription, PUT} route"}
{"timestamp":"2026-10-22T23:12:13.027Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/businesses/:businessId/subscription, DELETE} route"}
{"timestamp":"2026-10-22T23:12:13.027Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/businesses/:businessId/subscription/limits, GET} route"}
{"timestamp":"2026-10-22T23:12:13.028Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/businesses/:businessId/subscription/change-plan, PUT} route"}
{"timestamp":"2026-10-22T23:12:13.028Z","level":"log","context":"RoutesResolver","message":"OnboardingController {/onboarding}:"}
{"timestamp":"2026-10-22T23:12:13.028Z","level":"log","context":"RouterExplorer","message":"Mapped {/onboarding/validate/:token, GET} route"}
{"timestamp":"2026-10-22T23:12:13.028Z","level":"log","context":"RouterExplorer","message":"Mapped {/onboarding/complete/:token, POST} route"}
{"timestamp":"2026-10-22T23:12:13.028Z","level":"log","context":"RoutesResolver","message":"ResellerController {/reseller}:"}
{"timestamp":"2026-10-22T23:12:13.028Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/businesses, POST} route"}
{"timestamp":"2026-10-22T23:12:13.029Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/businesses, GET} route"}
{"timestamp":"2026-10-22T23:12:13.029Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/businesses/:id, GET} route"}
{"timestamp":"2026-10-22T23:12:13.029Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/businesses/:id, PUT} route"}
{"timestamp":"2026-10-22T23:12:13.029Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/businesses/:id, DELETE} route"}
{"timestamp":"2026-10-22T23:12:13.029Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/license-usage, GET} route"}
{"timestamp":"2026-10-22T23:12:13.029Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/invoices, POST} route"}
{"timestamp":"2026-10-22T23:12:13.030Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/invoices, GET} route"}
{"timestamp":"2026-10-22T23:12:13.030Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/invoices/:id, GET} route"}
{"timestamp":"2026-10-22T23:12:13.030Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/invoices/:id, PUT} route"}
{"timestamp":"2026-10-22T23:12:13.030Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/invoices/:id, DELETE} route"}
{"timestamp":"2026-10-22T23:12:13.030Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/invoices/:id/mark-paid, PUT} route"}
{"timestamp":"2026-10-22T23:12:13.030Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/onboarding/generate-token, POST} route"}
{"timestamp":"2026-10-22T23:12:13.031Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/dashboard, GET} route"}
{"timestamp":"2026-10-22T23:12:13.031Z","level":"log","context":"RoutesResolver","message":"ResellerSubscriptionController {/reseller}:"}
{"timestamp":"2026-10-22T23:12:13.031Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/plans, POST} route"}
{"timestamp":"2026-10-22T23:12:13.031Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/plans, GET} route"}
{"timestamp":"2026-10-22T23:12:13.031Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/plans/:planId, GET} route"}
{"timestamp":"2026-10-22T23:12:13.031Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/plans/:planId, PUT} route"}
{"timestamp":"2026-10-22T23:12:13.031Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/plans/:planId, DELETE} route"}
{"timestamp":"2026-10-22T23:12:13.032Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/subscriptions/businesses/:businessId/subscription, POST} route"}
{"timestamp":"2026-10-22T23:12:13.032Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/subscriptions, GET} route"}
{"timestamp":"2026-10-22T23:12:13.032Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/subscriptions/businesses/:businessId/subscription, GET} route"}
{"timestamp":"2026-10-22T23:12:13.032Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/subscriptions/businesses/:businessId/subscription, PUT} route"}
{"timestamp":"2026-10-22T23:12:13.032Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/subscriptions/businesses/:businessId/subscription, DELETE} route"}
{"timestamp":"2026-10-22T23:12:13.033Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/subscriptions/businesses/:businessId/subscription/limits, GET} route"}
{"timestamp":"2026-10-22T23:12:13.033Z","level":"log","context":"RoutesResolver","message":"HealthController {/health}:"}
{"timestamp":"2026-10-22T23:12:13.033Z","level":"log","context":"RouterExplorer","message":"Mapped {/health, GET} route"}
{"timestamp":"2026-10-22T23:12:13.033Z","level":"log","context":"RouterExplorer","message":"Mapped {/health/test-logs, GET} route"}
{"timestamp":"2026-10-22T23:12:13.033Z","level":"log","context":"RoutesResolver","message":"AzureAdController {/azure-ad}:"}
{"timestamp":"2026-10-22T23:12:13.033Z","level":"log","context":"RouterExplorer","message":"Mapped {/azure-ad/config, POST} route"}
{"timestamp":"2026-10-22T23:12:13.033Z","level":"log","context":"RouterExplorer","message":"Mapped {/azure-ad/config, GET} route"}
{"timestamp":"2026-10-22T23:12:13.034Z","level":"log","context":"RouterExplorer","message":"Mapped {/azure-ad/test-connection, POST} route"}
{"timestamp":"2026-10-22T23:12:13.034Z","level":"log","context":"RouterExplorer","message":"Mapped {/azure-ad/sync, POST} route"}
{"timestamp":"2026-10-22T23:12:13.034Z","level":"log","context":"RoutesResolver","message":"ThreatsController {/threats}:"}
{"timestamp":"2026-10-22T23:12:13.034Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats, POST} route"}
{"timestamp":"2026-10-22T23:12:13.034Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats, GET} route"}
{"timestamp":"2026-10-22T23:12:13.034Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/chart-data, GET} route"}
{"timestamp":"2026-10-22T23:12:13.034Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/claude-search, POST} route"}
{"timestamp":"2026-10-22T23:12:13.035Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/claude-latest, POST} route"}
{"timestamp":"2026-10-22T23:12:13.035Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/claude-trending, POST} route"}
{"timestamp":"2026-10-22T23:12:13.035Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/claude-categories, POST} route"}
{"timestamp":"2026-10-22T23:12:13.035Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/claude-manual-search, POST} route"}
{"timestamp":"2026-10-22T23:12:13.035Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/claude-quick-search, POST} route"}
{"timestamp":"2026-10-22T23:12:13.035Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/scheduler-status, GET} route"}
{"timestamp":"2026-10-22T23:12:13.036Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/health-check, GET} route"}
{"timestamp":"2026-10-22T23:12:13.036Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/pause-scheduler, POST} route"}
{"timestamp":"2026-10-22T23:12:13.036Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/:id, GET} route"}
{"timestamp":"2026-10-22T23:12:13.036Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/:id, PATCH} route"}
{"timestamp":"2026-10-22T23:12:13.036Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/:id, DELETE} route"}
{"timestamp":"2026-10-22T23:12:13.036Z","level":"log","context":"RoutesResolver","message":"DomainController {/domains}:"}
{"timestamp":"2026-10-22T23:12:13.037Z","level":"log","context":"RouterExplorer","message":"Mapped {/domains, GET} route"}
{"timestamp":"2026-10-22T23:12:13.037Z","level":"log","context":"RouterExplorer","message":"Mapped {/domains/:id, GET} route"}
{"timestamp":"2026-10-22T23:12:13.037Z","level":"log","context":"RouterExplorer","message":"Mapped {/domains, POST} route"}
{"timestamp":"2026-10-22T23:12:13.037Z","level":"log","context":"RouterExplorer","message":"Mapped {/domains/:id, PUT} route"}
{"timestamp":"2026-10-22T23:12:13.037Z","level":"log","context":"RouterExplorer","message":"Mapped {/domains/:id, DELETE} route"}
{"timestamp":"2026-10-22T23:12:13.037Z","level":"log","context":"RouterExplorer","message":"Mapped {/domains/seed, POST} route"}
{"timestamp":"2026-10-22T23:12:13.037Z","level":"log","context":"RoutesResolver","message":"MspSubscriptionController {/msp-subscription}:"}
{"timestamp":"2026-10-22T23:12:13.038Z","level":"log","context":"RouterExplorer","message":"Mapped {/msp-subscription/current, GET} route"}
{"timestamp":"2026-10-22T23:12:13.038Z","level":"log","context":"RouterExplorer","message":"Mapped {/msp-subscription/invoices, GET} route"}
{"timestamp":"2026-10-22T23:12:13.038Z","level":"log","context":"RouterExplorer","message":"Mapped {/msp-subscription/invoice/:invoiceId/pdf, GET} route"}
{"timestamp":"2026-10-22T23:12:13.038Z","level":"log","context":"RoutesResolver","message":"MspSubscriptionController {/api/msp-subscription}:"}
{"timestamp":"2026-10-22T23:12:13.038Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/msp-subscription/current, GET} route"}
{"timestamp":"2026-10-22T23:12:13.038Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/msp-subscription/invoices, GET} route"}
{"timestamp":"2026-10-22T23:12:13.038Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/msp-subscription/invoice/:invoiceId/pdf, GET} route"}
{"timestamp":"2026-10-22T23:12:13.110Z","level":"log","context":"NestApplication","message":"Nest application successfully started"}
{"timestamp":"2026-10-22T23:12:13.121Z","level":"log","context":"Bootstrap","message":"Users API successfully started on port 3842"}
{"timestamp":"2026-10-22T23:12:13.121Z","level":"log","context":"SeedService","message":"🌱 Starting database seeding..."}
{"timestamp":"2026-10-22T23:12:13.129Z","level":"log","context":"SeedService","message":"Admin account already exists, skipping seed"}
{"timestamp":"2026-10-22T23:12:13.131Z","level":"log","context":"SeedService","message":"Reseller account already exists, skipping seed"}
{"timestamp":"2026-10-22T23:12:13.133Z","level":"log","context":"SeedService","message":"MSP account already exists, skipping seed"}
{"timestamp":"2026-10-22T23:12:13.133Z","level":"log","context":"SeedService","message":"✅ Database seeding completed successfully"}
{"timestamp":"2026-10-23T00:15:41.871Z","level":"warn","context":"LegacyRouteConverter","message":"Unsupported route path: \"/lp/*\". In previous versions, the symbols ?, *, and + were used to denote optional or repeating path parameters. The latest version of \"path-to-regexp\" now requires the use of named parameters. For example, instead of using a route like /users/* to capture all routes starting with \"/users\", you should use /users/*path. For more details, refer to the migration guide. Attempting to auto-convert..."}
{"timestamp":"2026-10-23T00:15:41.910Z","level":"log","context":"Bootstrap","message":"Starting Users API on port 3842..."}
{"timestamp":"2026-10-23T00:15:41.913Z","level":"log","context":"RoutesResolver","message":"UsersApiController {/}:"}
{"timestamp":"2026-10-23T00:15:41.917Z","level":"log","context":"RouterExplorer","message":"Mapped {/, GET} route"}
{"timestamp":"2026-10-23T00:15:41.917Z","level":"log","context":"RoutesResolver","message":"AuthController {/auth}:"}
{"timestamp":"2026-10-23T00:15:41.918Z","level":"log","context":"RouterExplorer","message":"Mapped {/auth/login, POST} route"}
{"timestamp":"2026-10-23T00:15:41.919Z","level":"log","context":"RouterExplorer","message":"Mapped {/auth/admin/login, POST} route"}
{"timestamp":"2026-10-23T00:15:41.919Z","level":"log","context":"RouterExplorer","message":"Mapped {/auth/send-otp, POST} route"}
{"timestamp":"2026-10-23T00:15:41.920Z","level":"log","context":"RouterExplorer","message":"Mapped {/auth/verify-otp, POST} route"}
{"timestamp":"2026-10-23T00:15:41.920Z","level":"log","context":"RouterExplorer","message":"Mapped {/auth/signup, POST} route"}
{"timestamp":"2026-10-23T00:15:41.921Z","level":"log","context":"RouterExplorer","message":"Mapped {/auth/subscription-status, GET} route"}
{"timestamp":"2026-10-23T00:15:41.921Z","level":"log","context":"RoutesResolver","message":"AdminMspController {/admin/msp}:"}
{"timestamp":"2026-10-23T00:15:41.921Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/msp, GET} route"}
{"timestamp":"2026-10-23T00:15:41.922Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/msp/:id, GET} route"}
{"timestamp":"2026-10-23T00:15:41.923Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/msp, POST} route"}
{"timestamp":"2026-10-23T00:15:41.923Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/msp/:id, PUT} route"}
{"timestamp":"2026-10-23T00:15:41.923Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/msp/:id, DELETE} route"}
{"timestamp":"2026-10-23T00:15:41.923Z","level":"log","context":"RoutesResolver","message":"AdminLicenseController {/admin/licenses}:"}
{"timestamp":"2026-10-23T00:15:41.924Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/licenses/summary, GET} route"}
{"timestamp":"2026-10-23T00:15:41.924Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/licenses/msp/:mspId, GET} route"}
{"timestamp":"2026-10-23T00:15:41.927Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/licenses/msp/:mspId, PUT} route"}
{"timestamp":"2026-10-23T00:15:41.927Z","level":"log","context":"RoutesResolver","message":"AdminImpersonationController {/admin/impersonation}:"}
{"timestamp":"2026-10-23T00:15:41.927Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/impersonation/msp-users, GET} route"}
{"timestamp":"2026-10-23T00:15:41.928Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/impersonation/impersonate, POST} route"}
{"timestamp":"2026-10-23T00:15:41.928Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/impersonation/stop, POST} route"}
{"timestamp":"2026-10-23T00:15:41.928Z","level":"log","context":"RoutesResolver","message":"AdminAiUsageController {/admin/ai-usage}:"}
{"timestamp":"2026-10-23T00:15:41.928Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-usage, GET} route"}
{"timestamp":"2026-10-23T00:15:41.928Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-usage/business/:businessId, GET} route"}
{"timestamp":"2026-10-23T00:15:41.929Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-usage/report/monthly, GET} route"}
{"timestamp":"2026-10-23T00:15:41.929Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-usage/pricing, GET} route"}
{"timestamp":"2026-10-23T00:15:41.929Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-usage/pricing, POST} route"}
{"timestamp":"2026-10-23T00:15:41.929Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-usage/credit/:businessId, PUT} route"}
{"timestamp":"2026-10-23T00:15:41.929Z","level":"log","context":"RoutesResolver","message":"AdminAiUsageController {/api/admin/ai-usage}:"}
{"timestamp":"2026-10-23T00:15:41.929Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-usage, GET} route"}
{"timestamp":"2026-10-23T00:15:41.930Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-usage/business/:businessId, GET} route"}
{"timestamp":"2026-10-23T00:15:41.930Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-usage/report/monthly, GET} route"}
{"timestamp":"2026-10-23T00:15:41.930Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-usage/pricing, GET} route"}
{"timestamp":"2026-10-23T00:15:41.930Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-usage/pricing, POST} route"}
{"timestamp":"2026-10-23T00:15:41.930Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-usage/credit/:businessId, PUT} route"}
{"timestamp":"2026-10-23T00:15:41.930Z","level":"log","context":"RoutesResolver","message":"AdminAiModelController {/admin/ai-models}:"}
{"timestamp":"2026-10-23T00:15:41.931Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models, POST} route"}
{"timestamp":"2026-10-23T00:15:41.931Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models, GET} route"}
{"timestamp":"2026-10-23T00:15:41.931Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/default, GET} route"}
{"timestamp":"2026-10-23T00:15:41.931Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/:id, GET} route"}
{"timestamp":"2026-10-23T00:15:41.931Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/:id, PUT} route"}
{"timestamp":"2026-10-23T00:15:41.932Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/:id, DELETE} route"}
{"timestamp":"2026-10-23T00:15:41.932Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/:id/set-default, POST} route"}
{"timestamp":"2026-10-23T00:15:41.932Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/assign-to-business, POST} route"}
{"timestamp":"2026-10-23T00:15:41.932Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/business/:businessId, GET} route"}
{"timestamp":"2026-10-23T00:15:41.933Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/:id/businesses, GET} route"}
{"timestamp":"2026-10-23T00:15:41.933Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/initialize-defaults, POST} route"}
{"timestamp":"2026-10-23T00:15:41.933Z","level":"log","context":"RoutesResolver","message":"AdminAiModelController {/api/admin/ai-models}:"}
{"timestamp":"2026-10-23T00:15:41.933Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models, POST} route"}
{"timestamp":"2026-10-23T00:15:41.933Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models, GET} route"}
{"timestamp":"2026-10-23T00:15:41.933Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/default, GET} route"}
{"timestamp":"2026-10-23T00:15:41.933Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/:id, GET} route"}
{"timestamp":"2026-10-23T00:15:41.934Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/:id, PUT} route"}
{"timestamp":"2026-10-23T00:15:41.934Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/:id, DELETE} route"}
{"timestamp":"2026-10-23T00:15:41.934Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/:id/set-default, POST} route"}
{"timestamp":"2026-10-23T00:15:41.934Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/assign-to-business, POST} route"}
{"timestamp":"2026-10-23T00:15:41.934Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/business/:businessId, GET} route"}
{"timestamp":"2026-10-23T00:15:41.934Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/:id/businesses, GET} route"}
{"timestamp":"2026-10-23T00:15:41.935Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/initialize-defaults, POST} route"}
{"timestamp":"2026-10-23T00:15:41.935Z","level":"log","context":"RoutesResolver","message":"AdminBusinessController {/admin/businesses}:"}
{"timestamp":"2026-10-23T00:15:41.935Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/businesses, GET} route"}
{"timestamp":"2026-10-23T00:15:41.935Z","level":"log","context":"RoutesResolver","message":"ResellerManagementController {/admin/resellers}:"}
{"timestamp":"2026-10-23T00:15:41.935Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/resellers, GET} route"}
{"timestamp":"2026-10-23T00:15:41.935Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/resellers/create-default, POST} route"}
{"timestamp":"2026-10-23T00:15:41.936Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/resellers, POST} route"}
{"timestamp":"2026-10-23T00:15:41.936Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/resellers/:id/toggle-status, PUT} route"}
{"timestamp":"2026-10-23T00:15:41.936Z","level":"log","context":"RoutesResolver","message":"SubscriptionController {/subscription}:"}
{"timestamp":"2026-10-23T00:15:41.936Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/plans, GET} route"}
{"timestamp":"2026-10-23T00:15:41.936Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/calculate-price, POST} route"}
{"timestamp":"2026-10-23T00:15:41.937Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/current, GET} route"}
{"timestamp":"2026-10-23T00:15:41.937Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/create, POST} route"}
{"timestamp":"2026-10-23T00:15:41.937Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/:id, PUT} route"}
{"timestamp":"2026-10-23T00:15:41.937Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/:id/cancel, DELETE} route"}
{"timestamp":"2026-10-23T00:15:41.937Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/sync/:stripeSubscriptionId, POST} route"}
{"timestamp":"2026-10-23T00:15:41.937Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/payments, GET} route"}
{"timestamp":"2026-10-23T00:15:41.938Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/payments/stats, GET} route"}
{"timestamp":"2026-10-23T00:15:41.938Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/payment/:id, GET} route"}
{"timestamp":"2026-10-23T00:15:41.938Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/payment-methods/attach, POST} route"}
{"timestamp":"2026-10-23T00:15:41.938Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/payment-methods/:paymentMethodId, DELETE} route"}
{"timestamp":"2026-10-23T00:15:41.938Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/payment-methods, GET} route"}
{"timestamp":"2026-10-23T00:15:41.938Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/setup-intent, POST} route"}
{"timestamp":"2026-10-23T00:15:41.939Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/update-employee-count, POST} route"}
{"timestamp":"2026-10-23T00:15:41.939Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/retry-payment/:subscriptionId, POST} route"}
{"timestamp":"2026-10-23T00:15:41.939Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/invoice/:invoiceId/pdf, GET} route"}
{"timestamp":"2026-10-23T00:15:41.939Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/preview-upgrade, POST} route"}
{"timestamp":"2026-10-23T00:15:41.939Z","level":"log","context":"RoutesResolver","message":"SubscriptionController {/api/subscription}:"}
{"timestamp":"2026-10-23T00:15:41.939Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/plans, GET} route"}
{"timestamp":"2026-10-23T00:15:41.939Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/calculate-price, POST} route"}
{"timestamp":"2026-10-23T00:15:41.940Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/current, GET} route"}
{"timestamp":"2026-10-23T00:15:41.940Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/create, POST} route"}
{"timestamp":"2026-10-23T00:15:41.940Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/:id, PUT} route"}
{"timestamp":"2026-10-23T00:15:41.940Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/:id/cancel, DELETE} route"}
{"timestamp":"2026-10-23T00:15:41.940Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/sync/:stripeSubscriptionId, POST} route"}
{"timestamp":"2026-10-23T00:15:41.940Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/payments, GET} route"}
{"timestamp":"2026-10-23T00:15:41.940Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/payments/stats, GET} route"}
{"timestamp":"2026-10-23T00:15:41.941Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/payment/:id, GET} route"}
{"timestamp":"2026-10-23T00:15:41.941Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/payment-methods/attach, POST} route"}
{"timestamp":"2026-10-23T00:15:41.941Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/payment-methods/:paymentMethodId, DELETE} route"}
{"timestamp":"2026-10-23T00:15:41.941Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/payment-methods, GET} route"}
{"timestamp":"2026-10-23T00:15:41.941Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/setup-intent, POST} route"}
{"timestamp":"2026-10-23T00:15:41.941Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/update-employee-count, POST} route"}
{"timestamp":"2026-10-23T00:15:41.942Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/retry-payment/:subscriptionId, POST} route"}
{"timestamp":"2026-10-23T00:15:41.942Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/invoice/:invoiceId/pdf, GET} route"}
{"timestamp":"2026-10-23T00:15:41.942Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/preview-upgrade, POST} route"}
{"timestamp":"2026-10-23T00:15:41.942Z","level":"log","context":"RoutesResolver","message":"StripeWebhookController {/stripe/webhook}:"}
{"timestamp":"2026-10-23T00:15:41.942Z","level":"log","context":"RouterExplorer","message":"Mapped {/stripe/webhook/test, GET} route"}
{"timestamp":"2026-10-23T00:15:41.942Z","level":"log","context":"RouterExplorer","message":"Mapped {/stripe/webhook, POST} route"}
{"timestamp":"2026-10-23T00:15:41.942Z","level":"log","context":"RoutesResolver","message":"EmailController {/email-templates}:"}
{"timestamp":"2026-10-23T00:15:41.943Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates/test, POST} route"}
{"timestamp":"2026-10-23T00:15:41.943Z","level":"log","context":"RoutesResolver","message":"EmployeeController {/employees}:"}
{"timestamp":"2026-10-23T00:15:41.943Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees, POST} route"}
{"timestamp":"2026-10-23T00:15:41.943Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees, GET} route"}
{"timestamp":"2026-10-23T00:15:41.943Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees/export, GET} route"}
{"timestamp":"2026-10-23T00:15:41.943Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees/risk-stats, GET} route"}
{"timestamp":"2026-10-23T00:15:41.943Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees/:id, GET} route"}
{"timestamp":"2026-10-23T00:15:41.944Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees/:id, PUT} route"}
{"timestamp":"2026-10-23T00:15:41.944Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees/:id, DELETE} route"}
{"timestamp":"2026-10-23T00:15:41.944Z","level":"log","context":"RoutesResolver","message":"GroupController {/groups}:"}
{"timestamp":"2026-10-23T00:15:41.944Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups, POST} route"}
{"timestamp":"2026-10-23T00:15:41.944Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups, GET} route"}
{"timestamp":"2026-10-23T00:15:41.944Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups/standard, GET} route"}
{"timestamp":"2026-10-23T00:15:41.945Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups/:id, GET} route"}
{"timestamp":"2026-10-23T00:15:41.945Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups/:id, PUT} route"}
{"timestamp":"2026-10-23T00:15:41.945Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups/:id, DELETE} route"}
{"timestamp":"2026-10-23T00:15:41.945Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups/:id/info, GET} route"}
{"timestamp":"2026-10-23T00:15:41.945Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups/:id/with-employees, GET} route"}
{"timestamp":"2026-10-23T00:15:41.945Z","level":"log","context":"RoutesResolver","message":"SenderProfileController {/sender-profiles}:"}
{"timestamp":"2026-10-23T00:15:41.945Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles, GET} route"}
{"timestamp":"2026-10-23T00:15:41.946Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles/:id, GET} route"}
{"timestamp":"2026-10-23T00:15:41.946Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles, POST} route"}
{"timestamp":"2026-10-23T00:15:41.946Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles/:id, PUT} route"}
{"timestamp":"2026-10-23T00:15:41.946Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles/:id, DELETE} route"}
{"timestamp":"2026-10-23T00:15:41.946Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles/:id/verify-domain, POST} route"}
{"timestamp":"2026-10-23T00:15:41.946Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles/domain-verification, GET} route"}
{"timestamp":"2026-10-23T00:15:41.946Z","level":"log","context":"RoutesResolver","message":"EmailTemplateController {/email-templates}:"}
{"timestamp":"2026-10-23T00:15:41.947Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates, GET} route"}
{"timestamp":"2026-10-23T00:15:41.947Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates/:id, GET} route"}
{"timestamp":"2026-10-23T00:15:41.947Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates, POST} route"}
{"timestamp":"2026-10-23T00:15:41.947Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates/:id, PUT} route"}
{"timestamp":"2026-10-23T00:15:41.947Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates/:id, DELETE} route"}
{"timestamp":"2026-10-23T00:15:41.948Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates/:id/duplicate, POST} route"}
{"timestamp":"2026-10-23T00:15:41.948Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates/:id/preview, GET} route"}
{"timestamp":"2026-10-23T00:15:41.948Z","level":"log","context":"RoutesResolver","message":"ScenarioController {/scenarios}:"}
{"timestamp":"2026-10-23T00:15:41.948Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios, POST} route"}
{"timestamp":"2026-10-23T00:15:41.948Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios/generate-content, POST} route"}
{"timestamp":"2026-10-23T00:15:41.948Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios, GET} route"}
{"timestamp":"2026-10-23T00:15:41.948Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios/:id, GET} route"}
{"timestamp":"2026-10-23T00:15:41.949Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios/:id, PUT} route"}
{"timestamp":"2026-10-23T00:15:41.949Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios/:id, DELETE} route"}
{"timestamp":"2026-10-23T00:15:41.949Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios/generate-from-json, POST} route"}
{"timestamp":"2026-10-23T00:15:41.949Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios/:id/save-as-custom-scenario, POST} route"}
{"timestamp":"2026-10-23T00:15:41.949Z","level":"log","context":"RoutesResolver","message":"CampaignController {/campaigns}:"}
{"timestamp":"2026-10-23T00:15:41.949Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns, POST} route"}
{"timestamp":"2026-10-23T00:15:41.950Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns, GET} route"}
{"timestamp":"2026-10-23T00:15:41.950Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id, GET} route"}
{"timestamp":"2026-10-23T00:15:41.950Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id/details, GET} route"}
{"timestamp":"2026-10-23T00:15:41.950Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id/employees, GET} route"}
{"timestamp":"2026-10-23T00:15:41.950Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id, PATCH} route"}
{"timestamp":"2026-10-23T00:15:41.951Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id/start, POST} route"}
{"timestamp":"2026-10-23T00:15:41.951Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id/stop, POST} route"}
{"timestamp":"2026-10-23T00:15:41.951Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id/duplicate, POST} route"}
{"timestamp":"2026-10-23T00:15:41.951Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id, DELETE} route"}
{"timestamp":"2026-10-23T00:15:41.951Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/auto-generate-program, POST} route"}
{"timestamp":"2026-10-23T00:15:41.951Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/generate-from-threat-intelligence, POST} route"}
{"timestamp":"2026-10-23T00:15:41.952Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id/risk-score, GET} route"}
{"timestamp":"2026-10-23T00:15:41.952Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/recalculate-risk-scores, POST} route"}
{"timestamp":"2026-10-23T00:15:41.952Z","level":"log","context":"RoutesResolver","message":"CampaignController {/api/campaigns}:"}
{"timestamp":"2026-10-23T00:15:41.952Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns, POST} route"}
{"timestamp":"2026-10-23T00:15:41.952Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns, GET} route"}
{"timestamp":"2026-10-23T00:15:41.952Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id, GET} route"}
{"timestamp":"2026-10-23T00:15:41.952Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id/details, GET} route"}
{"timestamp":"2026-10-23T00:15:41.953Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id/employees, GET} route"}
{"timestamp":"2026-10-23T00:15:41.953Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id, PATCH} route"}
{"timestamp":"2026-10-23T00:15:41.953Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id/start, POST} route"}
{"timestamp":"2026-10-23T00:15:41.953Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id/stop, POST} route"}
{"timestamp":"2026-10-23T00:15:41.953Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id/duplicate, POST} route"}
{"timestamp":"2026-10-23T00:15:41.953Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id, DELETE} route"}
{"timestamp":"2026-10-23T00:15:41.954Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/auto-generate-program, POST} route"}
{"timestamp":"2026-10-23T00:15:41.954Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/generate-from-threat-intelligence, POST} route"}
{"timestamp":"2026-10-23T00:15:41.954Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id/risk-score, GET} route"}
{"timestamp":"2026-10-23T00:15:41.954Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/recalculate-risk-scores, POST} route"}
{"timestamp":"2026-10-23T00:15:41.954Z","level":"log","context":"RoutesResolver","message":"NotificationsController {/notifications}:"}
{"timestamp":"2026-10-23T00:15:41.954Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications, POST} route"}
{"timestamp":"2026-10-23T00:15:41.955Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications, GET} route"}
{"timestamp":"2026-10-23T00:15:41.955Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/unread, GET} route"}
{"timestamp":"2026-10-23T00:15:41.955Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/unread-count, GET} route"}
{"timestamp":"2026-10-23T00:15:41.955Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/:id, GET} route"}
{"timestamp":"2026-10-23T00:15:41.955Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/:id, PATCH} route"}
{"timestamp":"2026-10-23T00:15:41.956Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/:id/read, PATCH} route"}
{"timestamp":"2026-10-23T00:15:41.956Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/mark-all-read, PATCH} route"}
{"timestamp":"2026-10-23T00:15:41.956Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/:id, DELETE} route"}
{"timestamp":"2026-10-23T00:15:41.956Z","level":"log","context":"RoutesResolver","message":"LandingPageController {/lp}:"}
{"timestamp":"2026-10-23T00:15:41.957Z","level":"log","context":"RouterExplorer","message":"Mapped {/lp/image, GET} route"}
{"timestamp":"2026-10-23T00:15:41.957Z","level":"log","context":"RouterExplorer","message":"Mapped {/lp/learning, GET} route"}
{"timestamp":"2026-10-23T00:15:41.957Z","level":"log","context":"RouterExplorer","message":"Mapped {/lp/submit, POST} route"}
{"timestamp":"2026-10-23T00:15:41.957Z","level":"log","context":"RouterExplorer","message":"Mapped {/lp/test, GET} route"}
{"timestamp":"2026-10-23T00:15:41.957Z","level":"warn","context":"LegacyRouteConverter","message":"Unsupported route path: \"/lp/*\". In previous versions, the symbols ?, *, and + were used to denote optional or repeating path parameters. The latest version of \"path-to-regexp\" now requires the use of named parameters. For example, instead of using a route like /users/* to capture all routes starting with \"/users\", you should use /users/*path. For more details, refer to the migration guide. Attempting to auto-convert..."}
{"timestamp":"2026-10-23T00:15:41.958Z","level":"log","context":"RouterExplorer","message":"Mapped {/lp/*, ALL} route"}
{"timestamp":"2026-10-23T00:15:41.958Z","level":"log","context":"RoutesResolver","message":"SupportController {/support}:"}
{"timestamp":"2026-10-23T00:15:41.958Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets, POST} route"}
{"timestamp":"2026-10-23T00:15:41.959Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets, GET} route"}
{"timestamp":"2026-10-23T00:15:41.959Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets/:id, GET} route"}
{"timestamp":"2026-10-23T00:15:41.959Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets/:id, PATCH} route"}
{"timestamp":"2026-10-23T00:15:41.959Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets/:id, DELETE} route"}
{"timestamp":"2026-10-23T00:15:41.959Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets/:id/messages, POST} route"}
{"timestamp":"2026-10-23T00:15:41.960Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets/:id/close, POST} route"}
{"timestamp":"2026-10-23T00:15:41.960Z","level":"log","context":"RoutesResolver","message":"BusninessMetricsController {/business-metrics}:"}
{"timestamp":"2026-10-23T00:15:41.960Z","level":"log","context":"RouterExplorer","message":"Mapped {/business-metrics, GET} route"}
{"timestamp":"2026-10-23T00:15:41.960Z","level":"log","context":"RoutesResolver","message":"UsersController {/users}:"}
{"timestamp":"2026-10-23T00:15:41.960Z","level":"log","context":"RouterExplorer","message":"Mapped {/users/:id, PUT} route"}
{"timestamp":"2026-10-23T00:15:41.960Z","level":"log","context":"RouterExplorer","message":"Mapped {/users/settings, GET} route"}
{"timestamp":"2026-10-23T00:15:41.960Z","level":"log","context":"RouterExplorer","message":"Mapped {/users/settings/general, PUT} route"}
{"timestamp":"2026-10-23T00:15:41.961Z","level":"log","context":"RouterExplorer","message":"Mapped {/users/company/settings, PUT} route"}
{"timestamp":"2026-10-23T00:15:41.961Z","level":"log","context":"RouterExplorer","message":"Mapped {/users/change-password, POST} route"}
{"timestamp":"2026-10-23T00:15:41.961Z","level":"log","context":"RouterExplorer","message":"Mapped {/users/localization/settings, PUT} route"}
{"timestamp":"2026-10-23T00:15:41.961Z","level":"log","context":"RoutesResolver","message":"PartnerController {/partner}:"}
{"timestamp":"2026-10-23T00:15:41.961Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses, POST} route"}
{"timestamp":"2026-10-23T00:15:41.961Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses, GET} route"}
{"timestamp":"2026-10-23T00:15:41.962Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses/:id, GET} route"}
{"timestamp":"2026-10-23T00:15:41.962Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses/:id, PUT} route"}
{"timestamp":"2026-10-23T00:15:41.962Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses/:id, DELETE} route"}
{"timestamp":"2026-10-23T00:15:41.962Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses/:id/impersonate, POST} route"}
{"timestamp":"2026-10-23T00:15:41.962Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses/stop-impersonation, POST} route"}
{"timestamp":"2026-10-23T00:15:41.962Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/license-usage, GET} route"}
{"timestamp":"2026-10-23T00:15:41.963Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/invoices, POST} route"}
{"timestamp":"2026-10-23T00:15:41.963Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/invoices, GET} route"}
{"timestamp":"2026-10-23T00:15:41.963Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/invoices/:id, GET} route"}
{"timestamp":"2026-10-23T00:15:41.963Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/invoices/:id, PUT} route"}
{"timestamp":"2026-10-23T00:15:41.963Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/invoices/:id, DELETE} route"}
{"timestamp":"2026-10-23T00:15:41.963Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/invoices/:id/mark-paid, PUT} route"}
{"timestamp":"2026-10-23T00:15:41.964Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/onboarding/generate-token, POST} route"}
{"timestamp":"2026-10-23T00:15:41.964Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/dashboard, GET} route"}
{"timestamp":"2026-10-23T00:15:41.964Z","level":"log","context":"RoutesResolver","message":"MspSubscriptionController {/partner/msp-subscriptions}:"}
{"timestamp":"2026-10-23T00:15:41.964Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/plans, POST} route"}
{"timestamp":"2026-10-23T00:15:41.964Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/plans, GET} route"}
{"timestamp":"2026-10-23T00:15:41.964Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/plans/:planId, GET} route"}
{"timestamp":"2026-10-23T00:15:41.964Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/plans/:planId, PUT} route"}
{"timestamp":"2026-10-23T00:15:41.965Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/plans/:planId, DELETE} route"}
{"timestamp":"2026-10-23T00:15:41.965Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/businesses/:businessId/subscription, POST} route"}
{"timestamp":"2026-10-23T00:15:41.965Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions, GET} route"}
{"timestamp":"2026-10-23T00:15:41.965Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/businesses/:businessId/subscription, GET} route"}
{"timestamp":"2026-10-23T00:15:41.965Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/businesses/:businessId/subscription, PUT} route"}
{"timestamp":"2026-10-23T00:15:41.965Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/businesses/:businessId/subscription, DELETE} route"}
{"timestamp":"2026-10-23T00:15:41.966Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/businesses/:businessId/subscription/limits, GET} route"}
{"timestamp":"2026-10-23T00:15:41.966Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/businesses/:businessId/subscription/change-plan, PUT} route"}
{"timestamp":"2026-10-23T00:15:41.966Z","level":"log","context":"RoutesResolver","message":"OnboardingController {/onboarding}:"}
{"timestamp":"2026-10-23T00:15:41.966Z","level":"log","context":"RouterExplorer","message":"Mapped {/onboarding/validate/:token, GET} route"}
{"timestamp":"2026-10-23T00:15:41.966Z","level":"log","context":"RouterExplorer","message":"Mapped {/onboarding/complete/:token, POST} route"}
{"timestamp":"2026-10-23T00:15:41.966Z","level":"log","context":"RoutesResolver","message":"ResellerController {/reseller}:"}
{"timestamp":"2026-10-23T00:15:41.967Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/businesses, POST} route"}
{"timestamp":"2026-10-23T00:15:41.967Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/businesses, GET} route"}
{"timestamp":"2026-10-23T00:15:41.967Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/businesses/:id, GET} route"}
{"timestamp":"2026-10-23T00:15:41.967Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/businesses/:id, PUT} route"}
{"timestamp":"2026-10-23T00:15:41.967Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/businesses/:id, DELETE} route"}
{"timestamp":"2026-10-23T00:15:41.968Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/license-usage, GET} route"}
{"timestamp":"2026-10-23T00:15:41.968Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/invoices, POST} route"}
{"timestamp":"2026-10-23T00:15:41.968Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/invoices, GET} route"}
{"timestamp":"2026-10-23T00:15:41.968Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/invoices/:id, GET} route"}
{"timestamp":"2026-10-23T00:15:41.968Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/invoices/:id, PUT} route"}
{"timestamp":"2026-10-23T00:15:41.968Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/invoices/:id, DELETE} route"}
{"timestamp":"2026-10-23T00:15:41.968Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/invoices/:id/mark-paid, PUT} route"}
{"timestamp":"2026-10-23T00:15:41.969Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/onboarding/generate-token, POST} route"}
{"timestamp":"2026-10-23T00:15:41.969Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/dashboard, GET} route"}
{"timestamp":"2026-10-23T00:15:41.969Z","level":"log","context":"RoutesResolver","message":"ResellerSubscriptionController {/reseller}:"}
{"timestamp":"2026-10-23T00:15:41.969Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/plans, POST} route"}
{"timestamp":"2026-10-23T00:15:41.969Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/plans, GET} route"}
{"timestamp":"2026-10-23T00:15:41.969Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/plans/:planId, GET} route"}
{"timestamp":"2026-10-23T00:15:41.969Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/plans/:planId, PUT} route"}
{"timestamp":"2026-10-23T00:15:41.970Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/plans/:planId, DELETE} route"}
{"timestamp":"2026-10-23T00:15:41.970Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/subscriptions/businesses/:businessId/subscription, POST} route"}
{"timestamp":"2026-10-23T00:15:41.970Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/subscriptions, GET} route"}
{"timestamp":"2026-10-23T00:15:41.970Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/subscriptions/businesses/:businessId/subscription, GET} route"}
{"timestamp":"2026-10-23T00:15:41.970Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/subscriptions/businesses/:businessId/subscription, PUT} route"}
{"timestamp":"2026-10-23T00:15:41.971Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/subscriptions/businesses/:businessId/subscription, DELETE} route"}
{"timestamp":"2026-10-23T00:15:41.971Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/subscriptions/businesses/:businessId/subscription/limits, GET} route"}
{"timestamp":"2026-10-23T00:15:41.971Z","level":"log","context":"RoutesResolver","message":"HealthController {/health}:"}
{"timestamp":"2026-10-23T00:15:41.971Z","level":"log","context":"RouterExplorer","message":"Mapped {/health, GET} route"}
{"timestamp":"2026-10-23T00:15:41.971Z","level":"log","context":"RouterExplorer","message":"Mapped {/health/test-logs, GET} route"}
{"timestamp":"2026-10-23T00:15:41.971Z","level":"log","context":"RoutesResolver","message":"AzureAdController {/azure-ad}:"}
{"timestamp":"2026-10-23T00:15:41.971Z","level":"log","context":"RouterExplorer","message":"Mapped {/azure-ad/config, POST} route"}
{"timestamp":"2026-10-23T00:15:41.971Z","level":"log","context":"RouterExplorer","message":"Mapped {/azure-ad/config, GET} route"}
{"timestamp":"2026-10-23T00:15:41.972Z","level":"log","context":"RouterExplorer","message":"Mapped {/azure-ad/test-connection, POST} route"}
{"timestamp":"2026-10-23T00:15:41.972Z","level":"log","context":"RouterExplorer","message":"Mapped {/azure-ad/sync, POST} route"}
{"timestamp":"2026-10-23T00:15:41.972Z","level":"log","context":"RoutesResolver","message":"ThreatsController {/threats}:"}
{"timestamp":"2026-10-23T00:15:41.972Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats, POST} route"}
{"timestamp":"2026-10-23T00:15:41.972Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats, GET} route"}
{"timestamp":"2026-10-23T00:15:41.972Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/chart-data, GET} route"}
{"timestamp":"2026-10-23T00:15:41.972Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/claude-search, POST} route"}
{"timestamp":"2026-10-23T00:15:41.973Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/claude-latest, POST} route"}
{"timestamp":"2026-10-23T00:15:41.973Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/claude-trending, POST} route"}
{"timestamp":"2026-10-23T00:15:41.973Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/claude-categories, POST} route"}
{"timestamp":"2026-10-23T00:15:41.973Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/claude-manual-search, POST} route"}
{"timestamp":"2026-10-23T00:15:41.973Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/claude-quick-search, POST} route"}
{"timestamp":"2026-10-23T00:15:41.973Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/scheduler-status, GET} route"}
{"timestamp":"2026-10-23T00:15:41.974Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/health-check, GET} route"}
{"timestamp":"2026-10-23T00:15:41.974Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/pause-scheduler, POST} route"}
{"timestamp":"2026-10-23T00:15:41.974Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/:id, GET} route"}
{"timestamp":"2026-10-23T00:15:41.974Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/:id, PATCH} route"}
{"timestamp":"2026-10-23T00:15:41.974Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/:id, DELETE} route"}
{"timestamp":"2026-10-23T00:15:41.974Z","level":"log","context":"RoutesResolver","message":"DomainController {/domains}:"}
{"timestamp":"2026-10-23T00:15:41.974Z","level":"log","context":"RouterExplorer","message":"Mapped {/domains, GET} route"}
{"timestamp":"2026-10-23T00:15:41.975Z","level":"log","context":"RouterExplorer","message":"Mapped {/domains/:id, GET} route"}
{"timestamp":"2026-10-23T00:15:41.975Z","level":"log","context":"RouterExplorer","message":"Mapped {/domains, POST} route"}
{"timestamp":"2026-10-23T00:15:41.975Z","level":"log","context":"RouterExplorer","message":"Mapped {/domains/:id, PUT} route"}
{"timestamp":"2026-10-23T00:15:41.975Z","level":"log","context":"RouterExplorer","message":"Mapped {/domains/:id, DELETE} route"}
{"timestamp":"2026-10-23T00:15:41.975Z","level":"log","context":"RouterExplorer","message":"Mapped {/domains/seed, POST} route"}
{"timestamp":"2026-10-23T00:15:41.975Z","level":"log","context":"RoutesResolver","message":"MspSubscriptionController {/msp-subscription}:"}
{"timestamp":"2026-10-23T00:15:41.976Z","level":"log","context":"RouterExplorer","message":"Mapped {/msp-subscription/current, GET} route"}
{"timestamp":"2026-10-23T00:15:41.976Z","level":"log","context":"RouterExplorer","message":"Mapped {/msp-subscription/invoices, GET} route"}
{"timestamp":"2026-10-23T00:15:41.976Z","level":"log","context":"RouterExplorer","message":"Mapped {/msp-subscription/invoice/:invoiceId/pdf, GET} route"}
{"timestamp":"2026-10-23T00:15:41.976Z","level":"log","context":"RoutesResolver","message":"MspSubscriptionController {/api/msp-subscription}:"}
{"timestamp":"2026-10-23T00:15:41.976Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/msp-subscription/current, GET} route"}
{"timestamp":"2026-10-23T00:15:41.976Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/msp-subscription/invoices, GET} route"}
{"timestamp":"2026-10-23T00:15:41.976Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/msp-subscription/invoice/:invoiceId/pdf, GET} route"}
{"timestamp":"2026-10-23T00:15:42.054Z","level":"log","context":"NestApplication","message":"Nest application successfully started"}
{"timestamp":"2026-10-23T00:15:42.072Z","level":"log","context":"Bootstrap","message":"Users API successfully started on port 3842"}
{"timestamp":"2026-10-23T00:15:42.072Z","level":"log","context":"SeedService","message":"🌱 Starting database seeding..."}
{"timestamp":"2026-10-23T00:15:42.079Z","level":"log","context":"SeedService","message":"Admin account already exists, skipping seed"}
{"timestamp":"2026-10-23T00:15:42.081Z","level":"log","context":"SeedService","message":"Reseller account already exists, skipping seed"}
{"timestamp":"2026-10-23T00:15:42.083Z","level":"log","context":"SeedService","message":"MSP account already exists, skipping seed"}
{"timestamp":"2026-10-23T00:15:42.083Z","level":"log","context":"SeedService","message":"✅ Database seeding completed successfully"}
{"timestamp":"2026-10-23T00:15:42.124Z","level":"log","context":"UsersApiController","message":"Hello endpoint accessed"}
{"timestamp":"2026-10-23T01:46:28.931Z","level":"warn","context":"LegacyRouteConverter","message":"Unsupported route path: \"/lp/*\". In previous versions, the symbols ?, *, and + were used to denote optional or repeating path parameters. The latest version of \"path-to-regexp\" now requires the use of named parameters. For example, instead of using a route like /users/* to capture all routes starting with \"/users\", you should use /users/*path. For more details, refer to the migration guide. Attempting to auto-convert..."}
{"timestamp":"2026-10-23T01:46:28.967Z","level":"log","context":"Bootstrap","message":"Starting Users API on port 3842..."}
{"timestamp":"2026-10-23T01:46:28.971Z","level":"log","context":"RoutesResolver","message":"UsersApiController {/}:"}
{"timestamp":"2026-10-23T01:46:28.974Z","level":"log","context":"RouterExplorer","message":"Mapped {/, GET} route"}
{"timestamp":"2026-10-23T01:46:28.974Z","level":"log","context":"RoutesResolver","message":"AuthController {/auth}:"}
{"timestamp":"2026-10-23T01:46:28.975Z","level":"log","context":"RouterExplorer","message":"Mapped {/auth/login, POST} route"}
{"timestamp":"2026-10-23T01:46:28.976Z","level":"log","context":"RouterExplorer","message":"Mapped {/auth/admin/login, POST} route"}
{"timestamp":"2026-10-23T01:46:28.976Z","level":"log","context":"RouterExplorer","message":"Mapped {/auth/send-otp, POST} route"}
{"timestamp":"2026-10-23T01:46:28.977Z","level":"log","context":"RouterExplorer","message":"Mapped {/auth/verify-otp, POST} route"}
{"timestamp":"2026-10-23T01:46:28.977Z","level":"log","context":"RouterExplorer","message":"Mapped {/auth/signup, POST} route"}
{"timestamp":"2026-10-23T01:46:28.978Z","level":"log","context":"RouterExplorer","message":"Mapped {/auth/subscription-status, GET} route"}
{"timestamp":"2026-10-23T01:46:28.978Z","level":"log","context":"RoutesResolver","message":"AdminMspController {/admin/msp}:"}
{"timestamp":"2026-10-23T01:46:28.978Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/msp, GET} route"}
{"timestamp":"2026-10-23T01:46:28.979Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/msp/:id, GET} route"}
{"timestamp":"2026-10-23T01:46:28.980Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/msp, POST} route"}
{"timestamp":"2026-10-23T01:46:28.980Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/msp/:id, PUT} route"}
{"timestamp":"2026-10-23T01:46:28.980Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/msp/:id, DELETE} route"}
{"timestamp":"2026-10-23T01:46:28.980Z","level":"log","context":"RoutesResolver","message":"AdminLicenseController {/admin/licenses}:"}
{"timestamp":"2026-10-23T01:46:28.981Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/licenses/summary, GET} route"}
{"timestamp":"2026-10-23T01:46:28.981Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/licenses/msp/:mspId, GET} route"}
{"timestamp":"2026-10-23T01:46:28.981Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/licenses/msp/:mspId, PUT} route"}
{"timestamp":"2026-10-23T01:46:28.981Z","level":"log","context":"RoutesResolver","message":"AdminImpersonationController {/admin/impersonation}:"}
{"timestamp":"2026-10-23T01:46:28.984Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/impersonation/msp-users, GET} route"}
{"timestamp":"2026-10-23T01:46:28.984Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/impersonation/impersonate, POST} route"}
{"timestamp":"2026-10-23T01:46:28.985Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/impersonation/stop, POST} route"}
{"timestamp":"2026-10-23T01:46:28.985Z","level":"log","context":"RoutesResolver","message":"AdminAiUsageController {/admin/ai-usage}:"}
{"timestamp":"2026-10-23T01:46:28.985Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-usage, GET} route"}
{"timestamp":"2026-10-23T01:46:28.985Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-usage/business/:businessId, GET} route"}
{"timestamp":"2026-10-23T01:46:28.985Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-usage/report/monthly, GET} route"}
{"timestamp":"2026-10-23T01:46:28.986Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-usage/pricing, GET} route"}
{"timestamp":"2026-10-23T01:46:28.986Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-usage/pricing, POST} route"}
{"timestamp":"2026-10-23T01:46:28.986Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-usage/credit/:businessId, PUT} route"}
{"timestamp":"2026-10-23T01:46:28.986Z","level":"log","context":"RoutesResolver","message":"AdminAiUsageController {/api/admin/ai-usage}:"}
{"timestamp":"2026-10-23T01:46:28.986Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-usage, GET} route"}
{"timestamp":"2026-10-23T01:46:28.987Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-usage/business/:businessId, GET} route"}
{"timestamp":"2026-10-23T01:46:28.987Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-usage/report/monthly, GET} route"}
{"timestamp":"2026-10-23T01:46:28.987Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-usage/pricing, GET} route"}
{"timestamp":"2026-10-23T01:46:28.987Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-usage/pricing, POST} route"}
{"timestamp":"2026-10-23T01:46:28.987Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-usage/credit/:businessId, PUT} route"}
{"timestamp":"2026-10-23T01:46:28.987Z","level":"log","context":"RoutesResolver","message":"AdminAiModelController {/admin/ai-models}:"}
{"timestamp":"2026-10-23T01:46:28.988Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models, POST} route"}
{"timestamp":"2026-10-23T01:46:28.988Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models, GET} route"}
{"timestamp":"2026-10-23T01:46:28.988Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/default, GET} route"}
{"timestamp":"2026-10-23T01:46:28.988Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/:id, GET} route"}
{"timestamp":"2026-10-23T01:46:28.988Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/:id, PUT} route"}
{"timestamp":"2026-10-23T01:46:28.988Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/:id, DELETE} route"}
{"timestamp":"2026-10-23T01:46:28.989Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/:id/set-default, POST} route"}
{"timestamp":"2026-10-23T01:46:28.989Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/assign-to-business, POST} route"}
{"timestamp":"2026-10-23T01:46:28.989Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/business/:businessId, GET} route"}
{"timestamp":"2026-10-23T01:46:28.989Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/:id/businesses, GET} route"}
{"timestamp":"2026-10-23T01:46:28.990Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/initialize-defaults, POST} route"}
{"timestamp":"2026-10-23T01:46:28.990Z","level":"log","context":"RoutesResolver","message":"AdminAiModelController {/api/admin/ai-models}:"}
{"timestamp":"2026-10-23T01:46:28.990Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models, POST} route"}
{"timestamp":"2026-10-23T01:46:28.990Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models, GET} route"}
{"timestamp":"2026-10-23T01:46:28.990Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/default, GET} route"}
{"timestamp":"2026-10-23T01:46:28.990Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/:id, GET} route"}
{"timestamp":"2026-10-23T01:46:28.990Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/:id, PUT} route"}
{"timestamp":"2026-10-23T01:46:28.991Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/:id, DELETE} route"}
{"timestamp":"2026-10-23T01:46:28.991Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/:id/set-default, POST} route"}
{"timestamp":"2026-10-23T01:46:28.991Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/assign-to-business, POST} route"}
{"timestamp":"2026-10-23T01:46:28.991Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/business/:businessId, GET} route"}
{"timestamp":"2026-10-23T01:46:28.991Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/:id/businesses, GET} route"}
{"timestamp":"2026-10-23T01:46:28.991Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/initialize-defaults, POST} route"}
{"timestamp":"2026-10-23T01:46:28.992Z","level":"log","context":"RoutesResolver","message":"AdminBusinessController {/admin/businesses}:"}
{"timestamp":"2026-10-23T01:46:28.992Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/businesses, GET} route"}
{"timestamp":"2026-10-23T01:46:28.992Z","level":"log","context":"RoutesResolver","message":"ResellerManagementController {/admin/resellers}:"}
{"timestamp":"2026-10-23T01:46:28.992Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/resellers, GET} route"}
{"timestamp":"2026-10-23T01:46:28.992Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/resellers/create-default, POST} route"}
{"timestamp":"2026-10-23T01:46:28.992Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/resellers, POST} route"}
{"timestamp":"2026-10-23T01:46:28.993Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/resellers/:id/toggle-status, PUT} route"}
{"timestamp":"2026-10-23T01:46:28.993Z","level":"log","context":"RoutesResolver","message":"SubscriptionController {/subscription}:"}
{"timestamp":"2026-10-23T01:46:28.993Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/plans, GET} route"}
{"timestamp":"2026-10-23T01:46:28.993Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/calculate-price, POST} route"}
{"timestamp":"2026-10-23T01:46:28.993Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/current, GET} route"}
{"timestamp":"2026-10-23T01:46:28.993Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/create, POST} route"}
{"timestamp":"2026-10-23T01:46:28.994Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/:id, PUT} route"}
{"timestamp":"2026-10-23T01:46:28.994Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/:id/cancel, DELETE} route"}
{"timestamp":"2026-10-23T01:46:28.994Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/sync/:stripeSubscriptionId, POST} route"}
{"timestamp":"2026-10-23T01:46:28.994Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/payments, GET} route"}
{"timestamp":"2026-10-23T01:46:28.994Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/payments/stats, GET} route"}
{"timestamp":"2026-10-23T01:46:28.994Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/payment/:id, GET} route"}
{"timestamp":"2026-10-23T01:46:28.994Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/payment-methods/attach, POST} route"}
{"timestamp":"2026-10-23T01:46:28.995Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/payment-methods/:paymentMethodId, DELETE} route"}
{"timestamp":"2026-10-23T01:46:28.995Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/payment-methods, GET} route"}
{"timestamp":"2026-10-23T01:46:28.995Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/setup-intent, POST} route"}
{"timestamp":"2026-10-23T01:46:28.995Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/update-employee-count, POST} route"}
{"timestamp":"2026-10-23T01:46:28.995Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/retry-payment/:subscriptionId, POST} route"}
{"timestamp":"2026-10-23T01:46:28.995Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/invoice/:invoiceId/pdf, GET} route"}
{"timestamp":"2026-10-23T01:46:28.996Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/preview-upgrade, POST} route"}
{"timestamp":"2026-10-23T01:46:28.996Z","level":"log","context":"RoutesResolver","message":"SubscriptionController {/api/subscription}:"}
{"timestamp":"2026-10-23T01:46:28.996Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/plans, GET} route"}
{"timestamp":"2026-10-23T01:46:28.996Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/calculate-price, POST} route"}
{"timestamp":"2026-10-23T01:46:28.996Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/current, GET} route"}
{"timestamp":"2026-10-23T01:46:28.996Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/create, POST} route"}
{"timestamp":"2026-10-23T01:46:28.996Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/:id, PUT} route"}
{"timestamp":"2026-10-23T01:46:28.997Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/:id/cancel, DELETE} route"}
{"timestamp":"2026-10-23T01:46:28.997Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/sync/:stripeSubscriptionId, POST} route"}
{"timestamp":"2026-10-23T01:46:28.997Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/payments, GET} route"}
{"timestamp":"2026-10-23T01:46:28.997Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/payments/stats, GET} route"}
{"timestamp":"2026-10-23T01:46:28.997Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/payment/:id, GET} route"}
{"timestamp":"2026-10-23T01:46:28.997Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/payment-methods/attach, POST} route"}
{"timestamp":"2026-10-23T01:46:28.997Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/payment-methods/:paymentMethodId, DELETE} route"}
{"timestamp":"2026-10-23T01:46:28.998Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/payment-methods, GET} route"}
{"timestamp":"2026-10-23T01:46:28.998Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/setup-intent, POST} route"}
{"timestamp":"2026-10-23T01:46:28.998Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/update-employee-count, POST} route"}
{"timestamp":"2026-10-23T01:46:28.998Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/retry-payment/:subscriptionId, POST} route"}
{"timestamp":"2026-10-23T01:46:28.998Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/invoice/:invoiceId/pdf, GET} route"}
{"timestamp":"2026-10-23T01:46:28.998Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/preview-upgrade, POST} route"}
{"timestamp":"2026-10-23T01:46:28.998Z","level":"log","context":"RoutesResolver","message":"StripeWebhookController {/stripe/webhook}:"}
{"timestamp":"2026-10-23T01:46:28.999Z","level":"log","context":"RouterExplorer","message":"Mapped {/stripe/webhook/test, GET} route"}
{"timestamp":"2026-10-23T01:46:28.999Z","level":"log","context":"RouterExplorer","message":"Mapped {/stripe/webhook, POST} route"}
{"timestamp":"2026-10-23T01:46:28.999Z","level":"log","context":"RoutesResolver","message":"EmailController {/email-templates}:"}
{"timestamp":"2026-10-23T01:46:28.999Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates/test, POST} route"}
{"timestamp":"2026-10-23T01:46:28.999Z","level":"log","context":"RoutesResolver","message":"EmployeeController {/employees}:"}
{"timestamp":"2026-10-23T01:46:28.999Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees, POST} route"}
{"timestamp":"2026-10-23T01:46:28.999Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees, GET} route"}
{"timestamp":"2026-10-23T01:46:29.000Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees/export, GET} route"}
{"timestamp":"2026-10-23T01:46:29.000Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees/risk-stats, GET} route"}
{"timestamp":"2026-10-23T01:46:29.000Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees/:id, GET} route"}
{"timestamp":"2026-10-23T01:46:29.000Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees/:id, PUT} route"}
{"timestamp":"2026-10-23T01:46:29.000Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees/:id, DELETE} route"}
{"timestamp":"2026-10-23T01:46:29.000Z","level":"log","context":"RoutesResolver","message":"GroupController {/groups}:"}
{"timestamp":"2026-10-23T01:46:29.000Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups, POST} route"}
{"timestamp":"2026-10-23T01:46:29.001Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups, GET} route"}
{"timestamp":"2026-10-23T01:46:29.001Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups/standard, GET} route"}
{"timestamp":"2026-10-23T01:46:29.001Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups/:id, GET} route"}
{"timestamp":"2026-10-23T01:46:29.001Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups/:id, PUT} route"}
{"timestamp":"2026-10-23T01:46:29.001Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups/:id, DELETE} route"}
{"timestamp":"2026-10-23T01:46:29.001Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups/:id/info, GET} route"}
{"timestamp":"2026-10-23T01:46:29.001Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups/:id/with-employees, GET} route"}
{"timestamp":"2026-10-23T01:46:29.001Z","level":"log","context":"RoutesResolver","message":"SenderProfileController {/sender-profiles}:"}
{"timestamp":"2026-10-23T01:46:29.002Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles, GET} route"}
{"timestamp":"2026-10-23T01:46:29.002Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles/:id, GET} route"}
{"timestamp":"2026-10-23T01:46:29.002Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles, POST} route"}
{"timestamp":"2026-10-23T01:46:29.002Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles/:id, PUT} route"}
{"timestamp":"2026-10-23T01:46:29.002Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles/:id, DELETE} route"}
{"timestamp":"2026-10-23T01:46:29.002Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles/:id/verify-domain, POST} route"}
{"timestamp":"2026-10-23T01:46:29.003Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles/domain-verification, GET} route"}
{"timestamp":"2026-10-23T01:46:29.003Z","level":"log","context":"RoutesResolver","message":"EmailTemplateController {/email-templates}:"}
{"timestamp":"2026-10-23T01:46:29.003Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates, GET} route"}
{"timestamp":"2026-10-23T01:46:29.003Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates/:id, GET} route"}
{"timestamp":"2026-10-23T01:46:29.003Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates, POST} route"}
{"timestamp":"2026-10-23T01:46:29.003Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates/:id, PUT} route"}
{"timestamp":"2026-10-23T01:46:29.003Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates/:id, DELETE} route"}
{"timestamp":"2026-10-23T01:46:29.004Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates/:id/duplicate, POST} route"}
{"timestamp":"2026-10-23T01:46:29.004Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates/:id/preview, GET} route"}
{"timestamp":"2026-10-23T01:46:29.004Z","level":"log","context":"RoutesResolver","message":"ScenarioController {/scenarios}:"}
{"timestamp":"2026-10-23T01:46:29.004Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios, POST} route"}
{"timestamp":"2026-10-23T01:46:29.004Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios/generate-content, POST} route"}
{"timestamp":"2026-10-23T01:46:29.004Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios, GET} route"}
{"timestamp":"2026-10-23T01:46:29.004Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios/:id, GET} route"}
{"timestamp":"2026-10-23T01:46:29.005Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios/:id, PUT} route"}
{"timestamp":"2026-10-23T01:46:29.005Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios/:id, DELETE} route"}
{"timestamp":"2026-10-23T01:46:29.005Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios/generate-from-json, POST} route"}
{"timestamp":"2026-10-23T01:46:29.005Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios/:id/save-as-custom-scenario, POST} route"}
{"timestamp":"2026-10-23T01:46:29.005Z","level":"log","context":"RoutesResolver","message":"CampaignController {/campaigns}:"}
{"timestamp":"2026-10-23T01:46:29.005Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns, POST} route"}
{"timestamp":"2026-10-23T01:46:29.005Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns, GET} route"}
{"timestamp":"2026-10-23T01:46:29.006Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id, GET} route"}
{"timestamp":"2026-10-23T01:46:29.006Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id/details, GET} route"}
{"timestamp":"2026-10-23T01:46:29.006Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id/employees, GET} route"}
{"timestamp":"2026-10-23T01:46:29.006Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id, PATCH} route"}
{"timestamp":"2026-10-23T01:46:29.006Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id/start, POST} route"}
{"timestamp":"2026-10-23T01:46:29.006Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id/stop, POST} route"}
{"timestamp":"2026-10-23T01:46:29.007Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id/duplicate, POST} route"}
{"timestamp":"2026-10-23T01:46:29.007Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id, DELETE} route"}
{"timestamp":"2026-10-23T01:46:29.007Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/auto-generate-program, POST} route"}
{"timestamp":"2026-10-23T01:46:29.007Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/generate-from-threat-intelligence, POST} route"}
{"timestamp":"2026-10-23T01:46:29.007Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id/risk-score, GET} route"}
{"timestamp":"2026-10-23T01:46:29.007Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/recalculate-risk-scores, POST} route"}
{"timestamp":"2026-10-23T01:46:29.007Z","level":"log","context":"RoutesResolver","message":"CampaignController {/api/campaigns}:"}
{"timestamp":"2026-10-23T01:46:29.008Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns, POST} route"}
{"timestamp":"2026-10-23T01:46:29.008Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns, GET} route"}
{"timestamp":"2026-10-23T01:46:29.008Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id, GET} route"}
{"timestamp":"2026-10-23T01:46:29.008Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id/details, GET} route"}
{"timestamp":"2026-10-23T01:46:29.008Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id/employees, GET} route"}
{"timestamp":"2026-10-23T01:46:29.008Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id, PATCH} route"}
{"timestamp":"2026-10-23T01:46:29.008Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id/start, POST} route"}
{"timestamp":"2026-10-23T01:46:29.009Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id/stop, POST} route"}
{"timestamp":"2026-10-23T01:46:29.009Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id/duplicate, POST} route"}
{"timestamp":"2026-10-23T01:46:29.009Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id, DELETE} route"}
{"timestamp":"2026-10-23T01:46:29.009Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/auto-generate-program, POST} route"}
{"timestamp":"2026-10-23T01:46:29.009Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/generate-from-threat-intelligence, POST} route"}
{"timestamp":"2026-10-23T01:46:29.009Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id/risk-score, GET} route"}
{"timestamp":"2026-10-23T01:46:29.009Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/recalculate-risk-scores, POST} route"}
{"timestamp":"2026-10-23T01:46:29.009Z","level":"log","context":"RoutesResolver","message":"NotificationsController {/notifications}:"}
{"timestamp":"2026-10-23T01:46:29.010Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications, POST} route"}
{"timestamp":"2026-10-23T01:46:29.010Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications, GET} route"}
{"timestamp":"2026-10-23T01:46:29.010Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/unread, GET} route"}
{"timestamp":"2026-10-23T01:46:29.010Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/unread-count, GET} route"}
{"timestamp":"2026-10-23T01:46:29.010Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/:id, GET} route"}
{"timestamp":"2026-10-23T01:46:29.011Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/:id, PATCH} route"}
{"timestamp":"2026-10-23T01:46:29.011Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/:id/read, PATCH} route"}
{"timestamp":"2026-10-23T01:46:29.011Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/mark-all-read, PATCH} route"}
{"timestamp":"2026-10-23T01:46:29.011Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/:id, DELETE} route"}
{"timestamp":"2026-10-23T01:46:29.011Z","level":"log","context":"RoutesResolver","message":"LandingPageController {/lp}:"}
{"timestamp":"2026-10-23T01:46:29.012Z","level":"log","context":"RouterExplorer","message":"Mapped {/lp/image, GET} route"}
{"timestamp":"2026-10-23T01:46:29.012Z","level":"log","context":"RouterExplorer","message":"Mapped {/lp/learning, GET} route"}
{"timestamp":"2026-10-23T01:46:29.012Z","level":"log","context":"RouterExplorer","message":"Mapped {/lp/submit, POST} route"}
{"timestamp":"2026-10-23T01:46:29.012Z","level":"log","context":"RouterExplorer","message":"Mapped {/lp/test, GET} route"}
{"timestamp":"2026-10-23T01:46:29.012Z","level":"warn","context":"LegacyRouteConverter","message":"Unsupported route path: \"/lp/*\". In previous versions, the symbols ?, *, and + were used to denote optional or repeating path parameters. The latest version of \"path-to-regexp\" now requires the use of named parameters. For example, instead of using a route like /users/* to capture all routes starting with \"/users\", you should use /users/*path. For more details, refer to the migration guide. Attempting to auto-convert..."}
{"timestamp":"2026-10-23T01:46:29.013Z","level":"log","context":"RouterExplorer","message":"Mapped {/lp/*, ALL} route"}
{"timestamp":"2026-10-23T01:46:29.013Z","level":"log","context":"RoutesResolver","message":"SupportController {/support}:"}
{"timestamp":"2026-10-23T01:46:29.013Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets, POST} route"}
{"timestamp":"2026-10-23T01:46:29.013Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets, GET} route"}
{"timestamp":"2026-10-23T01:46:29.013Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets/:id, GET} route"}
{"timestamp":"2026-10-23T01:46:29.014Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets/:id, PATCH} route"}
{"timestamp":"2026-10-23T01:46:29.014Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets/:id, DELETE} route"}
{"timestamp":"2026-10-23T01:46:29.014Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets/:id/messages, POST} route"}
{"timestamp":"2026-10-23T01:46:29.014Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets/:id/close, POST} route"}
{"timestamp":"2026-10-23T01:46:29.014Z","level":"log","context":"RoutesResolver","message":"BusninessMetricsController {/business-metrics}:"}
{"timestamp":"2026-10-23T01:46:29.014Z","level":"log","context":"RouterExplorer","message":"Mapped {/business-metrics, GET} route"}
{"timestamp":"2026-10-23T01:46:29.014Z","level":"log","context":"RoutesResolver","message":"UsersController {/users}:"}
{"timestamp":"2026-10-23T01:46:29.015Z","level":"log","context":"RouterExplorer","message":"Mapped {/users/:id, PUT} route"}
{"timestamp":"2026-10-23T01:46:29.015Z","level":"log","context":"RouterExplorer","message":"Mapped {/users/settings, GET} route"}
{"timestamp":"2026-10-23T01:46:29.015Z","level":"log","context":"RouterExplorer","message":"Mapped {/users/settings/general, PUT} route"}
{"timestamp":"2026-10-23T01:46:29.015Z","level":"log","context":"RouterExplorer","message":"Mapped {/users/company/settings, PUT} route"}
{"timestamp":"2026-10-23T01:46:29.015Z","level":"log","context":"RouterExplorer","message":"Mapped {/users/change-password, POST} route"}
{"timestamp":"2026-10-23T01:46:29.015Z","level":"log","context":"RouterExplorer","message":"Mapped {/users/localization/settings, PUT} route"}
{"timestamp":"2026-10-23T01:46:29.016Z","level":"log","context":"RoutesResolver","message":"PartnerController {/partner}:"}
{"timestamp":"2026-10-23T01:46:29.016Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses, POST} route"}
{"timestamp":"2026-10-23T01:46:29.016Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses, GET} route"}
{"timestamp":"2026-10-23T01:46:29.016Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses/:id, GET} route"}
{"timestamp":"2026-10-23T01:46:29.016Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses/:id, PUT} route"}
{"timestamp":"2026-10-23T01:46:29.016Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses/:id, DELETE} route"}
{"timestamp":"2026-10-23T01:46:29.017Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses/:id/impersonate, POST} route"}
{"timestamp":"2026-10-23T01:46:29.017Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses/stop-impersonation, POST} route"}
{"timestamp":"2026-10-23T01:46:29.017Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/license-usage, GET} route"}
{"timestamp":"2026-10-23T01:46:29.017Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/invoices, POST} route"}
{"timestamp":"2026-10-23T01:46:29.017Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/invoices, GET} route"}
{"timestamp":"2026-10-23T01:46:29.017Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/invoices/:id, GET} route"}
{"timestamp":"2026-10-23T01:46:29.017Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/invoices/:id, PUT} route"}
{"timestamp":"2026-10-23T01:46:29.018Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/invoices/:id, DELETE} route"}
{"timestamp":"2026-10-23T01:46:29.018Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/invoices/:id/mark-paid, PUT} route"}
{"timestamp":"2026-10-23T01:46:29.018Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/onboarding/generate-token, POST} route"}
{"timestamp":"2026-10-23T01:46:29.018Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/dashboard, GET} route"}
{"timestamp":"2026-10-23T01:46:29.018Z","level":"log","context":"RoutesResolver","message":"MspSubscriptionController {/partner/msp-subscriptions}:"}
{"timestamp":"2026-10-23T01:46:29.018Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/plans, POST} route"}
{"timestamp":"2026-10-23T01:46:29.018Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/plans, GET} route"}
{"timestamp":"2026-10-23T01:46:29.019Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/plans/:planId, GET} route"}
{"timestamp":"2026-10-23T01:46:29.019Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/plans/:planId, PUT} route"}
{"timestamp":"2026-10-23T01:46:29.019Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/plans/:planId, DELETE} route"}
{"timestamp":"2026-10-23T01:46:29.019Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/businesses/:businessId/subscription, POST} route"}
{"timestamp":"2026-10-23T01:46:29.019Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions, GET} route"}
{"timestamp":"2026-10-23T01:46:29.019Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/businesses/:businessId/subscription, GET} route"}
{"timestamp":"2026-10-23T01:46:29.020Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/businesses/:businessId/subscription, PUT} route"}
{"timestamp":"2026-10-23T01:46:29.020Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/businesses/:businessId/subscription, DELETE} route"}
{"timestamp":"2026-10-23T01:46:29.020Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/businesses/:businessId/subscription/limits, GET} route"}
{"timestamp":"2026-10-23T01:46:29.020Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/businesses/:businessId/subscription/change-plan, PUT} route"}
{"timestamp":"2026-10-23T01:46:29.020Z","level":"log","context":"RoutesResolver","message":"OnboardingController {/onboarding}:"}
{"timestamp":"2026-10-23T01:46:29.020Z","level":"log","context":"RouterExplorer","message":"Mapped {/onboarding/validate/:token, GET} route"}
{"timestamp":"2026-10-23T01:46:29.020Z","level":"log","context":"RouterExplorer","message":"Mapped {/onboarding/complete/:token, POST} route"}
{"timestamp":"2026-10-23T01:46:29.021Z","level":"log","context":"RoutesResolver","message":"ResellerController {/reseller}:"}
{"timestamp":"2026-10-23T01:46:29.021Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/businesses, POST} route"}
{"timestamp":"2026-10-23T01:46:29.021Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/businesses, GET} route"}
{"timestamp":"2026-10-23T01:46:29.021Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/businesses/:id, GET} route"}
{"timestamp":"2026-10-23T01:46:29.021Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/businesses/:id, PUT} route"}
{"timestamp":"2026-10-23T01:46:29.021Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/businesses/:id, DELETE} route"}
{"timestamp":"2026-10-23T01:46:29.022Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/license-usage, GET} route"}
{"timestamp":"2026-10-23T01:46:29.022Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/invoices, POST} route"}
{"timestamp":"2026-10-23T01:46:29.022Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/invoices, GET} route"}
{"timestamp":"2026-10-23T01:46:29.022Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/invoices/:id, GET} route"}
{"timestamp":"2026-10-23T01:46:29.022Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/invoices/:id, PUT} route"}
{"timestamp":"2026-10-23T01:46:29.022Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/invoices/:id, DELETE} route"}
{"timestamp":"2026-10-23T01:46:29.022Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/invoices/:id/mark-paid, PUT} route"}
{"timestamp":"2026-10-23T01:46:29.023Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/onboarding/generate-token, POST} route"}
{"timestamp":"2026-10-23T01:46:29.023Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/dashboard, GET} route"}
{"timestamp":"2026-10-23T01:46:29.023Z","level":"log","context":"RoutesResolver","message":"ResellerSubscriptionController {/reseller}:"}
{"timestamp":"2026-10-23T01:46:29.023Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/plans, POST} route"}
{"timestamp":"2026-10-23T01:46:29.023Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/plans, GET} route"}
{"timestamp":"2026-10-23T01:46:29.023Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/plans/:planId, GET} route"}
{"timestamp":"2026-10-23T01:46:29.023Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/plans/:planId, PUT} route"}
{"timestamp":"2026-10-23T01:46:29.024Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/plans/:planId, DELETE} route"}
{"timestamp":"2026-10-23T01:46:29.024Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/subscriptions/businesses/:businessId/subscription, POST} route"}
{"timestamp":"2026-10-23T01:46:29.024Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/subscriptions, GET} route"}
{"timestamp":"2026-10-23T01:46:29.024Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/subscriptions/businesses/:businessId/subscription, GET} route"}
{"timestamp":"2026-10-23T01:46:29.024Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/subscriptions/businesses/:businessId/subscription, PUT} route"}
{"timestamp":"2026-10-23T01:46:29.024Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/subscriptions/businesses/:businessId/subscription, DELETE} route"}
{"timestamp":"2026-10-23T01:46:29.025Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/subscriptions/businesses/:businessId/subscription/limits, GET} route"}
{"timestamp":"2026-10-23T01:46:29.025Z","level":"log","context":"RoutesResolver","message":"HealthController {/health}:"}
{"timestamp":"2026-10-23T01:46:29.025Z","level":"log","context":"RouterExplorer","message":"Mapped {/health, GET} route"}
{"timestamp":"2026-10-23T01:46:29.025Z","level":"log","context":"RouterExplorer","message":"Mapped {/health/test-logs, GET} route"}
{"timestamp":"2026-10-23T01:46:29.025Z","level":"log","context":"RoutesResolver","message":"AzureAdController {/azure-ad}:"}
{"timestamp":"2026-10-23T01:46:29.025Z","level":"log","context":"RouterExplorer","message":"Mapped {/azure-ad/config, POST} route"}
{"timestamp":"2026-10-23T01:46:29.025Z","level":"log","context":"RouterExplorer","message":"Mapped {/azure-ad/config, GET} route"}
{"timestamp":"2026-10-23T01:46:29.025Z","level":"log","context":"RouterExplorer","message":"Mapped {/azure-ad/test-connection, POST} route"}
{"timestamp":"2026-10-23T01:46:29.026Z","level":"log","context":"RouterExplorer","message":"Mapped {/azure-ad/sync, POST} route"}
{"timestamp":"2026-10-23T01:46:29.026Z","level":"log","context":"RoutesResolver","message":"ThreatsController {/threats}:"}
{"timestamp":"2026-10-23T01:46:29.026Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats, POST} route"}
{"timestamp":"2026-10-23T01:46:29.026Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats, GET} route"}
{"timestamp":"2026-10-23T01:46:29.026Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/chart-data, GET} route"}
{"timestamp":"2026-10-23T01:46:29.026Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/claude-search, POST} route"}
{"timestamp":"2026-10-23T01:46:29.026Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/claude-latest, POST} route"}
{"timestamp":"2026-10-23T01:46:29.027Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/claude-trending, POST} route"}
{"timestamp":"2026-10-23T01:46:29.027Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/claude-categories, POST} route"}
{"timestamp":"2026-10-23T01:46:29.027Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/claude-manual-search, POST} route"}
{"timestamp":"2026-10-23T01:46:29.027Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/claude-quick-search, POST} route"}
{"timestamp":"2026-10-23T01:46:29.027Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/scheduler-status, GET} route"}
{"timestamp":"2026-10-23T01:46:29.027Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/health-check, GET} route"}
{"timestamp":"2026-10-23T01:46:29.027Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/pause-scheduler, POST} route"}
{"timestamp":"2026-10-23T01:46:29.028Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/:id, GET} route"}
{"timestamp":"2026-10-23T01:46:29.028Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/:id, PATCH} route"}
{"timestamp":"2026-10-23T01:46:29.028Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/:id, DELETE} route"}
{"timestamp":"2026-10-23T01:46:29.028Z","level":"log","context":"RoutesResolver","message":"DomainController {/domains}:"}
{"timestamp":"2026-10-23T01:46:29.028Z","level":"log","context":"RouterExplorer","message":"Mapped {/domains, GET} route"}
{"timestamp":"2026-10-23T01:46:29.028Z","level":"log","context":"RouterExplorer","message":"Mapped {/domains/:id, GET} route"}
{"timestamp":"2026-10-23T01:46:29.029Z","level":"log","context":"RouterExplorer","message":"Mapped {/domains, POST} route"}
{"timestamp":"2026-10-23T01:46:29.029Z","level":"log","context":"RouterExplorer","message":"Mapped {/domains/:id, PUT} route"}
{"timestamp":"2026-10-23T01:46:29.029Z","level":"log","context":"RouterExplorer","message":"Mapped {/domains/:id, DELETE} route"}
{"timestamp":"2026-10-23T01:46:29.029Z","level":"log","context":"RouterExplorer","message":"Mapped {/domains/seed, POST} route"}
{"timestamp":"2026-10-23T01:46:29.029Z","level":"log","context":"RoutesResolver","message":"MspSubscriptionController {/msp-subscription}:"}
{"timestamp":"2026-10-23T01:46:29.029Z","level":"log","context":"RouterExplorer","message":"Mapped {/msp-subscription/current, GET} route"}
{"timestamp":"2026-10-23T01:46:29.029Z","level":"log","context":"RouterExplorer","message":"Mapped {/msp-subscription/invoices, GET} route"}
{"timestamp":"2026-10-23T01:46:29.030Z","level":"log","context":"RouterExplorer","message":"Mapped {/msp-subscription/invoice/:invoiceId/pdf, GET} route"}
{"timestamp":"2026-10-23T01:46:29.030Z","level":"log","context":"RoutesResolver","message":"MspSubscriptionController {/api/msp-subscription}:"}
{"timestamp":"2026-10-23T01:46:29.030Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/msp-subscription/current, GET} route"}
{"timestamp":"2026-10-23T01:46:29.030Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/msp-subscription/invoices, GET} route"}
{"timestamp":"2026-10-23T01:46:29.030Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/msp-subscription/invoice/:invoiceId/pdf, GET} route"}
{"timestamp":"2026-10-23T01:46:29.100Z","level":"log","context":"NestApplication","message":"Nest application successfully started"}
{"timestamp":"2026-10-23T01:46:29.106Z","level":"log","context":"Bootstrap","message":"Users API successfully started on port 3842"}
{"timestamp":"2026-10-23T01:46:29.107Z","level":"log","context":"SeedService","message":"🌱 Starting database seeding..."}
{"timestamp":"2026-10-23T01:46:29.112Z","level":"log","context":"SeedService","message":"Admin account already exists, skipping seed"}
{"timestamp":"2026-10-23T01:46:29.115Z","level":"log","context":"SeedService","message":"Reseller account already exists, skipping seed"}
{"timestamp":"2026-10-23T01:46:29.116Z","level":"log","context":"SeedService","message":"MSP account already exists, skipping seed"}
{"timestamp":"2026-10-23T01:46:29.116Z","level":"log","context":"SeedService","message":"✅ Database seeding completed successfully"}
{"timestamp":"2026-10-23T01:46:29.154Z","level":"log","context":"UsersApiController","message":"Hello endpoint accessed"}
{"timestamp":"2026-10-23T01:46:59.071Z","level":"log","context":"UsersApiController","message":"Hello endpoint accessed"}
{"timestamp":"2026-10-23T02:50:41.141Z","level":"log","context":"UsersApiController","message":"Hello endpoint accessed"}
{"timestamp":"2026-10-23T02:51:17.730Z","level":"log","context":"UsersApiController","message":"Hello endpoint accessed"}
{"timestamp":"2026-10-23T04:45:59.892Z","level":"warn","context":"LegacyRouteConverter","message":"Unsupported route path: \"/lp/*\". In previous versions, the symbols ?, *, and + were used to denote optional or repeating path parameters. The latest version of \"path-to-regexp\" now requires the use of named parameters. For example, instead of using a route like /users/* to capture all routes starting with \"/users\", you should use /users/*path. For more details, refer to the migration guide. Attempting to auto-convert..."}
{"timestamp":"2026-10-23T04:45:59.930Z","level":"log","context":"Bootstrap","message":"Starting Users API on port 3842..."}
{"timestamp":"2026-10-23T04:45:59.933Z","level":"log","context":"RoutesResolver","message":"UsersApiController {/}:"}
{"timestamp":"2026-10-23T04:45:59.936Z","level":"log","context":"RouterExplorer","message":"Mapped {/, GET} route"}
{"timestamp":"2026-10-23T04:45:59.937Z","level":"log","context":"RoutesResolver","message":"AuthController {/auth}:"}
{"timestamp":"2026-10-23T04:45:59.937Z","level":"log","context":"RouterExplorer","message":"Mapped {/auth/login, POST} route"}
{"timestamp":"2026-10-23T04:45:59.938Z","level":"log","context":"RouterExplorer","message":"Mapped {/auth/admin/login, POST} route"}
{"timestamp":"2026-10-23T04:45:59.939Z","level":"log","context":"RouterExplorer","message":"Mapped {/auth/send-otp, POST} route"}
{"timestamp":"2026-10-23T04:45:59.939Z","level":"log","context":"RouterExplorer","message":"Mapped {/auth/verify-otp, POST} route"}
{"timestamp":"2026-10-23T04:45:59.939Z","level":"log","context":"RouterExplorer","message":"Mapped {/auth/signup, POST} route"}
{"timestamp":"2026-10-23T04:45:59.940Z","level":"log","context":"RouterExplorer","message":"Mapped {/auth/subscription-status, GET} route"}
{"timestamp":"2026-10-23T04:45:59.940Z","level":"log","context":"RoutesResolver","message":"AdminMspController {/admin/msp}:"}
{"timestamp":"2026-10-23T04:45:59.941Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/msp, GET} route"}
{"timestamp":"2026-10-23T04:45:59.942Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/msp/:id, GET} route"}
{"timestamp":"2026-10-23T04:45:59.942Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/msp, POST} route"}
{"timestamp":"2026-10-23T04:45:59.942Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/msp/:id, PUT} route"}
{"timestamp":"2026-10-23T04:45:59.943Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/msp/:id, DELETE} route"}
{"timestamp":"2026-10-23T04:45:59.943Z","level":"log","context":"RoutesResolver","message":"AdminLicenseController {/admin/licenses}:"}
{"timestamp":"2026-10-23T04:45:59.943Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/licenses/summary, GET} route"}
{"timestamp":"2026-10-23T04:45:59.943Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/licenses/msp/:mspId, GET} route"}
{"timestamp":"2026-10-23T04:45:59.944Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/licenses/msp/:mspId, PUT} route"}
{"timestamp":"2026-10-23T04:45:59.944Z","level":"log","context":"RoutesResolver","message":"AdminImpersonationController {/admin/impersonation}:"}
{"timestamp":"2026-10-23T04:45:59.944Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/impersonation/msp-users, GET} route"}
{"timestamp":"2026-10-23T04:45:59.946Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/impersonation/impersonate, POST} route"}
{"timestamp":"2026-10-23T04:45:59.947Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/impersonation/stop, POST} route"}
{"timestamp":"2026-10-23T04:45:59.947Z","level":"log","context":"RoutesResolver","message":"AdminAiUsageController {/admin/ai-usage}:"}
{"timestamp":"2026-10-23T04:45:59.947Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-usage, GET} route"}
{"timestamp":"2026-10-23T04:45:59.947Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-usage/business/:businessId, GET} route"}
{"timestamp":"2026-10-23T04:45:59.948Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-usage/report/monthly, GET} route"}
{"timestamp":"2026-10-23T04:45:59.948Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-usage/pricing, GET} route"}
{"timestamp":"2026-10-23T04:45:59.948Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-usage/pricing, POST} route"}
{"timestamp":"2026-10-23T04:45:59.948Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-usage/credit/:businessId, PUT} route"}
{"timestamp":"2026-10-23T04:45:59.948Z","level":"log","context":"RoutesResolver","message":"AdminAiUsageController {/api/admin/ai-usage}:"}
{"timestamp":"2026-10-23T04:45:59.948Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-usage, GET} route"}
{"timestamp":"2026-10-23T04:45:59.949Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-usage/business/:businessId, GET} route"}
{"timestamp":"2026-10-23T04:45:59.949Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-usage/report/monthly, GET} route"}
{"timestamp":"2026-10-23T04:45:59.949Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-usage/pricing, GET} route"}
{"timestamp":"2026-10-23T04:45:59.949Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-usage/pricing, POST} route"}
{"timestamp":"2026-10-23T04:45:59.949Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-usage/credit/:businessId, PUT} route"}
{"timestamp":"2026-10-23T04:45:59.949Z","level":"log","context":"RoutesResolver","message":"AdminAiModelController {/admin/ai-models}:"}
{"timestamp":"2026-10-23T04:45:59.950Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models, POST} route"}
{"timestamp":"2026-10-23T04:45:59.950Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models, GET} route"}
{"timestamp":"2026-10-23T04:45:59.950Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/default, GET} route"}
{"timestamp":"2026-10-23T04:45:59.950Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/:id, GET} route"}
{"timestamp":"2026-10-23T04:45:59.950Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/:id, PUT} route"}
{"timestamp":"2026-10-23T04:45:59.951Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/:id, DELETE} route"}
{"timestamp":"2026-10-23T04:45:59.951Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/:id/set-default, POST} route"}
{"timestamp":"2026-10-23T04:45:59.951Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/assign-to-business, POST} route"}
{"timestamp":"2026-10-23T04:45:59.951Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/business/:businessId, GET} route"}
{"timestamp":"2026-10-23T04:45:59.952Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/:id/businesses, GET} route"}
{"timestamp":"2026-10-23T04:45:59.952Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/initialize-defaults, POST} route"}
{"timestamp":"2026-10-23T04:45:59.952Z","level":"log","context":"RoutesResolver","message":"AdminAiModelController {/api/admin/ai-models}:"}
{"timestamp":"2026-10-23T04:45:59.952Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models, POST} route"}
{"timestamp":"2026-10-23T04:45:59.952Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models, GET} route"}
{"timestamp":"2026-10-23T04:45:59.952Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/default, GET} route"}
{"timestamp":"2026-10-23T04:45:59.953Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/:id, GET} route"}
{"timestamp":"2026-10-23T04:45:59.953Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/:id, PUT} route"}
{"timestamp":"2026-10-23T04:45:59.953Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/:id, DELETE} route"}
{"timestamp":"2026-10-23T04:45:59.953Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/:id/set-default, POST} route"}
{"timestamp":"2026-10-23T04:45:59.953Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/assign-to-business, POST} route"}
{"timestamp":"2026-10-23T04:45:59.954Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/business/:businessId, GET} route"}
{"timestamp":"2026-10-23T04:45:59.954Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/:id/businesses, GET} route"}
{"timestamp":"2026-10-23T04:45:59.954Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/initialize-defaults, POST} route"}
{"timestamp":"2026-10-23T04:45:59.954Z","level":"log","context":"RoutesResolver","message":"AdminBusinessController {/admin/businesses}:"}
{"timestamp":"2026-10-23T04:45:59.954Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/businesses, GET} route"}
{"timestamp":"2026-10-23T04:45:59.954Z","level":"log","context":"RoutesResolver","message":"ResellerManagementController {/admin/resellers}:"}
{"timestamp":"2026-10-23T04:45:59.955Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/resellers, GET} route"}
{"timestamp":"2026-10-23T04:45:59.955Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/resellers/create-default, POST} route"}
{"timestamp":"2026-10-23T04:45:59.955Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/resellers, POST} route"}
{"timestamp":"2026-10-23T04:45:59.955Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/resellers/:id/toggle-status, PUT} route"}
{"timestamp":"2026-10-23T04:45:59.955Z","level":"log","context":"RoutesResolver","message":"SubscriptionController {/subscription}:"}
{"timestamp":"2026-10-23T04:45:59.955Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/plans, GET} route"}
{"timestamp":"2026-10-23T04:45:59.956Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/calculate-price, POST} route"}
{"timestamp":"2026-10-23T04:45:59.956Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/current, GET} route"}
{"timestamp":"2026-10-23T04:45:59.956Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/create, POST} route"}
{"timestamp":"2026-10-23T04:45:59.956Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/:id, PUT} route"}
{"timestamp":"2026-10-23T04:45:59.956Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/:id/cancel, DELETE} route"}
{"timestamp":"2026-10-23T04:45:59.957Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/sync/:stripeSubscriptionId, POST} route"}
{"timestamp":"2026-10-23T04:45:59.957Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/payments, GET} route"}
{"timestamp":"2026-10-23T04:45:59.957Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/payments/stats, GET} route"}
{"timestamp":"2026-10-23T04:45:59.957Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/payment/:id, GET} route"}
{"timestamp":"2026-10-23T04:45:59.957Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/payment-methods/attach, POST} route"}
{"timestamp":"2026-10-23T04:45:59.958Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/payment-methods/:paymentMethodId, DELETE} route"}
{"timestamp":"2026-10-23T04:45:59.958Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/payment-methods, GET} route"}
{"timestamp":"2026-10-23T04:45:59.958Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/setup-intent, POST} route"}
{"timestamp":"2026-10-23T04:45:59.958Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/update-employee-count, POST} route"}
{"timestamp":"2026-10-23T04:45:59.958Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/retry-payment/:subscriptionId, POST} route"}
{"timestamp":"2026-10-23T04:45:59.959Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/invoice/:invoiceId/pdf, GET} route"}
{"timestamp":"2026-10-23T04:45:59.959Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/preview-upgrade, POST} route"}
{"timestamp":"2026-10-23T04:45:59.959Z","level":"log","context":"RoutesResolver","message":"SubscriptionController {/api/subscription}:"}
{"timestamp":"2026-10-23T04:45:59.959Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/plans, GET} route"}
{"timestamp":"2026-10-23T04:45:59.959Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/calculate-price, POST} route"}
{"timestamp":"2026-10-23T04:45:59.959Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/current, GET} route"}
{"timestamp":"2026-10-23T04:45:59.959Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/create, POST} route"}
{"timestamp":"2026-10-23T04:45:59.960Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/:id, PUT} route"}
{"timestamp":"2026-10-23T04:45:59.960Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/:id/cancel, DELETE} route"}
{"timestamp":"2026-10-23T04:45:59.960Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/sync/:stripeSubscriptionId, POST} route"}
{"timestamp":"2026-10-23T04:45:59.960Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/payments, GET} route"}
{"timestamp":"2026-10-23T04:45:59.960Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/payments/stats, GET} route"}
{"timestamp":"2026-10-23T04:45:59.961Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/payment/:id, GET} route"}
{"timestamp":"2026-10-23T04:45:59.961Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/payment-methods/attach, POST} route"}
{"timestamp":"2026-10-23T04:45:59.961Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/payment-methods/:paymentMethodId, DELETE} route"}
{"timestamp":"2026-10-23T04:45:59.961Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/payment-methods, GET} route"}
{"timestamp":"2026-10-23T04:45:59.961Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/setup-intent, POST} route"}
{"timestamp":"2026-10-23T04:45:59.961Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/update-employee-count, POST} route"}
{"timestamp":"2026-10-23T04:45:59.962Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/retry-payment/:subscriptionId, POST} route"}
{"timestamp":"2026-10-23T04:45:59.962Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/invoice/:invoiceId/pdf, GET} route"}
{"timestamp":"2026-10-23T04:45:59.962Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/preview-upgrade, POST} route"}
{"timestamp":"2026-10-23T04:45:59.962Z","level":"log","context":"RoutesResolver","message":"StripeWebhookController {/stripe/webhook}:"}
{"timestamp":"2026-10-23T04:45:59.962Z","level":"log","context":"RouterExplorer","message":"Mapped {/stripe/webhook/test, GET} route"}
{"timestamp":"2026-10-23T04:45:59.963Z","level":"log","context":"RouterExplorer","message":"Mapped {/stripe/webhook, POST} route"}
{"timestamp":"2026-10-23T04:45:59.963Z","level":"log","context":"RoutesResolver","message":"EmailController {/email-templates}:"}
{"timestamp":"2026-10-23T04:45:59.963Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates/test, POST} route"}
{"timestamp":"2026-10-23T04:45:59.963Z","level":"log","context":"RoutesResolver","message":"EmployeeController {/employees}:"}
{"timestamp":"2026-10-23T04:45:59.963Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees, POST} route"}
{"timestamp":"2026-10-23T04:45:59.963Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees, GET} route"}
{"timestamp":"2026-10-23T04:45:59.963Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees/export, GET} route"}
{"timestamp":"2026-10-23T04:45:59.964Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees/risk-stats, GET} route"}
{"timestamp":"2026-10-23T04:45:59.964Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees/:id, GET} route"}
{"timestamp":"2026-10-23T04:45:59.964Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees/:id, PUT} route"}
{"timestamp":"2026-10-23T04:45:59.964Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees/:id, DELETE} route"}
{"timestamp":"2026-10-23T04:45:59.964Z","level":"log","context":"RoutesResolver","message":"GroupController {/groups}:"}
{"timestamp":"2026-10-23T04:45:59.964Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups, POST} route"}
{"timestamp":"2026-10-23T04:45:59.965Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups, GET} route"}
{"timestamp":"2026-10-23T04:45:59.965Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups/standard, GET} route"}
{"timestamp":"2026-10-23T04:45:59.965Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups/:id, GET} route"}
{"timestamp":"2026-10-23T04:45:59.965Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups/:id, PUT} route"}
{"timestamp":"2026-10-23T04:45:59.965Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups/:id, DELETE} route"}
{"timestamp":"2026-10-23T04:45:59.965Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups/:id/info, GET} route"}
{"timestamp":"2026-10-23T04:45:59.966Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups/:id/with-employees, GET} route"}
{"timestamp":"2026-10-23T04:45:59.966Z","level":"log","context":"RoutesResolver","message":"SenderProfileController {/sender-profiles}:"}
{"timestamp":"2026-10-23T04:45:59.966Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles, GET} route"}
{"timestamp":"2026-10-23T04:45:59.966Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles/:id, GET} route"}
{"timestamp":"2026-10-23T04:45:59.966Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles, POST} route"}
{"timestamp":"2026-10-23T04:45:59.967Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles/:id, PUT} route"}
{"timestamp":"2026-10-23T04:45:59.967Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles/:id, DELETE} route"}
{"timestamp":"2026-10-23T04:45:59.967Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles/:id/verify-domain, POST} route"}
{"timestamp":"2026-10-23T04:45:59.967Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles/domain-verification, GET} route"}
{"timestamp":"2026-10-23T04:45:59.967Z","level":"log","context":"RoutesResolver","message":"EmailTemplateController {/email-templates}:"}
{"timestamp":"2026-10-23T04:45:59.967Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates, GET} route"}
{"timestamp":"2026-10-23T04:45:59.968Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates/:id, GET} route"}
{"timestamp":"2026-10-23T04:45:59.968Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates, POST} route"}
{"timestamp":"2026-10-23T04:45:59.968Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates/:id, PUT} route"}
{"timestamp":"2026-10-23T04:45:59.968Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates/:id, DELETE} route"}
{"timestamp":"2026-10-23T04:45:59.968Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates/:id/duplicate, POST} route"}
{"timestamp":"2026-10-23T04:45:59.968Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates/:id/preview, GET} route"}
{"timestamp":"2026-10-23T04:45:59.969Z","level":"log","context":"RoutesResolver","message":"ScenarioController {/scenarios}:"}
{"timestamp":"2026-10-23T04:45:59.969Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios, POST} route"}
{"timestamp":"2026-10-23T04:45:59.969Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios/generate-content, POST} route"}
{"timestamp":"2026-10-23T04:45:59.969Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios, GET} route"}
{"timestamp":"2026-10-23T04:45:59.969Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios/:id, GET} route"}
{"timestamp":"2026-10-23T04:45:59.969Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios/:id, PUT} route"}
{"timestamp":"2026-10-23T04:45:59.970Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios/:id, DELETE} route"}
{"timestamp":"2026-10-23T04:45:59.970Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios/generate-from-json, POST} route"}
{"timestamp":"2026-10-23T04:45:59.970Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios/:id/save-as-custom-scenario, POST} route"}
{"timestamp":"2026-10-23T04:45:59.970Z","level":"log","context":"RoutesResolver","message":"CampaignController {/campaigns}:"}
{"timestamp":"2026-10-23T04:45:59.970Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns, POST} route"}
{"timestamp":"2026-10-23T04:45:59.970Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns, GET} route"}
{"timestamp":"2026-10-23T04:45:59.971Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id, GET} route"}
{"timestamp":"2026-10-23T04:45:59.971Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id/details, GET} route"}
{"timestamp":"2026-10-23T04:45:59.971Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id/employees, GET} route"}
{"timestamp":"2026-10-23T04:45:59.971Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id, PATCH} route"}
{"timestamp":"2026-10-23T04:45:59.972Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id/start, POST} route"}
{"timestamp":"2026-10-23T04:45:59.972Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id/stop, POST} route"}
{"timestamp":"2026-10-23T04:45:59.972Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id/duplicate, POST} route"}
{"timestamp":"2026-10-23T04:45:59.972Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id, DELETE} route"}
{"timestamp":"2026-10-23T04:45:59.972Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/auto-generate-program, POST} route"}
{"timestamp":"2026-10-23T04:45:59.972Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/generate-from-threat-intelligence, POST} route"}
{"timestamp":"2026-10-23T04:45:59.973Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id/risk-score, GET} route"}
{"timestamp":"2026-10-23T04:45:59.973Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/recalculate-risk-scores, POST} route"}
{"timestamp":"2026-10-23T04:45:59.973Z","level":"log","context":"RoutesResolver","message":"CampaignController {/api/campaigns}:"}
{"timestamp":"2026-10-23T04:45:59.973Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns, POST} route"}
{"timestamp":"2026-10-23T04:45:59.973Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns, GET} route"}
{"timestamp":"2026-10-23T04:45:59.973Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id, GET} route"}
{"timestamp":"2026-10-23T04:45:59.974Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id/details, GET} route"}
{"timestamp":"2026-10-23T04:45:59.974Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id/employees, GET} route"}
{"timestamp":"2026-10-23T04:45:59.974Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id, PATCH} route"}
{"timestamp":"2026-10-23T04:45:59.974Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id/start, POST} route"}
{"timestamp":"2026-10-23T04:45:59.974Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id/stop, POST} route"}
{"timestamp":"2026-10-23T04:45:59.974Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id/duplicate, POST} route"}
{"timestamp":"2026-10-23T04:45:59.975Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id, DELETE} route"}
{"timestamp":"2026-10-23T04:45:59.975Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/auto-generate-program, POST} route"}
{"timestamp":"2026-10-23T04:45:59.975Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/generate-from-threat-intelligence, POST} route"}
{"timestamp":"2026-10-23T04:45:59.975Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id/risk-score, GET} route"}
{"timestamp":"2026-10-23T04:45:59.975Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/recalculate-risk-scores, POST} route"}
{"timestamp":"2026-10-23T04:45:59.975Z","level":"log","context":"RoutesResolver","message":"NotificationsController {/notifications}:"}
{"timestamp":"2026-10-23T04:45:59.976Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications, POST} route"}
{"timestamp":"2026-10-23T04:45:59.976Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications, GET} route"}
{"timestamp":"2026-10-23T04:45:59.976Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/unread, GET} route"}
{"timestamp":"2026-10-23T04:45:59.976Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/unread-count, GET} route"}
{"timestamp":"2026-10-23T04:45:59.976Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/:id, GET} route"}
{"timestamp":"2026-10-23T04:45:59.977Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/:id, PATCH} route"}
{"timestamp":"2026-10-23T04:45:59.977Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/:id/read, PATCH} route"}
{"timestamp":"2026-10-23T04:45:59.977Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/mark-all-read, PATCH} route"}
{"timestamp":"2026-10-23T04:45:59.978Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/:id, DELETE} route"}
{"timestamp":"2026-10-23T04:45:59.978Z","level":"log","context":"RoutesResolver","message":"LandingPageController {/lp}:"}
{"timestamp":"2026-10-23T04:45:59.978Z","level":"log","context":"RouterExplorer","message":"Mapped {/lp/image, GET} route"}
{"timestamp":"2026-10-23T04:45:59.978Z","level":"log","context":"RouterExplorer","message":"Mapped {/lp/learning, GET} route"}
{"timestamp":"2026-10-23T04:45:59.978Z","level":"log","context":"RouterExplorer","message":"Mapped {/lp/submit, POST} route"}
{"timestamp":"2026-10-23T04:45:59.978Z","level":"log","context":"RouterExplorer","message":"Mapped {/lp/test, GET} route"}
{"timestamp":"2026-10-23T04:45:59.978Z","level":"warn","context":"LegacyRouteConverter","message":"Unsupported route path: \"/lp/*\". In previous versions, the symbols ?, *, and + were used to denote optional or repeating path parameters. The latest version of \"path-to-regexp\" now requires the use of named parameters. For example, instead of using a route like /users/* to capture all routes starting with \"/users\", you should use /users/*path. For more details, refer to the migration guide. Attempting to auto-convert..."}
{"timestamp":"2026-10-23T04:45:59.979Z","level":"log","context":"RouterExplorer","message":"Mapped {/lp/*, ALL} route"}
{"timestamp":"2026-10-23T04:45:59.980Z","level":"log","context":"RoutesResolver","message":"SupportController {/support}:"}
{"timestamp":"2026-10-23T04:45:59.980Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets, POST} route"}
{"timestamp":"2026-10-23T04:45:59.980Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets, GET} route"}
{"timestamp":"2026-10-23T04:45:59.980Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets/:id, GET} route"}
{"timestamp":"2026-10-23T04:45:59.980Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets/:id, PATCH} route"}
{"timestamp":"2026-10-23T04:45:59.981Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets/:id, DELETE} route"}
{"timestamp":"2026-10-23T04:45:59.981Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets/:id/messages, POST} route"}
{"timestamp":"2026-10-23T04:45:59.981Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets/:id/close, POST} route"}
{"timestamp":"2026-10-23T04:45:59.981Z","level":"log","context":"RoutesResolver","message":"BusninessMetricsController {/business-metrics}:"}
{"timestamp":"2026-10-23T04:45:59.981Z","level":"log","context":"RouterExplorer","message":"Mapped {/business-metrics, GET} route"}
{"timestamp":"2026-10-23T04:45:59.981Z","level":"log","context":"RoutesResolver","message":"UsersController {/users}:"}
{"timestamp":"2026-10-23T04:45:59.982Z","level":"log","context":"RouterExplorer","message":"Mapped {/users/:id, PUT} route"}
{"timestamp":"2026-10-23T04:45:59.982Z","level":"log","context":"RouterExplorer","message":"Mapped {/users/settings, GET} route"}
{"timestamp":"2026-10-23T04:45:59.982Z","level":"log","context":"RouterExplorer","message":"Mapped {/users/settings/general, PUT} route"}
{"timestamp":"2026-10-23T04:45:59.982Z","level":"log","context":"RouterExplorer","message":"Mapped {/users/company/settings, PUT} route"}
{"timestamp":"2026-10-23T04:45:59.982Z","level":"log","context":"RouterExplorer","message":"Mapped {/users/change-password, POST} route"}
{"timestamp":"2026-10-23T04:45:59.983Z","level":"log","context":"RouterExplorer","message":"Mapped {/users/localization/settings, PUT} route"}
{"timestamp":"2026-10-23T04:45:59.983Z","level":"log","context":"RoutesResolver","message":"PartnerController {/partner}:"}
{"timestamp":"2026-10-23T04:45:59.983Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses, POST} route"}
{"timestamp":"2026-10-23T04:45:59.983Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses, GET} route"}
{"timestamp":"2026-10-23T04:45:59.983Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses/:id, GET} route"}
{"timestamp":"2026-10-23T04:45:59.983Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses/:id, PUT} route"}
{"timestamp":"2026-10-23T04:45:59.984Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses/:id, DELETE} route"}
{"timestamp":"2026-10-23T04:45:59.984Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses/:id/impersonate, POST} route"}
{"timestamp":"2026-10-23T04:45:59.984Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses/stop-impersonation, POST} route"}
{"timestamp":"2026-10-23T04:45:59.984Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/license-usage, GET} route"}
{"timestamp":"2026-10-23T04:45:59.984Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/invoices, POST} route"}
{"timestamp":"2026-10-23T04:45:59.985Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/invoices, GET} route"}
{"timestamp":"2026-10-23T04:45:59.985Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/invoices/:id, GET} route"}
{"timestamp":"2026-10-23T04:45:59.985Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/invoices/:id, PUT} route"}
{"timestamp":"2026-10-23T04:45:59.985Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/invoices/:id, DELETE} route"}
{"timestamp":"2026-10-23T04:45:59.985Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/invoices/:id/mark-paid, PUT} route"}
{"timestamp":"2026-10-23T04:45:59.986Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/onboarding/generate-token, POST} route"}
{"timestamp":"2026-10-23T04:45:59.986Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/dashboard, GET} route"}
{"timestamp":"2026-10-23T04:45:59.986Z","level":"log","context":"RoutesResolver","message":"MspSubscriptionController {/partner/msp-subscriptions}:"}
{"timestamp":"2026-10-23T04:45:59.986Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/plans, POST} route"}
{"timestamp":"2026-10-23T04:45:59.986Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/plans, GET} route"}
{"timestamp":"2026-10-23T04:45:59.986Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/plans/:planId, GET} route"}
{"timestamp":"2026-10-23T04:45:59.987Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/plans/:planId, PUT} route"}
{"timestamp":"2026-10-23T04:45:59.987Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/plans/:planId, DELETE} route"}
{"timestamp":"2026-10-23T04:45:59.987Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/businesses/:businessId/subscription, POST} route"}
{"timestamp":"2026-10-23T04:45:59.987Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions, GET} route"}
{"timestamp":"2026-10-23T04:45:59.987Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/businesses/:businessId/subscription, GET} route"}
{"timestamp":"2026-10-23T04:45:59.988Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/businesses/:businessId/subscription, PUT} route"}
{"timestamp":"2026-10-23T04:45:59.988Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/businesses/:businessId/subscription, DELETE} route"}
{"timestamp":"2026-10-23T04:45:59.988Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/businesses/:businessId/subscription/limits, GET} route"}
{"timestamp":"2026-10-23T04:45:59.988Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/businesses/:businessId/subscription/change-plan, PUT} route"}
{"timestamp":"2026-10-23T04:45:59.988Z","level":"log","context":"RoutesResolver","message":"OnboardingController {/onboarding}:"}
{"timestamp":"2026-10-23T04:45:59.989Z","level":"log","context":"RouterExplorer","message":"Mapped {/onboarding/validate/:token, GET} route"}
{"timestamp":"2026-10-23T04:45:59.989Z","level":"log","context":"RouterExplorer","message":"Mapped {/onboarding/complete/:token, POST} route"}
{"timestamp":"2026-10-23T04:45:59.989Z","level":"log","context":"RoutesResolver","message":"ResellerController {/reseller}:"}
{"timestamp":"2026-10-23T04:45:59.989Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/businesses, POST} route"}
{"timestamp":"2026-10-23T04:45:59.989Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/businesses, GET} route"}
{"timestamp":"2026-10-23T04:45:59.990Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/businesses/:id, GET} route"}
{"timestamp":"2026-10-23T04:45:59.990Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/businesses/:id, PUT} route"}
{"timestamp":"2026-10-23T04:45:59.990Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/businesses/:id, DELETE} route"}
{"timestamp":"2026-10-23T04:45:59.990Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/license-usage, GET} route"}
{"timestamp":"2026-10-23T04:45:59.990Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/invoices, POST} route"}
{"timestamp":"2026-10-23T04:45:59.990Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/invoices, GET} route"}
{"timestamp":"2026-10-23T04:45:59.991Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/invoices/:id, GET} route"}
{"timestamp":"2026-10-23T04:45:59.991Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/invoices/:id, PUT} route"}
{"timestamp":"2026-10-23T04:45:59.991Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/invoices/:id, DELETE} route"}
{"timestamp":"2026-10-23T04:45:59.991Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/invoices/:id/mark-paid, PUT} route"}
{"timestamp":"2026-10-23T04:45:59.991Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/onboarding/generate-token, POST} route"}
{"timestamp":"2026-10-23T04:45:59.992Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/dashboard, GET} route"}
{"timestamp":"2026-10-23T04:45:59.992Z","level":"log","context":"RoutesResolver","message":"ResellerSubscriptionController {/reseller}:"}
{"timestamp":"2026-10-23T04:45:59.992Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/plans, POST} route"}
{"timestamp":"2026-10-23T04:45:59.992Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/plans, GET} route"}
{"timestamp":"2026-10-23T04:45:59.992Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/plans/:planId, GET} route"}
{"timestamp":"2026-10-23T04:45:59.992Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/plans/:planId, PUT} route"}
{"timestamp":"2026-10-23T04:45:59.993Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/plans/:planId, DELETE} route"}
{"timestamp":"2026-10-23T04:45:59.993Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/subscriptions/businesses/:businessId/subscription, POST} route"}
{"timestamp":"2026-10-23T04:45:59.993Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/subscriptions, GET} route"}
{"timestamp":"2026-10-23T04:45:59.993Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/subscriptions/businesses/:businessId/subscription, GET} route"}
{"timestamp":"2026-10-23T04:45:59.994Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/subscriptions/businesses/:businessId/subscription, PUT} route"}
{"timestamp":"2026-10-23T04:45:59.994Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/subscriptions/businesses/:businessId/subscription, DELETE} route"}
{"timestamp":"2026-10-23T04:45:59.994Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/subscriptions/businesses/:businessId/subscription/limits, GET} route"}
{"timestamp":"2026-10-23T04:45:59.994Z","level":"log","context":"RoutesResolver","message":"HealthController {/health}:"}
{"timestamp":"2026-10-23T04:45:59.994Z","level":"log","context":"RouterExplorer","message":"Mapped {/health, GET} route"}
{"timestamp":"2026-10-23T04:45:59.994Z","level":"log","context":"RouterExplorer","message":"Mapped {/health/test-logs, GET} route"}
{"timestamp":"2026-10-23T04:45:59.994Z","level":"log","context":"RoutesResolver","message":"AzureAdController {/azure-ad}:"}
{"timestamp":"2026-10-23T04:45:59.995Z","level":"log","context":"RouterExplorer","message":"Mapped {/azure-ad/config, POST} route"}
{"timestamp":"2026-10-23T04:45:59.995Z","level":"log","context":"RouterExplorer","message":"Mapped {/azure-ad/config, GET} route"}
{"timestamp":"2026-10-23T04:45:59.995Z","level":"log","context":"RouterExplorer","message":"Mapped {/azure-ad/test-connection, POST} route"}
{"timestamp":"2026-10-23T04:45:59.995Z","level":"log","context":"RouterExplorer","message":"Mapped {/azure-ad/sync, POST} route"}
{"timestamp":"2026-10-23T04:45:59.995Z","level":"log","context":"RoutesResolver","message":"ThreatsController {/threats}:"}
{"timestamp":"2026-10-23T04:45:59.996Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats, POST} route"}
{"timestamp":"2026-10-23T04:45:59.996Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats, GET} route"}
{"timestamp":"2026-10-23T04:45:59.996Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/chart-data, GET} route"}
{"timestamp":"2026-10-23T04:45:59.996Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/claude-search, POST} route"}
{"timestamp":"2026-10-23T04:45:59.996Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/claude-latest, POST} route"}
{"timestamp":"2026-10-23T04:45:59.997Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/claude-trending, POST} route"}
{"timestamp":"2026-10-23T04:45:59.997Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/claude-categories, POST} route"}
{"timestamp":"2026-10-23T04:45:59.997Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/claude-manual-search, POST} route"}
{"timestamp":"2026-10-23T04:45:59.997Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/claude-quick-search, POST} route"}
{"timestamp":"2026-10-23T04:45:59.997Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/scheduler-status, GET} route"}
{"timestamp":"2026-10-23T04:45:59.997Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/health-check, GET} route"}
{"timestamp":"2026-10-23T04:45:59.998Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/pause-scheduler, POST} route"}
{"timestamp":"2026-10-23T04:45:59.998Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/:id, GET} route"}
{"timestamp":"2026-10-23T04:45:59.998Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/:id, PATCH} route"}
{"timestamp":"2026-10-23T04:45:59.998Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/:id, DELETE} route"}
{"timestamp":"2026-10-23T04:45:59.998Z","level":"log","context":"RoutesResolver","message":"DomainController {/domains}:"}
{"timestamp":"2026-10-23T04:45:59.999Z","level":"log","context":"RouterExplorer","message":"Mapped {/domains, GET} route"}
{"timestamp":"2026-10-23T04:45:59.999Z","level":"log","context":"RouterExplorer","message":"Mapped {/domains/:id, GET} route"}
{"timestamp":"2026-10-23T04:45:59.999Z","level":"log","context":"RouterExplorer","message":"Mapped {/domains, POST} route"}
{"timestamp":"2026-10-23T04:45:59.999Z","level":"log","context":"RouterExplorer","message":"Mapped {/domains/:id, PUT} route"}
{"timestamp":"2026-10-23T04:45:59.999Z","level":"log","context":"RouterExplorer","message":"Mapped {/domains/:id, DELETE} route"}
{"timestamp":"2026-10-23T04:45:59.999Z","level":"log","context":"RouterExplorer","message":"Mapped {/domains/seed, POST} route"}
{"timestamp":"2026-10-23T04:45:59.999Z","level":"log","context":"RoutesResolver","message":"MspSubscriptionController {/msp-subscription}:"}
{"timestamp":"2026-10-23T04:46:00.000Z","level":"log","context":"RouterExplorer","message":"Mapped {/msp-subscription/current, GET} route"}
{"timestamp":"2026-10-23T04:46:00.000Z","level":"log","context":"RouterExplorer","message":"Mapped {/msp-subscription/invoices, GET} route"}
{"timestamp":"2026-10-23T04:46:00.000Z","level":"log","context":"RouterExplorer","message":"Mapped {/msp-subscription/invoice/:invoiceId/pdf, GET} route"}
{"timestamp":"2026-10-23T04:46:00.000Z","level":"log","context":"RoutesResolver","message":"MspSubscriptionController {/api/msp-subscription}:"}
{"timestamp":"2026-10-23T04:46:00.000Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/msp-subscription/current, GET} route"}
{"timestamp":"2026-10-23T04:46:00.000Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/msp-subscription/invoices, GET} route"}
{"timestamp":"2026-10-23T04:46:00.001Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/msp-subscription/invoice/:invoiceId/pdf, GET} route"}
{"timestamp":"2026-10-23T04:46:00.078Z","level":"log","context":"NestApplication","message":"Nest application successfully started"}
{"timestamp":"2026-10-23T04:46:00.095Z","level":"log","context":"Bootstrap","message":"Users API successfully started on port 3842"}
{"timestamp":"2026-10-23T04:46:00.095Z","level":"log","context":"SeedService","message":"🌱 Starting database seeding..."}
{"timestamp":"2026-10-23T04:46:00.103Z","level":"log","context":"SeedService","message":"Admin account already exists, skipping seed"}
{"timestamp":"2026-10-23T04:46:00.105Z","level":"log","context":"SeedService","message":"Reseller account already exists, skipping seed"}
{"timestamp":"2026-10-23T04:46:00.107Z","level":"log","context":"SeedService","message":"MSP account already exists, skipping seed"}
{"timestamp":"2026-10-23T04:46:00.107Z","level":"log","context":"SeedService","message":"✅ Database seeding completed successfully"}
{"timestamp":"2026-10-23T05:31:52.756Z","level":"warn","context":"LegacyRouteConverter","message":"Unsupported route path: \"/lp/*\". In previous versions, the symbols ?, *, and + were used to denote optional or repeating path parameters. The latest version of \"path-to-regexp\" now requires the use of named parameters. For example, instead of using a route like /users/* to capture all routes starting with \"/users\", you should use /users/*path. For more details, refer to the migration guide. Attempting to auto-convert..."}
{"timestamp":"2026-10-23T05:31:52.793Z","level":"log","context":"Bootstrap","message":"Starting Users API on port 3842..."}
{"timestamp":"2026-10-23T05:31:52.796Z","level":"log","context":"RoutesResolver","message":"UsersApiController {/}:"}
{"timestamp":"2026-10-23T05:31:52.800Z","level":"log","context":"RouterExplorer","message":"Mapped {/, GET} route"}
{"timestamp":"2026-10-23T05:31:52.800Z","level":"log","context":"RoutesResolver","message":"AuthController {/auth}:"}
{"timestamp":"2026-10-23T05:31:52.801Z","level":"log","context":"RouterExplorer","message":"Mapped {/auth/login, POST} route"}
{"timestamp":"2026-10-23T05:31:52.801Z","level":"log","context":"RouterExplorer","message":"Mapped {/auth/admin/login, POST} route"}
{"timestamp":"2026-10-23T05:31:52.802Z","level":"log","context":"RouterExplorer","message":"Mapped {/auth/send-otp, POST} route"}
{"timestamp":"2026-10-23T05:31:52.802Z","level":"log","context":"RouterExplorer","message":"Mapped {/auth/verify-otp, POST} route"}
{"timestamp":"2026-10-23T05:31:52.803Z","level":"log","context":"RouterExplorer","message":"Mapped {/auth/signup, POST} route"}
{"timestamp":"2026-10-23T05:31:52.803Z","level":"log","context":"RouterExplorer","message":"Mapped {/auth/subscription-status, GET} route"}
{"timestamp":"2026-10-23T05:31:52.803Z","level":"log","context":"RoutesResolver","message":"AdminMspController {/admin/msp}:"}
{"timestamp":"2026-10-23T05:31:52.804Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/msp, GET} route"}
{"timestamp":"2026-10-23T05:31:52.805Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/msp/:id, GET} route"}
{"timestamp":"2026-10-23T05:31:52.805Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/msp, POST} route"}
{"timestamp":"2026-10-23T05:31:52.806Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/msp/:id, PUT} route"}
{"timestamp":"2026-10-23T05:31:52.806Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/msp/:id, DELETE} route"}
{"timestamp":"2026-10-23T05:31:52.806Z","level":"log","context":"RoutesResolver","message":"AdminLicenseController {/admin/licenses}:"}
{"timestamp":"2026-10-23T05:31:52.806Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/licenses/summary, GET} route"}
{"timestamp":"2026-10-23T05:31:52.806Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/licenses/msp/:mspId, GET} route"}
{"timestamp":"2026-10-23T05:31:52.807Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/licenses/msp/:mspId, PUT} route"}
{"timestamp":"2026-10-23T05:31:52.807Z","level":"log","context":"RoutesResolver","message":"AdminImpersonationController {/admin/impersonation}:"}
{"timestamp":"2026-10-23T05:31:52.809Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/impersonation/msp-users, GET} route"}
{"timestamp":"2026-10-23T05:31:52.810Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/impersonation/impersonate, POST} route"}
{"timestamp":"2026-10-23T05:31:52.810Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/impersonation/stop, POST} route"}
{"timestamp":"2026-10-23T05:31:52.810Z","level":"log","context":"RoutesResolver","message":"AdminAiUsageController {/admin/ai-usage}:"}
{"timestamp":"2026-10-23T05:31:52.810Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-usage, GET} route"}
{"timestamp":"2026-10-23T05:31:52.810Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-usage/business/:businessId, GET} route"}
{"timestamp":"2026-10-23T05:31:52.811Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-usage/report/monthly, GET} route"}
{"timestamp":"2026-10-23T05:31:52.811Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-usage/pricing, GET} route"}
{"timestamp":"2026-10-23T05:31:52.811Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-usage/pricing, POST} route"}
{"timestamp":"2026-10-23T05:31:52.811Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-usage/credit/:businessId, PUT} route"}
{"timestamp":"2026-10-23T05:31:52.811Z","level":"log","context":"RoutesResolver","message":"AdminAiUsageController {/api/admin/ai-usage}:"}
{"timestamp":"2026-10-23T05:31:52.811Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-usage, GET} route"}
{"timestamp":"2026-10-23T05:31:52.812Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-usage/business/:businessId, GET} route"}
{"timestamp":"2026-10-23T05:31:52.812Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-usage/report/monthly, GET} route"}
{"timestamp":"2026-10-23T05:31:52.812Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-usage/pricing, GET} route"}
{"timestamp":"2026-10-23T05:31:52.812Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-usage/pricing, POST} route"}
{"timestamp":"2026-10-23T05:31:52.812Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-usage/credit/:businessId, PUT} route"}
{"timestamp":"2026-10-23T05:31:52.812Z","level":"log","context":"RoutesResolver","message":"AdminAiModelController {/admin/ai-models}:"}
{"timestamp":"2026-10-23T05:31:52.813Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models, POST} route"}
{"timestamp":"2026-10-23T05:31:52.813Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models, GET} route"}
{"timestamp":"2026-10-23T05:31:52.813Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/default, GET} route"}
{"timestamp":"2026-10-23T05:31:52.813Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/:id, GET} route"}
{"timestamp":"2026-10-23T05:31:52.813Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/:id, PUT} route"}
{"timestamp":"2026-10-23T05:31:52.814Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/:id, DELETE} route"}
{"timestamp":"2026-10-23T05:31:52.814Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/:id/set-default, POST} route"}
{"timestamp":"2026-10-23T05:31:52.814Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/assign-to-business, POST} route"}
{"timestamp":"2026-10-23T05:31:52.814Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/business/:businessId, GET} route"}
{"timestamp":"2026-10-23T05:31:52.814Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/:id/businesses, GET} route"}
{"timestamp":"2026-10-23T05:31:52.815Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/initialize-defaults, POST} route"}
{"timestamp":"2026-10-23T05:31:52.815Z","level":"log","context":"RoutesResolver","message":"AdminAiModelController {/api/admin/ai-models}:"}
{"timestamp":"2026-10-23T05:31:52.815Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models, POST} route"}
{"timestamp":"2026-10-23T05:31:52.815Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models, GET} route"}
{"timestamp":"2026-10-23T05:31:52.815Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/default, GET} route"}
{"timestamp":"2026-10-23T05:31:52.815Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/:id, GET} route"}
{"timestamp":"2026-10-23T05:31:52.815Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/:id, PUT} route"}
{"timestamp":"2026-10-23T05:31:52.815Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/:id, DELETE} route"}
{"timestamp":"2026-10-23T05:31:52.816Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/:id/set-default, POST} route"}
{"timestamp":"2026-10-23T05:31:52.816Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/assign-to-business, POST} route"}
{"timestamp":"2026-10-23T05:31:52.816Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/business/:businessId, GET} route"}
{"timestamp":"2026-10-23T05:31:52.816Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/:id/businesses, GET} route"}
{"timestamp":"2026-10-23T05:31:52.816Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/initialize-defaults, POST} route"}
{"timestamp":"2026-10-23T05:31:52.817Z","level":"log","context":"RoutesResolver","message":"AdminBusinessController {/admin/businesses}:"}
{"timestamp":"2026-10-23T05:31:52.817Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/businesses, GET} route"}
{"timestamp":"2026-10-23T05:31:52.817Z","level":"log","context":"RoutesResolver","message":"ResellerManagementController {/admin/resellers}:"}
{"timestamp":"2026-10-23T05:31:52.817Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/resellers, GET} route"}
{"timestamp":"2026-10-23T05:31:52.817Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/resellers/create-default, POST} route"}
{"timestamp":"2026-10-23T05:31:52.817Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/resellers, POST} route"}
{"timestamp":"2026-10-23T05:31:52.817Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/resellers/:id/toggle-status, PUT} route"}
{"timestamp":"2026-10-23T05:31:52.818Z","level":"log","context":"RoutesResolver","message":"SubscriptionController {/subscription}:"}
{"timestamp":"2026-10-23T05:31:52.818Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/plans, GET} route"}
{"timestamp":"2026-10-23T05:31:52.818Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/calculate-price, POST} route"}
{"timestamp":"2026-10-23T05:31:52.818Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/current, GET} route"}
{"timestamp":"2026-10-23T05:31:52.818Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/create, POST} route"}
{"timestamp":"2026-10-23T05:31:52.818Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/:id, PUT} route"}
{"timestamp":"2026-10-23T05:31:52.819Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/:id/cancel, DELETE} route"}
{"timestamp":"2026-10-23T05:31:52.819Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/sync/:stripeSubscriptionId, POST} route"}
{"timestamp":"2026-10-23T05:31:52.819Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/payments, GET} route"}
{"timestamp":"2026-10-23T05:31:52.819Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/payments/stats, GET} route"}
{"timestamp":"2026-10-23T05:31:52.819Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/payment/:id, GET} route"}
{"timestamp":"2026-10-23T05:31:52.819Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/payment-methods/attach, POST} route"}
{"timestamp":"2026-10-23T05:31:52.820Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/payment-methods/:paymentMethodId, DELETE} route"}
{"timestamp":"2026-10-23T05:31:52.820Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/payment-methods, GET} route"}
{"timestamp":"2026-10-23T05:31:52.820Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/setup-intent, POST} route"}
{"timestamp":"2026-10-23T05:31:52.820Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/update-employee-count, POST} route"}
{"timestamp":"2026-10-23T05:31:52.820Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/retry-payment/:subscriptionId, POST} route"}
{"timestamp":"2026-10-23T05:31:52.820Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/invoice/:invoiceId/pdf, GET} route"}
{"timestamp":"2026-10-23T05:31:52.821Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/preview-upgrade, POST} route"}
{"timestamp":"2026-10-23T05:31:52.821Z","level":"log","context":"RoutesResolver","message":"SubscriptionController {/api/subscription}:"}
{"timestamp":"2026-10-23T05:31:52.821Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/plans, GET} route"}
{"timestamp":"2026-10-23T05:31:52.821Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/calculate-price, POST} route"}
{"timestamp":"2026-10-23T05:31:52.821Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/current, GET} route"}
{"timestamp":"2026-10-23T05:31:52.821Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/create, POST} route"}
{"timestamp":"2026-10-23T05:31:52.821Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/:id, PUT} route"}
{"timestamp":"2026-10-23T05:31:52.822Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/:id/cancel, DELETE} route"}
{"timestamp":"2026-10-23T05:31:52.822Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/sync/:stripeSubscriptionId, POST} route"}
{"timestamp":"2026-10-23T05:31:52.822Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/payments, GET} route"}
{"timestamp":"2026-10-23T05:31:52.822Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/payments/stats, GET} route"}
{"timestamp":"2026-10-23T05:31:52.822Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/payment/:id, GET} route"}
{"timestamp":"2026-10-23T05:31:52.822Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/payment-methods/attach, POST} route"}
{"timestamp":"2026-10-23T05:31:52.823Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/payment-methods/:paymentMethodId, DELETE} route"}
{"timestamp":"2026-10-23T05:31:52.823Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/payment-methods, GET} route"}
{"timestamp":"2026-10-23T05:31:52.823Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/setup-intent, POST} route"}
{"timestamp":"2026-10-23T05:31:52.823Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/update-employee-count, POST} route"}
{"timestamp":"2026-10-23T05:31:52.823Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/retry-payment/:subscriptionId, POST} route"}
{"timestamp":"2026-10-23T05:31:52.823Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/invoice/:invoiceId/pdf, GET} route"}
{"timestamp":"2026-10-23T05:31:52.823Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/preview-upgrade, POST} route"}
{"timestamp":"2026-10-23T05:31:52.823Z","level":"log","context":"RoutesResolver","message":"StripeWebhookController {/stripe/webhook}:"}
{"timestamp":"2026-10-23T05:31:52.824Z","level":"log","context":"RouterExplorer","message":"Mapped {/stripe/webhook/test, GET} route"}
{"timestamp":"2026-10-23T05:31:52.824Z","level":"log","context":"RouterExplorer","message":"Mapped {/stripe/webhook, POST} route"}
{"timestamp":"2026-10-23T05:31:52.824Z","level":"log","context":"RoutesResolver","message":"EmailController {/email-templates}:"}
{"timestamp":"2026-10-23T05:31:52.824Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates/test, POST} route"}
{"timestamp":"2026-10-23T05:31:52.824Z","level":"log","context":"RoutesResolver","message":"EmployeeController {/employees}:"}
{"timestamp":"2026-10-23T05:31:52.824Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees, POST} route"}
{"timestamp":"2026-10-23T05:31:52.824Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees, GET} route"}
{"timestamp":"2026-10-23T05:31:52.825Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees/export, GET} route"}
{"timestamp":"2026-10-23T05:31:52.825Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees/risk-stats, GET} route"}
{"timestamp":"2026-10-23T05:31:52.825Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees/:id, GET} route"}
{"timestamp":"2026-10-23T05:31:52.825Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees/:id, PUT} route"}
{"timestamp":"2026-10-23T05:31:52.825Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees/:id, DELETE} route"}
{"timestamp":"2026-10-23T05:31:52.825Z","level":"log","context":"RoutesResolver","message":"GroupController {/groups}:"}
{"timestamp":"2026-10-23T05:31:52.825Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups, POST} route"}
{"timestamp":"2026-10-23T05:31:52.826Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups, GET} route"}
{"timestamp":"2026-10-23T05:31:52.826Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups/standard, GET} route"}
{"timestamp":"2026-10-23T05:31:52.826Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups/:id, GET} route"}
{"timestamp":"2026-10-23T05:31:52.826Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups/:id, PUT} route"}
{"timestamp":"2026-10-23T05:31:52.826Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups/:id, DELETE} route"}
{"timestamp":"2026-10-23T05:31:52.826Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups/:id/info, GET} route"}
{"timestamp":"2026-10-23T05:31:52.827Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups/:id/with-employees, GET} route"}
{"timestamp":"2026-10-23T05:31:52.827Z","level":"log","context":"RoutesResolver","message":"SenderProfileController {/sender-profiles}:"}
{"timestamp":"2026-10-23T05:31:52.827Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles, GET} route"}
{"timestamp":"2026-10-23T05:31:52.827Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles/:id, GET} route"}
{"timestamp":"2026-10-23T05:31:52.827Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles, POST} route"}
{"timestamp":"2026-10-23T05:31:52.827Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles/:id, PUT} route"}
{"timestamp":"2026-10-23T05:31:52.827Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles/:id, DELETE} route"}
{"timestamp":"2026-10-23T05:31:52.828Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles/:id/verify-domain, POST} route"}
{"timestamp":"2026-10-23T05:31:52.828Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles/domain-verification, GET} route"}
{"timestamp":"2026-10-23T05:31:52.828Z","level":"log","context":"RoutesResolver","message":"EmailTemplateController {/email-templates}:"}
{"timestamp":"2026-10-23T05:31:52.828Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates, GET} route"}
{"timestamp":"2026-10-23T05:31:52.828Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates/:id, GET} route"}
{"timestamp":"2026-10-23T05:31:52.828Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates, POST} route"}
{"timestamp":"2026-10-23T05:31:52.828Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates/:id, PUT} route"}
{"timestamp":"2026-10-23T05:31:52.829Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates/:id, DELETE} route"}
{"timestamp":"2026-10-23T05:31:52.829Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates/:id/duplicate, POST} route"}
{"timestamp":"2026-10-23T05:31:52.829Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates/:id/preview, GET} route"}
{"timestamp":"2026-10-23T05:31:52.829Z","level":"log","context":"RoutesResolver","message":"ScenarioController {/scenarios}:"}
{"timestamp":"2026-10-23T05:31:52.829Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios, POST} route"}
{"timestamp":"2026-10-23T05:31:52.829Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios/generate-content, POST} route"}
{"timestamp":"2026-10-23T05:31:52.829Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios, GET} route"}
{"timestamp":"2026-10-23T05:31:52.830Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios/:id, GET} route"}
{"timestamp":"2026-10-23T05:31:52.830Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios/:id, PUT} route"}
{"timestamp":"2026-10-23T05:31:52.830Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios/:id, DELETE} route"}
{"timestamp":"2026-10-23T05:31:52.830Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios/generate-from-json, POST} route"}
{"timestamp":"2026-10-23T05:31:52.830Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios/:id/save-as-custom-scenario, POST} route"}
{"timestamp":"2026-10-23T05:31:52.830Z","level":"log","context":"RoutesResolver","message":"CampaignController {/campaigns}:"}
{"timestamp":"2026-10-23T05:31:52.831Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns, POST} route"}
{"timestamp":"2026-10-23T05:31:52.831Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns, GET} route"}
{"timestamp":"2026-10-23T05:31:52.831Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id, GET} route"}
{"timestamp":"2026-10-23T05:31:52.831Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id/details, GET} route"}
{"timestamp":"2026-10-23T05:31:52.831Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id/employees, GET} route"}
{"timestamp":"2026-10-23T05:31:52.832Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id, PATCH} route"}
{"timestamp":"2026-10-23T05:31:52.832Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id/start, POST} route"}
{"timestamp":"2026-10-23T05:31:52.832Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id/stop, POST} route"}
{"timestamp":"2026-10-23T05:31:52.832Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id/duplicate, POST} route"}
{"timestamp":"2026-10-23T05:31:52.832Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id, DELETE} route"}
{"timestamp":"2026-10-23T05:31:52.832Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/auto-generate-program, POST} route"}
{"timestamp":"2026-10-23T05:31:52.833Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/generate-from-threat-intelligence, POST} route"}
{"timestamp":"2026-10-23T05:31:52.833Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id/risk-score, GET} route"}
{"timestamp":"2026-10-23T05:31:52.833Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/recalculate-risk-scores, POST} route"}
{"timestamp":"2026-10-23T05:31:52.833Z","level":"log","context":"RoutesResolver","message":"CampaignController {/api/campaigns}:"}
{"timestamp":"2026-10-23T05:31:52.833Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns, POST} route"}
{"timestamp":"2026-10-23T05:31:52.833Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns, GET} route"}
{"timestamp":"2026-10-23T05:31:52.833Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id, GET} route"}
{"timestamp":"2026-10-23T05:31:52.834Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id/details, GET} route"}
{"timestamp":"2026-10-23T05:31:52.834Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id/employees, GET} route"}
{"timestamp":"2026-10-23T05:31:52.834Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id, PATCH} route"}
{"timestamp":"2026-10-23T05:31:52.834Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id/start, POST} route"}
{"timestamp":"2026-10-23T05:31:52.834Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id/stop, POST} route"}
{"timestamp":"2026-10-23T05:31:52.834Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id/duplicate, POST} route"}
{"timestamp":"2026-10-23T05:31:52.834Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id, DELETE} route"}
{"timestamp":"2026-10-23T05:31:52.835Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/auto-generate-program, POST} route"}
{"timestamp":"2026-10-23T05:31:52.835Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/generate-from-threat-intelligence, POST} route"}
{"timestamp":"2026-10-23T05:31:52.835Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id/risk-score, GET} route"}
{"timestamp":"2026-10-23T05:31:52.835Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/recalculate-risk-scores, POST} route"}
{"timestamp":"2026-10-23T05:31:52.835Z","level":"log","context":"RoutesResolver","message":"NotificationsController {/notifications}:"}
{"timestamp":"2026-10-23T05:31:52.835Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications, POST} route"}
{"timestamp":"2026-10-23T05:31:52.836Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications, GET} route"}
{"timestamp":"2026-10-23T05:31:52.836Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/unread, GET} route"}
{"timestamp":"2026-10-23T05:31:52.836Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/unread-count, GET} route"}
{"timestamp":"2026-10-23T05:31:52.836Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/:id, GET} route"}
{"timestamp":"2026-10-23T05:31:52.836Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/:id, PATCH} route"}
{"timestamp":"2026-10-23T05:31:52.836Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/:id/read, PATCH} route"}
{"timestamp":"2026-10-23T05:31:52.837Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/mark-all-read, PATCH} route"}
{"timestamp":"2026-10-23T05:31:52.837Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/:id, DELETE} route"}
{"timestamp":"2026-10-23T05:31:52.837Z","level":"log","context":"RoutesResolver","message":"LandingPageController {/lp}:"}
{"timestamp":"2026-10-23T05:31:52.837Z","level":"log","context":"RouterExplorer","message":"Mapped {/lp/image, GET} route"}
{"timestamp":"2026-10-23T05:31:52.837Z","level":"log","context":"RouterExplorer","message":"Mapped {/lp/learning, GET} route"}
{"timestamp":"2026-10-23T05:31:52.838Z","level":"log","context":"RouterExplorer","message":"Mapped {/lp/submit, POST} route"}
{"timestamp":"2026-10-23T05:31:52.838Z","level":"log","context":"RouterExplorer","message":"Mapped {/lp/test, GET} route"}
{"timestamp":"2026-10-23T05:31:52.838Z","level":"warn","context":"LegacyRouteConverter","message":"Unsupported route path: \"/lp/*\". In previous versions, the symbols ?, *, and + were used to denote optional or repeating path parameters. The latest version of \"path-to-regexp\" now requires the use of named parameters. For example, instead of using a route like /users/* to capture all routes starting with \"/users\", you should use /users/*path. For more details, refer to the migration guide. Attempting to auto-convert..."}
{"timestamp":"2026-10-23T05:31:52.839Z","level":"log","context":"RouterExplorer","message":"Mapped {/lp/*, ALL} route"}
{"timestamp":"2026-10-23T05:31:52.839Z","level":"log","context":"RoutesResolver","message":"SupportController {/support}:"}
{"timestamp":"2026-10-23T05:31:52.839Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets, POST} route"}
{"timestamp":"2026-10-23T05:31:52.839Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets, GET} route"}
{"timestamp":"2026-10-23T05:31:52.839Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets/:id, GET} route"}
{"timestamp":"2026-10-23T05:31:52.839Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets/:id, PATCH} route"}
{"timestamp":"2026-10-23T05:31:52.840Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets/:id, DELETE} route"}
{"timestamp":"2026-10-23T05:31:52.840Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets/:id/messages, POST} route"}
{"timestamp":"2026-10-23T05:31:52.840Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets/:id/close, POST} route"}
{"timestamp":"2026-10-23T05:31:52.840Z","level":"log","context":"RoutesResolver","message":"BusninessMetricsController {/business-metrics}:"}
{"timestamp":"2026-10-23T05:31:52.840Z","level":"log","context":"RouterExplorer","message":"Mapped {/business-metrics, GET} route"}
{"timestamp":"2026-10-23T05:31:52.840Z","level":"log","context":"RoutesResolver","message":"UsersController {/users}:"}
{"timestamp":"2026-10-23T05:31:52.840Z","level":"log","context":"RouterExplorer","message":"Mapped {/users/:id, PUT} route"}
{"timestamp":"2026-10-23T05:31:52.841Z","level":"log","context":"RouterExplorer","message":"Mapped {/users/settings, GET} route"}
{"timestamp":"2026-10-23T05:31:52.841Z","level":"log","context":"RouterExplorer","message":"Mapped {/users/settings/general, PUT} route"}
{"timestamp":"2026-10-23T05:31:52.841Z","level":"log","context":"RouterExplorer","message":"Mapped {/users/company/settings, PUT} route"}
{"timestamp":"2026-10-23T05:31:52.841Z","level":"log","context":"RouterExplorer","message":"Mapped {/users/change-password, POST} route"}
{"timestamp":"2026-10-23T05:31:52.841Z","level":"log","context":"RouterExplorer","message":"Mapped {/users/localization/settings, PUT} route"}
{"timestamp":"2026-10-23T05:31:52.841Z","level":"log","context":"RoutesResolver","message":"PartnerController {/partner}:"}
{"timestamp":"2026-10-23T05:31:52.842Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses, POST} route"}
{"timestamp":"2026-10-23T05:31:52.842Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses, GET} route"}
{"timestamp":"2026-10-23T05:31:52.842Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses/:id, GET} route"}
{"timestamp":"2026-10-23T05:31:52.842Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses/:id, PUT} route"}
{"timestamp":"2026-10-23T05:31:52.842Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses/:id, DELETE} route"}
{"timestamp":"2026-10-23T05:31:52.843Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses/:id/impersonate, POST} route"}
{"timestamp":"2026-10-23T05:31:52.843Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses/stop-impersonation, POST} route"}
{"timestamp":"2026-10-23T05:31:52.843Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/license-usage, GET} route"}
{"timestamp":"2026-10-23T05:31:52.843Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/invoices, POST} route"}
{"timestamp":"2026-10-23T05:31:52.843Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/invoices, GET} route"}
{"timestamp":"2026-10-23T05:31:52.843Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/invoices/:id, GET} route"}
{"timestamp":"2026-10-23T05:31:52.844Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/invoices/:id, PUT} route"}
{"timestamp":"2026-10-23T05:31:52.844Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/invoices/:id, DELETE} route"}
{"timestamp":"2026-10-23T05:31:52.844Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/invoices/:id/mark-paid, PUT} route"}
{"timestamp":"2026-10-23T05:31:52.844Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/onboarding/generate-token, POST} route"}
{"timestamp":"2026-10-23T05:31:52.844Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/dashboard, GET} route"}
{"timestamp":"2026-10-23T05:31:52.844Z","level":"log","context":"RoutesResolver","message":"MspSubscriptionController {/partner/msp-subscriptions}:"}
{"timestamp":"2026-10-23T05:31:52.844Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/plans, POST} route"}
{"timestamp":"2026-10-23T05:31:52.845Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/plans, GET} route"}
{"timestamp":"2026-10-23T05:31:52.845Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/plans/:planId, GET} route"}
{"timestamp":"2026-10-23T05:31:52.845Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/plans/:planId, PUT} route"}
{"timestamp":"2026-10-23T05:31:52.845Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/plans/:planId, DELETE} route"}
{"timestamp":"2026-10-23T05:31:52.845Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/businesses/:businessId/subscription, POST} route"}
{"timestamp":"2026-10-23T05:31:52.845Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions, GET} route"}
{"timestamp":"2026-10-23T05:31:52.846Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/businesses/:businessId/subscription, GET} route"}
{"timestamp":"2026-10-23T05:31:52.846Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/businesses/:businessId/subscription, PUT} route"}
{"timestamp":"2026-10-23T05:31:52.846Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/businesses/:businessId/subscription, DELETE} route"}
{"timestamp":"2026-10-23T05:31:52.846Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/businesses/:businessId/subscription/limits, GET} route"}
{"timestamp":"2026-10-23T05:31:52.846Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/businesses/:businessId/subscription/change-plan, PUT} route"}
{"timestamp":"2026-10-23T05:31:52.846Z","level":"log","context":"RoutesResolver","message":"OnboardingController {/onboarding}:"}
{"timestamp":"2026-10-23T05:31:52.846Z","level":"log","context":"RouterExplorer","message":"Mapped {/onboarding/validate/:token, GET} route"}
{"timestamp":"2026-10-23T05:31:52.847Z","level":"log","context":"RouterExplorer","message":"Mapped {/onboarding/complete/:token, POST} route"}
{"timestamp":"2026-10-23T05:31:52.847Z","level":"log","context":"RoutesResolver","message":"ResellerController {/reseller}:"}
{"timestamp":"2026-10-23T05:31:52.847Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/businesses, POST} route"}
{"timestamp":"2026-10-23T05:31:52.847Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/businesses, GET} route"}
{"timestamp":"2026-10-23T05:31:52.847Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/businesses/:id, GET} route"}
{"timestamp":"2026-10-23T05:31:52.847Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/businesses/:id, PUT} route"}
{"timestamp":"2026-10-23T05:31:52.848Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/businesses/:id, DELETE} route"}
{"timestamp":"2026-10-23T05:31:52.848Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/license-usage, GET} route"}
{"timestamp":"2026-10-23T05:31:52.848Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/invoices, POST} route"}
{"timestamp":"2026-10-23T05:31:52.848Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/invoices, GET} route"}
{"timestamp":"2026-10-23T05:31:52.848Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/invoices/:id, GET} route"}
{"timestamp":"2026-10-23T05:31:52.848Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/invoices/:id, PUT} route"}
{"timestamp":"2026-10-23T05:31:52.848Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/invoices/:id, DELETE} route"}
{"timestamp":"2026-10-23T05:31:52.849Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/invoices/:id/mark-paid, PUT} route"}
{"timestamp":"2026-10-23T05:31:52.849Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/onboarding/generate-token, POST} route"}
{"timestamp":"2026-10-23T05:31:52.849Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/dashboard, GET} route"}
{"timestamp":"2026-10-23T05:31:52.849Z","level":"log","context":"RoutesResolver","message":"ResellerSubscriptionController {/reseller}:"}
{"timestamp":"2026-10-23T05:31:52.849Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/plans, POST} route"}
{"timestamp":"2026-10-23T05:31:52.849Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/plans, GET} route"}
{"timestamp":"2026-10-23T05:31:52.849Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/plans/:planId, GET} route"}
{"timestamp":"2026-10-23T05:31:52.849Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/plans/:planId, PUT} route"}
{"timestamp":"2026-10-23T05:31:52.850Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/plans/:planId, DELETE} route"}
{"timestamp":"2026-10-23T05:31:52.850Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/subscriptions/businesses/:businessId/subscription, POST} route"}
{"timestamp":"2026-10-23T05:31:52.850Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/subscriptions, GET} route"}
{"timestamp":"2026-10-23T05:31:52.850Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/subscriptions/businesses/:businessId/subscription, GET} route"}
{"timestamp":"2026-10-23T05:31:52.850Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/subscriptions/businesses/:businessId/subscription, PUT} route"}
{"timestamp":"2026-10-23T05:31:52.850Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/subscriptions/businesses/:businessId/subscription, DELETE} route"}
{"timestamp":"2026-10-23T05:31:52.851Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/subscriptions/businesses/:businessId/subscription/limits, GET} route"}
{"timestamp":"2026-10-23T05:31:52.851Z","level":"log","context":"RoutesResolver","message":"HealthController {/health}:"}
{"timestamp":"2026-10-23T05:31:52.851Z","level":"log","context":"RouterExplorer","message":"Mapped {/health, GET} route"}
{"timestamp":"2026-10-23T05:31:52.851Z","level":"log","context":"RouterExplorer","message":"Mapped {/health/test-logs, GET} route"}
{"timestamp":"2026-10-23T05:31:52.851Z","level":"log","context":"RoutesResolver","message":"AzureAdController {/azure-ad}:"}
{"timestamp":"2026-10-23T05:31:52.851Z","level":"log","context":"RouterExplorer","message":"Mapped {/azure-ad/config, POST} route"}
{"timestamp":"2026-10-23T05:31:52.851Z","level":"log","context":"RouterExplorer","message":"Mapped {/azure-ad/config, GET} route"}
{"timestamp":"2026-10-23T05:31:52.851Z","level":"log","context":"RouterExplorer","message":"Mapped {/azure-ad/test-connection, POST} route"}
{"timestamp":"2026-10-23T05:31:52.852Z","level":"log","context":"RouterExplorer","message":"Mapped {/azure-ad/sync, POST} route"}
{"timestamp":"2026-10-23T05:31:52.852Z","level":"log","context":"RoutesResolver","message":"ThreatsController {/threats}:"}
{"timestamp":"2026-10-23T05:31:52.852Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats, POST} route"}
{"timestamp":"2026-10-23T05:31:52.852Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats, GET} route"}
{"timestamp":"2026-10-23T05:31:52.852Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/chart-data, GET} route"}
{"timestamp":"2026-10-23T05:31:52.852Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/claude-search, POST} route"}
{"timestamp":"2026-10-23T05:31:52.852Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/claude-latest, POST} route"}
{"timestamp":"2026-10-23T05:31:52.853Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/claude-trending, POST} route"}
{"timestamp":"2026-10-23T05:31:52.853Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/claude-categories, POST} route"}
{"timestamp":"2026-10-23T05:31:52.853Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/claude-manual-search, POST} route"}
{"timestamp":"2026-10-23T05:31:52.853Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/claude-quick-search, POST} route"}
{"timestamp":"2026-10-23T05:31:52.853Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/scheduler-status, GET} route"}
{"timestamp":"2026-10-23T05:31:52.853Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/health-check, GET} route"}
{"timestamp":"2026-10-23T05:31:52.854Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/pause-scheduler, POST} route"}
{"timestamp":"2026-10-23T05:31:52.854Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/:id, GET} route"}
{"timestamp":"2026-10-23T05:31:52.854Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/:id, PATCH} route"}
{"timestamp":"2026-10-23T05:31:52.854Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/:id, DELETE} route"}
{"timestamp":"2026-10-23T05:31:52.854Z","level":"log","context":"RoutesResolver","message":"DomainController {/domains}:"}
{"timestamp":"2026-10-23T05:31:52.854Z","level":"log","context":"RouterExplorer","message":"Mapped {/domains, GET} route"}
{"timestamp":"2026-10-23T05:31:52.854Z","level":"log","context":"RouterExplorer","message":"Mapped {/domains/:id, GET} route"}
{"timestamp":"2026-10-23T05:31:52.854Z","level":"log","context":"RouterExplorer","message":"Mapped {/domains, POST} route"}
{"timestamp":"2026-10-23T05:31:52.855Z","level":"log","context":"RouterExplorer","message":"Mapped {/domains/:id, PUT} route"}
{"timestamp":"2026-10-23T05:31:52.855Z","level":"log","context":"RouterExplorer","message":"Mapped {/domains/:id, DELETE} route"}
{"timestamp":"2026-10-23T05:31:52.855Z","level":"log","context":"RouterExplorer","message":"Mapped {/domains/seed, POST} route"}
{"timestamp":"2026-10-23T05:31:52.855Z","level":"log","context":"RoutesResolver","message":"MspSubscriptionController {/msp-subscription}:"}
{"timestamp":"2026-10-23T05:31:52.855Z","level":"log","context":"RouterExplorer","message":"Mapped {/msp-subscription/current, GET} route"}
{"timestamp":"2026-10-23T05:31:52.855Z","level":"log","context":"RouterExplorer","message":"Mapped {/msp-subscription/invoices, GET} route"}
{"timestamp":"2026-10-23T05:31:52.855Z","level":"log","context":"RouterExplorer","message":"Mapped {/msp-subscription/invoice/:invoiceId/pdf, GET} route"}
{"timestamp":"2026-10-23T05:31:52.856Z","level":"log","context":"RoutesResolver","message":"MspSubscriptionController {/api/msp-subscription}:"}
{"timestamp":"2026-10-23T05:31:52.856Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/msp-subscription/current, GET} route"}
{"timestamp":"2026-10-23T05:31:52.856Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/msp-subscription/invoices, GET} route"}
{"timestamp":"2026-10-23T05:31:52.856Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/msp-subscription/invoice/:invoiceId/pdf, GET} route"}
{"timestamp":"2026-10-23T05:31:52.926Z","level":"log","context":"NestApplication","message":"Nest application successfully started"}
{"timestamp":"2026-10-23T05:31:52.934Z","level":"log","context":"Bootstrap","message":"Users API successfully started on port 3842"}
{"timestamp":"2026-10-23T05:31:52.934Z","level":"log","context":"SeedService","message":"🌱 Starting database seeding..."}
{"timestamp":"2026-10-23T05:31:52.940Z","level":"log","context":"SeedService","message":"Admin account already exists, skipping seed"}
{"timestamp":"2026-10-23T05:31:52.942Z","level":"log","context":"SeedService","message":"Reseller account already exists, skipping seed"}
{"timestamp":"2026-10-23T05:31:52.944Z","level":"log","context":"SeedService","message":"MSP account already exists, skipping seed"}
{"timestamp":"2026-10-23T05:31:52.944Z","level":"log","context":"SeedService","message":"✅ Database seeding completed successfully"}
{"timestamp":"2026-10-23T10:14:10.310Z","level":"warn","context":"LegacyRouteConverter","message":"Unsupported route path: \"/lp/*\". In previous versions, the symbols ?, *, and + were used to denote optional or repeating path parameters. The latest version of \"path-to-regexp\" now requires the use of named parameters. For example, instead of using a route like /users/* to capture all routes starting with \"/users\", you should use /users/*path. For more details, refer to the migration guide. Attempting to auto-convert..."}
{"timestamp":"2026-10-23T10:14:10.347Z","level":"log","context":"Bootstrap","message":"Starting Users API on port 3842..."}
{"timestamp":"2026-10-23T10:14:10.350Z","level":"log","context":"RoutesResolver","message":"UsersApiController {/}:"}
{"timestamp":"2026-10-23T10:14:10.354Z","level":"log","context":"RouterExplorer","message":"Mapped {/, GET} route"}
{"timestamp":"2026-10-23T10:14:10.354Z","level":"log","context":"RoutesResolver","message":"AuthController {/auth}:"}
{"timestamp":"2026-10-23T10:14:10.355Z","level":"log","context":"RouterExplorer","message":"Mapped {/auth/login, POST} route"}
{"timestamp":"2026-10-23T10:14:10.355Z","level":"log","context":"RouterExplorer","message":"Mapped {/auth/admin/login, POST} route"}
{"timestamp":"2026-10-23T10:14:10.356Z","level":"log","context":"RouterExplorer","message":"Mapped {/auth/send-otp, POST} route"}
{"timestamp":"2026-10-23T10:14:10.356Z","level":"log","context":"RouterExplorer","message":"Mapped {/auth/verify-otp, POST} route"}
{"timestamp":"2026-10-23T10:14:10.356Z","level":"log","context":"RouterExplorer","message":"Mapped {/auth/signup, POST} route"}
{"timestamp":"2026-10-23T10:14:10.357Z","level":"log","context":"RouterExplorer","message":"Mapped {/auth/subscription-status, GET} route"}
{"timestamp":"2026-10-23T10:14:10.357Z","level":"log","context":"RoutesResolver","message":"AdminMspController {/admin/msp}:"}
{"timestamp":"2026-10-23T10:14:10.357Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/msp, GET} route"}
{"timestamp":"2026-10-23T10:14:10.358Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/msp/:id, GET} route"}
{"timestamp":"2026-10-23T10:14:10.359Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/msp, POST} route"}
{"timestamp":"2026-10-23T10:14:10.359Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/msp/:id, PUT} route"}
{"timestamp":"2026-10-23T10:14:10.359Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/msp/:id, DELETE} route"}
{"timestamp":"2026-10-23T10:14:10.360Z","level":"log","context":"RoutesResolver","message":"AdminLicenseController {/admin/licenses}:"}
{"timestamp":"2026-10-23T10:14:10.360Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/licenses/summary, GET} route"}
{"timestamp":"2026-10-23T10:14:10.360Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/licenses/msp/:mspId, GET} route"}
{"timestamp":"2026-10-23T10:14:10.360Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/licenses/msp/:mspId, PUT} route"}
{"timestamp":"2026-10-23T10:14:10.360Z","level":"log","context":"RoutesResolver","message":"AdminImpersonationController {/admin/impersonation}:"}
{"timestamp":"2026-10-23T10:14:10.361Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/impersonation/msp-users, GET} route"}
{"timestamp":"2026-10-23T10:14:10.361Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/impersonation/impersonate, POST} route"}
{"timestamp":"2026-10-23T10:14:10.361Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/impersonation/stop, POST} route"}
{"timestamp":"2026-10-23T10:14:10.361Z","level":"log","context":"RoutesResolver","message":"AdminAiUsageController {/admin/ai-usage}:"}
{"timestamp":"2026-10-23T10:14:10.362Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-usage, GET} route"}
{"timestamp":"2026-10-23T10:14:10.362Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-usage/business/:businessId, GET} route"}
{"timestamp":"2026-10-23T10:14:10.362Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-usage/report/monthly, GET} route"}
{"timestamp":"2026-10-23T10:14:10.362Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-usage/pricing, GET} route"}
{"timestamp":"2026-10-23T10:14:10.362Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-usage/pricing, POST} route"}
{"timestamp":"2026-10-23T10:14:10.363Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-usage/credit/:businessId, PUT} route"}
{"timestamp":"2026-10-23T10:14:10.363Z","level":"log","context":"RoutesResolver","message":"AdminAiUsageController {/api/admin/ai-usage}:"}
{"timestamp":"2026-10-23T10:14:10.363Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-usage, GET} route"}
{"timestamp":"2026-10-23T10:14:10.363Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-usage/business/:businessId, GET} route"}
{"timestamp":"2026-10-23T10:14:10.363Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-usage/report/monthly, GET} route"}
{"timestamp":"2026-10-23T10:14:10.363Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-usage/pricing, GET} route"}
{"timestamp":"2026-10-23T10:14:10.363Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-usage/pricing, POST} route"}
{"timestamp":"2026-10-23T10:14:10.364Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-usage/credit/:businessId, PUT} route"}
{"timestamp":"2026-10-23T10:14:10.364Z","level":"log","context":"RoutesResolver","message":"AdminAiModelController {/admin/ai-models}:"}
{"timestamp":"2026-10-23T10:14:10.364Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models, POST} route"}
{"timestamp":"2026-10-23T10:14:10.364Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models, GET} route"}
{"timestamp":"2026-10-23T10:14:10.364Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/default, GET} route"}
{"timestamp":"2026-10-23T10:14:10.365Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/:id, GET} route"}
{"timestamp":"2026-10-23T10:14:10.365Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/:id, PUT} route"}
{"timestamp":"2026-10-23T10:14:10.365Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/:id, DELETE} route"}
{"timestamp":"2026-10-23T10:14:10.365Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/:id/set-default, POST} route"}
{"timestamp":"2026-10-23T10:14:10.365Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/assign-to-business, POST} route"}
{"timestamp":"2026-10-23T10:14:10.365Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/business/:businessId, GET} route"}
{"timestamp":"2026-10-23T10:14:10.366Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/:id/businesses, GET} route"}
{"timestamp":"2026-10-23T10:14:10.366Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/initialize-defaults, POST} route"}
{"timestamp":"2026-10-23T10:14:10.366Z","level":"log","context":"RoutesResolver","message":"AdminAiModelController {/api/admin/ai-models}:"}
{"timestamp":"2026-10-23T10:14:10.366Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models, POST} route"}
{"timestamp":"2026-10-23T10:14:10.366Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models, GET} route"}
{"timestamp":"2026-10-23T10:14:10.366Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/default, GET} route"}
{"timestamp":"2026-10-23T10:14:10.367Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/:id, GET} route"}
{"timestamp":"2026-10-23T10:14:10.367Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/:id, PUT} route"}
{"timestamp":"2026-10-23T10:14:10.367Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/:id, DELETE} route"}
{"timestamp":"2026-10-23T10:14:10.367Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/:id/set-default, POST} route"}
{"timestamp":"2026-10-23T10:14:10.367Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/assign-to-business, POST} route"}
{"timestamp":"2026-10-23T10:14:10.368Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/business/:businessId, GET} route"}
{"timestamp":"2026-10-23T10:14:10.368Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/:id/businesses, GET} route"}
{"timestamp":"2026-10-23T10:14:10.368Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/initialize-defaults, POST} route"}
{"timestamp":"2026-10-23T10:14:10.368Z","level":"log","context":"RoutesResolver","message":"AdminBusinessController {/admin/businesses}:"}
{"timestamp":"2026-10-23T10:14:10.368Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/businesses, GET} route"}
{"timestamp":"2026-10-23T10:14:10.368Z","level":"log","context":"RoutesResolver","message":"ResellerManagementController {/admin/resellers}:"}
{"timestamp":"2026-10-23T10:14:10.368Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/resellers, GET} route"}
{"timestamp":"2026-10-23T10:14:10.369Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/resellers/create-default, POST} route"}
{"timestamp":"2026-10-23T10:14:10.369Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/resellers, POST} route"}
{"timestamp":"2026-10-23T10:14:10.369Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/resellers/:id/toggle-status, PUT} route"}
{"timestamp":"2026-10-23T10:14:10.369Z","level":"log","context":"RoutesResolver","message":"SubscriptionController {/subscription}:"}
{"timestamp":"2026-10-23T10:14:10.369Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/plans, GET} route"}
{"timestamp":"2026-10-23T10:14:10.369Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/calculate-price, POST} route"}
{"timestamp":"2026-10-23T10:14:10.370Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/current, GET} route"}
{"timestamp":"2026-10-23T10:14:10.370Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/create, POST} route"}
{"timestamp":"2026-10-23T10:14:10.370Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/:id, PUT} route"}
{"timestamp":"2026-10-23T10:14:10.370Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/:id/cancel, DELETE} route"}
{"timestamp":"2026-10-23T10:14:10.370Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/sync/:stripeSubscriptionId, POST} route"}
{"timestamp":"2026-10-23T10:14:10.370Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/payments, GET} route"}
{"timestamp":"2026-10-23T10:14:10.371Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/payments/stats, GET} route"}
{"timestamp":"2026-10-23T10:14:10.371Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/payment/:id, GET} route"}
{"timestamp":"2026-10-23T10:14:10.371Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/payment-methods/attach, POST} route"}
{"timestamp":"2026-10-23T10:14:10.371Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/payment-methods/:paymentMethodId, DELETE} route"}
{"timestamp":"2026-10-23T10:14:10.371Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/payment-methods, GET} route"}
{"timestamp":"2026-10-23T10:14:10.371Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/setup-intent, POST} route"}
{"timestamp":"2026-10-23T10:14:10.371Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/update-employee-count, POST} route"}
{"timestamp":"2026-10-23T10:14:10.372Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/retry-payment/:subscriptionId, POST} route"}
{"timestamp":"2026-10-23T10:14:10.372Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/invoice/:invoiceId/pdf, GET} route"}
{"timestamp":"2026-10-23T10:14:10.372Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/preview-upgrade, POST} route"}
{"timestamp":"2026-10-23T10:14:10.372Z","level":"log","context":"RoutesResolver","message":"SubscriptionController {/api/subscription}:"}
{"timestamp":"2026-10-23T10:14:10.372Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/plans, GET} route"}
{"timestamp":"2026-10-23T10:14:10.372Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/calculate-price, POST} route"}
{"timestamp":"2026-10-23T10:14:10.372Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/current, GET} route"}
{"timestamp":"2026-10-23T10:14:10.373Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/create, POST} route"}
{"timestamp":"2026-10-23T10:14:10.373Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/:id, PUT} route"}
{"timestamp":"2026-10-23T10:14:10.373Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/:id/cancel, DELETE} route"}
{"timestamp":"2026-10-23T10:14:10.373Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/sync/:stripeSubscriptionId, POST} route"}
{"timestamp":"2026-10-23T10:14:10.373Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/payments, GET} route"}
{"timestamp":"2026-10-23T10:14:10.373Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/payments/stats, GET} route"}
{"timestamp":"2026-10-23T10:14:10.373Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/payment/:id, GET} route"}
{"timestamp":"2026-10-23T10:14:10.374Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/payment-methods/attach, POST} route"}
{"timestamp":"2026-10-23T10:14:10.374Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/payment-methods/:paymentMethodId, DELETE} route"}
{"timestamp":"2026-10-23T10:14:10.374Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/payment-methods, GET} route"}
{"timestamp":"2026-10-23T10:14:10.374Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/setup-intent, POST} route"}
{"timestamp":"2026-10-23T10:14:10.374Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/update-employee-count, POST} route"}
{"timestamp":"2026-10-23T10:14:10.374Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/retry-payment/:subscriptionId, POST} route"}
{"timestamp":"2026-10-23T10:14:10.374Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/invoice/:invoiceId/pdf, GET} route"}
{"timestamp":"2026-10-23T10:14:10.375Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/preview-upgrade, POST} route"}
{"timestamp":"2026-10-23T10:14:10.375Z","level":"log","context":"RoutesResolver","message":"StripeWebhookController {/stripe/webhook}:"}
{"timestamp":"2026-10-23T10:14:10.375Z","level":"log","context":"RouterExplorer","message":"Mapped {/stripe/webhook/test, GET} route"}
{"timestamp":"2026-10-23T10:14:10.375Z","level":"log","context":"RouterExplorer","message":"Mapped {/stripe/webhook, POST} route"}
{"timestamp":"2026-10-23T10:14:10.375Z","level":"log","context":"RoutesResolver","message":"EmailController {/email-templates}:"}
{"timestamp":"2026-10-23T10:14:10.375Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates/test, POST} route"}
{"timestamp":"2026-10-23T10:14:10.375Z","level":"log","context":"RoutesResolver","message":"EmployeeController {/employees}:"}
{"timestamp":"2026-10-23T10:14:10.375Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees, POST} route"}
{"timestamp":"2026-10-23T10:14:10.376Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees, GET} route"}
{"timestamp":"2026-10-23T10:14:10.376Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees/export, GET} route"}
{"timestamp":"2026-10-23T10:14:10.376Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees/risk-stats, GET} route"}
{"timestamp":"2026-10-23T10:14:10.376Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees/:id, GET} route"}
{"timestamp":"2026-10-23T10:14:10.376Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees/:id, PUT} route"}
{"timestamp":"2026-10-23T10:14:10.376Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees/:id, DELETE} route"}
{"timestamp":"2026-10-23T10:14:10.376Z","level":"log","context":"RoutesResolver","message":"GroupController {/groups}:"}
{"timestamp":"2026-10-23T10:14:10.377Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups, POST} route"}
{"timestamp":"2026-10-23T10:14:10.377Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups, GET} route"}
{"timestamp":"2026-10-23T10:14:10.377Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups/standard, GET} route"}
{"timestamp":"2026-10-23T10:14:10.377Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups/:id, GET} route"}
{"timestamp":"2026-10-23T10:14:10.377Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups/:id, PUT} route"}
{"timestamp":"2026-10-23T10:14:10.377Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups/:id, DELETE} route"}
{"timestamp":"2026-10-23T10:14:10.377Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups/:id/info, GET} route"}
{"timestamp":"2026-10-23T10:14:10.378Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups/:id/with-employees, GET} route"}
{"timestamp":"2026-10-23T10:14:10.378Z","level":"log","context":"RoutesResolver","message":"SenderProfileController {/sender-profiles}:"}
{"timestamp":"2026-10-23T10:14:10.378Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles, GET} route"}
{"timestamp":"2026-10-23T10:14:10.378Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles/:id, GET} route"}
{"timestamp":"2026-10-23T10:14:10.378Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles, POST} route"}
{"timestamp":"2026-10-23T10:14:10.378Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles/:id, PUT} route"}
{"timestamp":"2026-10-23T10:14:10.378Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles/:id, DELETE} route"}
{"timestamp":"2026-10-23T10:14:10.379Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles/:id/verify-domain, POST} route"}
{"timestamp":"2026-10-23T10:14:10.379Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles/domain-verification, GET} route"}
{"timestamp":"2026-10-23T10:14:10.379Z","level":"log","context":"RoutesResolver","message":"EmailTemplateController {/email-templates}:"}
{"timestamp":"2026-10-23T10:14:10.379Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates, GET} route"}
{"timestamp":"2026-10-23T10:14:10.379Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates/:id, GET} route"}
{"timestamp":"2026-10-23T10:14:10.379Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates, POST} route"}
{"timestamp":"2026-10-23T10:14:10.379Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates/:id, PUT} route"}
{"timestamp":"2026-10-23T10:14:10.379Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates/:id, DELETE} route"}
{"timestamp":"2026-10-23T10:14:10.380Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates/:id/duplicate, POST} route"}
{"timestamp":"2026-10-23T10:14:10.380Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates/:id/preview, GET} route"}
{"timestamp":"2026-10-23T10:14:10.380Z","level":"log","context":"RoutesResolver","message":"ScenarioController {/scenarios}:"}
{"timestamp":"2026-10-23T10:14:10.380Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios, POST} route"}
{"timestamp":"2026-10-23T10:14:10.380Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios/generate-content, POST} route"}
{"timestamp":"2026-10-23T10:14:10.380Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios, GET} route"}
{"timestamp":"2026-10-23T10:14:10.380Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios/:id, GET} route"}
{"timestamp":"2026-10-23T10:14:10.381Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios/:id, PUT} route"}
{"timestamp":"2026-10-23T10:14:10.381Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios/:id, DELETE} route"}
{"timestamp":"2026-10-23T10:14:10.381Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios/generate-from-json, POST} route"}
{"timestamp":"2026-10-23T10:14:10.381Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios/:id/save-as-custom-scenario, POST} route"}
{"timestamp":"2026-10-23T10:14:10.381Z","level":"log","context":"RoutesResolver","message":"CampaignController {/campaigns}:"}
{"timestamp":"2026-10-23T10:14:10.381Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns, POST} route"}
{"timestamp":"2026-10-23T10:14:10.381Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns, GET} route"}
{"timestamp":"2026-10-23T10:14:10.382Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id, GET} route"}
{"timestamp":"2026-10-23T10:14:10.382Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id/details, GET} route"}
{"timestamp":"2026-10-23T10:14:10.382Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id/employees, GET} route"}
{"timestamp":"2026-10-23T10:14:10.382Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id, PATCH} route"}
{"timestamp":"2026-10-23T10:14:10.382Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id/start, POST} route"}
{"timestamp":"2026-10-23T10:14:10.382Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id/stop, POST} route"}
{"timestamp":"2026-10-23T10:14:10.383Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id/duplicate, POST} route"}
{"timestamp":"2026-10-23T10:14:10.383Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id, DELETE} route"}
{"timestamp":"2026-10-23T10:14:10.383Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/auto-generate-program, POST} route"}
{"timestamp":"2026-10-23T10:14:10.383Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/generate-from-threat-intelligence, POST} route"}
{"timestamp":"2026-10-23T10:14:10.383Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id/risk-score, GET} route"}
{"timestamp":"2026-10-23T10:14:10.383Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/recalculate-risk-scores, POST} route"}
{"timestamp":"2026-10-23T10:14:10.383Z","level":"log","context":"RoutesResolver","message":"CampaignController {/api/campaigns}:"}
{"timestamp":"2026-10-23T10:14:10.384Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns, POST} route"}
{"timestamp":"2026-10-23T10:14:10.384Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns, GET} route"}
{"timestamp":"2026-10-23T10:14:10.384Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id, GET} route"}
{"timestamp":"2026-10-23T10:14:10.384Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id/details, GET} route"}
{"timestamp":"2026-10-23T10:14:10.384Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id/employees, GET} route"}
{"timestamp":"2026-10-23T10:14:10.384Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id, PATCH} route"}
{"timestamp":"2026-10-23T10:14:10.384Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id/start, POST} route"}
{"timestamp":"2026-10-23T10:14:10.385Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id/stop, POST} route"}
{"timestamp":"2026-10-23T10:14:10.385Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id/duplicate, POST} route"}
{"timestamp":"2026-10-23T10:14:10.385Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id, DELETE} route"}
{"timestamp":"2026-10-23T10:14:10.385Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/auto-generate-program, POST} route"}
{"timestamp":"2026-10-23T10:14:10.385Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/generate-from-threat-intelligence, POST} route"}
{"timestamp":"2026-10-23T10:14:10.385Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id/risk-score, GET} route"}
{"timestamp":"2026-10-23T10:14:10.385Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/recalculate-risk-scores, POST} route"}
{"timestamp":"2026-10-23T10:14:10.385Z","level":"log","context":"RoutesResolver","message":"NotificationsController {/notifications}:"}
{"timestamp":"2026-10-23T10:14:10.386Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications, POST} route"}
{"timestamp":"2026-10-23T10:14:10.386Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications, GET} route"}
{"timestamp":"2026-10-23T10:14:10.386Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/unread, GET} route"}
{"timestamp":"2026-10-23T10:14:10.386Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/unread-count, GET} route"}
{"timestamp":"2026-10-23T10:14:10.386Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/:id, GET} route"}
{"timestamp":"2026-10-23T10:14:10.386Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/:id, PATCH} route"}
{"timestamp":"2026-10-23T10:14:10.387Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/:id/read, PATCH} route"}
{"timestamp":"2026-10-23T10:14:10.387Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/mark-all-read, PATCH} route"}
{"timestamp":"2026-10-23T10:14:10.387Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/:id, DELETE} route"}
{"timestamp":"2026-10-23T10:14:10.387Z","level":"log","context":"RoutesResolver","message":"LandingPageController {/lp}:"}
{"timestamp":"2026-10-23T10:14:10.387Z","level":"log","context":"RouterExplorer","message":"Mapped {/lp/image, GET} route"}
{"timestamp":"2026-10-23T10:14:10.388Z","level":"log","context":"RouterExplorer","message":"Mapped {/lp/learning, GET} route"}
{"timestamp":"2026-10-23T10:14:10.388Z","level":"log","context":"RouterExplorer","message":"Mapped {/lp/submit, POST} route"}
{"timestamp":"2026-10-23T10:14:10.388Z","level":"log","context":"RouterExplorer","message":"Mapped {/lp/test, GET} route"}
{"timestamp":"2026-10-23T10:14:10.388Z","level":"warn","context":"LegacyRouteConverter","message":"Unsupported route path: \"/lp/*\". In previous versions, the symbols ?, *, and + were used to denote optional or repeating path parameters. The latest version of \"path-to-regexp\" now requires the use of named parameters. For example, instead of using a route like /users/* to capture all routes starting with \"/users\", you should use /users/*path. For more details, refer to the migration guide. Attempting to auto-convert..."}
{"timestamp":"2026-10-23T10:14:10.389Z","level":"log","context":"RouterExplorer","message":"Mapped {/lp/*, ALL} route"}
{"timestamp":"2026-10-23T10:14:10.389Z","level":"log","context":"RoutesResolver","message":"SupportController {/support}:"}
{"timestamp":"2026-10-23T10:14:10.389Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets, POST} route"}
{"timestamp":"2026-10-23T10:14:10.389Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets, GET} route"}
{"timestamp":"2026-10-23T10:14:10.389Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets/:id, GET} route"}
{"timestamp":"2026-10-23T10:14:10.389Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets/:id, PATCH} route"}
{"timestamp":"2026-10-23T10:14:10.390Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets/:id, DELETE} route"}
{"timestamp":"2026-10-23T10:14:10.390Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets/:id/messages, POST} route"}
{"timestamp":"2026-10-23T10:14:10.390Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets/:id/close, POST} route"}
{"timestamp":"2026-10-23T10:14:10.390Z","level":"log","context":"RoutesResolver","message":"BusninessMetricsController {/business-metrics}:"}
{"timestamp":"2026-10-23T10:14:10.390Z","level":"log","context":"RouterExplorer","message":"Mapped {/business-metrics, GET} route"}
{"timestamp":"2026-10-23T10:14:10.390Z","level":"log","context":"RoutesResolver","message":"UsersController {/users}:"}
{"timestamp":"2026-10-23T10:14:10.390Z","level":"log","context":"RouterExplorer","message":"Mapped {/users/:id, PUT} route"}
{"timestamp":"2026-10-23T10:14:10.391Z","level":"log","context":"RouterExplorer","message":"Mapped {/users/settings, GET} route"}
{"timestamp":"2026-10-23T10:14:10.391Z","level":"log","context":"RouterExplorer","message":"Mapped {/users/settings/general, PUT} route"}
{"timestamp":"2026-10-23T10:14:10.391Z","level":"log","context":"RouterExplorer","message":"Mapped {/users/company/settings, PUT} route"}
{"timestamp":"2026-10-23T10:14:10.391Z","level":"log","context":"RouterExplorer","message":"Mapped {/users/change-password, POST} route"}
{"timestamp":"2026-10-23T10:14:10.391Z","level":"log","context":"RouterExplorer","message":"Mapped {/users/localization/settings, PUT} route"}
{"timestamp":"2026-10-23T10:14:10.391Z","level":"log","context":"RoutesResolver","message":"PartnerController {/partner}:"}
{"timestamp":"2026-10-23T10:14:10.392Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses, POST} route"}
{"timestamp":"2026-10-23T10:14:10.392Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses, GET} route"}
{"timestamp":"2026-10-23T10:14:10.392Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses/:id, GET} route"}
{"timestamp":"2026-10-23T10:14:10.392Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses/:id, PUT} route"}
{"timestamp":"2026-10-23T10:14:10.392Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses/:id, DELETE} route"}
{"timestamp":"2026-10-23T10:14:10.392Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses/:id/impersonate, POST} route"}
{"timestamp":"2026-10-23T10:14:10.392Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses/stop-impersonation, POST} route"}
{"timestamp":"2026-10-23T10:14:10.393Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/license-usage, GET} route"}
{"timestamp":"2026-10-23T10:14:10.393Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/invoices, POST} route"}
{"timestamp":"2026-10-23T10:14:10.393Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/invoices, GET} route"}
{"timestamp":"2026-10-23T10:14:10.393Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/invoices/:id, GET} route"}
{"timestamp":"2026-10-23T10:14:10.393Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/invoices/:id, PUT} route"}
{"timestamp":"2026-10-23T10:14:10.393Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/invoices/:id, DELETE} route"}
{"timestamp":"2026-10-23T10:14:10.393Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/invoices/:id/mark-paid, PUT} route"}
{"timestamp":"2026-10-23T10:14:10.394Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/onboarding/generate-token, POST} route"}
{"timestamp":"2026-10-23T10:14:10.394Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/dashboard, GET} route"}
{"timestamp":"2026-10-23T10:14:10.394Z","level":"log","context":"RoutesResolver","message":"MspSubscriptionController {/partner/msp-subscriptions}:"}
{"timestamp":"2026-10-23T10:14:10.394Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/plans, POST} route"}
{"timestamp":"2026-10-23T10:14:10.394Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/plans, GET} route"}
{"timestamp":"2026-10-23T10:14:10.394Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/plans/:planId, GET} route"}
{"timestamp":"2026-10-23T10:14:10.394Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/plans/:planId, PUT} route"}
{"timestamp":"2026-10-23T10:14:10.395Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/plans/:planId, DELETE} route"}
{"timestamp":"2026-10-23T10:14:10.395Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/businesses/:businessId/subscription, POST} route"}
{"timestamp":"2026-10-23T10:14:10.395Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions, GET} route"}
{"timestamp":"2026-10-23T10:14:10.395Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/businesses/:businessId/subscription, GET} route"}
{"timestamp":"2026-10-23T10:14:10.395Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/businesses/:businessId/subscription, PUT} route"}
{"timestamp":"2026-10-23T10:14:10.395Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/businesses/:businessId/subscription, DELETE} route"}
{"timestamp":"2026-10-23T10:14:10.396Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/businesses/:businessId/subscription/limits, GET} route"}
{"timestamp":"2026-10-23T10:14:10.396Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/businesses/:businessId/subscription/change-plan, PUT} route"}
{"timestamp":"2026-10-23T10:14:10.396Z","level":"log","context":"RoutesResolver","message":"OnboardingController {/onboarding}:"}
{"timestamp":"2026-10-23T10:14:10.396Z","level":"log","context":"RouterExplorer","message":"Mapped {/onboarding/validate/:token, GET} route"}
{"timestamp":"2026-10-23T10:14:10.396Z","level":"log","context":"RouterExplorer","message":"Mapped {/onboarding/complete/:token, POST} route"}
{"timestamp":"2026-10-23T10:14:10.396Z","level":"log","context":"RoutesResolver","message":"ResellerController {/reseller}:"}
{"timestamp":"2026-10-23T10:14:10.396Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/businesses, POST} route"}
{"timestamp":"2026-10-23T10:14:10.397Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/businesses, GET} route"}
{"timestamp":"2026-10-23T10:14:10.397Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/businesses/:id, GET} route"}
{"timestamp":"2026-10-23T10:14:10.397Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/businesses/:id, PUT} route"}
{"timestamp":"2026-10-23T10:14:10.397Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/businesses/:id, DELETE} route"}
{"timestamp":"2026-10-23T10:14:10.397Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/license-usage, GET} route"}
{"timestamp":"2026-10-23T10:14:10.397Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/invoices, POST} route"}
{"timestamp":"2026-10-23T10:14:10.397Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/invoices, GET} route"}
{"timestamp":"2026-10-23T10:14:10.398Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/invoices/:id, GET} route"}
{"timestamp":"2026-10-23T10:14:10.398Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/invoices/:id, PUT} route"}
{"timestamp":"2026-10-23T10:14:10.398Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/invoices/:id, DELETE} route"}
{"timestamp":"2026-10-23T10:14:10.398Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/invoices/:id/mark-paid, PUT} route"}
{"timestamp":"2026-10-23T10:14:10.398Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/onboarding/generate-token, POST} route"}
{"timestamp":"2026-10-23T10:14:10.398Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/dashboard, GET} route"}
{"timestamp":"2026-10-23T10:14:10.398Z","level":"log","context":"RoutesResolver","message":"ResellerSubscriptionController {/reseller}:"}
{"timestamp":"2026-10-23T10:14:10.398Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/plans, POST} route"}
{"timestamp":"2026-10-23T10:14:10.399Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/plans, GET} route"}
{"timestamp":"2026-10-23T10:14:10.399Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/plans/:planId, GET} route"}
{"timestamp":"2026-10-23T10:14:10.399Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/plans/:planId, PUT} route"}
{"timestamp":"2026-10-23T10:14:10.399Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/plans/:planId, DELETE} route"}
{"timestamp":"2026-10-23T10:14:10.399Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/subscriptions/businesses/:businessId/subscription, POST} route"}
{"timestamp":"2026-10-23T10:14:10.399Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/subscriptions, GET} route"}
{"timestamp":"2026-10-23T10:14:10.399Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/subscriptions/businesses/:businessId/subscription, GET} route"}
{"timestamp":"2026-10-23T10:14:10.400Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/subscriptions/businesses/:businessId/subscription, PUT} route"}
{"timestamp":"2026-10-23T10:14:10.400Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/subscriptions/businesses/:businessId/subscription, DELETE} route"}
{"timestamp":"2026-10-23T10:14:10.400Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/subscriptions/businesses/:businessId/subscription/limits, GET} route"}
{"timestamp":"2026-10-23T10:14:10.400Z","level":"log","context":"RoutesResolver","message":"HealthController {/health}:"}
{"timestamp":"2026-10-23T10:14:10.400Z","level":"log","context":"RouterExplorer","message":"Mapped {/health, GET} route"}
{"timestamp":"2026-10-23T10:14:10.400Z","level":"log","context":"RouterExplorer","message":"Mapped {/health/test-logs, GET} route"}
{"timestamp":"2026-10-23T10:14:10.400Z","level":"log","context":"RoutesResolver","message":"AzureAdController {/azure-ad}:"}
{"timestamp":"2026-10-23T10:14:10.400Z","level":"log","context":"RouterExplorer","message":"Mapped {/azure-ad/config, POST} route"}
{"timestamp":"2026-10-23T10:14:10.401Z","level":"log","context":"RouterExplorer","message":"Mapped {/azure-ad/config, GET} route"}
{"timestamp":"2026-10-23T10:14:10.401Z","level":"log","context":"RouterExplorer","message":"Mapped {/azure-ad/test-connection, POST} route"}
{"timestamp":"2026-10-23T10:14:10.401Z","level":"log","context":"RouterExplorer","message":"Mapped {/azure-ad/sync, POST} route"}
{"timestamp":"2026-10-23T10:14:10.401Z","level":"log","context":"RoutesResolver","message":"ThreatsController {/threats}:"}
{"timestamp":"2026-10-23T10:14:10.401Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats, POST} route"}
{"timestamp":"2026-10-23T10:14:10.401Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats, GET} route"}
{"timestamp":"2026-10-23T10:14:10.401Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/chart-data, GET} route"}
{"timestamp":"2026-10-23T10:14:10.402Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/claude-search, POST} route"}
{"timestamp":"2026-10-23T10:14:10.402Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/claude-latest, POST} route"}
{"timestamp":"2026-10-23T10:14:10.402Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/claude-trending, POST} route"}
{"timestamp":"2026-10-23T10:14:10.402Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/claude-categories, POST} route"}
{"timestamp":"2026-10-23T10:14:10.402Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/claude-manual-search, POST} route"}
{"timestamp":"2026-10-23T10:14:10.402Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/claude-quick-search, POST} route"}
{"timestamp":"2026-10-23T10:14:10.402Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/scheduler-status, GET} route"}
{"timestamp":"2026-10-23T10:14:10.403Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/health-check, GET} route"}
{"timestamp":"2026-10-23T10:14:10.403Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/pause-scheduler, POST} route"}
{"timestamp":"2026-10-23T10:14:10.403Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/:id, GET} route"}
{"timestamp":"2026-10-23T10:14:10.403Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/:id, PATCH} route"}
{"timestamp":"2026-10-23T10:14:10.403Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/:id, DELETE} route"}
{"timestamp":"2026-10-23T10:14:10.403Z","level":"log","context":"RoutesResolver","message":"DomainController {/domains}:"}
{"timestamp":"2026-10-23T10:14:10.403Z","level":"log","context":"RouterExplorer","message":"Mapped {/domains, GET} route"}
{"timestamp":"2026-10-23T10:14:10.403Z","level":"log","context":"RouterExplorer","message":"Mapped {/domains/:id, GET} route"}
{"timestamp":"2026-10-23T10:14:10.404Z","level":"log","context":"RouterExplorer","message":"Mapped {/domains, POST} route"}
{"timestamp":"2026-10-23T10:14:10.404Z","level":"log","context":"RouterExplorer","message":"Mapped {/domains/:id, PUT} route"}
{"timestamp":"2026-10-23T10:14:10.404Z","level":"log","context":"RouterExplorer","message":"Mapped {/domains/:id, DELETE} route"}
{"timestamp":"2026-10-23T10:14:10.404Z","level":"log","context":"RouterExplorer","message":"Mapped {/domains/seed, POST} route"}
{"timestamp":"2026-10-23T10:14:10.404Z","level":"log","context":"RoutesResolver","message":"MspSubscriptionController {/msp-subscription}:"}
{"timestamp":"2026-10-23T10:14:10.404Z","level":"log","context":"RouterExplorer","message":"Mapped {/msp-subscription/current, GET} route"}
{"timestamp":"2026-10-23T10:14:10.404Z","level":"log","context":"RouterExplorer","message":"Mapped {/msp-subscription/invoices, GET} route"}
{"timestamp":"2026-10-23T10:14:10.405Z","level":"log","context":"RouterExplorer","message":"Mapped {/msp-subscription/invoice/:invoiceId/pdf, GET} route"}
{"timestamp":"2026-10-23T10:14:10.405Z","level":"log","context":"RoutesResolver","message":"MspSubscriptionController {/api/msp-subscription}:"}
{"timestamp":"2026-10-23T10:14:10.405Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/msp-subscription/current, GET} route"}
{"timestamp":"2026-10-23T10:14:10.405Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/msp-subscription/invoices, GET} route"}
{"timestamp":"2026-10-23T10:14:10.405Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/msp-subscription/invoice/:invoiceId/pdf, GET} route"}
{"timestamp":"2026-10-23T10:14:10.473Z","level":"log","context":"NestApplication","message":"Nest application successfully started"}
{"timestamp":"2026-10-23T10:14:10.480Z","level":"log","context":"Bootstrap","message":"Users API successfully started on port 3842"}
{"timestamp":"2026-10-23T10:14:10.480Z","level":"log","context":"SeedService","message":"🌱 Starting database seeding..."}
{"timestamp":"2026-10-23T10:14:10.483Z","level":"log","context":"SeedService","message":"Admin account already exists, skipping seed"}
{"timestamp":"2026-10-23T10:14:10.485Z","level":"log","context":"SeedService","message":"Reseller account already exists, skipping seed"}
{"timestamp":"2026-10-23T10:14:10.487Z","level":"log","context":"SeedService","message":"MSP account already exists, skipping seed"}
{"timestamp":"2026-10-23T10:14:10.487Z","level":"log","context":"SeedService","message":"✅ Database seeding completed successfully"}
{"timestamp":"2026-10-23T10:14:10.529Z","level":"log","context":"UsersApiController","message":"Hello endpoint accessed"}
{"timestamp":"2026-10-23T10:14:36.434Z","level":"log","context":"UsersApiController","message":"Hello endpoint accessed"}
{"timestamp":"2026-10-23T14:09:48.452Z","level":"warn","context":"LegacyRouteConverter","message":"Unsupported route path: \"/lp/*\". In previous versions, the symbols ?, *, and + were used to denote optional or repeating path parameters. The latest version of \"path-to-regexp\" now requires the use of named parameters. For example, instead of using a route like /users/* to capture all routes starting with \"/users\", you should use /users/*path. For more details, refer to the migration guide. Attempting to auto-convert..."}
{"timestamp":"2026-10-23T14:09:48.486Z","level":"log","context":"Bootstrap","message":"Starting Users API on port 3842..."}
{"timestamp":"2026-10-23T14:09:48.489Z","level":"log","context":"RoutesResolver","message":"UsersApiController {/}:"}
{"timestamp":"2026-10-23T14:09:48.492Z","level":"log","context":"RouterExplorer","message":"Mapped {/, GET} route"}
{"timestamp":"2026-10-23T14:09:48.492Z","level":"log","context":"RoutesResolver","message":"AuthController {/auth}:"}
{"timestamp":"2026-10-23T14:09:48.493Z","level":"log","context":"RouterExplorer","message":"Mapped {/auth/login, POST} route"}
{"timestamp":"2026-10-23T14:09:48.494Z","level":"log","context":"RouterExplorer","message":"Mapped {/auth/admin/login, POST} route"}
{"timestamp":"2026-10-23T14:09:48.494Z","level":"log","context":"RouterExplorer","message":"Mapped {/auth/send-otp, POST} route"}
{"timestamp":"2026-10-23T14:09:48.494Z","level":"log","context":"RouterExplorer","message":"Mapped {/auth/verify-otp, POST} route"}
{"timestamp":"2026-10-23T14:09:48.495Z","level":"log","context":"RouterExplorer","message":"Mapped {/auth/signup, POST} route"}
{"timestamp":"2026-10-23T14:09:48.495Z","level":"log","context":"RouterExplorer","message":"Mapped {/auth/subscription-status, GET} route"}
{"timestamp":"2026-10-23T14:09:48.495Z","level":"log","context":"RoutesResolver","message":"AdminMspController {/admin/msp}:"}
{"timestamp":"2026-10-23T14:09:48.496Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/msp, GET} route"}
{"timestamp":"2026-10-23T14:09:48.497Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/msp/:id, GET} route"}
{"timestamp":"2026-10-23T14:09:48.497Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/msp, POST} route"}
{"timestamp":"2026-10-23T14:09:48.497Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/msp/:id, PUT} route"}
{"timestamp":"2026-10-23T14:09:48.498Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/msp/:id, DELETE} route"}
{"timestamp":"2026-10-23T14:09:48.498Z","level":"log","context":"RoutesResolver","message":"AdminLicenseController {/admin/licenses}:"}
{"timestamp":"2026-10-23T14:09:48.498Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/licenses/summary, GET} route"}
{"timestamp":"2026-10-23T14:09:48.498Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/licenses/msp/:mspId, GET} route"}
{"timestamp":"2026-10-23T14:09:48.499Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/licenses/msp/:mspId, PUT} route"}
{"timestamp":"2026-10-23T14:09:48.499Z","level":"log","context":"RoutesResolver","message":"AdminImpersonationController {/admin/impersonation}:"}
{"timestamp":"2026-10-23T14:09:48.499Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/impersonation/msp-users, GET} route"}
{"timestamp":"2026-10-23T14:09:48.501Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/impersonation/impersonate, POST} route"}
{"timestamp":"2026-10-23T14:09:48.502Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/impersonation/stop, POST} route"}
{"timestamp":"2026-10-23T14:09:48.502Z","level":"log","context":"RoutesResolver","message":"AdminAiUsageController {/admin/ai-usage}:"}
{"timestamp":"2026-10-23T14:09:48.502Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-usage, GET} route"}
{"timestamp":"2026-10-23T14:09:48.502Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-usage/business/:businessId, GET} route"}
{"timestamp":"2026-10-23T14:09:48.502Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-usage/report/monthly, GET} route"}
{"timestamp":"2026-10-23T14:09:48.503Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-usage/pricing, GET} route"}
{"timestamp":"2026-10-23T14:09:48.503Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-usage/pricing, POST} route"}
{"timestamp":"2026-10-23T14:09:48.503Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-usage/credit/:businessId, PUT} route"}
{"timestamp":"2026-10-23T14:09:48.503Z","level":"log","context":"RoutesResolver","message":"AdminAiUsageController {/api/admin/ai-usage}:"}
{"timestamp":"2026-10-23T14:09:48.503Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-usage, GET} route"}
{"timestamp":"2026-10-23T14:09:48.503Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-usage/business/:businessId, GET} route"}
{"timestamp":"2026-10-23T14:09:48.504Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-usage/report/monthly, GET} route"}
{"timestamp":"2026-10-23T14:09:48.504Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-usage/pricing, GET} route"}
{"timestamp":"2026-10-23T14:09:48.504Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-usage/pricing, POST} route"}
{"timestamp":"2026-10-23T14:09:48.504Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-usage/credit/:businessId, PUT} route"}
{"timestamp":"2026-10-23T14:09:48.504Z","level":"log","context":"RoutesResolver","message":"AdminAiModelController {/admin/ai-models}:"}
{"timestamp":"2026-10-23T14:09:48.504Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models, POST} route"}
{"timestamp":"2026-10-23T14:09:48.505Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models, GET} route"}
{"timestamp":"2026-10-23T14:09:48.505Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/default, GET} route"}
{"timestamp":"2026-10-23T14:09:48.505Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/:id, GET} route"}
{"timestamp":"2026-10-23T14:09:48.505Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/:id, PUT} route"}
{"timestamp":"2026-10-23T14:09:48.505Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/:id, DELETE} route"}
{"timestamp":"2026-10-23T14:09:48.505Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/:id/set-default, POST} route"}
{"timestamp":"2026-10-23T14:09:48.506Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/assign-to-business, POST} route"}
{"timestamp":"2026-10-23T14:09:48.506Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/business/:businessId, GET} route"}
{"timestamp":"2026-10-23T14:09:48.506Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/:id/businesses, GET} route"}
{"timestamp":"2026-10-23T14:09:48.506Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/initialize-defaults, POST} route"}
{"timestamp":"2026-10-23T14:09:48.506Z","level":"log","context":"RoutesResolver","message":"AdminAiModelController {/api/admin/ai-models}:"}
{"timestamp":"2026-10-23T14:09:48.506Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models, POST} route"}
{"timestamp":"2026-10-23T14:09:48.507Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models, GET} route"}
{"timestamp":"2026-10-23T14:09:48.507Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/default, GET} route"}
{"timestamp":"2026-10-23T14:09:48.507Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/:id, GET} route"}
{"timestamp":"2026-10-23T14:09:48.507Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/:id, PUT} route"}
{"timestamp":"2026-10-23T14:09:48.507Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/:id, DELETE} route"}
{"timestamp":"2026-10-23T14:09:48.507Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/:id/set-default, POST} route"}
{"timestamp":"2026-10-23T14:09:48.508Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/assign-to-business, POST} route"}
{"timestamp":"2026-10-23T14:09:48.508Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/business/:businessId, GET} route"}
{"timestamp":"2026-10-23T14:09:48.508Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/:id/businesses, GET} route"}
{"timestamp":"2026-10-23T14:09:48.508Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/initialize-defaults, POST} route"}
{"timestamp":"2026-10-23T14:09:48.508Z","level":"log","context":"RoutesResolver","message":"AdminBusinessController {/admin/businesses}:"}
{"timestamp":"2026-10-23T14:09:48.508Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/businesses, GET} route"}
{"timestamp":"2026-10-23T14:09:48.508Z","level":"log","context":"RoutesResolver","message":"ResellerManagementController {/admin/resellers}:"}
{"timestamp":"2026-10-23T14:09:48.509Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/resellers, GET} route"}
{"timestamp":"2026-10-23T14:09:48.509Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/resellers/create-default, POST} route"}
{"timestamp":"2026-10-23T14:09:48.509Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/resellers, POST} route"}
{"timestamp":"2026-10-23T14:09:48.509Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/resellers/:id/toggle-status, PUT} route"}
{"timestamp":"2026-10-23T14:09:48.509Z","level":"log","context":"RoutesResolver","message":"SubscriptionController {/subscription}:"}
{"timestamp":"2026-10-23T14:09:48.509Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/plans, GET} route"}
{"timestamp":"2026-10-23T14:09:48.510Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/calculate-price, POST} route"}
{"timestamp":"2026-10-23T14:09:48.510Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/current, GET} route"}
{"timestamp":"2026-10-23T14:09:48.510Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/create, POST} route"}
{"timestamp":"2026-10-23T14:09:48.510Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/:id, PUT} route"}
{"timestamp":"2026-10-23T14:09:48.510Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/:id/cancel, DELETE} route"}
{"timestamp":"2026-10-23T14:09:48.510Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/sync/:stripeSubscriptionId, POST} route"}
{"timestamp":"2026-10-23T14:09:48.511Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/payments, GET} route"}
{"timestamp":"2026-10-23T14:09:48.511Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/payments/stats, GET} route"}
{"timestamp":"2026-10-23T14:09:48.511Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/payment/:id, GET} route"}
{"timestamp":"2026-10-23T14:09:48.511Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/payment-methods/attach, POST} route"}
{"timestamp":"2026-10-23T14:09:48.511Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/payment-methods/:paymentMethodId, DELETE} route"}
{"timestamp":"2026-10-23T14:09:48.511Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/payment-methods, GET} route"}
{"timestamp":"2026-10-23T14:09:48.512Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/setup-intent, POST} route"}
{"timestamp":"2026-10-23T14:09:48.512Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/update-employee-count, POST} route"}
{"timestamp":"2026-10-23T14:09:48.512Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/retry-payment/:subscriptionId, POST} route"}
{"timestamp":"2026-10-23T14:09:48.512Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/invoice/:invoiceId/pdf, GET} route"}
{"timestamp":"2026-10-23T14:09:48.512Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/preview-upgrade, POST} route"}
{"timestamp":"2026-10-23T14:09:48.512Z","level":"log","context":"RoutesResolver","message":"SubscriptionController {/api/subscription}:"}
{"timestamp":"2026-10-23T14:09:48.512Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/plans, GET} route"}
{"timestamp":"2026-10-23T14:09:48.513Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/calculate-price, POST} route"}
{"timestamp":"2026-10-23T14:09:48.513Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/current, GET} route"}
{"timestamp":"2026-10-23T14:09:48.513Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/create, POST} route"}
{"timestamp":"2026-10-23T14:09:48.513Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/:id, PUT} route"}
{"timestamp":"2026-10-23T14:09:48.513Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/:id/cancel, DELETE} route"}
{"timestamp":"2026-10-23T14:09:48.513Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/sync/:stripeSubscriptionId, POST} route"}
{"timestamp":"2026-10-23T14:09:48.513Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/payments, GET} route"}
{"timestamp":"2026-10-23T14:09:48.514Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/payments/stats, GET} route"}
{"timestamp":"2026-10-23T14:09:48.514Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/payment/:id, GET} route"}
{"timestamp":"2026-10-23T14:09:48.514Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/payment-methods/attach, POST} route"}
{"timestamp":"2026-10-23T14:09:48.514Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/payment-methods/:paymentMethodId, DELETE} route"}
{"timestamp":"2026-10-23T14:09:48.514Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/payment-methods, GET} route"}
{"timestamp":"2026-10-23T14:09:48.514Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/setup-intent, POST} route"}
{"timestamp":"2026-10-23T14:09:48.514Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/update-employee-count, POST} route"}
{"timestamp":"2026-10-23T14:09:48.514Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/retry-payment/:subscriptionId, POST} route"}
{"timestamp":"2026-10-23T14:09:48.515Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/invoice/:invoiceId/pdf, GET} route"}
{"timestamp":"2026-10-23T14:09:48.515Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/preview-upgrade, POST} route"}
{"timestamp":"2026-10-23T14:09:48.515Z","level":"log","context":"RoutesResolver","message":"StripeWebhookController {/stripe/webhook}:"}
{"timestamp":"2026-10-23T14:09:48.515Z","level":"log","context":"RouterExplorer","message":"Mapped {/stripe/webhook/test, GET} route"}
{"timestamp":"2026-10-23T14:09:48.515Z","level":"log","context":"RouterExplorer","message":"Mapped {/stripe/webhook, POST} route"}
{"timestamp":"2026-10-23T14:09:48.515Z","level":"log","context":"RoutesResolver","message":"EmailController {/email-templates}:"}
{"timestamp":"2026-10-23T14:09:48.515Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates/test, POST} route"}
{"timestamp":"2026-10-23T14:09:48.515Z","level":"log","context":"RoutesResolver","message":"EmployeeController {/employees}:"}
{"timestamp":"2026-10-23T14:09:48.516Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees, POST} route"}
{"timestamp":"2026-10-23T14:09:48.516Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees, GET} route"}
{"timestamp":"2026-10-23T14:09:48.516Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees/export, GET} route"}
{"timestamp":"2026-10-23T14:09:48.516Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees/risk-stats, GET} route"}
{"timestamp":"2026-10-23T14:09:48.516Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees/:id, GET} route"}
{"timestamp":"2026-10-23T14:09:48.516Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees/:id, PUT} route"}
{"timestamp":"2026-10-23T14:09:48.516Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees/:id, DELETE} route"}
{"timestamp":"2026-10-23T14:09:48.517Z","level":"log","context":"RoutesResolver","message":"GroupController {/groups}:"}
{"timestamp":"2026-10-23T14:09:48.517Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups, POST} route"}
{"timestamp":"2026-10-23T14:09:48.517Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups, GET} route"}
{"timestamp":"2026-10-23T14:09:48.517Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups/standard, GET} route"}
{"timestamp":"2026-10-23T14:09:48.517Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups/:id, GET} route"}
{"timestamp":"2026-10-23T14:09:48.517Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups/:id, PUT} route"}
{"timestamp":"2026-10-23T14:09:48.517Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups/:id, DELETE} route"}
{"timestamp":"2026-10-23T14:09:48.518Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups/:id/info, GET} route"}
{"timestamp":"2026-10-23T14:09:48.518Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups/:id/with-employees, GET} route"}
{"timestamp":"2026-10-23T14:09:48.518Z","level":"log","context":"RoutesResolver","message":"SenderProfileController {/sender-profiles}:"}
{"timestamp":"2026-10-23T14:09:48.518Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles, GET} route"}
{"timestamp":"2026-10-23T14:09:48.518Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles/:id, GET} route"}
{"timestamp":"2026-10-23T14:09:48.518Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles, POST} route"}
{"timestamp":"2026-10-23T14:09:48.518Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles/:id, PUT} route"}
{"timestamp":"2026-10-23T14:09:48.519Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles/:id, DELETE} route"}
{"timestamp":"2026-10-23T14:09:48.519Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles/:id/verify-domain, POST} route"}
{"timestamp":"2026-10-23T14:09:48.519Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles/domain-verification, GET} route"}
{"timestamp":"2026-10-23T14:09:48.519Z","level":"log","context":"RoutesResolver","message":"EmailTemplateController {/email-templates}:"}
{"timestamp":"2026-10-23T14:09:48.519Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates, GET} route"}
{"timestamp":"2026-10-23T14:09:48.519Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates/:id, GET} route"}
{"timestamp":"2026-10-23T14:09:48.519Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates, POST} route"}
{"timestamp":"2026-10-23T14:09:48.519Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates/:id, PUT} route"}
{"timestamp":"2026-10-23T14:09:48.520Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates/:id, DELETE} route"}
{"timestamp":"2026-10-23T14:09:48.520Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates/:id/duplicate, POST} route"}
{"timestamp":"2026-10-23T14:09:48.520Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates/:id/preview, GET} route"}
{"timestamp":"2026-10-23T14:09:48.520Z","level":"log","context":"RoutesResolver","message":"ScenarioController {/scenarios}:"}
{"timestamp":"2026-10-23T14:09:48.520Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios, POST} route"}
{"timestamp":"2026-10-23T14:09:48.520Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios/generate-content, POST} route"}
{"timestamp":"2026-10-23T14:09:48.520Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios, GET} route"}
{"timestamp":"2026-10-23T14:09:48.521Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios/:id, GET} route"}
{"timestamp":"2026-10-23T14:09:48.521Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios/:id, PUT} route"}
{"timestamp":"2026-10-23T14:09:48.521Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios/:id, DELETE} route"}
{"timestamp":"2026-10-23T14:09:48.521Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios/generate-from-json, POST} route"}
{"timestamp":"2026-10-23T14:09:48.521Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios/:id/save-as-custom-scenario, POST} route"}
{"timestamp":"2026-10-23T14:09:48.521Z","level":"log","context":"RoutesResolver","message":"CampaignController {/campaigns}:"}
{"timestamp":"2026-10-23T14:09:48.521Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns, POST} route"}
{"timestamp":"2026-10-23T14:09:48.522Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns, GET} route"}
{"timestamp":"2026-10-23T14:09:48.522Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id, GET} route"}
{"timestamp":"2026-10-23T14:09:48.522Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id/details, GET} route"}
{"timestamp":"2026-10-23T14:09:48.522Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id/employees, GET} route"}
{"timestamp":"2026-10-23T14:09:48.522Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id, PATCH} route"}
{"timestamp":"2026-10-23T14:09:48.522Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id/start, POST} route"}
{"timestamp":"2026-10-23T14:09:48.523Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id/stop, POST} route"}
{"timestamp":"2026-10-23T14:09:48.523Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id/duplicate, POST} route"}
{"timestamp":"2026-10-23T14:09:48.523Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id, DELETE} route"}
{"timestamp":"2026-10-23T14:09:48.523Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/auto-generate-program, POST} route"}
{"timestamp":"2026-10-23T14:09:48.523Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/generate-from-threat-intelligence, POST} route"}
{"timestamp":"2026-10-23T14:09:48.523Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id/risk-score, GET} route"}
{"timestamp":"2026-10-23T14:09:48.524Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/recalculate-risk-scores, POST} route"}
{"timestamp":"2026-10-23T14:09:48.524Z","level":"log","context":"RoutesResolver","message":"CampaignController {/api/campaigns}:"}
{"timestamp":"2026-10-23T14:09:48.524Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns, POST} route"}
{"timestamp":"2026-10-23T14:09:48.524Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns, GET} route"}
{"timestamp":"2026-10-23T14:09:48.524Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id, GET} route"}
{"timestamp":"2026-10-23T14:09:48.524Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id/details, GET} route"}
{"timestamp":"2026-10-23T14:09:48.524Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id/employees, GET} route"}
{"timestamp":"2026-10-23T14:09:48.524Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id, PATCH} route"}
{"timestamp":"2026-10-23T14:09:48.525Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id/start, POST} route"}
{"timestamp":"2026-10-23T14:09:48.525Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id/stop, POST} route"}
{"timestamp":"2026-10-23T14:09:48.525Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id/duplicate, POST} route"}
{"timestamp":"2026-10-23T14:09:48.525Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id, DELETE} route"}
{"timestamp":"2026-10-23T14:09:48.525Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/auto-generate-program, POST} route"}
{"timestamp":"2026-10-23T14:09:48.525Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/generate-from-threat-intelligence, POST} route"}
{"timestamp":"2026-10-23T14:09:48.525Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id/risk-score, GET} route"}
{"timestamp":"2026-10-23T14:09:48.526Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/recalculate-risk-scores, POST} route"}
{"timestamp":"2026-10-23T14:09:48.526Z","level":"log","context":"RoutesResolver","message":"NotificationsController {/notifications}:"}
{"timestamp":"2026-10-23T14:09:48.526Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications, POST} route"}
{"timestamp":"2026-10-23T14:09:48.526Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications, GET} route"}
{"timestamp":"2026-10-23T14:09:48.526Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/unread, GET} route"}
{"timestamp":"2026-10-23T14:09:48.526Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/unread-count, GET} route"}
{"timestamp":"2026-10-23T14:09:48.527Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/:id, GET} route"}
{"timestamp":"2026-10-23T14:09:48.527Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/:id, PATCH} route"}
{"timestamp":"2026-10-23T14:09:48.527Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/:id/read, PATCH} route"}
{"timestamp":"2026-10-23T14:09:48.527Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/mark-all-read, PATCH} route"}
{"timestamp":"2026-10-23T14:09:48.528Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/:id, DELETE} route"}
{"timestamp":"2026-10-23T14:09:48.528Z","level":"log","context":"RoutesResolver","message":"LandingPageController {/lp}:"}
{"timestamp":"2026-10-23T14:09:48.528Z","level":"log","context":"RouterExplorer","message":"Mapped {/lp/image, GET} route"}
{"timestamp":"2026-10-23T14:09:48.528Z","level":"log","context":"RouterExplorer","message":"Mapped {/lp/learning, GET} route"}
{"timestamp":"2026-10-23T14:09:48.528Z","level":"log","context":"RouterExplorer","message":"Mapped {/lp/submit, POST} route"}
{"timestamp":"2026-10-23T14:09:48.528Z","level":"log","context":"RouterExplorer","message":"Mapped {/lp/test, GET} route"}
{"timestamp":"2026-10-23T14:09:48.528Z","level":"warn","context":"LegacyRouteConverter","message":"Unsupported route path: \"/lp/*\". In previous versions, the symbols ?, *, and + were used to denote optional or repeating path parameters. The latest version of \"path-to-regexp\" now requires the use of named parameters. For example, instead of using a route like /users/* to capture all routes starting with \"/users\", you should use /users/*path. For more details, refer to the migration guide. Attempting to auto-convert..."}
{"timestamp":"2026-10-23T14:09:48.529Z","level":"log","context":"RouterExplorer","message":"Mapped {/lp/*, ALL} route"}
{"timestamp":"2026-10-23T14:09:48.529Z","level":"log","context":"RoutesResolver","message":"SupportController {/support}:"}
{"timestamp":"2026-10-23T14:09:48.529Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets, POST} route"}
{"timestamp":"2026-10-23T14:09:48.530Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets, GET} route"}
{"timestamp":"2026-10-23T14:09:48.530Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets/:id, GET} route"}
{"timestamp":"2026-10-23T14:09:48.530Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets/:id, PATCH} route"}
{"timestamp":"2026-10-23T14:09:48.530Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets/:id, DELETE} route"}
{"timestamp":"2026-10-23T14:09:48.530Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets/:id/messages, POST} route"}
{"timestamp":"2026-10-23T14:09:48.530Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets/:id/close, POST} route"}
{"timestamp":"2026-10-23T14:09:48.530Z","level":"log","context":"RoutesResolver","message":"BusninessMetricsController {/business-metrics}:"}
{"timestamp":"2026-10-23T14:09:48.531Z","level":"log","context":"RouterExplorer","message":"Mapped {/business-metrics, GET} route"}
{"timestamp":"2026-10-23T14:09:48.531Z","level":"log","context":"RoutesResolver","message":"UsersController {/users}:"}
{"timestamp":"2026-10-23T14:09:48.531Z","level":"log","context":"RouterExplorer","message":"Mapped {/users/:id, PUT} route"}
{"timestamp":"2026-10-23T14:09:48.531Z","level":"log","context":"RouterExplorer","message":"Mapped {/users/settings, GET} route"}
{"timestamp":"2026-10-23T14:09:48.531Z","level":"log","context":"RouterExplorer","message":"Mapped {/users/settings/general, PUT} route"}
{"timestamp":"2026-10-23T14:09:48.531Z","level":"log","context":"RouterExplorer","message":"Mapped {/users/company/settings, PUT} route"}
{"timestamp":"2026-10-23T14:09:48.531Z","level":"log","context":"RouterExplorer","message":"Mapped {/users/change-password, POST} route"}
{"timestamp":"2026-10-23T14:09:48.532Z","level":"log","context":"RouterExplorer","message":"Mapped {/users/localization/settings, PUT} route"}
{"timestamp":"2026-10-23T14:09:48.532Z","level":"log","context":"RoutesResolver","message":"PartnerController {/partner}:"}
{"timestamp":"2026-10-23T14:09:48.532Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses, POST} route"}
{"timestamp":"2026-10-23T14:09:48.532Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses, GET} route"}
{"timestamp":"2026-10-23T14:09:48.532Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses/:id, GET} route"}
{"timestamp":"2026-10-23T14:09:48.532Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses/:id, PUT} route"}
{"timestamp":"2026-10-23T14:09:48.533Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses/:id, DELETE} route"}
{"timestamp":"2026-10-23T14:09:48.533Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses/:id/impersonate, POST} route"}
{"timestamp":"2026-10-23T14:09:48.533Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses/stop-impersonation, POST} route"}
{"timestamp":"2026-10-23T14:09:48.533Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/license-usage, GET} route"}
{"timestamp":"2026-10-23T14:09:48.533Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/invoices, POST} route"}
{"timestamp":"2026-10-23T14:09:48.533Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/invoices, GET} route"}
{"timestamp":"2026-10-23T14:09:48.534Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/invoices/:id, GET} route"}
{"timestamp":"2026-10-23T14:09:48.534Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/invoices/:id, PUT} route"}
{"timestamp":"2026-10-23T14:09:48.534Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/invoices/:id, DELETE} route"}
{"timestamp":"2026-10-23T14:09:48.534Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/invoices/:id/mark-paid, PUT} route"}
{"timestamp":"2026-10-23T14:09:48.534Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/onboarding/generate-token, POST} route"}
{"timestamp":"2026-10-23T14:09:48.534Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/dashboard, GET} route"}
{"timestamp":"2026-10-23T14:09:48.534Z","level":"log","context":"RoutesResolver","message":"MspSubscriptionController {/partner/msp-subscriptions}:"}
{"timestamp":"2026-10-23T14:09:48.535Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/plans, POST} route"}
{"timestamp":"2026-10-23T14:09:48.535Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/plans, GET} route"}
{"timestamp":"2026-10-23T14:09:48.535Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/plans/:planId, GET} route"}
{"timestamp":"2026-10-23T14:09:48.535Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/plans/:planId, PUT} route"}
{"timestamp":"2026-10-23T14:09:48.535Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/plans/:planId, DELETE} route"}
{"timestamp":"2026-10-23T14:09:48.535Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/businesses/:businessId/subscription, POST} route"}
{"timestamp":"2026-10-23T14:09:48.536Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions, GET} route"}
{"timestamp":"2026-10-23T14:09:48.536Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/businesses/:businessId/subscription, GET} route"}
{"timestamp":"2026-10-23T14:09:48.536Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/businesses/:businessId/subscription, PUT} route"}
{"timestamp":"2026-10-23T14:09:48.536Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/businesses/:businessId/subscription, DELETE} route"}
{"timestamp":"2026-10-23T14:09:48.536Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/businesses/:businessId/subscription/limits, GET} route"}
{"timestamp":"2026-10-23T14:09:48.536Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/businesses/:businessId/subscription/change-plan, PUT} route"}
{"timestamp":"2026-10-23T14:09:48.536Z","level":"log","context":"RoutesResolver","message":"OnboardingController {/onboarding}:"}
{"timestamp":"2026-10-23T14:09:48.537Z","level":"log","context":"RouterExplorer","message":"Mapped {/onboarding/validate/:token, GET} route"}
{"timestamp":"2026-10-23T14:09:48.537Z","level":"log","context":"RouterExplorer","message":"Mapped {/onboarding/complete/:token, POST} route"}
{"timestamp":"2026-10-23T14:09:48.537Z","level":"log","context":"RoutesResolver","message":"ResellerController {/reseller}:"}
{"timestamp":"2026-10-23T14:09:48.537Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/businesses, POST} route"}
{"timestamp":"2026-10-23T14:09:48.537Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/businesses, GET} route"}
{"timestamp":"2026-10-23T14:09:48.537Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/businesses/:id, GET} route"}
{"timestamp":"2026-10-23T14:09:48.537Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/businesses/:id, PUT} route"}
{"timestamp":"2026-10-23T14:09:48.538Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/businesses/:id, DELETE} route"}
{"timestamp":"2026-10-23T14:09:48.538Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/license-usage, GET} route"}
{"timestamp":"2026-10-23T14:09:48.538Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/invoices, POST} route"}
{"timestamp":"2026-10-23T14:09:48.538Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/invoices, GET} route"}
{"timestamp":"2026-10-23T14:09:48.538Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/invoices/:id, GET} route"}
{"timestamp":"2026-10-23T14:09:48.538Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/invoices/:id, PUT} route"}
{"timestamp":"2026-10-23T14:09:48.538Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/invoices/:id, DELETE} route"}
{"timestamp":"2026-10-23T14:09:48.539Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/invoices/:id/mark-paid, PUT} route"}
{"timestamp":"2026-10-23T14:09:48.539Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/onboarding/generate-token, POST} route"}
{"timestamp":"2026-10-23T14:09:48.539Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/dashboard, GET} route"}
{"timestamp":"2026-10-23T14:09:48.539Z","level":"log","context":"RoutesResolver","message":"ResellerSubscriptionController {/reseller}:"}
{"timestamp":"2026-10-23T14:09:48.539Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/plans, POST} route"}
{"timestamp":"2026-10-23T14:09:48.539Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/plans, GET} route"}
{"timestamp":"2026-10-23T14:09:48.539Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/plans/:planId, GET} route"}
{"timestamp":"2026-10-23T14:09:48.540Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/plans/:planId, PUT} route"}
{"timestamp":"2026-10-23T14:09:48.540Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/plans/:planId, DELETE} route"}
{"timestamp":"2026-10-23T14:09:48.540Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/subscriptions/businesses/:businessId/subscription, POST} route"}
{"timestamp":"2026-10-23T14:09:48.540Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/subscriptions, GET} route"}
{"timestamp":"2026-10-23T14:09:48.540Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/subscriptions/businesses/:businessId/subscription, GET} route"}
{"timestamp":"2026-10-23T14:09:48.540Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/subscriptions/businesses/:businessId/subscription, PUT} route"}
{"timestamp":"2026-10-23T14:09:48.540Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/subscriptions/businesses/:businessId/subscription, DELETE} route"}
{"timestamp":"2026-10-23T14:09:48.541Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/subscriptions/businesses/:businessId/subscription/limits, GET} route"}
{"timestamp":"2026-10-23T14:09:48.541Z","level":"log","context":"RoutesResolver","message":"HealthController {/health}:"}
{"timestamp":"2026-10-23T14:09:48.541Z","level":"log","context":"RouterExplorer","message":"Mapped {/health, GET} route"}
{"timestamp":"2026-10-23T14:09:48.541Z","level":"log","context":"RouterExplorer","message":"Mapped {/health/test-logs, GET} route"}
{"timestamp":"2026-10-23T14:09:48.541Z","level":"log","context":"RoutesResolver","message":"AzureAdController {/azure-ad}:"}
{"timestamp":"2026-10-23T14:09:48.541Z","level":"log","context":"RouterExplorer","message":"Mapped {/azure-ad/config, POST} route"}
{"timestamp":"2026-10-23T14:09:48.541Z","level":"log","context":"RouterExplorer","message":"Mapped {/azure-ad/config, GET} route"}
{"timestamp":"2026-10-23T14:09:48.541Z","level":"log","context":"RouterExplorer","message":"Mapped {/azure-ad/test-connection, POST} route"}
{"timestamp":"2026-10-23T14:09:48.542Z","level":"log","context":"RouterExplorer","message":"Mapped {/azure-ad/sync, POST} route"}
{"timestamp":"2026-10-23T14:09:48.542Z","level":"log","context":"RoutesResolver","message":"ThreatsController {/threats}:"}
{"timestamp":"2026-10-23T14:09:48.542Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats, POST} route"}
{"timestamp":"2026-10-23T14:09:48.542Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats, GET} route"}
{"timestamp":"2026-10-23T14:09:48.542Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/chart-data, GET} route"}
{"timestamp":"2026-10-23T14:09:48.542Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/claude-search, POST} route"}
{"timestamp":"2026-10-23T14:09:48.542Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/claude-latest, POST} route"}
{"timestamp":"2026-10-23T14:09:48.543Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/claude-trending, POST} route"}
{"timestamp":"2026-10-23T14:09:48.543Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/claude-categories, POST} route"}
{"timestamp":"2026-10-23T14:09:48.543Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/claude-manual-search, POST} route"}
{"timestamp":"2026-10-23T14:09:48.543Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/claude-quick-search, POST} route"}
{"timestamp":"2026-10-23T14:09:48.543Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/scheduler-status, GET} route"}
{"timestamp":"2026-10-23T14:09:48.543Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/health-check, GET} route"}
{"timestamp":"2026-10-23T14:09:48.543Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/pause-scheduler, POST} route"}
{"timestamp":"2026-10-23T14:09:48.544Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/:id, GET} route"}
{"timestamp":"2026-10-23T14:09:48.544Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/:id, PATCH} route"}
{"timestamp":"2026-10-23T14:09:48.544Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/:id, DELETE} route"}
{"timestamp":"2026-10-23T14:09:48.544Z","level":"log","context":"RoutesResolver","message":"DomainController {/domains}:"}
{"timestamp":"2026-10-23T14:09:48.544Z","level":"log","context":"RouterExplorer","message":"Mapped {/domains, GET} route"}
{"timestamp":"2026-10-23T14:09:48.544Z","level":"log","context":"RouterExplorer","message":"Mapped {/domains/:id, GET} route"}
{"timestamp":"2026-10-23T14:09:48.544Z","level":"log","context":"RouterExplorer","message":"Mapped {/domains, POST} route"}
{"timestamp":"2026-10-23T14:09:48.545Z","level":"log","context":"RouterExplorer","message":"Mapped {/domains/:id, PUT} route"}
{"timestamp":"2026-10-23T14:09:48.545Z","level":"log","context":"RouterExplorer","message":"Mapped {/domains/:id, DELETE} route"}
{"timestamp":"2026-10-23T14:09:48.545Z","level":"log","context":"RouterExplorer","message":"Mapped {/domains/seed, POST} route"}
{"timestamp":"2026-10-23T14:09:48.545Z","level":"log","context":"RoutesResolver","message":"MspSubscriptionController {/msp-subscription}:"}
{"timestamp":"2026-10-23T14:09:48.545Z","level":"log","context":"RouterExplorer","message":"Mapped {/msp-subscription/current, GET} route"}
{"timestamp":"2026-10-23T14:09:48.545Z","level":"log","context":"RouterExplorer","message":"Mapped {/msp-subscription/invoices, GET} route"}
{"timestamp":"2026-10-23T14:09:48.545Z","level":"log","context":"RouterExplorer","message":"Mapped {/msp-subscription/invoice/:invoiceId/pdf, GET} route"}
{"timestamp":"2026-10-23T14:09:48.545Z","level":"log","context":"RoutesResolver","message":"MspSubscriptionController {/api/msp-subscription}:"}
{"timestamp":"2026-10-23T14:09:48.546Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/msp-subscription/current, GET} route"}
{"timestamp":"2026-10-23T14:09:48.546Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/msp-subscription/invoices, GET} route"}
{"timestamp":"2026-10-23T14:09:48.546Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/msp-subscription/invoice/:invoiceId/pdf, GET} route"}
{"timestamp":"2026-10-23T14:09:48.608Z","level":"log","context":"NestApplication","message":"Nest application successfully started"}
{"timestamp":"2026-10-23T14:09:48.625Z","level":"log","context":"Bootstrap","message":"Users API successfully started on port 3842"}
{"timestamp":"2026-10-23T14:09:48.626Z","level":"log","context":"SeedService","message":"🌱 Starting database seeding..."}
{"timestamp":"2026-10-23T14:09:48.631Z","level":"log","context":"SeedService","message":"Admin account already exists, skipping seed"}
{"timestamp":"2026-10-23T14:09:48.633Z","level":"log","context":"SeedService","message":"Reseller account already exists, skipping seed"}
{"timestamp":"2026-10-23T14:09:48.635Z","level":"log","context":"SeedService","message":"MSP account already exists, skipping seed"}
{"timestamp":"2026-10-23T14:09:48.635Z","level":"log","context":"SeedService","message":"✅ Database seeding completed successfully"}
{"timestamp":"2026-10-23T14:09:48.666Z","level":"log","context":"UsersApiController","message":"Hello endpoint accessed"}
{"timestamp":"2026-10-23T14:40:03.956Z","level":"warn","context":"LegacyRouteConverter","message":"Unsupported route path: \"/lp/*\". In previous versions, the symbols ?, *, and + were used to denote optional or repeating path parameters. The latest version of \"path-to-regexp\" now requires the use of named parameters. For example, instead of using a route like /users/* to capture all routes starting with \"/users\", you should use /users/*path. For more details, refer to the migration guide. Attempting to auto-convert..."}
{"timestamp":"2026-10-23T14:40:03.995Z","level":"log","context":"Bootstrap","message":"Starting Users API on port 3842..."}
{"timestamp":"2026-10-23T14:40:03.998Z","level":"log","context":"RoutesResolver","message":"UsersApiController {/}:"}
{"timestamp":"2026-10-23T14:40:04.002Z","level":"log","context":"RouterExplorer","message":"Mapped {/, GET} route"}
{"timestamp":"2026-10-23T14:40:04.002Z","level":"log","context":"RoutesResolver","message":"AuthController {/auth}:"}
{"timestamp":"2026-10-23T14:40:04.003Z","level":"log","context":"RouterExplorer","message":"Mapped {/auth/login, POST} route"}
{"timestamp":"2026-10-23T14:40:04.003Z","level":"log","context":"RouterExplorer","message":"Mapped {/auth/admin/login, POST} route"}
{"timestamp":"2026-10-23T14:40:04.004Z","level":"log","context":"RouterExplorer","message":"Mapped {/auth/send-otp, POST} route"}
{"timestamp":"2026-10-23T14:40:04.004Z","level":"log","context":"RouterExplorer","message":"Mapped {/auth/verify-otp, POST} route"}
{"timestamp":"2026-10-23T14:40:04.004Z","level":"log","context":"RouterExplorer","message":"Mapped {/auth/signup, POST} route"}
{"timestamp":"2026-10-23T14:40:04.005Z","level":"log","context":"RouterExplorer","message":"Mapped {/auth/subscription-status, GET} route"}
{"timestamp":"2026-10-23T14:40:04.005Z","level":"log","context":"RoutesResolver","message":"AdminMspController {/admin/msp}:"}
{"timestamp":"2026-10-23T14:40:04.005Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/msp, GET} route"}
{"timestamp":"2026-10-23T14:40:04.006Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/msp/:id, GET} route"}
{"timestamp":"2026-10-23T14:40:04.007Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/msp, POST} route"}
{"timestamp":"2026-10-23T14:40:04.007Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/msp/:id, PUT} route"}
{"timestamp":"2026-10-23T14:40:04.007Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/msp/:id, DELETE} route"}
{"timestamp":"2026-10-23T14:40:04.007Z","level":"log","context":"RoutesResolver","message":"AdminLicenseController {/admin/licenses}:"}
{"timestamp":"2026-10-23T14:40:04.008Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/licenses/summary, GET} route"}
{"timestamp":"2026-10-23T14:40:04.008Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/licenses/msp/:mspId, GET} route"}
{"timestamp":"2026-10-23T14:40:04.008Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/licenses/msp/:mspId, PUT} route"}
{"timestamp":"2026-10-23T14:40:04.008Z","level":"log","context":"RoutesResolver","message":"AdminImpersonationController {/admin/impersonation}:"}
{"timestamp":"2026-10-23T14:40:04.009Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/impersonation/msp-users, GET} route"}
{"timestamp":"2026-10-23T14:40:04.011Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/impersonation/impersonate, POST} route"}
{"timestamp":"2026-10-23T14:40:04.012Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/impersonation/stop, POST} route"}
{"timestamp":"2026-10-23T14:40:04.012Z","level":"log","context":"RoutesResolver","message":"AdminAiUsageController {/admin/ai-usage}:"}
{"timestamp":"2026-10-23T14:40:04.012Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-usage, GET} route"}
{"timestamp":"2026-10-23T14:40:04.012Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-usage/business/:businessId, GET} route"}
{"timestamp":"2026-10-23T14:40:04.012Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-usage/report/monthly, GET} route"}
{"timestamp":"2026-10-23T14:40:04.013Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-usage/pricing, GET} route"}
{"timestamp":"2026-10-23T14:40:04.013Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-usage/pricing, POST} route"}
{"timestamp":"2026-10-23T14:40:04.013Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-usage/credit/:businessId, PUT} route"}
{"timestamp":"2026-10-23T14:40:04.013Z","level":"log","context":"RoutesResolver","message":"AdminAiUsageController {/api/admin/ai-usage}:"}
{"timestamp":"2026-10-23T14:40:04.013Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-usage, GET} route"}
{"timestamp":"2026-10-23T14:40:04.014Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-usage/business/:businessId, GET} route"}
{"timestamp":"2026-10-23T14:40:04.014Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-usage/report/monthly, GET} route"}
{"timestamp":"2026-10-23T14:40:04.014Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-usage/pricing, GET} route"}
{"timestamp":"2026-10-23T14:40:04.014Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-usage/pricing, POST} route"}
{"timestamp":"2026-10-23T14:40:04.014Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-usage/credit/:businessId, PUT} route"}
{"timestamp":"2026-10-23T14:40:04.014Z","level":"log","context":"RoutesResolver","message":"AdminAiModelController {/admin/ai-models}:"}
{"timestamp":"2026-10-23T14:40:04.015Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models, POST} route"}
{"timestamp":"2026-10-23T14:40:04.015Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models, GET} route"}
{"timestamp":"2026-10-23T14:40:04.015Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/default, GET} route"}
{"timestamp":"2026-10-23T14:40:04.015Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/:id, GET} route"}
{"timestamp":"2026-10-23T14:40:04.015Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/:id, PUT} route"}
{"timestamp":"2026-10-23T14:40:04.015Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/:id, DELETE} route"}
{"timestamp":"2026-10-23T14:40:04.016Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/:id/set-default, POST} route"}
{"timestamp":"2026-10-23T14:40:04.016Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/assign-to-business, POST} route"}
{"timestamp":"2026-10-23T14:40:04.016Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/business/:businessId, GET} route"}
{"timestamp":"2026-10-23T14:40:04.016Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/:id/businesses, GET} route"}
{"timestamp":"2026-10-23T14:40:04.016Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/initialize-defaults, POST} route"}
{"timestamp":"2026-10-23T14:40:04.017Z","level":"log","context":"RoutesResolver","message":"AdminAiModelController {/api/admin/ai-models}:"}
{"timestamp":"2026-10-23T14:40:04.017Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models, POST} route"}
{"timestamp":"2026-10-23T14:40:04.017Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models, GET} route"}
{"timestamp":"2026-10-23T14:40:04.017Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/default, GET} route"}
{"timestamp":"2026-10-23T14:40:04.017Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/:id, GET} route"}
{"timestamp":"2026-10-23T14:40:04.017Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/:id, PUT} route"}
{"timestamp":"2026-10-23T14:40:04.017Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/:id, DELETE} route"}
{"timestamp":"2026-10-23T14:40:04.018Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/:id/set-default, POST} route"}
{"timestamp":"2026-10-23T14:40:04.018Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/assign-to-business, POST} route"}
{"timestamp":"2026-10-23T14:40:04.018Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/business/:businessId, GET} route"}
{"timestamp":"2026-10-23T14:40:04.018Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/:id/businesses, GET} route"}
{"timestamp":"2026-10-23T14:40:04.018Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/initialize-defaults, POST} route"}
{"timestamp":"2026-10-23T14:40:04.019Z","level":"log","context":"RoutesResolver","message":"AdminBusinessController {/admin/businesses}:"}
{"timestamp":"2026-10-23T14:40:04.019Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/businesses, GET} route"}
{"timestamp":"2026-10-23T14:40:04.019Z","level":"log","context":"RoutesResolver","message":"ResellerManagementController {/admin/resellers}:"}
{"timestamp":"2026-10-23T14:40:04.019Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/resellers, GET} route"}
{"timestamp":"2026-10-23T14:40:04.019Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/resellers/create-default, POST} route"}
{"timestamp":"2026-10-23T14:40:04.019Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/resellers, POST} route"}
{"timestamp":"2026-10-23T14:40:04.020Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/resellers/:id/toggle-status, PUT} route"}
{"timestamp":"2026-10-23T14:40:04.020Z","level":"log","context":"RoutesResolver","message":"SubscriptionController {/subscription}:"}
{"timestamp":"2026-10-23T14:40:04.020Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/plans, GET} route"}
{"timestamp":"2026-10-23T14:40:04.020Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/calculate-price, POST} route"}
{"timestamp":"2026-10-23T14:40:04.020Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/current, GET} route"}
{"timestamp":"2026-10-23T14:40:04.020Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/create, POST} route"}
{"timestamp":"2026-10-23T14:40:04.021Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/:id, PUT} route"}
{"timestamp":"2026-10-23T14:40:04.021Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/:id/cancel, DELETE} route"}
{"timestamp":"2026-10-23T14:40:04.021Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/sync/:stripeSubscriptionId, POST} route"}
{"timestamp":"2026-10-23T14:40:04.021Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/payments, GET} route"}
{"timestamp":"2026-10-23T14:40:04.021Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/payments/stats, GET} route"}
{"timestamp":"2026-10-23T14:40:04.021Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/payment/:id, GET} route"}
{"timestamp":"2026-10-23T14:40:04.021Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/payment-methods/attach, POST} route"}
{"timestamp":"2026-10-23T14:40:04.022Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/payment-methods/:paymentMethodId, DELETE} route"}
{"timestamp":"2026-10-23T14:40:04.022Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/payment-methods, GET} route"}
{"timestamp":"2026-10-23T14:40:04.022Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/setup-intent, POST} route"}
{"timestamp":"2026-10-23T14:40:04.022Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/update-employee-count, POST} route"}
{"timestamp":"2026-10-23T14:40:04.022Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/retry-payment/:subscriptionId, POST} route"}
{"timestamp":"2026-10-23T14:40:04.022Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/invoice/:invoiceId/pdf, GET} route"}
{"timestamp":"2026-10-23T14:40:04.023Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/preview-upgrade, POST} route"}
{"timestamp":"2026-10-23T14:40:04.023Z","level":"log","context":"RoutesResolver","message":"SubscriptionController {/api/subscription}:"}
{"timestamp":"2026-10-23T14:40:04.023Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/plans, GET} route"}
{"timestamp":"2026-10-23T14:40:04.023Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/calculate-price, POST} route"}
{"timestamp":"2026-10-23T14:40:04.023Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/current, GET} route"}
{"timestamp":"2026-10-23T14:40:04.023Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/create, POST} route"}
{"timestamp":"2026-10-23T14:40:04.023Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/:id, PUT} route"}
{"timestamp":"2026-10-23T14:40:04.023Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/:id/cancel, DELETE} route"}
{"timestamp":"2026-10-23T14:40:04.024Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/sync/:stripeSubscriptionId, POST} route"}
{"timestamp":"2026-10-23T14:40:04.024Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/payments, GET} route"}
{"timestamp":"2026-10-23T14:40:04.024Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/payments/stats, GET} route"}
{"timestamp":"2026-10-23T14:40:04.024Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/payment/:id, GET} route"}
{"timestamp":"2026-10-23T14:40:04.024Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/payment-methods/attach, POST} route"}
{"timestamp":"2026-10-23T14:40:04.024Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/payment-methods/:paymentMethodId, DELETE} route"}
{"timestamp":"2026-10-23T14:40:04.024Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/payment-methods, GET} route"}
{"timestamp":"2026-10-23T14:40:04.025Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/setup-intent, POST} route"}
{"timestamp":"2026-10-23T14:40:04.025Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/update-employee-count, POST} route"}
{"timestamp":"2026-10-23T14:40:04.025Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/retry-payment/:subscriptionId, POST} route"}
{"timestamp":"2026-10-23T14:40:04.025Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/invoice/:invoiceId/pdf, GET} route"}
{"timestamp":"2026-10-23T14:40:04.025Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/preview-upgrade, POST} route"}
{"timestamp":"2026-10-23T14:40:04.025Z","level":"log","context":"RoutesResolver","message":"StripeWebhookController {/stripe/webhook}:"}
{"timestamp":"2026-10-23T14:40:04.025Z","level":"log","context":"RouterExplorer","message":"Mapped {/stripe/webhook/test, GET} route"}
{"timestamp":"2026-10-23T14:40:04.026Z","level":"log","context":"RouterExplorer","message":"Mapped {/stripe/webhook, POST} route"}
{"timestamp":"2026-10-23T14:40:04.026Z","level":"log","context":"RoutesResolver","message":"EmailController {/email-templates}:"}
{"timestamp":"2026-10-23T14:40:04.026Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates/test, POST} route"}
{"timestamp":"2026-10-23T14:40:04.026Z","level":"log","context":"RoutesResolver","message":"EmployeeController {/employees}:"}
{"timestamp":"2026-10-23T14:40:04.026Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees, POST} route"}
{"timestamp":"2026-10-23T14:40:04.026Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees, GET} route"}
{"timestamp":"2026-10-23T14:40:04.026Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees/export, GET} route"}
{"timestamp":"2026-10-23T14:40:04.027Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees/risk-stats, GET} route"}
{"timestamp":"2026-10-23T14:40:04.027Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees/:id, GET} route"}
{"timestamp":"2026-10-23T14:40:04.027Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees/:id, PUT} route"}
{"timestamp":"2026-10-23T14:40:04.027Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees/:id, DELETE} route"}
{"timestamp":"2026-10-23T14:40:04.027Z","level":"log","context":"RoutesResolver","message":"GroupController {/groups}:"}
{"timestamp":"2026-10-23T14:40:04.027Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups, POST} route"}
{"timestamp":"2026-10-23T14:40:04.027Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups, GET} route"}
{"timestamp":"2026-10-23T14:40:04.027Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups/standard, GET} route"}
{"timestamp":"2026-10-23T14:40:04.028Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups/:id, GET} route"}
{"timestamp":"2026-10-23T14:40:04.028Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups/:id, PUT} route"}
{"timestamp":"2026-10-23T14:40:04.028Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups/:id, DELETE} route"}
{"timestamp":"2026-10-23T14:40:04.028Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups/:id/info, GET} route"}
{"timestamp":"2026-10-23T14:40:04.028Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups/:id/with-employees, GET} route"}
{"timestamp":"2026-10-23T14:40:04.028Z","level":"log","context":"RoutesResolver","message":"SenderProfileController {/sender-profiles}:"}
{"timestamp":"2026-10-23T14:40:04.028Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles, GET} route"}
{"timestamp":"2026-10-23T14:40:04.029Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles/:id, GET} route"}
{"timestamp":"2026-10-23T14:40:04.029Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles, POST} route"}
{"timestamp":"2026-10-23T14:40:04.029Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles/:id, PUT} route"}
{"timestamp":"2026-10-23T14:40:04.029Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles/:id, DELETE} route"}
{"timestamp":"2026-10-23T14:40:04.029Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles/:id/verify-domain, POST} route"}
{"timestamp":"2026-10-23T14:40:04.029Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles/domain-verification, GET} route"}
{"timestamp":"2026-10-23T14:40:04.029Z","level":"log","context":"RoutesResolver","message":"EmailTemplateController {/email-templates}:"}
{"timestamp":"2026-10-23T14:40:04.030Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates, GET} route"}
{"timestamp":"2026-10-23T14:40:04.030Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates/:id, GET} route"}
{"timestamp":"2026-10-23T14:40:04.030Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates, POST} route"}
{"timestamp":"2026-10-23T14:40:04.030Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates/:id, PUT} route"}
{"timestamp":"2026-10-23T14:40:04.030Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates/:id, DELETE} route"}
{"timestamp":"2026-10-23T14:40:04.030Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates/:id/duplicate, POST} route"}
{"timestamp":"2026-10-23T14:40:04.030Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates/:id/preview, GET} route"}
{"timestamp":"2026-10-23T14:40:04.031Z","level":"log","context":"RoutesResolver","message":"ScenarioController {/scenarios}:"}
{"timestamp":"2026-10-23T14:40:04.031Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios, POST} route"}
{"timestamp":"2026-10-23T14:40:04.031Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios/generate-content, POST} route"}
{"timestamp":"2026-10-23T14:40:04.031Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios, GET} route"}
{"timestamp":"2026-10-23T14:40:04.031Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios/:id, GET} route"}
{"timestamp":"2026-10-23T14:40:04.031Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios/:id, PUT} route"}
{"timestamp":"2026-10-23T14:40:04.031Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios/:id, DELETE} route"}
{"timestamp":"2026-10-23T14:40:04.032Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios/generate-from-json, POST} route"}
{"timestamp":"2026-10-23T14:40:04.032Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios/:id/save-as-custom-scenario, POST} route"}
{"timestamp":"2026-10-23T14:40:04.032Z","level":"log","context":"RoutesResolver","message":"CampaignController {/campaigns}:"}
{"timestamp":"2026-10-23T14:40:04.032Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns, POST} route"}
{"timestamp":"2026-10-23T14:40:04.032Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns, GET} route"}
{"timestamp":"2026-10-23T14:40:04.032Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id, GET} route"}
{"timestamp":"2026-10-23T14:40:04.032Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id/details, GET} route"}
{"timestamp":"2026-10-23T14:40:04.033Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id/employees, GET} route"}
{"timestamp":"2026-10-23T14:40:04.033Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id, PATCH} route"}
{"timestamp":"2026-10-23T14:40:04.033Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id/start, POST} route"}
{"timestamp":"2026-10-23T14:40:04.033Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id/stop, POST} route"}
{"timestamp":"2026-10-23T14:40:04.033Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id/duplicate, POST} route"}
{"timestamp":"2026-10-23T14:40:04.033Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id, DELETE} route"}
{"timestamp":"2026-10-23T14:40:04.034Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/auto-generate-program, POST} route"}
{"timestamp":"2026-10-23T14:40:04.034Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/generate-from-threat-intelligence, POST} route"}
{"timestamp":"2026-10-23T14:40:04.034Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id/risk-score, GET} route"}
{"timestamp":"2026-10-23T14:40:04.034Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/recalculate-risk-scores, POST} route"}
{"timestamp":"2026-10-23T14:40:04.034Z","level":"log","context":"RoutesResolver","message":"CampaignController {/api/campaigns}:"}
{"timestamp":"2026-10-23T14:40:04.034Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns, POST} route"}
{"timestamp":"2026-10-23T14:40:04.034Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns, GET} route"}
{"timestamp":"2026-10-23T14:40:04.035Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id, GET} route"}
{"timestamp":"2026-10-23T14:40:04.035Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id/details, GET} route"}
{"timestamp":"2026-10-23T14:40:04.035Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id/employees, GET} route"}
{"timestamp":"2026-10-23T14:40:04.035Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id, PATCH} route"}
{"timestamp":"2026-10-23T14:40:04.035Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id/start, POST} route"}
{"timestamp":"2026-10-23T14:40:04.035Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id/stop, POST} route"}
{"timestamp":"2026-10-23T14:40:04.035Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id/duplicate, POST} route"}
{"timestamp":"2026-10-23T14:40:04.036Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id, DELETE} route"}
{"timestamp":"2026-10-23T14:40:04.036Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/auto-generate-program, POST} route"}
{"timestamp":"2026-10-23T14:40:04.036Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/generate-from-threat-intelligence, POST} route"}
{"timestamp":"2026-10-23T14:40:04.036Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id/risk-score, GET} route"}
{"timestamp":"2026-10-23T14:40:04.036Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/recalculate-risk-scores, POST} route"}
{"timestamp":"2026-10-23T14:40:04.036Z","level":"log","context":"RoutesResolver","message":"NotificationsController {/notifications}:"}
{"timestamp":"2026-10-23T14:40:04.037Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications, POST} route"}
{"timestamp":"2026-10-23T14:40:04.037Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications, GET} route"}
{"timestamp":"2026-10-23T14:40:04.037Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/unread, GET} route"}
{"timestamp":"2026-10-23T14:40:04.037Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/unread-count, GET} route"}
{"timestamp":"2026-10-23T14:40:04.037Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/:id, GET} route"}
{"timestamp":"2026-10-23T14:40:04.037Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/:id, PATCH} route"}
{"timestamp":"2026-10-23T14:40:04.038Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/:id/read, PATCH} route"}
{"timestamp":"2026-10-23T14:40:04.038Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/mark-all-read, PATCH} route"}
{"timestamp":"2026-10-23T14:40:04.038Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/:id, DELETE} route"}
{"timestamp":"2026-10-23T14:40:04.038Z","level":"log","context":"RoutesResolver","message":"LandingPageController {/lp}:"}
{"timestamp":"2026-10-23T14:40:04.038Z","level":"log","context":"RouterExplorer","message":"Mapped {/lp/image, GET} route"}
{"timestamp":"2026-10-23T14:40:04.039Z","level":"log","context":"RouterExplorer","message":"Mapped {/lp/learning, GET} route"}
{"timestamp":"2026-10-23T14:40:04.039Z","level":"log","context":"RouterExplorer","message":"Mapped {/lp/submit, POST} route"}
{"timestamp":"2026-10-23T14:40:04.039Z","level":"log","context":"RouterExplorer","message":"Mapped {/lp/test, GET} route"}
{"timestamp":"2026-10-23T14:40:04.039Z","level":"warn","context":"LegacyRouteConverter","message":"Unsupported route path: \"/lp/*\". In previous versions, the symbols ?, *, and + were used to denote optional or repeating path parameters. The latest version of \"path-to-regexp\" now requires the use of named parameters. For example, instead of using a route like /users/* to capture all routes starting with \"/users\", you should use /users/*path. For more details, refer to the migration guide. Attempting to auto-convert..."}
{"timestamp":"2026-10-23T14:40:04.040Z","level":"log","context":"RouterExplorer","message":"Mapped {/lp/*, ALL} route"}
{"timestamp":"2026-10-23T14:40:04.040Z","level":"log","context":"RoutesResolver","message":"SupportController {/support}:"}
{"timestamp":"2026-10-23T14:40:04.040Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets, POST} route"}
{"timestamp":"2026-10-23T14:40:04.040Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets, GET} route"}
{"timestamp":"2026-10-23T14:40:04.040Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets/:id, GET} route"}
{"timestamp":"2026-10-23T14:40:04.041Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets/:id, PATCH} route"}
{"timestamp":"2026-10-23T14:40:04.041Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets/:id, DELETE} route"}
{"timestamp":"2026-10-23T14:40:04.041Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets/:id/messages, POST} route"}
{"timestamp":"2026-10-23T14:40:04.041Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets/:id/close, POST} route"}
{"timestamp":"2026-10-23T14:40:04.041Z","level":"log","context":"RoutesResolver","message":"BusninessMetricsController {/business-metrics}:"}
{"timestamp":"2026-10-23T14:40:04.041Z","level":"log","context":"RouterExplorer","message":"Mapped {/business-metrics, GET} route"}
{"timestamp":"2026-10-23T14:40:04.041Z","level":"log","context":"RoutesResolver","message":"UsersController {/users}:"}
{"timestamp":"2026-10-23T14:40:04.042Z","level":"log","context":"RouterExplorer","message":"Mapped {/users/:id, PUT} route"}
{"timestamp":"2026-10-23T14:40:04.042Z","level":"log","context":"RouterExplorer","message":"Mapped {/users/settings, GET} route"}
{"timestamp":"2026-10-23T14:40:04.042Z","level":"log","context":"RouterExplorer","message":"Mapped {/users/settings/general, PUT} route"}
{"timestamp":"2026-10-23T14:40:04.042Z","level":"log","context":"RouterExplorer","message":"Mapped {/users/company/settings, PUT} route"}
{"timestamp":"2026-10-23T14:40:04.042Z","level":"log","context":"RouterExplorer","message":"Mapped {/users/change-password, POST} route"}
{"timestamp":"2026-10-23T14:40:04.043Z","level":"log","context":"RouterExplorer","message":"Mapped {/users/localization/settings, PUT} route"}
{"timestamp":"2026-10-23T14:40:04.043Z","level":"log","context":"RoutesResolver","message":"PartnerController {/partner}:"}
{"timestamp":"2026-10-23T14:40:04.043Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses, POST} route"}
{"timestamp":"2026-10-23T14:40:04.043Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses, GET} route"}
{"timestamp":"2026-10-23T14:40:04.043Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses/:id, GET} route"}
{"timestamp":"2026-10-23T14:40:04.043Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses/:id, PUT} route"}
{"timestamp":"2026-10-23T14:40:04.043Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses/:id, DELETE} route"}
{"timestamp":"2026-10-23T14:40:04.044Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses/:id/impersonate, POST} route"}
{"timestamp":"2026-10-23T14:40:04.044Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses/stop-impersonation, POST} route"}
{"timestamp":"2026-10-23T14:40:04.044Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/license-usage, GET} route"}
{"timestamp":"2026-10-23T14:40:04.044Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/invoices, POST} route"}
{"timestamp":"2026-10-23T14:40:04.044Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/invoices, GET} route"}
{"timestamp":"2026-10-23T14:40:04.044Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/invoices/:id, GET} route"}
{"timestamp":"2026-10-23T14:40:04.045Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/invoices/:id, PUT} route"}
{"timestamp":"2026-10-23T14:40:04.045Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/invoices/:id, DELETE} route"}
{"timestamp":"2026-10-23T14:40:04.045Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/invoices/:id/mark-paid, PUT} route"}
{"timestamp":"2026-10-23T14:40:04.045Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/onboarding/generate-token, POST} route"}
{"timestamp":"2026-10-23T14:40:04.045Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/dashboard, GET} route"}
{"timestamp":"2026-10-23T14:40:04.045Z","level":"log","context":"RoutesResolver","message":"MspSubscriptionController {/partner/msp-subscriptions}:"}
{"timestamp":"2026-10-23T14:40:04.045Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/plans, POST} route"}
{"timestamp":"2026-10-23T14:40:04.046Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/plans, GET} route"}
{"timestamp":"2026-10-23T14:40:04.046Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/plans/:planId, GET} route"}
{"timestamp":"2026-10-23T14:40:04.046Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/plans/:planId, PUT} route"}
{"timestamp":"2026-10-23T14:40:04.046Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/plans/:planId, DELETE} route"}
{"timestamp":"2026-10-23T14:40:04.046Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/businesses/:businessId/subscription, POST} route"}
{"timestamp":"2026-10-23T14:40:04.046Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions, GET} route"}
{"timestamp":"2026-10-23T14:40:04.047Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/businesses/:businessId/subscription, GET} route"}
{"timestamp":"2026-10-23T14:40:04.047Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/businesses/:businessId/subscription, PUT} route"}
{"timestamp":"2026-10-23T14:40:04.047Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/businesses/:businessId/subscription, DELETE} route"}
{"timestamp":"2026-10-23T14:40:04.047Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/businesses/:businessId/subscription/limits, GET} route"}
{"timestamp":"2026-10-23T14:40:04.047Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/businesses/:businessId/subscription/change-plan, PUT} route"}
{"timestamp":"2026-10-23T14:40:04.047Z","level":"log","context":"RoutesResolver","message":"OnboardingController {/onboarding}:"}
{"timestamp":"2026-10-23T14:40:04.048Z","level":"log","context":"RouterExplorer","message":"Mapped {/onboarding/validate/:token, GET} route"}
{"timestamp":"2026-10-23T14:40:04.048Z","level":"log","context":"RouterExplorer","message":"Mapped {/onboarding/complete/:token, POST} route"}
{"timestamp":"2026-10-23T14:40:04.048Z","level":"log","context":"RoutesResolver","message":"ResellerController {/reseller}:"}
{"timestamp":"2026-10-23T14:40:04.048Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/businesses, POST} route"}
{"timestamp":"2026-10-23T14:40:04.048Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/businesses, GET} route"}
{"timestamp":"2026-10-23T14:40:04.048Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/businesses/:id, GET} route"}
{"timestamp":"2026-10-23T14:40:04.049Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/businesses/:id, PUT} route"}
{"timestamp":"2026-10-23T14:40:04.049Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/businesses/:id, DELETE} route"}
{"timestamp":"2026-10-23T14:40:04.049Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/license-usage, GET} route"}
{"timestamp":"2026-10-23T14:40:04.049Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/invoices, POST} route"}
{"timestamp":"2026-10-23T14:40:04.049Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/invoices, GET} route"}
{"timestamp":"2026-10-23T14:40:04.049Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/invoices/:id, GET} route"}
{"timestamp":"2026-10-23T14:40:04.050Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/invoices/:id, PUT} route"}
{"timestamp":"2026-10-23T14:40:04.050Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/invoices/:id, DELETE} route"}
{"timestamp":"2026-10-23T14:40:04.050Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/invoices/:id/mark-paid, PUT} route"}
{"timestamp":"2026-10-23T14:40:04.050Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/onboarding/generate-token, POST} route"}
{"timestamp":"2026-10-23T14:40:04.050Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/dashboard, GET} route"}
{"timestamp":"2026-10-23T14:40:04.050Z","level":"log","context":"RoutesResolver","message":"ResellerSubscriptionController {/reseller}:"}
{"timestamp":"2026-10-23T14:40:04.050Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/plans, POST} route"}
{"timestamp":"2026-10-23T14:40:04.051Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/plans, GET} route"}
{"timestamp":"2026-10-23T14:40:04.051Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/plans/:planId, GET} route"}
{"timestamp":"2026-10-23T14:40:04.051Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/plans/:planId, PUT} route"}
{"timestamp":"2026-10-23T14:40:04.051Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/plans/:planId, DELETE} route"}
{"timestamp":"2026-10-23T14:40:04.051Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/subscriptions/businesses/:businessId/subscription, POST} route"}
{"timestamp":"2026-10-23T14:40:04.051Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/subscriptions, GET} route"}
{"timestamp":"2026-10-23T14:40:04.052Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/subscriptions/businesses/:businessId/subscription, GET} route"}
{"timestamp":"2026-10-23T14:40:04.052Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/subscriptions/businesses/:businessId/subscription, PUT} route"}
{"timestamp":"2026-10-23T14:40:04.052Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/subscriptions/businesses/:businessId/subscription, DELETE} route"}
{"timestamp":"2026-10-23T14:40:04.052Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/subscriptions/businesses/:businessId/subscription/limits, GET} route"}
{"timestamp":"2026-10-23T14:40:04.052Z","level":"log","context":"RoutesResolver","message":"HealthController {/health}:"}
{"timestamp":"2026-10-23T14:40:04.052Z","level":"log","context":"RouterExplorer","message":"Mapped {/health, GET} route"}
{"timestamp":"2026-10-23T14:40:04.052Z","level":"log","context":"RouterExplorer","message":"Mapped {/health/test-logs, GET} route"}
{"timestamp":"2026-10-23T14:40:04.052Z","level":"log","context":"RoutesResolver","message":"AzureAdController {/azure-ad}:"}
{"timestamp":"2026-10-23T14:40:04.053Z","level":"log","context":"RouterExplorer","message":"Mapped {/azure-ad/config, POST} route"}
{"timestamp":"2026-10-23T14:40:04.053Z","level":"log","context":"RouterExplorer","message":"Mapped {/azure-ad/config, GET} route"}
{"timestamp":"2026-10-23T14:40:04.053Z","level":"log","context":"RouterExplorer","message":"Mapped {/azure-ad/test-connection, POST} route"}
{"timestamp":"2026-10-23T14:40:04.053Z","level":"log","context":"RouterExplorer","message":"Mapped {/azure-ad/sync, POST} route"}
{"timestamp":"2026-10-23T14:40:04.053Z","level":"log","context":"RoutesResolver","message":"ThreatsController {/threats}:"}
{"timestamp":"2026-10-23T14:40:04.053Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats, POST} route"}
{"timestamp":"2026-10-23T14:40:04.054Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats, GET} route"}
{"timestamp":"2026-10-23T14:40:04.054Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/chart-data, GET} route"}
{"timestamp":"2026-10-23T14:40:04.054Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/claude-search, POST} route"}
{"timestamp":"2026-10-23T14:40:04.054Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/claude-latest, POST} route"}
{"timestamp":"2026-10-23T14:40:04.054Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/claude-trending, POST} route"}
{"timestamp":"2026-10-23T14:40:04.054Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/claude-categories, POST} route"}
{"timestamp":"2026-10-23T14:40:04.055Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/claude-manual-search, POST} route"}
{"timestamp":"2026-10-23T14:40:04.055Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/claude-quick-search, POST} route"}
{"timestamp":"2026-10-23T14:40:04.055Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/scheduler-status, GET} route"}
{"timestamp":"2026-10-23T14:40:04.055Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/health-check, GET} route"}
{"timestamp":"2026-10-23T14:40:04.055Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/pause-scheduler, POST} route"}
{"timestamp":"2026-10-23T14:40:04.055Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/:id, GET} route"}
{"timestamp":"2026-10-23T14:40:04.056Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/:id, PATCH} route"}
{"timestamp":"2026-10-23T14:40:04.056Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/:id, DELETE} route"}
{"timestamp":"2026-10-23T14:40:04.056Z","level":"log","context":"RoutesResolver","message":"DomainController {/domains}:"}
{"timestamp":"2026-10-23T14:40:04.056Z","level":"log","context":"RouterExplorer","message":"Mapped {/domains, GET} route"}
{"timestamp":"2026-10-23T14:40:04.056Z","level":"log","context":"RouterExplorer","message":"Mapped {/domains/:id, GET} route"}
{"timestamp":"2026-10-23T14:40:04.056Z","level":"log","context":"RouterExplorer","message":"Mapped {/domains, POST} route"}
{"timestamp":"2026-10-23T14:40:04.056Z","level":"log","context":"RouterExplorer","message":"Mapped {/domains/:id, PUT} route"}
{"timestamp":"2026-10-23T14:40:04.057Z","level":"log","context":"RouterExplorer","message":"Mapped {/domains/:id, DELETE} route"}
{"timestamp":"2026-10-23T14:40:04.057Z","level":"log","context":"RouterExplorer","message":"Mapped {/domains/seed, POST} route"}
{"timestamp":"2026-10-23T14:40:04.057Z","level":"log","context":"RoutesResolver","message":"MspSubscriptionController {/msp-subscription}:"}
{"timestamp":"2026-10-23T14:40:04.057Z","level":"log","context":"RouterExplorer","message":"Mapped {/msp-subscription/current, GET} route"}
{"timestamp":"2026-10-23T14:40:04.057Z","level":"log","context":"RouterExplorer","message":"Mapped {/msp-subscription/invoices, GET} route"}
{"timestamp":"2026-10-23T14:40:04.057Z","level":"log","context":"RouterExplorer","message":"Mapped {/msp-subscription/invoice/:invoiceId/pdf, GET} route"}
{"timestamp":"2026-10-23T14:40:04.057Z","level":"log","context":"RoutesResolver","message":"MspSubscriptionController {/api/msp-subscription}:"}
{"timestamp":"2026-10-23T14:40:04.058Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/msp-subscription/current, GET} route"}
{"timestamp":"2026-10-23T14:40:04.058Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/msp-subscription/invoices, GET} route"}
{"timestamp":"2026-10-23T14:40:04.058Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/msp-subscription/invoice/:invoiceId/pdf, GET} route"}
{"timestamp":"2026-10-23T14:40:04.125Z","level":"log","context":"NestApplication","message":"Nest application successfully started"}
{"timestamp":"2026-10-23T14:40:04.139Z","level":"log","context":"Bootstrap","message":"Users API successfully started on port 3842"}
{"timestamp":"2026-10-23T14:40:04.139Z","level":"log","context":"SeedService","message":"🌱 Starting database seeding..."}
{"timestamp":"2026-10-23T14:40:04.145Z","level":"log","context":"SeedService","message":"Admin account already exists, skipping seed"}
{"timestamp":"2026-10-23T14:40:04.147Z","level":"log","context":"SeedService","message":"Reseller account already exists, skipping seed"}
{"timestamp":"2026-10-23T14:40:04.149Z","level":"log","context":"SeedService","message":"MSP account already exists, skipping seed"}
{"timestamp":"2026-10-23T14:40:04.149Z","level":"log","context":"SeedService","message":"✅ Database seeding completed successfully"}
{"timestamp":"2026-10-23T14:40:04.186Z","level":"log","context":"UsersApiController","message":"Hello endpoint accessed"}
{"timestamp":"2026-10-23T14:40:04.194Z","level":"log","context":"UsersApiController","message":"Hello endpoint accessed"}
{"timestamp":"2026-10-23T22:44:00.482Z","level":"warn","context":"LegacyRouteConverter","message":"Unsupported route path: \"/lp/*\". In previous versions, the symbols ?, *, and + were used to denote optional or repeating path parameters. The latest version of \"path-to-regexp\" now requires the use of named parameters. For example, instead of using a route like /users/* to capture all routes starting with \"/users\", you should use /users/*path. For more details, refer to the migration guide. Attempting to auto-convert..."}
{"timestamp":"2026-10-23T22:44:00.526Z","level":"log","context":"Bootstrap","message":"Starting Users API on port 3842..."}
{"timestamp":"2026-10-23T22:44:00.530Z","level":"log","context":"RoutesResolver","message":"UsersApiController {/}:"}
{"timestamp":"2026-10-23T22:44:00.534Z","level":"log","context":"RouterExplorer","message":"Mapped {/, GET} route"}
{"timestamp":"2026-10-23T22:44:00.535Z","level":"log","context":"RoutesResolver","message":"AuthController {/auth}:"}
{"timestamp":"2026-10-23T22:44:00.535Z","level":"log","context":"RouterExplorer","message":"Mapped {/auth/login, POST} route"}
{"timestamp":"2026-10-23T22:44:00.536Z","level":"log","context":"RouterExplorer","message":"Mapped {/auth/admin/login, POST} route"}
{"timestamp":"2026-10-23T22:44:00.537Z","level":"log","context":"RouterExplorer","message":"Mapped {/auth/send-otp, POST} route"}
{"timestamp":"2026-10-23T22:44:00.537Z","level":"log","context":"RouterExplorer","message":"Mapped {/auth/verify-otp, POST} route"}
{"timestamp":"2026-10-23T22:44:00.537Z","level":"log","context":"RouterExplorer","message":"Mapped {/auth/signup, POST} route"}
{"timestamp":"2026-10-23T22:44:00.538Z","level":"log","context":"RouterExplorer","message":"Mapped {/auth/subscription-status, GET} route"}
{"timestamp":"2026-10-23T22:44:00.538Z","level":"log","context":"RoutesResolver","message":"AdminMspController {/admin/msp}:"}
{"timestamp":"2026-10-23T22:44:00.539Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/msp, GET} route"}
{"timestamp":"2026-10-23T22:44:00.540Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/msp/:id, GET} route"}
{"timestamp":"2026-10-23T22:44:00.541Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/msp, POST} route"}
{"timestamp":"2026-10-23T22:44:00.541Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/msp/:id, PUT} route"}
{"timestamp":"2026-10-23T22:44:00.541Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/msp/:id, DELETE} route"}
{"timestamp":"2026-10-23T22:44:00.541Z","level":"log","context":"RoutesResolver","message":"AdminLicenseController {/admin/licenses}:"}
{"timestamp":"2026-10-23T22:44:00.542Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/licenses/summary, GET} route"}
{"timestamp":"2026-10-23T22:44:00.542Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/licenses/msp/:mspId, GET} route"}
{"timestamp":"2026-10-23T22:44:00.542Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/licenses/msp/:mspId, PUT} route"}
{"timestamp":"2026-10-23T22:44:00.543Z","level":"log","context":"RoutesResolver","message":"AdminImpersonationController {/admin/impersonation}:"}
{"timestamp":"2026-10-23T22:44:00.543Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/impersonation/msp-users, GET} route"}
{"timestamp":"2026-10-23T22:44:00.543Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/impersonation/impersonate, POST} route"}
{"timestamp":"2026-10-23T22:44:00.544Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/impersonation/stop, POST} route"}
{"timestamp":"2026-10-23T22:44:00.544Z","level":"log","context":"RoutesResolver","message":"AdminAiUsageController {/admin/ai-usage}:"}
{"timestamp":"2026-10-23T22:44:00.544Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-usage, GET} route"}
{"timestamp":"2026-10-23T22:44:00.544Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-usage/business/:businessId, GET} route"}
{"timestamp":"2026-10-23T22:44:00.548Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-usage/report/monthly, GET} route"}
{"timestamp":"2026-10-23T22:44:00.548Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-usage/pricing, GET} route"}
{"timestamp":"2026-10-23T22:44:00.548Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-usage/pricing, POST} route"}
{"timestamp":"2026-10-23T22:44:00.548Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-usage/credit/:businessId, PUT} route"}
{"timestamp":"2026-10-23T22:44:00.548Z","level":"log","context":"RoutesResolver","message":"AdminAiUsageController {/api/admin/ai-usage}:"}
{"timestamp":"2026-10-23T22:44:00.549Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-usage, GET} route"}
{"timestamp":"2026-10-23T22:44:00.549Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-usage/business/:businessId, GET} route"}
{"timestamp":"2026-10-23T22:44:00.549Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-usage/report/monthly, GET} route"}
{"timestamp":"2026-10-23T22:44:00.549Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-usage/pricing, GET} route"}
{"timestamp":"2026-10-23T22:44:00.549Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-usage/pricing, POST} route"}
{"timestamp":"2026-10-23T22:44:00.550Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-usage/credit/:businessId, PUT} route"}
{"timestamp":"2026-10-23T22:44:00.550Z","level":"log","context":"RoutesResolver","message":"AdminAiModelController {/admin/ai-models}:"}
{"timestamp":"2026-10-23T22:44:00.550Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models, POST} route"}
{"timestamp":"2026-10-23T22:44:00.550Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models, GET} route"}
{"timestamp":"2026-10-23T22:44:00.550Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/default, GET} route"}
{"timestamp":"2026-10-23T22:44:00.551Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/:id, GET} route"}
{"timestamp":"2026-10-23T22:44:00.551Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/:id, PUT} route"}
{"timestamp":"2026-10-23T22:44:00.551Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/:id, DELETE} route"}
{"timestamp":"2026-10-23T22:44:00.551Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/:id/set-default, POST} route"}
{"timestamp":"2026-10-23T22:44:00.551Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/assign-to-business, POST} route"}
{"timestamp":"2026-10-23T22:44:00.552Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/business/:businessId, GET} route"}
{"timestamp":"2026-10-23T22:44:00.552Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/:id/businesses, GET} route"}
{"timestamp":"2026-10-23T22:44:00.552Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/initialize-defaults, POST} route"}
{"timestamp":"2026-10-23T22:44:00.552Z","level":"log","context":"RoutesResolver","message":"AdminAiModelController {/api/admin/ai-models}:"}
{"timestamp":"2026-10-23T22:44:00.552Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models, POST} route"}
{"timestamp":"2026-10-23T22:44:00.553Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models, GET} route"}
{"timestamp":"2026-10-23T22:44:00.553Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/default, GET} route"}
{"timestamp":"2026-10-23T22:44:00.553Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/:id, GET} route"}
{"timestamp":"2026-10-23T22:44:00.553Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/:id, PUT} route"}
{"timestamp":"2026-10-23T22:44:00.553Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/:id, DELETE} route"}
{"timestamp":"2026-10-23T22:44:00.554Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/:id/set-default, POST} route"}
{"timestamp":"2026-10-23T22:44:00.554Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/assign-to-business, POST} route"}
{"timestamp":"2026-10-23T22:44:00.554Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/business/:businessId, GET} route"}
{"timestamp":"2026-10-23T22:44:00.554Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/:id/businesses, GET} route"}
{"timestamp":"2026-10-23T22:44:00.554Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/initialize-defaults, POST} route"}
{"timestamp":"2026-10-23T22:44:00.555Z","level":"log","context":"RoutesResolver","message":"AdminBusinessController {/admin/businesses}:"}
{"timestamp":"2026-10-23T22:44:00.555Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/businesses, GET} route"}
{"timestamp":"2026-10-23T22:44:00.555Z","level":"log","context":"RoutesResolver","message":"ResellerManagementController {/admin/resellers}:"}
{"timestamp":"2026-10-23T22:44:00.555Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/resellers, GET} route"}
{"timestamp":"2026-10-23T22:44:00.555Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/resellers/create-default, POST} route"}
{"timestamp":"2026-10-23T22:44:00.555Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/resellers, POST} route"}
{"timestamp":"2026-10-23T22:44:00.556Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/resellers/:id/toggle-status, PUT} route"}
{"timestamp":"2026-10-23T22:44:00.556Z","level":"log","context":"RoutesResolver","message":"SubscriptionController {/subscription}:"}
{"timestamp":"2026-10-23T22:44:00.556Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/plans, GET} route"}
{"timestamp":"2026-10-23T22:44:00.556Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/calculate-price, POST} route"}
{"timestamp":"2026-10-23T22:44:00.556Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/current, GET} route"}
{"timestamp":"2026-10-23T22:44:00.557Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/create, POST} route"}
{"timestamp":"2026-10-23T22:44:00.557Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/:id, PUT} route"}
{"timestamp":"2026-10-23T22:44:00.557Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/:id/cancel, DELETE} route"}
{"timestamp":"2026-10-23T22:44:00.557Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/sync/:stripeSubscriptionId, POST} route"}
{"timestamp":"2026-10-23T22:44:00.557Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/payments, GET} route"}
{"timestamp":"2026-10-23T22:44:00.558Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/payments/stats, GET} route"}
{"timestamp":"2026-10-23T22:44:00.558Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/payment/:id, GET} route"}
{"timestamp":"2026-10-23T22:44:00.558Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/payment-methods/attach, POST} route"}
{"timestamp":"2026-10-23T22:44:00.558Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/payment-methods/:paymentMethodId, DELETE} route"}
{"timestamp":"2026-10-23T22:44:00.558Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/payment-methods, GET} route"}
{"timestamp":"2026-10-23T22:44:00.558Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/setup-intent, POST} route"}
{"timestamp":"2026-10-23T22:44:00.559Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/update-employee-count, POST} route"}
{"timestamp":"2026-10-23T22:44:00.559Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/retry-payment/:subscriptionId, POST} route"}
{"timestamp":"2026-10-23T22:44:00.559Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/invoice/:invoiceId/pdf, GET} route"}
{"timestamp":"2026-10-23T22:44:00.559Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/preview-upgrade, POST} route"}
{"timestamp":"2026-10-23T22:44:00.559Z","level":"log","context":"RoutesResolver","message":"SubscriptionController {/api/subscription}:"}
{"timestamp":"2026-10-23T22:44:00.559Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/plans, GET} route"}
{"timestamp":"2026-10-23T22:44:00.560Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/calculate-price, POST} route"}
{"timestamp":"2026-10-23T22:44:00.560Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/current, GET} route"}
{"timestamp":"2026-10-23T22:44:00.560Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/create, POST} route"}
{"timestamp":"2026-10-23T22:44:00.560Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/:id, PUT} route"}
{"timestamp":"2026-10-23T22:44:00.560Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/:id/cancel, DELETE} route"}
{"timestamp":"2026-10-23T22:44:00.560Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/sync/:stripeSubscriptionId, POST} route"}
{"timestamp":"2026-10-23T22:44:00.561Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/payments, GET} route"}
{"timestamp":"2026-10-23T22:44:00.561Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/payments/stats, GET} route"}
{"timestamp":"2026-10-23T22:44:00.561Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/payment/:id, GET} route"}
{"timestamp":"2026-10-23T22:44:00.561Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/payment-methods/attach, POST} route"}
{"timestamp":"2026-10-23T22:44:00.561Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/payment-methods/:paymentMethodId, DELETE} route"}
{"timestamp":"2026-10-23T22:44:00.562Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/payment-methods, GET} route"}
{"timestamp":"2026-10-23T22:44:00.562Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/setup-intent, POST} route"}
{"timestamp":"2026-10-23T22:44:00.562Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/update-employee-count, POST} route"}
{"timestamp":"2026-10-23T22:44:00.562Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/retry-payment/:subscriptionId, POST} route"}
{"timestamp":"2026-10-23T22:44:00.562Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/invoice/:invoiceId/pdf, GET} route"}
{"timestamp":"2026-10-23T22:44:00.562Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/preview-upgrade, POST} route"}
{"timestamp":"2026-10-23T22:44:00.562Z","level":"log","context":"RoutesResolver","message":"StripeWebhookController {/stripe/webhook}:"}
{"timestamp":"2026-10-23T22:44:00.563Z","level":"log","context":"RouterExplorer","message":"Mapped {/stripe/webhook/test, GET} route"}
{"timestamp":"2026-10-23T22:44:00.563Z","level":"log","context":"RouterExplorer","message":"Mapped {/stripe/webhook, POST} route"}
{"timestamp":"2026-10-23T22:44:00.563Z","level":"log","context":"RoutesResolver","message":"EmailController {/email-templates}:"}
{"timestamp":"2026-10-23T22:44:00.563Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates/test, POST} route"}
{"timestamp":"2026-10-23T22:44:00.563Z","level":"log","context":"RoutesResolver","message":"EmployeeController {/employees}:"}
{"timestamp":"2026-10-23T22:44:00.563Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees, POST} route"}
{"timestamp":"2026-10-23T22:44:00.564Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees, GET} route"}
{"timestamp":"2026-10-23T22:44:00.564Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees/export, GET} route"}
{"timestamp":"2026-10-23T22:44:00.564Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees/risk-stats, GET} route"}
{"timestamp":"2026-10-23T22:44:00.564Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees/:id, GET} route"}
{"timestamp":"2026-10-23T22:44:00.564Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees/:id, PUT} route"}
{"timestamp":"2026-10-23T22:44:00.564Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees/:id, DELETE} route"}
{"timestamp":"2026-10-23T22:44:00.565Z","level":"log","context":"RoutesResolver","message":"GroupController {/groups}:"}
{"timestamp":"2026-10-23T22:44:00.565Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups, POST} route"}
{"timestamp":"2026-10-23T22:44:00.565Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups, GET} route"}
{"timestamp":"2026-10-23T22:44:00.565Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups/standard, GET} route"}
{"timestamp":"2026-10-23T22:44:00.565Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups/:id, GET} route"}
{"timestamp":"2026-10-23T22:44:00.566Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups/:id, PUT} route"}
{"timestamp":"2026-10-23T22:44:00.566Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups/:id, DELETE} route"}
{"timestamp":"2026-10-23T22:44:00.566Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups/:id/info, GET} route"}
{"timestamp":"2026-10-23T22:44:00.566Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups/:id/with-employees, GET} route"}
{"timestamp":"2026-10-23T22:44:00.566Z","level":"log","context":"RoutesResolver","message":"SenderProfileController {/sender-profiles}:"}
{"timestamp":"2026-10-23T22:44:00.566Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles, GET} route"}
{"timestamp":"2026-10-23T22:44:00.567Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles/:id, GET} route"}
{"timestamp":"2026-10-23T22:44:00.567Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles, POST} route"}
{"timestamp":"2026-10-23T22:44:00.567Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles/:id, PUT} route"}
{"timestamp":"2026-10-23T22:44:00.567Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles/:id, DELETE} route"}
{"timestamp":"2026-10-23T22:44:00.567Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles/:id/verify-domain, POST} route"}
{"timestamp":"2026-10-23T22:44:00.567Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles/domain-verification, GET} route"}
{"timestamp":"2026-10-23T22:44:00.567Z","level":"log","context":"RoutesResolver","message":"EmailTemplateController {/email-templates}:"}
{"timestamp":"2026-10-23T22:44:00.568Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates, GET} route"}
{"timestamp":"2026-10-23T22:44:00.568Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates/:id, GET} route"}
{"timestamp":"2026-10-23T22:44:00.568Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates, POST} route"}
{"timestamp":"2026-10-23T22:44:00.568Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates/:id, PUT} route"}
{"timestamp":"2026-10-23T22:44:00.568Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates/:id, DELETE} route"}
{"timestamp":"2026-10-23T22:44:00.569Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates/:id/duplicate, POST} route"}
{"timestamp":"2026-10-23T22:44:00.569Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates/:id/preview, GET} route"}
{"timestamp":"2026-10-23T22:44:00.569Z","level":"log","context":"RoutesResolver","message":"ScenarioController {/scenarios}:"}
{"timestamp":"2026-10-23T22:44:00.569Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios, POST} route"}
{"timestamp":"2026-10-23T22:44:00.569Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios/generate-content, POST} route"}
{"timestamp":"2026-10-23T22:44:00.569Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios, GET} route"}
{"timestamp":"2026-10-23T22:44:00.570Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios/:id, GET} route"}
{"timestamp":"2026-10-23T22:44:00.570Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios/:id, PUT} route"}
{"timestamp":"2026-10-23T22:44:00.570Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios/:id, DELETE} route"}
{"timestamp":"2026-10-23T22:44:00.570Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios/generate-from-json, POST} route"}
{"timestamp":"2026-10-23T22:44:00.570Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios/:id/save-as-custom-scenario, POST} route"}
{"timestamp":"2026-10-23T22:44:00.570Z","level":"log","context":"RoutesResolver","message":"CampaignController {/campaigns}:"}
{"timestamp":"2026-10-23T22:44:00.571Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns, POST} route"}
{"timestamp":"2026-10-23T22:44:00.571Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns, GET} route"}
{"timestamp":"2026-10-23T22:44:00.571Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id, GET} route"}
{"timestamp":"2026-10-23T22:44:00.571Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id/details, GET} route"}
{"timestamp":"2026-10-23T22:44:00.571Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id/employees, GET} route"}
{"timestamp":"2026-10-23T22:44:00.572Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id, PATCH} route"}
{"timestamp":"2026-10-23T22:44:00.572Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id/start, POST} route"}
{"timestamp":"2026-10-23T22:44:00.572Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id/stop, POST} route"}
{"timestamp":"2026-10-23T22:44:00.572Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id/duplicate, POST} route"}
{"timestamp":"2026-10-23T22:44:00.572Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id, DELETE} route"}
{"timestamp":"2026-10-23T22:44:00.573Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/auto-generate-program, POST} route"}
{"timestamp":"2026-10-23T22:44:00.573Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/generate-from-threat-intelligence, POST} route"}
{"timestamp":"2026-10-23T22:44:00.573Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id/risk-score, GET} route"}
{"timestamp":"2026-10-23T22:44:00.573Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/recalculate-risk-scores, POST} route"}
{"timestamp":"2026-10-23T22:44:00.573Z","level":"log","context":"RoutesResolver","message":"CampaignController {/api/campaigns}:"}
{"timestamp":"2026-10-23T22:44:00.573Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns, POST} route"}
{"timestamp":"2026-10-23T22:44:00.573Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns, GET} route"}
{"timestamp":"2026-10-23T22:44:00.574Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id, GET} route"}
{"timestamp":"2026-10-23T22:44:00.574Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id/details, GET} route"}
{"timestamp":"2026-10-23T22:44:00.574Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id/employees, GET} route"}
{"timestamp":"2026-10-23T22:44:00.574Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id, PATCH} route"}
{"timestamp":"2026-10-23T22:44:00.574Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id/start, POST} route"}
{"timestamp":"2026-10-23T22:44:00.574Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id/stop, POST} route"}
{"timestamp":"2026-10-23T22:44:00.575Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id/duplicate, POST} route"}
{"timestamp":"2026-10-23T22:44:00.575Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id, DELETE} route"}
{"timestamp":"2026-10-23T22:44:00.575Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/auto-generate-program, POST} route"}
{"timestamp":"2026-10-23T22:44:00.575Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/generate-from-threat-intelligence, POST} route"}
{"timestamp":"2026-10-23T22:44:00.575Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id/risk-score, GET} route"}
{"timestamp":"2026-10-23T22:44:00.575Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/recalculate-risk-scores, POST} route"}
{"timestamp":"2026-10-23T22:44:00.576Z","level":"log","context":"RoutesResolver","message":"NotificationsController {/notifications}:"}
{"timestamp":"2026-10-23T22:44:00.576Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications, POST} route"}
{"timestamp":"2026-10-23T22:44:00.576Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications, GET} route"}
{"timestamp":"2026-10-23T22:44:00.576Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/unread, GET} route"}
{"timestamp":"2026-10-23T22:44:00.576Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/unread-count, GET} route"}
{"timestamp":"2026-10-23T22:44:00.577Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/:id, GET} route"}
{"timestamp":"2026-10-23T22:44:00.577Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/:id, PATCH} route"}
{"timestamp":"2026-10-23T22:44:00.577Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/:id/read, PATCH} route"}
{"timestamp":"2026-10-23T22:44:00.577Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/mark-all-read, PATCH} route"}
{"timestamp":"2026-10-23T22:44:00.578Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/:id, DELETE} route"}
{"timestamp":"2026-10-23T22:44:00.578Z","level":"log","context":"RoutesResolver","message":"LandingPageController {/lp}:"}
{"timestamp":"2026-10-23T22:44:00.578Z","level":"log","context":"RouterExplorer","message":"Mapped {/lp/image, GET} route"}
{"timestamp":"2026-10-23T22:44:00.578Z","level":"log","context":"RouterExplorer","message":"Mapped {/lp/learning, GET} route"}
{"timestamp":"2026-10-23T22:44:00.578Z","level":"log","context":"RouterExplorer","message":"Mapped {/lp/submit, POST} route"}
{"timestamp":"2026-10-23T22:44:00.578Z","level":"log","context":"RouterExplorer","message":"Mapped {/lp/test, GET} route"}
{"timestamp":"2026-10-23T22:44:00.579Z","level":"warn","context":"LegacyRouteConverter","message":"Unsupported route path: \"/lp/*\". In previous versions, the symbols ?, *, and + were used to denote optional or repeating path parameters. The latest version of \"path-to-regexp\" now requires the use of named parameters. For example, instead of using a route like /users/* to capture all routes starting with \"/users\", you should use /users/*path. For more details, refer to the migration guide. Attempting to auto-convert..."}
{"timestamp":"2026-10-23T22:44:00.580Z","level":"log","context":"RouterExplorer","message":"Mapped {/lp/*, ALL} route"}
{"timestamp":"2026-10-23T22:44:00.580Z","level":"log","context":"RoutesResolver","message":"SupportController {/support}:"}
{"timestamp":"2026-10-23T22:44:00.580Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets, POST} route"}
{"timestamp":"2026-10-23T22:44:00.580Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets, GET} route"}
{"timestamp":"2026-10-23T22:44:00.580Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets/:id, GET} route"}
{"timestamp":"2026-10-23T22:44:00.580Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets/:id, PATCH} route"}
{"timestamp":"2026-10-23T22:44:00.581Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets/:id, DELETE} route"}
{"timestamp":"2026-10-23T22:44:00.581Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets/:id/messages, POST} route"}
{"timestamp":"2026-10-23T22:44:00.581Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets/:id/close, POST} route"}
{"timestamp":"2026-10-23T22:44:00.581Z","level":"log","context":"RoutesResolver","message":"BusninessMetricsController {/business-metrics}:"}
{"timestamp":"2026-10-23T22:44:00.581Z","level":"log","context":"RouterExplorer","message":"Mapped {/business-metrics, GET} route"}
{"timestamp":"2026-10-23T22:44:00.581Z","level":"log","context":"RoutesResolver","message":"UsersController {/users}:"}
{"timestamp":"2026-10-23T22:44:00.582Z","level":"log","context":"RouterExplorer","message":"Mapped {/users/:id, PUT} route"}
{"timestamp":"2026-10-23T22:44:00.582Z","level":"log","context":"RouterExplorer","message":"Mapped {/users/settings, GET} route"}
{"timestamp":"2026-10-23T22:44:00.582Z","level":"log","context":"RouterExplorer","message":"Mapped {/users/settings/general, PUT} route"}
{"timestamp":"2026-10-23T22:44:00.582Z","level":"log","context":"RouterExplorer","message":"Mapped {/users/company/settings, PUT} route"}
{"timestamp":"2026-10-23T22:44:00.582Z","level":"log","context":"RouterExplorer","message":"Mapped {/users/change-password, POST} route"}
{"timestamp":"2026-10-23T22:44:00.582Z","level":"log","context":"RouterExplorer","message":"Mapped {/users/localization/settings, PUT} route"}
{"timestamp":"2026-10-23T22:44:00.583Z","level":"log","context":"RoutesResolver","message":"PartnerController {/partner}:"}
{"timestamp":"2026-10-23T22:44:00.583Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses, POST} route"}
{"timestamp":"2026-10-23T22:44:00.583Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses, GET} route"}
{"timestamp":"2026-10-23T22:44:00.583Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses/:id, GET} route"}
{"timestamp":"2026-10-23T22:44:00.583Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses/:id, PUT} route"}
{"timestamp":"2026-10-23T22:44:00.584Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses/:id, DELETE} route"}
{"timestamp":"2026-10-23T22:44:00.584Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses/:id/impersonate, POST} route"}
{"timestamp":"2026-10-23T22:44:00.584Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses/stop-impersonation, POST} route"}
{"timestamp":"2026-10-23T22:44:00.584Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/license-usage, GET} route"}
{"timestamp":"2026-10-23T22:44:00.584Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/invoices, POST} route"}
{"timestamp":"2026-10-23T22:44:00.584Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/invoices, GET} route"}
{"timestamp":"2026-10-23T22:44:00.585Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/invoices/:id, GET} route"}
{"timestamp":"2026-10-23T22:44:00.585Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/invoices/:id, PUT} route"}
{"timestamp":"2026-10-23T22:44:00.585Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/invoices/:id, DELETE} route"}
{"timestamp":"2026-10-23T22:44:00.585Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/invoices/:id/mark-paid, PUT} route"}
{"timestamp":"2026-10-23T22:44:00.585Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/onboarding/generate-token, POST} route"}
{"timestamp":"2026-10-23T22:44:00.585Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/dashboard, GET} route"}
{"timestamp":"2026-10-23T22:44:00.586Z","level":"log","context":"RoutesResolver","message":"MspSubscriptionController {/partner/msp-subscriptions}:"}
{"timestamp":"2026-10-23T22:44:00.586Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/plans, POST} route"}
{"timestamp":"2026-10-23T22:44:00.586Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/plans, GET} route"}
{"timestamp":"2026-10-23T22:44:00.586Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/plans/:planId, GET} route"}
{"timestamp":"2026-10-23T22:44:00.586Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/plans/:planId, PUT} route"}
{"timestamp":"2026-10-23T22:44:00.587Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/plans/:planId, DELETE} route"}
{"timestamp":"2026-10-23T22:44:00.587Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/businesses/:businessId/subscription, POST} route"}
{"timestamp":"2026-10-23T22:44:00.587Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions, GET} route"}
{"timestamp":"2026-10-23T22:44:00.587Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/businesses/:businessId/subscription, GET} route"}
{"timestamp":"2026-10-23T22:44:00.587Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/businesses/:businessId/subscription, PUT} route"}
{"timestamp":"2026-10-23T22:44:00.587Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/businesses/:businessId/subscription, DELETE} route"}
{"timestamp":"2026-10-23T22:44:00.588Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/businesses/:businessId/subscription/limits, GET} route"}
{"timestamp":"2026-10-23T22:44:00.588Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/businesses/:businessId/subscription/change-plan, PUT} route"}
{"timestamp":"2026-10-23T22:44:00.588Z","level":"log","context":"RoutesResolver","message":"OnboardingController {/onboarding}:"}
{"timestamp":"2026-10-23T22:44:00.588Z","level":"log","context":"RouterExplorer","message":"Mapped {/onboarding/validate/:token, GET} route"}
{"timestamp":"2026-10-23T22:44:00.588Z","level":"log","context":"RouterExplorer","message":"Mapped {/onboarding/complete/:token, POST} route"}
{"timestamp":"2026-10-23T22:44:00.588Z","level":"log","context":"RoutesResolver","message":"ResellerController {/reseller}:"}
{"timestamp":"2026-10-23T22:44:00.589Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/businesses, POST} route"}
{"timestamp":"2026-10-23T22:44:00.589Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/businesses, GET} route"}
{"timestamp":"2026-10-23T22:44:00.589Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/businesses/:id, GET} route"}
{"timestamp":"2026-10-23T22:44:00.589Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/businesses/:id, PUT} route"}
{"timestamp":"2026-10-23T22:44:00.589Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/businesses/:id, DELETE} route"}
{"timestamp":"2026-10-23T22:44:00.590Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/license-usage, GET} route"}
{"timestamp":"2026-10-23T22:44:00.590Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/invoices, POST} route"}
{"timestamp":"2026-10-23T22:44:00.590Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/invoices, GET} route"}
{"timestamp":"2026-10-23T22:44:00.590Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/invoices/:id, GET} route"}
{"timestamp":"2026-10-23T22:44:00.590Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/invoices/:id, PUT} route"}
{"timestamp":"2026-10-23T22:44:00.590Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/invoices/:id, DELETE} route"}
{"timestamp":"2026-10-23T22:44:00.591Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/invoices/:id/mark-paid, PUT} route"}
{"timestamp":"2026-10-23T22:44:00.591Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/onboarding/generate-token, POST} route"}
{"timestamp":"2026-10-23T22:44:00.591Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/dashboard, GET} route"}
{"timestamp":"2026-10-23T22:44:00.591Z","level":"log","context":"RoutesResolver","message":"ResellerSubscriptionController {/reseller}:"}
{"timestamp":"2026-10-23T22:44:00.591Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/plans, POST} route"}
{"timestamp":"2026-10-23T22:44:00.591Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/plans, GET} route"}
{"timestamp":"2026-10-23T22:44:00.592Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/plans/:planId, GET} route"}
{"timestamp":"2026-10-23T22:44:00.592Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/plans/:planId, PUT} route"}
{"timestamp":"2026-10-23T22:44:00.592Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/plans/:planId, DELETE} route"}
{"timestamp":"2026-10-23T22:44:00.592Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/subscriptions/businesses/:businessId/subscription, POST} route"}
{"timestamp":"2026-10-23T22:44:00.592Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/subscriptions, GET} route"}
{"timestamp":"2026-10-23T22:44:00.592Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/subscriptions/businesses/:businessId/subscription, GET} route"}
{"timestamp":"2026-10-23T22:44:00.593Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/subscriptions/businesses/:businessId/subscription, PUT} route"}
{"timestamp":"2026-10-23T22:44:00.593Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/subscriptions/businesses/:businessId/subscription, DELETE} route"}
{"timestamp":"2026-10-23T22:44:00.593Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/subscriptions/businesses/:businessId/subscription/limits, GET} route"}
{"timestamp":"2026-10-23T22:44:00.593Z","level":"log","context":"RoutesResolver","message":"HealthController {/health}:"}
{"timestamp":"2026-10-23T22:44:00.593Z","level":"log","context":"RouterExplorer","message":"Mapped {/health, GET} route"}
{"timestamp":"2026-10-23T22:44:00.593Z","level":"log","context":"RouterExplorer","message":"Mapped {/health/test-logs, GET} route"}
{"timestamp":"2026-10-23T22:44:00.594Z","level":"log","context":"RoutesResolver","message":"AzureAdController {/azure-ad}:"}
{"timestamp":"2026-10-23T22:44:00.594Z","level":"log","context":"RouterExplorer","message":"Mapped {/azure-ad/config, POST} route"}
{"timestamp":"2026-10-23T22:44:00.594Z","level":"log","context":"RouterExplorer","message":"Mapped {/azure-ad/config, GET} route"}
{"timestamp":"2026-10-23T22:44:00.594Z","level":"log","context":"RouterExplorer","message":"Mapped {/azure-ad/test-connection, POST} route"}
{"timestamp":"2026-10-23T22:44:00.594Z","level":"log","context":"RouterExplorer","message":"Mapped {/azure-ad/sync, POST} route"}
{"timestamp":"2026-10-23T22:44:00.594Z","level":"log","context":"RoutesResolver","message":"ThreatsController {/threats}:"}
{"timestamp":"2026-10-23T22:44:00.595Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats, POST} route"}
{"timestamp":"2026-10-23T22:44:00.595Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats, GET} route"}
{"timestamp":"2026-10-23T22:44:00.595Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/chart-data, GET} route"}
{"timestamp":"2026-10-23T22:44:00.595Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/claude-search, POST} route"}
{"timestamp":"2026-10-23T22:44:00.595Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/claude-latest, POST} route"}
{"timestamp":"2026-10-23T22:44:00.595Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/claude-trending, POST} route"}
{"timestamp":"2026-10-23T22:44:00.596Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/claude-categories, POST} route"}
{"timestamp":"2026-10-23T22:44:00.596Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/claude-manual-search, POST} route"}
{"timestamp":"2026-10-23T22:44:00.596Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/claude-quick-search, POST} route"}
{"timestamp":"2026-10-23T22:44:00.596Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/scheduler-status, GET} route"}
{"timestamp":"2026-10-23T22:44:00.596Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/health-check, GET} route"}
{"timestamp":"2026-10-23T22:44:00.596Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/pause-scheduler, POST} route"}
{"timestamp":"2026-10-23T22:44:00.597Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/:id, GET} route"}
{"timestamp":"2026-10-23T22:44:00.597Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/:id, PATCH} route"}
{"timestamp":"2026-10-23T22:44:00.597Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/:id, DELETE} route"}
{"timestamp":"2026-10-23T22:44:00.597Z","level":"log","context":"RoutesResolver","message":"DomainController {/domains}:"}
{"timestamp":"2026-10-23T22:44:00.597Z","level":"log","context":"RouterExplorer","message":"Mapped {/domains, GET} route"}
{"timestamp":"2026-10-23T22:44:00.597Z","level":"log","context":"RouterExplorer","message":"Mapped {/domains/:id, GET} route"}
{"timestamp":"2026-10-23T22:44:00.598Z","level":"log","context":"RouterExplorer","message":"Mapped {/domains, POST} route"}
{"timestamp":"2026-10-23T22:44:00.598Z","level":"log","context":"RouterExplorer","message":"Mapped {/domains/:id, PUT} route"}
{"timestamp":"2026-10-23T22:44:00.598Z","level":"log","context":"RouterExplorer","message":"Mapped {/domains/:id, DELETE} route"}
{"timestamp":"2026-10-23T22:44:00.598Z","level":"log","context":"RouterExplorer","message":"Mapped {/domains/seed, POST} route"}
{"timestamp":"2026-10-23T22:44:00.598Z","level":"log","context":"RoutesResolver","message":"MspSubscriptionController {/msp-subscription}:"}
{"timestamp":"2026-10-23T22:44:00.598Z","level":"log","context":"RouterExplorer","message":"Mapped {/msp-subscription/current, GET} route"}
{"timestamp":"2026-10-23T22:44:00.599Z","level":"log","context":"RouterExplorer","message":"Mapped {/msp-subscription/invoices, GET} route"}
{"timestamp":"2026-10-23T22:44:00.599Z","level":"log","context":"RouterExplorer","message":"Mapped {/msp-subscription/invoice/:invoiceId/pdf, GET} route"}
{"timestamp":"2026-10-23T22:44:00.599Z","level":"log","context":"RoutesResolver","message":"MspSubscriptionController {/api/msp-subscription}:"}
{"timestamp":"2026-10-23T22:44:00.599Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/msp-subscription/current, GET} route"}
{"timestamp":"2026-10-23T22:44:00.599Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/msp-subscription/invoices, GET} route"}
{"timestamp":"2026-10-23T22:44:00.599Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/msp-subscription/invoice/:invoiceId/pdf, GET} route"}
{"timestamp":"2026-10-23T22:44:00.688Z","level":"log","context":"NestApplication","message":"Nest application successfully started"}
{"timestamp":"2026-10-23T22:44:00.695Z","level":"log","context":"Bootstrap","message":"Users API successfully started on port 3842"}
{"timestamp":"2026-10-23T22:44:00.695Z","level":"log","context":"SeedService","message":"🌱 Starting database seeding..."}
{"timestamp":"2026-10-23T22:44:00.699Z","level":"log","context":"SeedService","message":"Admin account already exists, skipping seed"}
{"timestamp":"2026-10-23T22:44:00.701Z","level":"log","context":"SeedService","message":"Reseller account already exists, skipping seed"}
{"timestamp":"2026-10-23T22:44:00.703Z","level":"log","context":"SeedService","message":"MSP account already exists, skipping seed"}
{"timestamp":"2026-10-23T22:44:00.703Z","level":"log","context":"SeedService","message":"✅ Database seeding completed successfully"}
{"timestamp":"2026-10-24T04:52:01.404Z","level":"warn","context":"LegacyRouteConverter","message":"Unsupported route path: \"/lp/*\". In previous versions, the symbols ?, *, and + were used to denote optional or repeating path parameters. The latest version of \"path-to-regexp\" now requires the use of named parameters. For example, instead of using a route like /users/* to capture all routes starting with \"/users\", you should use /users/*path. For more details, refer to the migration guide. Attempting to auto-convert..."}
{"timestamp":"2026-10-24T04:52:01.444Z","level":"log","context":"Bootstrap","message":"Starting Users API on port 3842..."}
{"timestamp":"2026-10-24T04:52:01.448Z","level":"log","context":"RoutesResolver","message":"UsersApiController {/}:"}
{"timestamp":"2026-10-24T04:52:01.452Z","level":"log","context":"RouterExplorer","message":"Mapped {/, GET} route"}
{"timestamp":"2026-10-24T04:52:01.453Z","level":"log","context":"RoutesResolver","message":"AuthController {/auth}:"}
{"timestamp":"2026-10-24T04:52:01.453Z","level":"log","context":"RouterExplorer","message":"Mapped {/auth/login, POST} route"}
{"timestamp":"2026-10-24T04:52:01.454Z","level":"log","context":"RouterExplorer","message":"Mapped {/auth/admin/login, POST} route"}
{"timestamp":"2026-10-24T04:52:01.455Z","level":"log","context":"RouterExplorer","message":"Mapped {/auth/send-otp, POST} route"}
{"timestamp":"2026-10-24T04:52:01.455Z","level":"log","context":"RouterExplorer","message":"Mapped {/auth/verify-otp, POST} route"}
{"timestamp":"2026-10-24T04:52:01.455Z","level":"log","context":"RouterExplorer","message":"Mapped {/auth/signup, POST} route"}
{"timestamp":"2026-10-24T04:52:01.456Z","level":"log","context":"RouterExplorer","message":"Mapped {/auth/subscription-status, GET} route"}
{"timestamp":"2026-10-24T04:52:01.456Z","level":"log","context":"RoutesResolver","message":"AdminMspController {/admin/msp}:"}
{"timestamp":"2026-10-24T04:52:01.457Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/msp, GET} route"}
{"timestamp":"2026-10-24T04:52:01.458Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/msp/:id, GET} route"}
{"timestamp":"2026-10-24T04:52:01.458Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/msp, POST} route"}
{"timestamp":"2026-10-24T04:52:01.459Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/msp/:id, PUT} route"}
{"timestamp":"2026-10-24T04:52:01.459Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/msp/:id, DELETE} route"}
{"timestamp":"2026-10-24T04:52:01.459Z","level":"log","context":"RoutesResolver","message":"AdminLicenseController {/admin/licenses}:"}
{"timestamp":"2026-10-24T04:52:01.459Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/licenses/summary, GET} route"}
{"timestamp":"2026-10-24T04:52:01.460Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/licenses/msp/:mspId, GET} route"}
{"timestamp":"2026-10-24T04:52:01.460Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/licenses/msp/:mspId, PUT} route"}
{"timestamp":"2026-10-24T04:52:01.460Z","level":"log","context":"RoutesResolver","message":"AdminImpersonationController {/admin/impersonation}:"}
{"timestamp":"2026-10-24T04:52:01.460Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/impersonation/msp-users, GET} route"}
{"timestamp":"2026-10-24T04:52:01.461Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/impersonation/impersonate, POST} route"}
{"timestamp":"2026-10-24T04:52:01.461Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/impersonation/stop, POST} route"}
{"timestamp":"2026-10-24T04:52:01.461Z","level":"log","context":"RoutesResolver","message":"AdminAiUsageController {/admin/ai-usage}:"}
{"timestamp":"2026-10-24T04:52:01.465Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-usage, GET} route"}
{"timestamp":"2026-10-24T04:52:01.465Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-usage/business/:businessId, GET} route"}
{"timestamp":"2026-10-24T04:52:01.466Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-usage/report/monthly, GET} route"}
{"timestamp":"2026-10-24T04:52:01.466Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-usage/pricing, GET} route"}
{"timestamp":"2026-10-24T04:52:01.466Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-usage/pricing, POST} route"}
{"timestamp":"2026-10-24T04:52:01.466Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-usage/credit/:businessId, PUT} route"}
{"timestamp":"2026-10-24T04:52:01.466Z","level":"log","context":"RoutesResolver","message":"AdminAiUsageController {/api/admin/ai-usage}:"}
{"timestamp":"2026-10-24T04:52:01.467Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-usage, GET} route"}
{"timestamp":"2026-10-24T04:52:01.467Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-usage/business/:businessId, GET} route"}
{"timestamp":"2026-10-24T04:52:01.467Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-usage/report/monthly, GET} route"}
{"timestamp":"2026-10-24T04:52:01.467Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-usage/pricing, GET} route"}
{"timestamp":"2026-10-24T04:52:01.467Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-usage/pricing, POST} route"}
{"timestamp":"2026-10-24T04:52:01.468Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-usage/credit/:businessId, PUT} route"}
{"timestamp":"2026-10-24T04:52:01.468Z","level":"log","context":"RoutesResolver","message":"AdminAiModelController {/admin/ai-models}:"}
{"timestamp":"2026-10-24T04:52:01.468Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models, POST} route"}
{"timestamp":"2026-10-24T04:52:01.468Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models, GET} route"}
{"timestamp":"2026-10-24T04:52:01.468Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/default, GET} route"}
{"timestamp":"2026-10-24T04:52:01.469Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/:id, GET} route"}
{"timestamp":"2026-10-24T04:52:01.469Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/:id, PUT} route"}
{"timestamp":"2026-10-24T04:52:01.469Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/:id, DELETE} route"}
{"timestamp":"2026-10-24T04:52:01.469Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/:id/set-default, POST} route"}
{"timestamp":"2026-10-24T04:52:01.469Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/assign-to-business, POST} route"}
{"timestamp":"2026-10-24T04:52:01.469Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/business/:businessId, GET} route"}
{"timestamp":"2026-10-24T04:52:01.470Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/:id/businesses, GET} route"}
{"timestamp":"2026-10-24T04:52:01.470Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/initialize-defaults, POST} route"}
{"timestamp":"2026-10-24T04:52:01.470Z","level":"log","context":"RoutesResolver","message":"AdminAiModelController {/api/admin/ai-models}:"}
{"timestamp":"2026-10-24T04:52:01.470Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models, POST} route"}
{"timestamp":"2026-10-24T04:52:01.470Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models, GET} route"}
{"timestamp":"2026-10-24T04:52:01.471Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/default, GET} route"}
{"timestamp":"2026-10-24T04:52:01.471Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/:id, GET} route"}
{"timestamp":"2026-10-24T04:52:01.471Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/:id, PUT} route"}
{"timestamp":"2026-10-24T04:52:01.471Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/:id, DELETE} route"}
{"timestamp":"2026-10-24T04:52:01.471Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/:id/set-default, POST} route"}
{"timestamp":"2026-10-24T04:52:01.471Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/assign-to-business, POST} route"}
{"timestamp":"2026-10-24T04:52:01.472Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/business/:businessId, GET} route"}
{"timestamp":"2026-10-24T04:52:01.472Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/:id/businesses, GET} route"}
{"timestamp":"2026-10-24T04:52:01.472Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/initialize-defaults, POST} route"}
{"timestamp":"2026-10-24T04:52:01.472Z","level":"log","context":"RoutesResolver","message":"AdminBusinessController {/admin/businesses}:"}
{"timestamp":"2026-10-24T04:52:01.472Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/businesses, GET} route"}
{"timestamp":"2026-10-24T04:52:01.473Z","level":"log","context":"RoutesResolver","message":"ResellerManagementController {/admin/resellers}:"}
{"timestamp":"2026-10-24T04:52:01.473Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/resellers, GET} route"}
{"timestamp":"2026-10-24T04:52:01.473Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/resellers/create-default, POST} route"}
{"timestamp":"2026-10-24T04:52:01.473Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/resellers, POST} route"}
{"timestamp":"2026-10-24T04:52:01.473Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/resellers/:id/toggle-status, PUT} route"}
{"timestamp":"2026-10-24T04:52:01.473Z","level":"log","context":"RoutesResolver","message":"SubscriptionController {/subscription}:"}
{"timestamp":"2026-10-24T04:52:01.474Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/plans, GET} route"}
{"timestamp":"2026-10-24T04:52:01.474Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/calculate-price, POST} route"}
{"timestamp":"2026-10-24T04:52:01.474Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/current, GET} route"}
{"timestamp":"2026-10-24T04:52:01.474Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/create, POST} route"}
{"timestamp":"2026-10-24T04:52:01.474Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/:id, PUT} route"}
{"timestamp":"2026-10-24T04:52:01.475Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/:id/cancel, DELETE} route"}
{"timestamp":"2026-10-24T04:52:01.475Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/sync/:stripeSubscriptionId, POST} route"}
{"timestamp":"2026-10-24T04:52:01.475Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/payments, GET} route"}
{"timestamp":"2026-10-24T04:52:01.475Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/payments/stats, GET} route"}
{"timestamp":"2026-10-24T04:52:01.475Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/payment/:id, GET} route"}
{"timestamp":"2026-10-24T04:52:01.476Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/payment-methods/attach, POST} route"}
{"timestamp":"2026-10-24T04:52:01.476Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/payment-methods/:paymentMethodId, DELETE} route"}
{"timestamp":"2026-10-24T04:52:01.476Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/payment-methods, GET} route"}
{"timestamp":"2026-10-24T04:52:01.476Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/setup-intent, POST} route"}
{"timestamp":"2026-10-24T04:52:01.476Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/update-employee-count, POST} route"}
{"timestamp":"2026-10-24T04:52:01.477Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/retry-payment/:subscriptionId, POST} route"}
{"timestamp":"2026-10-24T04:52:01.477Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/invoice/:invoiceId/pdf, GET} route"}
{"timestamp":"2026-10-24T04:52:01.477Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/preview-upgrade, POST} route"}
{"timestamp":"2026-10-24T04:52:01.477Z","level":"log","context":"RoutesResolver","message":"SubscriptionController {/api/subscription}:"}
{"timestamp":"2026-10-24T04:52:01.477Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/plans, GET} route"}
{"timestamp":"2026-10-24T04:52:01.477Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/calculate-price, POST} route"}
{"timestamp":"2026-10-24T04:52:01.478Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/current, GET} route"}
{"timestamp":"2026-10-24T04:52:01.478Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/create, POST} route"}
{"timestamp":"2026-10-24T04:52:01.478Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/:id, PUT} route"}
{"timestamp":"2026-10-24T04:52:01.478Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/:id/cancel, DELETE} route"}
{"timestamp":"2026-10-24T04:52:01.478Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/sync/:stripeSubscriptionId, POST} route"}
{"timestamp":"2026-10-24T04:52:01.478Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/payments, GET} route"}
{"timestamp":"2026-10-24T04:52:01.479Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/payments/stats, GET} route"}
{"timestamp":"2026-10-24T04:52:01.479Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/payment/:id, GET} route"}
{"timestamp":"2026-10-24T04:52:01.479Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/payment-methods/attach, POST} route"}
{"timestamp":"2026-10-24T04:52:01.479Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/payment-methods/:paymentMethodId, DELETE} route"}
{"timestamp":"2026-10-24T04:52:01.479Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/payment-methods, GET} route"}
{"timestamp":"2026-10-24T04:52:01.479Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/setup-intent, POST} route"}
{"timestamp":"2026-10-24T04:52:01.480Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/update-employee-count, POST} route"}
{"timestamp":"2026-10-24T04:52:01.480Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/retry-payment/:subscriptionId, POST} route"}
{"timestamp":"2026-10-24T04:52:01.480Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/invoice/:invoiceId/pdf, GET} route"}
{"timestamp":"2026-10-24T04:52:01.480Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/preview-upgrade, POST} route"}
{"timestamp":"2026-10-24T04:52:01.480Z","level":"log","context":"RoutesResolver","message":"StripeWebhookController {/stripe/webhook}:"}
{"timestamp":"2026-10-24T04:52:01.480Z","level":"log","context":"RouterExplorer","message":"Mapped {/stripe/webhook/test, GET} route"}
{"timestamp":"2026-10-24T04:52:01.481Z","level":"log","context":"RouterExplorer","message":"Mapped {/stripe/webhook, POST} route"}
{"timestamp":"2026-10-24T04:52:01.481Z","level":"log","context":"RoutesResolver","message":"EmailController {/email-templates}:"}
{"timestamp":"2026-10-24T04:52:01.481Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates/test, POST} route"}
{"timestamp":"2026-10-24T04:52:01.481Z","level":"log","context":"RoutesResolver","message":"EmployeeController {/employees}:"}
{"timestamp":"2026-10-24T04:52:01.481Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees, POST} route"}
{"timestamp":"2026-10-24T04:52:01.481Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees, GET} route"}
{"timestamp":"2026-10-24T04:52:01.481Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees/export, GET} route"}
{"timestamp":"2026-10-24T04:52:01.482Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees/risk-stats, GET} route"}
{"timestamp":"2026-10-24T04:52:01.482Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees/:id, GET} route"}
{"timestamp":"2026-10-24T04:52:01.482Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees/:id, PUT} route"}
{"timestamp":"2026-10-24T04:52:01.482Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees/:id, DELETE} route"}
{"timestamp":"2026-10-24T04:52:01.482Z","level":"log","context":"RoutesResolver","message":"GroupController {/groups}:"}
{"timestamp":"2026-10-24T04:52:01.483Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups, POST} route"}
{"timestamp":"2026-10-24T04:52:01.483Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups, GET} route"}
{"timestamp":"2026-10-24T04:52:01.483Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups/standard, GET} route"}
{"timestamp":"2026-10-24T04:52:01.483Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups/:id, GET} route"}
{"timestamp":"2026-10-24T04:52:01.483Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups/:id, PUT} route"}
{"timestamp":"2026-10-24T04:52:01.483Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups/:id, DELETE} route"}
{"timestamp":"2026-10-24T04:52:01.484Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups/:id/info, GET} route"}
{"timestamp":"2026-10-24T04:52:01.484Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups/:id/with-employees, GET} route"}
{"timestamp":"2026-10-24T04:52:01.484Z","level":"log","context":"RoutesResolver","message":"SenderProfileController {/sender-profiles}:"}
{"timestamp":"2026-10-24T04:52:01.484Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles, GET} route"}
{"timestamp":"2026-10-24T04:52:01.484Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles/:id, GET} route"}
{"timestamp":"2026-10-24T04:52:01.484Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles, POST} route"}
{"timestamp":"2026-10-24T04:52:01.485Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles/:id, PUT} route"}
{"timestamp":"2026-10-24T04:52:01.485Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles/:id, DELETE} route"}
{"timestamp":"2026-10-24T04:52:01.485Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles/:id/verify-domain, POST} route"}
{"timestamp":"2026-10-24T04:52:01.485Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles/domain-verification, GET} route"}
{"timestamp":"2026-10-24T04:52:01.485Z","level":"log","context":"RoutesResolver","message":"EmailTemplateController {/email-templates}:"}
{"timestamp":"2026-10-24T04:52:01.485Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates, GET} route"}
{"timestamp":"2026-10-24T04:52:01.486Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates/:id, GET} route"}
{"timestamp":"2026-10-24T04:52:01.486Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates, POST} route"}
{"timestamp":"2026-10-24T04:52:01.486Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates/:id, PUT} route"}
{"timestamp":"2026-10-24T04:52:01.486Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates/:id, DELETE} route"}
{"timestamp":"2026-10-24T04:52:01.486Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates/:id/duplicate, POST} route"}
{"timestamp":"2026-10-24T04:52:01.486Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates/:id/preview, GET} route"}
{"timestamp":"2026-10-24T04:52:01.487Z","level":"log","context":"RoutesResolver","message":"ScenarioController {/scenarios}:"}
{"timestamp":"2026-10-24T04:52:01.487Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios, POST} route"}
{"timestamp":"2026-10-24T04:52:01.487Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios/generate-content, POST} route"}
{"timestamp":"2026-10-24T04:52:01.487Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios, GET} route"}
{"timestamp":"2026-10-24T04:52:01.487Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios/:id, GET} route"}
{"timestamp":"2026-10-24T04:52:01.487Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios/:id, PUT} route"}
{"timestamp":"2026-10-24T04:52:01.488Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios/:id, DELETE} route"}
{"timestamp":"2026-10-24T04:52:01.488Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios/generate-from-json, POST} route"}
{"timestamp":"2026-10-24T04:52:01.488Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios/:id/save-as-custom-scenario, POST} route"}
{"timestamp":"2026-10-24T04:52:01.488Z","level":"log","context":"RoutesResolver","message":"CampaignController {/campaigns}:"}
{"timestamp":"2026-10-24T04:52:01.488Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns, POST} route"}
{"timestamp":"2026-10-24T04:52:01.489Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns, GET} route"}
{"timestamp":"2026-10-24T04:52:01.489Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id, GET} route"}
{"timestamp":"2026-10-24T04:52:01.489Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id/details, GET} route"}
{"timestamp":"2026-10-24T04:52:01.489Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id/employees, GET} route"}
{"timestamp":"2026-10-24T04:52:01.489Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id, PATCH} route"}
{"timestamp":"2026-10-24T04:52:01.490Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id/start, POST} route"}
{"timestamp":"2026-10-24T04:52:01.490Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id/stop, POST} route"}
{"timestamp":"2026-10-24T04:52:01.490Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id/duplicate, POST} route"}
{"timestamp":"2026-10-24T04:52:01.490Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id, DELETE} route"}
{"timestamp":"2026-10-24T04:52:01.490Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/auto-generate-program, POST} route"}
{"timestamp":"2026-10-24T04:52:01.491Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/generate-from-threat-intelligence, POST} route"}
{"timestamp":"2026-10-24T04:52:01.491Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id/risk-score, GET} route"}
{"timestamp":"2026-10-24T04:52:01.491Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/recalculate-risk-scores, POST} route"}
{"timestamp":"2026-10-24T04:52:01.491Z","level":"log","context":"RoutesResolver","message":"CampaignController {/api/campaigns}:"}
{"timestamp":"2026-10-24T04:52:01.491Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns, POST} route"}
{"timestamp":"2026-10-24T04:52:01.491Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns, GET} route"}
{"timestamp":"2026-10-24T04:52:01.491Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id, GET} route"}
{"timestamp":"2026-10-24T04:52:01.492Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id/details, GET} route"}
{"timestamp":"2026-10-24T04:52:01.492Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id/employees, GET} route"}
{"timestamp":"2026-10-24T04:52:01.492Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id, PATCH} route"}
{"timestamp":"2026-10-24T04:52:01.492Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id/start, POST} route"}
{"timestamp":"2026-10-24T04:52:01.492Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id/stop, POST} route"}
{"timestamp":"2026-10-24T04:52:01.493Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id/duplicate, POST} route"}
{"timestamp":"2026-10-24T04:52:01.493Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id, DELETE} route"}
{"timestamp":"2026-10-24T04:52:01.493Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/auto-generate-program, POST} route"}
{"timestamp":"2026-10-24T04:52:01.493Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/generate-from-threat-intelligence, POST} route"}
{"timestamp":"2026-10-24T04:52:01.493Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id/risk-score, GET} route"}
{"timestamp":"2026-10-24T04:52:01.493Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/recalculate-risk-scores, POST} route"}
{"timestamp":"2026-10-24T04:52:01.493Z","level":"log","context":"RoutesResolver","message":"NotificationsController {/notifications}:"}
{"timestamp":"2026-10-24T04:52:01.494Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications, POST} route"}
{"timestamp":"2026-10-24T04:52:01.494Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications, GET} route"}
{"timestamp":"2026-10-24T04:52:01.494Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/unread, GET} route"}
{"timestamp":"2026-10-24T04:52:01.494Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/unread-count, GET} route"}
{"timestamp":"2026-10-24T04:52:01.495Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/:id, GET} route"}
{"timestamp":"2026-10-24T04:52:01.495Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/:id, PATCH} route"}
{"timestamp":"2026-10-24T04:52:01.495Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/:id/read, PATCH} route"}
{"timestamp":"2026-10-24T04:52:01.495Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/mark-all-read, PATCH} route"}
{"timestamp":"2026-10-24T04:52:01.496Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/:id, DELETE} route"}
{"timestamp":"2026-10-24T04:52:01.496Z","level":"log","context":"RoutesResolver","message":"LandingPageController {/lp}:"}
{"timestamp":"2026-10-24T04:52:01.496Z","level":"log","context":"RouterExplorer","message":"Mapped {/lp/image, GET} route"}
{"timestamp":"2026-10-24T04:52:01.496Z","level":"log","context":"RouterExplorer","message":"Mapped {/lp/learning, GET} route"}
{"timestamp":"2026-10-24T04:52:01.496Z","level":"log","context":"RouterExplorer","message":"Mapped {/lp/submit, POST} route"}
{"timestamp":"2026-10-24T04:52:01.497Z","level":"log","context":"RouterExplorer","message":"Mapped {/lp/test, GET} route"}
{"timestamp":"2026-10-24T04:52:01.497Z","level":"warn","context":"LegacyRouteConverter","message":"Unsupported route path: \"/lp/*\". In previous versions, the symbols ?, *, and + were used to denote optional or repeating path parameters. The latest version of \"path-to-regexp\" now requires the use of named parameters. For example, instead of using a route like /users/* to capture all routes starting with \"/users\", you should use /users/*path. For more details, refer to the migration guide. Attempting to auto-convert..."}
{"timestamp":"2026-10-24T04:52:01.498Z","level":"log","context":"RouterExplorer","message":"Mapped {/lp/*, ALL} route"}
{"timestamp":"2026-10-24T04:52:01.498Z","level":"log","context":"RoutesResolver","message":"SupportController {/support}:"}
{"timestamp":"2026-10-24T04:52:01.498Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets, POST} route"}
{"timestamp":"2026-10-24T04:52:01.498Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets, GET} route"}
{"timestamp":"2026-10-24T04:52:01.499Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets/:id, GET} route"}
{"timestamp":"2026-10-24T04:52:01.499Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets/:id, PATCH} route"}
{"timestamp":"2026-10-24T04:52:01.499Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets/:id, DELETE} route"}
{"timestamp":"2026-10-24T04:52:01.499Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets/:id/messages, POST} route"}
{"timestamp":"2026-10-24T04:52:01.500Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets/:id/close, POST} route"}
{"timestamp":"2026-10-24T04:52:01.500Z","level":"log","context":"RoutesResolver","message":"BusninessMetricsController {/business-metrics}:"}
{"timestamp":"2026-10-24T04:52:01.500Z","level":"log","context":"RouterExplorer","message":"Mapped {/business-metrics, GET} route"}
{"timestamp":"2026-10-24T04:52:01.500Z","level":"log","context":"RoutesResolver","message":"UsersController {/users}:"}
{"timestamp":"2026-10-24T04:52:01.500Z","level":"log","context":"RouterExplorer","message":"Mapped {/users/:id, PUT} route"}
{"timestamp":"2026-10-24T04:52:01.500Z","level":"log","context":"RouterExplorer","message":"Mapped {/users/settings, GET} route"}
{"timestamp":"2026-10-24T04:52:01.501Z","level":"log","context":"RouterExplorer","message":"Mapped {/users/settings/general, PUT} route"}
{"timestamp":"2026-10-24T04:52:01.501Z","level":"log","context":"RouterExplorer","message":"Mapped {/users/company/settings, PUT} route"}
{"timestamp":"2026-10-24T04:52:01.501Z","level":"log","context":"RouterExplorer","message":"Mapped {/users/change-password, POST} route"}
{"timestamp":"2026-10-24T04:52:01.501Z","level":"log","context":"RouterExplorer","message":"Mapped {/users/localization/settings, PUT} route"}
{"timestamp":"2026-10-24T04:52:01.501Z","level":"log","context":"RoutesResolver","message":"PartnerController {/partner}:"}
{"timestamp":"2026-10-24T04:52:01.502Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses, POST} route"}
{"timestamp":"2026-10-24T04:52:01.502Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses, GET} route"}
{"timestamp":"2026-10-24T04:52:01.502Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses/:id, GET} route"}
{"timestamp":"2026-10-24T04:52:01.502Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses/:id, PUT} route"}
{"timestamp":"2026-10-24T04:52:01.502Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses/:id, DELETE} route"}
{"timestamp":"2026-10-24T04:52:01.503Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses/:id/impersonate, POST} route"}
{"timestamp":"2026-10-24T04:52:01.503Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses/stop-impersonation, POST} route"}
{"timestamp":"2026-10-24T04:52:01.503Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/license-usage, GET} route"}
{"timestamp":"2026-10-24T04:52:01.503Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/invoices, POST} route"}
{"timestamp":"2026-10-24T04:52:01.503Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/invoices, GET} route"}
{"timestamp":"2026-10-24T04:52:01.504Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/invoices/:id, GET} route"}
{"timestamp":"2026-10-24T04:52:01.504Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/invoices/:id, PUT} route"}
{"timestamp":"2026-10-24T04:52:01.504Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/invoices/:id, DELETE} route"}
{"timestamp":"2026-10-24T04:52:01.504Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/invoices/:id/mark-paid, PUT} route"}
{"timestamp":"2026-10-24T04:52:01.505Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/onboarding/generate-token, POST} route"}
{"timestamp":"2026-10-24T04:52:01.505Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/dashboard, GET} route"}
{"timestamp":"2026-10-24T04:52:01.505Z","level":"log","context":"RoutesResolver","message":"MspSubscriptionController {/partner/msp-subscriptions}:"}
{"timestamp":"2026-10-24T04:52:01.505Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/plans, POST} route"}
{"timestamp":"2026-10-24T04:52:01.505Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/plans, GET} route"}
{"timestamp":"2026-10-24T04:52:01.506Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/plans/:planId, GET} route"}
{"timestamp":"2026-10-24T04:52:01.506Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/plans/:planId, PUT} route"}
{"timestamp":"2026-10-24T04:52:01.506Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/plans/:planId, DELETE} route"}
{"timestamp":"2026-10-24T04:52:01.506Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/businesses/:businessId/subscription, POST} route"}
{"timestamp":"2026-10-24T04:52:01.507Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions, GET} route"}
{"timestamp":"2026-10-24T04:52:01.507Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/businesses/:businessId/subscription, GET} route"}
{"timestamp":"2026-10-24T04:52:01.507Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/businesses/:businessId/subscription, PUT} route"}
{"timestamp":"2026-10-24T04:52:01.507Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/businesses/:businessId/subscription, DELETE} route"}
{"timestamp":"2026-10-24T04:52:01.508Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/businesses/:businessId/subscription/limits, GET} route"}
{"timestamp":"2026-10-24T04:52:01.508Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/businesses/:businessId/subscription/change-plan, PUT} route"}
{"timestamp":"2026-10-24T04:52:01.508Z","level":"log","context":"RoutesResolver","message":"OnboardingController {/onboarding}:"}
{"timestamp":"2026-10-24T04:52:01.508Z","level":"log","context":"RouterExplorer","message":"Mapped {/onboarding/validate/:token, GET} route"}
{"timestamp":"2026-10-24T04:52:01.508Z","level":"log","context":"RouterExplorer","message":"Mapped {/onboarding/complete/:token, POST} route"}
{"timestamp":"2026-10-24T04:52:01.509Z","level":"log","context":"RoutesResolver","message":"ResellerController {/reseller}:"}
{"timestamp":"2026-10-24T04:52:01.509Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/businesses, POST} route"}
{"timestamp":"2026-10-24T04:52:01.509Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/businesses, GET} route"}
{"timestamp":"2026-10-24T04:52:01.509Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/businesses/:id, GET} route"}
{"timestamp":"2026-10-24T04:52:01.510Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/businesses/:id, PUT} route"}
{"timestamp":"2026-10-24T04:52:01.510Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/businesses/:id, DELETE} route"}
{"timestamp":"2026-10-24T04:52:01.510Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/license-usage, GET} route"}
{"timestamp":"2026-10-24T04:52:01.510Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/invoices, POST} route"}
{"timestamp":"2026-10-24T04:52:01.510Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/invoices, GET} route"}
{"timestamp":"2026-10-24T04:52:01.511Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/invoices/:id, GET} route"}
{"timestamp":"2026-10-24T04:52:01.511Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/invoices/:id, PUT} route"}
{"timestamp":"2026-10-24T04:52:01.511Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/invoices/:id, DELETE} route"}
{"timestamp":"2026-10-24T04:52:01.511Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/invoices/:id/mark-paid, PUT} route"}
{"timestamp":"2026-10-24T04:52:01.511Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/onboarding/generate-token, POST} route"}
{"timestamp":"2026-10-24T04:52:01.512Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/dashboard, GET} route"}
{"timestamp":"2026-10-24T04:52:01.512Z","level":"log","context":"RoutesResolver","message":"ResellerSubscriptionController {/reseller}:"}
{"timestamp":"2026-10-24T04:52:01.512Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/plans, POST} route"}
{"timestamp":"2026-10-24T04:52:01.512Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/plans, GET} route"}
{"timestamp":"2026-10-24T04:52:01.512Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/plans/:planId, GET} route"}
{"timestamp":"2026-10-24T04:52:01.513Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/plans/:planId, PUT} route"}
{"timestamp":"2026-10-24T04:52:01.513Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/plans/:planId, DELETE} route"}
{"timestamp":"2026-10-24T04:52:01.513Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/subscriptions/businesses/:businessId/subscription, POST} route"}
{"timestamp":"2026-10-24T04:52:01.513Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/subscriptions, GET} route"}
{"timestamp":"2026-10-24T04:52:01.514Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/subscriptions/businesses/:businessId/subscription, GET} route"}
{"timestamp":"2026-10-24T04:52:01.514Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/subscriptions/businesses/:businessId/subscription, PUT} route"}
{"timestamp":"2026-10-24T04:52:01.514Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/subscriptions/businesses/:businessId/subscription, DELETE} route"}
{"timestamp":"2026-10-24T04:52:01.514Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/subscriptions/businesses/:businessId/subscription/limits, GET} route"}
{"timestamp":"2026-10-24T04:52:01.514Z","level":"log","context":"RoutesResolver","message":"HealthController {/health}:"}
{"timestamp":"2026-10-24T04:52:01.515Z","level":"log","context":"RouterExplorer","message":"Mapped {/health, GET} route"}
{"timestamp":"2026-10-24T04:52:01.515Z","level":"log","context":"RouterExplorer","message":"Mapped {/health/test-logs, GET} route"}
{"timestamp":"2026-10-24T04:52:01.515Z","level":"log","context":"RoutesResolver","message":"AzureAdController {/azure-ad}:"}
{"timestamp":"2026-10-24T04:52:01.515Z","level":"log","context":"RouterExplorer","message":"Mapped {/azure-ad/config, POST} route"}
{"timestamp":"2026-10-24T04:52:01.515Z","level":"log","context":"RouterExplorer","message":"Mapped {/azure-ad/config, GET} route"}
{"timestamp":"2026-10-24T04:52:01.516Z","level":"log","context":"RouterExplorer","message":"Mapped {/azure-ad/test-connection, POST} route"}
{"timestamp":"2026-10-24T04:52:01.516Z","level":"log","context":"RouterExplorer","message":"Mapped {/azure-ad/sync, POST} route"}
{"timestamp":"2026-10-24T04:52:01.516Z","level":"log","context":"RoutesResolver","message":"ThreatsController {/threats}:"}
{"timestamp":"2026-10-24T04:52:01.516Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats, POST} route"}
{"timestamp":"2026-10-24T04:52:01.516Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats, GET} route"}
{"timestamp":"2026-10-24T04:52:01.517Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/chart-data, GET} route"}
{"timestamp":"2026-10-24T04:52:01.517Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/claude-search, POST} route"}
{"timestamp":"2026-10-24T04:52:01.517Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/claude-latest, POST} route"}
{"timestamp":"2026-10-24T04:52:01.517Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/claude-trending, POST} route"}
{"timestamp":"2026-10-24T04:52:01.517Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/claude-categories, POST} route"}
{"timestamp":"2026-10-24T04:52:01.518Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/claude-manual-search, POST} route"}
{"timestamp":"2026-10-24T04:52:01.518Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/claude-quick-search, POST} route"}
{"timestamp":"2026-10-24T04:52:01.518Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/scheduler-status, GET} route"}
{"timestamp":"2026-10-24T04:52:01.518Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/health-check, GET} route"}
{"timestamp":"2026-10-24T04:52:01.519Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/pause-scheduler, POST} route"}
{"timestamp":"2026-10-24T04:52:01.519Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/:id, GET} route"}
{"timestamp":"2026-10-24T04:52:01.519Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/:id, PATCH} route"}
{"timestamp":"2026-10-24T04:52:01.519Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/:id, DELETE} route"}
{"timestamp":"2026-10-24T04:52:01.519Z","level":"log","context":"RoutesResolver","message":"DomainController {/domains}:"}
{"timestamp":"2026-10-24T04:52:01.520Z","level":"log","context":"RouterExplorer","message":"Mapped {/domains, GET} route"}
{"timestamp":"2026-10-24T04:52:01.520Z","level":"log","context":"RouterExplorer","message":"Mapped {/domains/:id, GET} route"}
{"timestamp":"2026-10-24T04:52:01.520Z","level":"log","context":"RouterExplorer","message":"Mapped {/domains, POST} route"}
{"timestamp":"2026-10-24T04:52:01.520Z","level":"log","context":"RouterExplorer","message":"Mapped {/domains/:id, PUT} route"}
{"timestamp":"2026-10-24T04:52:01.520Z","level":"log","context":"RouterExplorer","message":"Mapped {/domains/:id, DELETE} route"}
{"timestamp":"2026-10-24T04:52:01.521Z","level":"log","context":"RouterExplorer","message":"Mapped {/domains/seed, POST} route"}
{"timestamp":"2026-10-24T04:52:01.521Z","level":"log","context":"RoutesResolver","message":"MspSubscriptionController {/msp-subscription}:"}
{"timestamp":"2026-10-24T04:52:01.521Z","level":"log","context":"RouterExplorer","message":"Mapped {/msp-subscription/current, GET} route"}
{"timestamp":"2026-10-24T04:52:01.521Z","level":"log","context":"RouterExplorer","message":"Mapped {/msp-subscription/invoices, GET} route"}
{"timestamp":"2026-10-24T04:52:01.521Z","level":"log","context":"RouterExplorer","message":"Mapped {/msp-subscription/invoice/:invoiceId/pdf, GET} route"}
{"timestamp":"2026-10-24T04:52:01.521Z","level":"log","context":"RoutesResolver","message":"MspSubscriptionController {/api/msp-subscription}:"}
{"timestamp":"2026-10-24T04:52:01.522Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/msp-subscription/current, GET} route"}
{"timestamp":"2026-10-24T04:52:01.522Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/msp-subscription/invoices, GET} route"}
{"timestamp":"2026-10-24T04:52:01.522Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/msp-subscription/invoice/:invoiceId/pdf, GET} route"}
{"timestamp":"2026-10-24T04:52:01.605Z","level":"log","context":"NestApplication","message":"Nest application successfully started"}
{"timestamp":"2026-10-24T04:52:01.613Z","level":"log","context":"Bootstrap","message":"Users API successfully started on port 3842"}
{"timestamp":"2026-10-24T04:52:01.613Z","level":"log","context":"SeedService","message":"🌱 Starting database seeding..."}
{"timestamp":"2026-10-24T04:52:01.621Z","level":"log","context":"SeedService","message":"Admin account already exists, skipping seed"}
{"timestamp":"2026-10-24T04:52:01.624Z","level":"log","context":"SeedService","message":"Reseller account already exists, skipping seed"}
{"timestamp":"2026-10-24T04:52:01.626Z","level":"log","context":"SeedService","message":"MSP account already exists, skipping seed"}
{"timestamp":"2026-10-24T04:52:01.626Z","level":"log","context":"SeedService","message":"✅ Database seeding completed successfully"}
{"timestamp":"2026-10-24T08:47:50.656Z","level":"warn","context":"LegacyRouteConverter","message":"Unsupported route path: \"/lp/*\". In previous versions, the symbols ?, *, and + were used to denote optional or repeating path parameters. The latest version of \"path-to-regexp\" now requires the use of named parameters. For example, instead of using a route like /users/* to capture all routes starting with \"/users\", you should use /users/*path. For more details, refer to the migration guide. Attempting to auto-convert..."}
{"timestamp":"2026-10-24T08:47:50.696Z","level":"log","context":"Bootstrap","message":"Starting Users API on port 3842..."}
{"timestamp":"2026-10-24T08:47:50.700Z","level":"log","context":"RoutesResolver","message":"UsersApiController {/}:"}
{"timestamp":"2026-10-24T08:47:50.703Z","level":"log","context":"RouterExplorer","message":"Mapped {/, GET} route"}
{"timestamp":"2026-10-24T08:47:50.704Z","level":"log","context":"RoutesResolver","message":"AuthController {/auth}:"}
{"timestamp":"2026-10-24T08:47:50.704Z","level":"log","context":"RouterExplorer","message":"Mapped {/auth/login, POST} route"}
{"timestamp":"2026-10-24T08:47:50.705Z","level":"log","context":"RouterExplorer","message":"Mapped {/auth/admin/login, POST} route"}
{"timestamp":"2026-10-24T08:47:50.706Z","level":"log","context":"RouterExplorer","message":"Mapped {/auth/send-otp, POST} route"}
{"timestamp":"2026-10-24T08:47:50.706Z","level":"log","context":"RouterExplorer","message":"Mapped {/auth/verify-otp, POST} route"}
{"timestamp":"2026-10-24T08:47:50.706Z","level":"log","context":"RouterExplorer","message":"Mapped {/auth/signup, POST} route"}
{"timestamp":"2026-10-24T08:47:50.707Z","level":"log","context":"RouterExplorer","message":"Mapped {/auth/subscription-status, GET} route"}
{"timestamp":"2026-10-24T08:47:50.707Z","level":"log","context":"RoutesResolver","message":"AdminMspController {/admin/msp}:"}
{"timestamp":"2026-10-24T08:47:50.708Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/msp, GET} route"}
{"timestamp":"2026-10-24T08:47:50.709Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/msp/:id, GET} route"}
{"timestamp":"2026-10-24T08:47:50.709Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/msp, POST} route"}
{"timestamp":"2026-10-24T08:47:50.710Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/msp/:id, PUT} route"}
{"timestamp":"2026-10-24T08:47:50.710Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/msp/:id, DELETE} route"}
{"timestamp":"2026-10-24T08:47:50.710Z","level":"log","context":"RoutesResolver","message":"AdminLicenseController {/admin/licenses}:"}
{"timestamp":"2026-10-24T08:47:50.710Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/licenses/summary, GET} route"}
{"timestamp":"2026-10-24T08:47:50.711Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/licenses/msp/:mspId, GET} route"}
{"timestamp":"2026-10-24T08:47:50.711Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/licenses/msp/:mspId, PUT} route"}
{"timestamp":"2026-10-24T08:47:50.711Z","level":"log","context":"RoutesResolver","message":"AdminImpersonationController {/admin/impersonation}:"}
{"timestamp":"2026-10-24T08:47:50.711Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/impersonation/msp-users, GET} route"}
{"timestamp":"2026-10-24T08:47:50.712Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/impersonation/impersonate, POST} route"}
{"timestamp":"2026-10-24T08:47:50.712Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/impersonation/stop, POST} route"}
{"timestamp":"2026-10-24T08:47:50.712Z","level":"log","context":"RoutesResolver","message":"AdminAiUsageController {/admin/ai-usage}:"}
{"timestamp":"2026-10-24T08:47:50.715Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-usage, GET} route"}
{"timestamp":"2026-10-24T08:47:50.716Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-usage/business/:businessId, GET} route"}
{"timestamp":"2026-10-24T08:47:50.716Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-usage/report/monthly, GET} route"}
{"timestamp":"2026-10-24T08:47:50.716Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-usage/pricing, GET} route"}
{"timestamp":"2026-10-24T08:47:50.716Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-usage/pricing, POST} route"}
{"timestamp":"2026-10-24T08:47:50.716Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-usage/credit/:businessId, PUT} route"}
{"timestamp":"2026-10-24T08:47:50.717Z","level":"log","context":"RoutesResolver","message":"AdminAiUsageController {/api/admin/ai-usage}:"}
{"timestamp":"2026-10-24T08:47:50.717Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-usage, GET} route"}
{"timestamp":"2026-10-24T08:47:50.717Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-usage/business/:businessId, GET} route"}
{"timestamp":"2026-10-24T08:47:50.717Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-usage/report/monthly, GET} route"}
{"timestamp":"2026-10-24T08:47:50.717Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-usage/pricing, GET} route"}
{"timestamp":"2026-10-24T08:47:50.717Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-usage/pricing, POST} route"}
{"timestamp":"2026-10-24T08:47:50.718Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-usage/credit/:businessId, PUT} route"}
{"timestamp":"2026-10-24T08:47:50.718Z","level":"log","context":"RoutesResolver","message":"AdminAiModelController {/admin/ai-models}:"}
{"timestamp":"2026-10-24T08:47:50.718Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models, POST} route"}
{"timestamp":"2026-10-24T08:47:50.718Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models, GET} route"}
{"timestamp":"2026-10-24T08:47:50.718Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/default, GET} route"}
{"timestamp":"2026-10-24T08:47:50.719Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/:id, GET} route"}
{"timestamp":"2026-10-24T08:47:50.719Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/:id, PUT} route"}
{"timestamp":"2026-10-24T08:47:50.719Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/:id, DELETE} route"}
{"timestamp":"2026-10-24T08:47:50.719Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/:id/set-default, POST} route"}
{"timestamp":"2026-10-24T08:47:50.719Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/assign-to-business, POST} route"}
{"timestamp":"2026-10-24T08:47:50.720Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/business/:businessId, GET} route"}
{"timestamp":"2026-10-24T08:47:50.720Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/:id/businesses, GET} route"}
{"timestamp":"2026-10-24T08:47:50.720Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/ai-models/initialize-defaults, POST} route"}
{"timestamp":"2026-10-24T08:47:50.720Z","level":"log","context":"RoutesResolver","message":"AdminAiModelController {/api/admin/ai-models}:"}
{"timestamp":"2026-10-24T08:47:50.720Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models, POST} route"}
{"timestamp":"2026-10-24T08:47:50.721Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models, GET} route"}
{"timestamp":"2026-10-24T08:47:50.721Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/default, GET} route"}
{"timestamp":"2026-10-24T08:47:50.721Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/:id, GET} route"}
{"timestamp":"2026-10-24T08:47:50.721Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/:id, PUT} route"}
{"timestamp":"2026-10-24T08:47:50.721Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/:id, DELETE} route"}
{"timestamp":"2026-10-24T08:47:50.721Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/:id/set-default, POST} route"}
{"timestamp":"2026-10-24T08:47:50.722Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/assign-to-business, POST} route"}
{"timestamp":"2026-10-24T08:47:50.722Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/business/:businessId, GET} route"}
{"timestamp":"2026-10-24T08:47:50.722Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/:id/businesses, GET} route"}
{"timestamp":"2026-10-24T08:47:50.722Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/admin/ai-models/initialize-defaults, POST} route"}
{"timestamp":"2026-10-24T08:47:50.722Z","level":"log","context":"RoutesResolver","message":"AdminBusinessController {/admin/businesses}:"}
{"timestamp":"2026-10-24T08:47:50.723Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/businesses, GET} route"}
{"timestamp":"2026-10-24T08:47:50.723Z","level":"log","context":"RoutesResolver","message":"ResellerManagementController {/admin/resellers}:"}
{"timestamp":"2026-10-24T08:47:50.723Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/resellers, GET} route"}
{"timestamp":"2026-10-24T08:47:50.723Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/resellers/create-default, POST} route"}
{"timestamp":"2026-10-24T08:47:50.723Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/resellers, POST} route"}
{"timestamp":"2026-10-24T08:47:50.723Z","level":"log","context":"RouterExplorer","message":"Mapped {/admin/resellers/:id/toggle-status, PUT} route"}
{"timestamp":"2026-10-24T08:47:50.723Z","level":"log","context":"RoutesResolver","message":"SubscriptionController {/subscription}:"}
{"timestamp":"2026-10-24T08:47:50.724Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/plans, GET} route"}
{"timestamp":"2026-10-24T08:47:50.724Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/calculate-price, POST} route"}
{"timestamp":"2026-10-24T08:47:50.724Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/current, GET} route"}
{"timestamp":"2026-10-24T08:47:50.724Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/create, POST} route"}
{"timestamp":"2026-10-24T08:47:50.724Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/:id, PUT} route"}
{"timestamp":"2026-10-24T08:47:50.725Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/:id/cancel, DELETE} route"}
{"timestamp":"2026-10-24T08:47:50.725Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/sync/:stripeSubscriptionId, POST} route"}
{"timestamp":"2026-10-24T08:47:50.725Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/payments, GET} route"}
{"timestamp":"2026-10-24T08:47:50.725Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/payments/stats, GET} route"}
{"timestamp":"2026-10-24T08:47:50.725Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/payment/:id, GET} route"}
{"timestamp":"2026-10-24T08:47:50.726Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/payment-methods/attach, POST} route"}
{"timestamp":"2026-10-24T08:47:50.726Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/payment-methods/:paymentMethodId, DELETE} route"}
{"timestamp":"2026-10-24T08:47:50.726Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/payment-methods, GET} route"}
{"timestamp":"2026-10-24T08:47:50.726Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/setup-intent, POST} route"}
{"timestamp":"2026-10-24T08:47:50.726Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/update-employee-count, POST} route"}
{"timestamp":"2026-10-24T08:47:50.726Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/retry-payment/:subscriptionId, POST} route"}
{"timestamp":"2026-10-24T08:47:50.727Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/invoice/:invoiceId/pdf, GET} route"}
{"timestamp":"2026-10-24T08:47:50.727Z","level":"log","context":"RouterExplorer","message":"Mapped {/subscription/preview-upgrade, POST} route"}
{"timestamp":"2026-10-24T08:47:50.727Z","level":"log","context":"RoutesResolver","message":"SubscriptionController {/api/subscription}:"}
{"timestamp":"2026-10-24T08:47:50.727Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/plans, GET} route"}
{"timestamp":"2026-10-24T08:47:50.727Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/calculate-price, POST} route"}
{"timestamp":"2026-10-24T08:47:50.727Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/current, GET} route"}
{"timestamp":"2026-10-24T08:47:50.727Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/create, POST} route"}
{"timestamp":"2026-10-24T08:47:50.728Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/:id, PUT} route"}
{"timestamp":"2026-10-24T08:47:50.728Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/:id/cancel, DELETE} route"}
{"timestamp":"2026-10-24T08:47:50.728Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/sync/:stripeSubscriptionId, POST} route"}
{"timestamp":"2026-10-24T08:47:50.728Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/payments, GET} route"}
{"timestamp":"2026-10-24T08:47:50.728Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/payments/stats, GET} route"}
{"timestamp":"2026-10-24T08:47:50.728Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/payment/:id, GET} route"}
{"timestamp":"2026-10-24T08:47:50.729Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/payment-methods/attach, POST} route"}
{"timestamp":"2026-10-24T08:47:50.729Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/payment-methods/:paymentMethodId, DELETE} route"}
{"timestamp":"2026-10-24T08:47:50.729Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/payment-methods, GET} route"}
{"timestamp":"2026-10-24T08:47:50.729Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/setup-intent, POST} route"}
{"timestamp":"2026-10-24T08:47:50.729Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/update-employee-count, POST} route"}
{"timestamp":"2026-10-24T08:47:50.729Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/retry-payment/:subscriptionId, POST} route"}
{"timestamp":"2026-10-24T08:47:50.729Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/invoice/:invoiceId/pdf, GET} route"}
{"timestamp":"2026-10-24T08:47:50.730Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/subscription/preview-upgrade, POST} route"}
{"timestamp":"2026-10-24T08:47:50.730Z","level":"log","context":"RoutesResolver","message":"StripeWebhookController {/stripe/webhook}:"}
{"timestamp":"2026-10-24T08:47:50.730Z","level":"log","context":"RouterExplorer","message":"Mapped {/stripe/webhook/test, GET} route"}
{"timestamp":"2026-10-24T08:47:50.730Z","level":"log","context":"RouterExplorer","message":"Mapped {/stripe/webhook, POST} route"}
{"timestamp":"2026-10-24T08:47:50.730Z","level":"log","context":"RoutesResolver","message":"EmailController {/email-templates}:"}
{"timestamp":"2026-10-24T08:47:50.730Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates/test, POST} route"}
{"timestamp":"2026-10-24T08:47:50.730Z","level":"log","context":"RoutesResolver","message":"EmployeeController {/employees}:"}
{"timestamp":"2026-10-24T08:47:50.731Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees, POST} route"}
{"timestamp":"2026-10-24T08:47:50.731Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees, GET} route"}
{"timestamp":"2026-10-24T08:47:50.731Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees/export, GET} route"}
{"timestamp":"2026-10-24T08:47:50.731Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees/risk-stats, GET} route"}
{"timestamp":"2026-10-24T08:47:50.731Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees/:id, GET} route"}
{"timestamp":"2026-10-24T08:47:50.731Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees/:id, PUT} route"}
{"timestamp":"2026-10-24T08:47:50.732Z","level":"log","context":"RouterExplorer","message":"Mapped {/employees/:id, DELETE} route"}
{"timestamp":"2026-10-24T08:47:50.732Z","level":"log","context":"RoutesResolver","message":"GroupController {/groups}:"}
{"timestamp":"2026-10-24T08:47:50.732Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups, POST} route"}
{"timestamp":"2026-10-24T08:47:50.732Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups, GET} route"}
{"timestamp":"2026-10-24T08:47:50.732Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups/standard, GET} route"}
{"timestamp":"2026-10-24T08:47:50.732Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups/:id, GET} route"}
{"timestamp":"2026-10-24T08:47:50.733Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups/:id, PUT} route"}
{"timestamp":"2026-10-24T08:47:50.733Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups/:id, DELETE} route"}
{"timestamp":"2026-10-24T08:47:50.733Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups/:id/info, GET} route"}
{"timestamp":"2026-10-24T08:47:50.733Z","level":"log","context":"RouterExplorer","message":"Mapped {/groups/:id/with-employees, GET} route"}
{"timestamp":"2026-10-24T08:47:50.733Z","level":"log","context":"RoutesResolver","message":"SenderProfileController {/sender-profiles}:"}
{"timestamp":"2026-10-24T08:47:50.733Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles, GET} route"}
{"timestamp":"2026-10-24T08:47:50.733Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles/:id, GET} route"}
{"timestamp":"2026-10-24T08:47:50.734Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles, POST} route"}
{"timestamp":"2026-10-24T08:47:50.734Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles/:id, PUT} route"}
{"timestamp":"2026-10-24T08:47:50.734Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles/:id, DELETE} route"}
{"timestamp":"2026-10-24T08:47:50.734Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles/:id/verify-domain, POST} route"}
{"timestamp":"2026-10-24T08:47:50.734Z","level":"log","context":"RouterExplorer","message":"Mapped {/sender-profiles/domain-verification, GET} route"}
{"timestamp":"2026-10-24T08:47:50.734Z","level":"log","context":"RoutesResolver","message":"EmailTemplateController {/email-templates}:"}
{"timestamp":"2026-10-24T08:47:50.735Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates, GET} route"}
{"timestamp":"2026-10-24T08:47:50.735Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates/:id, GET} route"}
{"timestamp":"2026-10-24T08:47:50.735Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates, POST} route"}
{"timestamp":"2026-10-24T08:47:50.735Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates/:id, PUT} route"}
{"timestamp":"2026-10-24T08:47:50.735Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates/:id, DELETE} route"}
{"timestamp":"2026-10-24T08:47:50.735Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates/:id/duplicate, POST} route"}
{"timestamp":"2026-10-24T08:47:50.736Z","level":"log","context":"RouterExplorer","message":"Mapped {/email-templates/:id/preview, GET} route"}
{"timestamp":"2026-10-24T08:47:50.736Z","level":"log","context":"RoutesResolver","message":"ScenarioController {/scenarios}:"}
{"timestamp":"2026-10-24T08:47:50.736Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios, POST} route"}
{"timestamp":"2026-10-24T08:47:50.736Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios/generate-content, POST} route"}
{"timestamp":"2026-10-24T08:47:50.736Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios, GET} route"}
{"timestamp":"2026-10-24T08:47:50.736Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios/:id, GET} route"}
{"timestamp":"2026-10-24T08:47:50.736Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios/:id, PUT} route"}
{"timestamp":"2026-10-24T08:47:50.737Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios/:id, DELETE} route"}
{"timestamp":"2026-10-24T08:47:50.737Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios/generate-from-json, POST} route"}
{"timestamp":"2026-10-24T08:47:50.737Z","level":"log","context":"RouterExplorer","message":"Mapped {/scenarios/:id/save-as-custom-scenario, POST} route"}
{"timestamp":"2026-10-24T08:47:50.737Z","level":"log","context":"RoutesResolver","message":"CampaignController {/campaigns}:"}
{"timestamp":"2026-10-24T08:47:50.737Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns, POST} route"}
{"timestamp":"2026-10-24T08:47:50.737Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns, GET} route"}
{"timestamp":"2026-10-24T08:47:50.738Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id, GET} route"}
{"timestamp":"2026-10-24T08:47:50.738Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id/details, GET} route"}
{"timestamp":"2026-10-24T08:47:50.738Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id/employees, GET} route"}
{"timestamp":"2026-10-24T08:47:50.738Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id, PATCH} route"}
{"timestamp":"2026-10-24T08:47:50.738Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id/start, POST} route"}
{"timestamp":"2026-10-24T08:47:50.739Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id/stop, POST} route"}
{"timestamp":"2026-10-24T08:47:50.739Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id/duplicate, POST} route"}
{"timestamp":"2026-10-24T08:47:50.739Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id, DELETE} route"}
{"timestamp":"2026-10-24T08:47:50.739Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/auto-generate-program, POST} route"}
{"timestamp":"2026-10-24T08:47:50.739Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/generate-from-threat-intelligence, POST} route"}
{"timestamp":"2026-10-24T08:47:50.739Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/:id/risk-score, GET} route"}
{"timestamp":"2026-10-24T08:47:50.740Z","level":"log","context":"RouterExplorer","message":"Mapped {/campaigns/recalculate-risk-scores, POST} route"}
{"timestamp":"2026-10-24T08:47:50.740Z","level":"log","context":"RoutesResolver","message":"CampaignController {/api/campaigns}:"}
{"timestamp":"2026-10-24T08:47:50.740Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns, POST} route"}
{"timestamp":"2026-10-24T08:47:50.740Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns, GET} route"}
{"timestamp":"2026-10-24T08:47:50.740Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id, GET} route"}
{"timestamp":"2026-10-24T08:47:50.740Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id/details, GET} route"}
{"timestamp":"2026-10-24T08:47:50.740Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id/employees, GET} route"}
{"timestamp":"2026-10-24T08:47:50.741Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id, PATCH} route"}
{"timestamp":"2026-10-24T08:47:50.741Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id/start, POST} route"}
{"timestamp":"2026-10-24T08:47:50.741Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id/stop, POST} route"}
{"timestamp":"2026-10-24T08:47:50.741Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id/duplicate, POST} route"}
{"timestamp":"2026-10-24T08:47:50.741Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id, DELETE} route"}
{"timestamp":"2026-10-24T08:47:50.741Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/auto-generate-program, POST} route"}
{"timestamp":"2026-10-24T08:47:50.741Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/generate-from-threat-intelligence, POST} route"}
{"timestamp":"2026-10-24T08:47:50.742Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/:id/risk-score, GET} route"}
{"timestamp":"2026-10-24T08:47:50.742Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/campaigns/recalculate-risk-scores, POST} route"}
{"timestamp":"2026-10-24T08:47:50.742Z","level":"log","context":"RoutesResolver","message":"NotificationsController {/notifications}:"}
{"timestamp":"2026-10-24T08:47:50.742Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications, POST} route"}
{"timestamp":"2026-10-24T08:47:50.742Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications, GET} route"}
{"timestamp":"2026-10-24T08:47:50.742Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/unread, GET} route"}
{"timestamp":"2026-10-24T08:47:50.743Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/unread-count, GET} route"}
{"timestamp":"2026-10-24T08:47:50.743Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/:id, GET} route"}
{"timestamp":"2026-10-24T08:47:50.743Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/:id, PATCH} route"}
{"timestamp":"2026-10-24T08:47:50.743Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/:id/read, PATCH} route"}
{"timestamp":"2026-10-24T08:47:50.743Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/mark-all-read, PATCH} route"}
{"timestamp":"2026-10-24T08:47:50.744Z","level":"log","context":"RouterExplorer","message":"Mapped {/notifications/:id, DELETE} route"}
{"timestamp":"2026-10-24T08:47:50.744Z","level":"log","context":"RoutesResolver","message":"LandingPageController {/lp}:"}
{"timestamp":"2026-10-24T08:47:50.744Z","level":"log","context":"RouterExplorer","message":"Mapped {/lp/image, GET} route"}
{"timestamp":"2026-10-24T08:47:50.744Z","level":"log","context":"RouterExplorer","message":"Mapped {/lp/learning, GET} route"}
{"timestamp":"2026-10-24T08:47:50.744Z","level":"log","context":"RouterExplorer","message":"Mapped {/lp/submit, POST} route"}
{"timestamp":"2026-10-24T08:47:50.745Z","level":"log","context":"RouterExplorer","message":"Mapped {/lp/test, GET} route"}
{"timestamp":"2026-10-24T08:47:50.745Z","level":"warn","context":"LegacyRouteConverter","message":"Unsupported route path: \"/lp/*\". In previous versions, the symbols ?, *, and + were used to denote optional or repeating path parameters. The latest version of \"path-to-regexp\" now requires the use of named parameters. For example, instead of using a route like /users/* to capture all routes starting with \"/users\", you should use /users/*path. For more details, refer to the migration guide. Attempting to auto-convert..."}
{"timestamp":"2026-10-24T08:47:50.746Z","level":"log","context":"RouterExplorer","message":"Mapped {/lp/*, ALL} route"}
{"timestamp":"2026-10-24T08:47:50.746Z","level":"log","context":"RoutesResolver","message":"SupportController {/support}:"}
{"timestamp":"2026-10-24T08:47:50.746Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets, POST} route"}
{"timestamp":"2026-10-24T08:47:50.746Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets, GET} route"}
{"timestamp":"2026-10-24T08:47:50.746Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets/:id, GET} route"}
{"timestamp":"2026-10-24T08:47:50.746Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets/:id, PATCH} route"}
{"timestamp":"2026-10-24T08:47:50.747Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets/:id, DELETE} route"}
{"timestamp":"2026-10-24T08:47:50.747Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets/:id/messages, POST} route"}
{"timestamp":"2026-10-24T08:47:50.747Z","level":"log","context":"RouterExplorer","message":"Mapped {/support/tickets/:id/close, POST} route"}
{"timestamp":"2026-10-24T08:47:50.747Z","level":"log","context":"RoutesResolver","message":"BusninessMetricsController {/business-metrics}:"}
{"timestamp":"2026-10-24T08:47:50.747Z","level":"log","context":"RouterExplorer","message":"Mapped {/business-metrics, GET} route"}
{"timestamp":"2026-10-24T08:47:50.747Z","level":"log","context":"RoutesResolver","message":"UsersController {/users}:"}
{"timestamp":"2026-10-24T08:47:50.747Z","level":"log","context":"RouterExplorer","message":"Mapped {/users/:id, PUT} route"}
{"timestamp":"2026-10-24T08:47:50.748Z","level":"log","context":"RouterExplorer","message":"Mapped {/users/settings, GET} route"}
{"timestamp":"2026-10-24T08:47:50.748Z","level":"log","context":"RouterExplorer","message":"Mapped {/users/settings/general, PUT} route"}
{"timestamp":"2026-10-24T08:47:50.748Z","level":"log","context":"RouterExplorer","message":"Mapped {/users/company/settings, PUT} route"}
{"timestamp":"2026-10-24T08:47:50.748Z","level":"log","context":"RouterExplorer","message":"Mapped {/users/change-password, POST} route"}
{"timestamp":"2026-10-24T08:47:50.748Z","level":"log","context":"RouterExplorer","message":"Mapped {/users/localization/settings, PUT} route"}
{"timestamp":"2026-10-24T08:47:50.748Z","level":"log","context":"RoutesResolver","message":"PartnerController {/partner}:"}
{"timestamp":"2026-10-24T08:47:50.749Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses, POST} route"}
{"timestamp":"2026-10-24T08:47:50.749Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses, GET} route"}
{"timestamp":"2026-10-24T08:47:50.749Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses/:id, GET} route"}
{"timestamp":"2026-10-24T08:47:50.749Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses/:id, PUT} route"}
{"timestamp":"2026-10-24T08:47:50.749Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses/:id, DELETE} route"}
{"timestamp":"2026-10-24T08:47:50.750Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses/:id/impersonate, POST} route"}
{"timestamp":"2026-10-24T08:47:50.750Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/businesses/stop-impersonation, POST} route"}
{"timestamp":"2026-10-24T08:47:50.750Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/license-usage, GET} route"}
{"timestamp":"2026-10-24T08:47:50.750Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/invoices, POST} route"}
{"timestamp":"2026-10-24T08:47:50.750Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/invoices, GET} route"}
{"timestamp":"2026-10-24T08:47:50.750Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/invoices/:id, GET} route"}
{"timestamp":"2026-10-24T08:47:50.751Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/invoices/:id, PUT} route"}
{"timestamp":"2026-10-24T08:47:50.751Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/invoices/:id, DELETE} route"}
{"timestamp":"2026-10-24T08:47:50.751Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/invoices/:id/mark-paid, PUT} route"}
{"timestamp":"2026-10-24T08:47:50.751Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/onboarding/generate-token, POST} route"}
{"timestamp":"2026-10-24T08:47:50.751Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/dashboard, GET} route"}
{"timestamp":"2026-10-24T08:47:50.751Z","level":"log","context":"RoutesResolver","message":"MspSubscriptionController {/partner/msp-subscriptions}:"}
{"timestamp":"2026-10-24T08:47:50.751Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/plans, POST} route"}
{"timestamp":"2026-10-24T08:47:50.752Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/plans, GET} route"}
{"timestamp":"2026-10-24T08:47:50.752Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/plans/:planId, GET} route"}
{"timestamp":"2026-10-24T08:47:50.752Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/plans/:planId, PUT} route"}
{"timestamp":"2026-10-24T08:47:50.752Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/plans/:planId, DELETE} route"}
{"timestamp":"2026-10-24T08:47:50.752Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/businesses/:businessId/subscription, POST} route"}
{"timestamp":"2026-10-24T08:47:50.753Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions, GET} route"}
{"timestamp":"2026-10-24T08:47:50.753Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/businesses/:businessId/subscription, GET} route"}
{"timestamp":"2026-10-24T08:47:50.753Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/businesses/:businessId/subscription, PUT} route"}
{"timestamp":"2026-10-24T08:47:50.753Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/businesses/:businessId/subscription, DELETE} route"}
{"timestamp":"2026-10-24T08:47:50.753Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/businesses/:businessId/subscription/limits, GET} route"}
{"timestamp":"2026-10-24T08:47:50.753Z","level":"log","context":"RouterExplorer","message":"Mapped {/partner/msp-subscriptions/businesses/:businessId/subscription/change-plan, PUT} route"}
{"timestamp":"2026-10-24T08:47:50.753Z","level":"log","context":"RoutesResolver","message":"OnboardingController {/onboarding}:"}
{"timestamp":"2026-10-24T08:47:50.754Z","level":"log","context":"RouterExplorer","message":"Mapped {/onboarding/validate/:token, GET} route"}
{"timestamp":"2026-10-24T08:47:50.754Z","level":"log","context":"RouterExplorer","message":"Mapped {/onboarding/complete/:token, POST} route"}
{"timestamp":"2026-10-24T08:47:50.754Z","level":"log","context":"RoutesResolver","message":"ResellerController {/reseller}:"}
{"timestamp":"2026-10-24T08:47:50.754Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/businesses, POST} route"}
{"timestamp":"2026-10-24T08:47:50.754Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/businesses, GET} route"}
{"timestamp":"2026-10-24T08:47:50.754Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/businesses/:id, GET} route"}
{"timestamp":"2026-10-24T08:47:50.755Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/businesses/:id, PUT} route"}
{"timestamp":"2026-10-24T08:47:50.755Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/businesses/:id, DELETE} route"}
{"timestamp":"2026-10-24T08:47:50.755Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/license-usage, GET} route"}
{"timestamp":"2026-10-24T08:47:50.755Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/invoices, POST} route"}
{"timestamp":"2026-10-24T08:47:50.755Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/invoices, GET} route"}
{"timestamp":"2026-10-24T08:47:50.755Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/invoices/:id, GET} route"}
{"timestamp":"2026-10-24T08:47:50.756Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/invoices/:id, PUT} route"}
{"timestamp":"2026-10-24T08:47:50.756Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/invoices/:id, DELETE} route"}
{"timestamp":"2026-10-24T08:47:50.756Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/invoices/:id/mark-paid, PUT} route"}
{"timestamp":"2026-10-24T08:47:50.756Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/onboarding/generate-token, POST} route"}
{"timestamp":"2026-10-24T08:47:50.756Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/dashboard, GET} route"}
{"timestamp":"2026-10-24T08:47:50.756Z","level":"log","context":"RoutesResolver","message":"ResellerSubscriptionController {/reseller}:"}
{"timestamp":"2026-10-24T08:47:50.757Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/plans, POST} route"}
{"timestamp":"2026-10-24T08:47:50.757Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/plans, GET} route"}
{"timestamp":"2026-10-24T08:47:50.757Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/plans/:planId, GET} route"}
{"timestamp":"2026-10-24T08:47:50.757Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/plans/:planId, PUT} route"}
{"timestamp":"2026-10-24T08:47:50.757Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/plans/:planId, DELETE} route"}
{"timestamp":"2026-10-24T08:47:50.757Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/subscriptions/businesses/:businessId/subscription, POST} route"}
{"timestamp":"2026-10-24T08:47:50.757Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/subscriptions, GET} route"}
{"timestamp":"2026-10-24T08:47:50.758Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/subscriptions/businesses/:businessId/subscription, GET} route"}
{"timestamp":"2026-10-24T08:47:50.758Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/subscriptions/businesses/:businessId/subscription, PUT} route"}
{"timestamp":"2026-10-24T08:47:50.758Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/subscriptions/businesses/:businessId/subscription, DELETE} route"}
{"timestamp":"2026-10-24T08:47:50.758Z","level":"log","context":"RouterExplorer","message":"Mapped {/reseller/subscriptions/businesses/:businessId/subscription/limits, GET} route"}
{"timestamp":"2026-10-24T08:47:50.758Z","level":"log","context":"RoutesResolver","message":"HealthController {/health}:"}
{"timestamp":"2026-10-24T08:47:50.758Z","level":"log","context":"RouterExplorer","message":"Mapped {/health, GET} route"}
{"timestamp":"2026-10-24T08:47:50.759Z","level":"log","context":"RouterExplorer","message":"Mapped {/health/test-logs, GET} route"}
{"timestamp":"2026-10-24T08:47:50.759Z","level":"log","context":"RoutesResolver","message":"AzureAdController {/azure-ad}:"}
{"timestamp":"2026-10-24T08:47:50.759Z","level":"log","context":"RouterExplorer","message":"Mapped {/azure-ad/config, POST} route"}
{"timestamp":"2026-10-24T08:47:50.759Z","level":"log","context":"RouterExplorer","message":"Mapped {/azure-ad/config, GET} route"}
{"timestamp":"2026-10-24T08:47:50.759Z","level":"log","context":"RouterExplorer","message":"Mapped {/azure-ad/test-connection, POST} route"}
{"timestamp":"2026-10-24T08:47:50.759Z","level":"log","context":"RouterExplorer","message":"Mapped {/azure-ad/sync, POST} route"}
{"timestamp":"2026-10-24T08:47:50.759Z","level":"log","context":"RoutesResolver","message":"ThreatsController {/threats}:"}
{"timestamp":"2026-10-24T08:47:50.760Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats, POST} route"}
{"timestamp":"2026-10-24T08:47:50.760Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats, GET} route"}
{"timestamp":"2026-10-24T08:47:50.760Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/chart-data, GET} route"}
{"timestamp":"2026-10-24T08:47:50.760Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/claude-search, POST} route"}
{"timestamp":"2026-10-24T08:47:50.760Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/claude-latest, POST} route"}
{"timestamp":"2026-10-24T08:47:50.760Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/claude-trending, POST} route"}
{"timestamp":"2026-10-24T08:47:50.761Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/claude-categories, POST} route"}
{"timestamp":"2026-10-24T08:47:50.761Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/claude-manual-search, POST} route"}
{"timestamp":"2026-10-24T08:47:50.761Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/claude-quick-search, POST} route"}
{"timestamp":"2026-10-24T08:47:50.761Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/scheduler-status, GET} route"}
{"timestamp":"2026-10-24T08:47:50.761Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/health-check, GET} route"}
{"timestamp":"2026-10-24T08:47:50.761Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/pause-scheduler, POST} route"}
{"timestamp":"2026-10-24T08:47:50.761Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/:id, GET} route"}
{"timestamp":"2026-10-24T08:47:50.762Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/:id, PATCH} route"}
{"timestamp":"2026-10-24T08:47:50.762Z","level":"log","context":"RouterExplorer","message":"Mapped {/threats/:id, DELETE} route"}
{"timestamp":"2026-10-24T08:47:50.762Z","level":"log","context":"RoutesResolver","message":"DomainController {/domains}:"}
{"timestamp":"2026-10-24T08:47:50.762Z","level":"log","context":"RouterExplorer","message":"Mapped {/domains, GET} route"}
{"timestamp":"2026-10-24T08:47:50.762Z","level":"log","context":"RouterExplorer","message":"Mapped {/domains/:id, GET} route"}
{"timestamp":"2026-10-24T08:47:50.762Z","level":"log","context":"RouterExplorer","message":"Mapped {/domains, POST} route"}
{"timestamp":"2026-10-24T08:47:50.763Z","level":"log","context":"RouterExplorer","message":"Mapped {/domains/:id, PUT} route"}
{"timestamp":"2026-10-24T08:47:50.763Z","level":"log","context":"RouterExplorer","message":"Mapped {/domains/:id, DELETE} route"}
{"timestamp":"2026-10-24T08:47:50.763Z","level":"log","context":"RouterExplorer","message":"Mapped {/domains/seed, POST} route"}
{"timestamp":"2026-10-24T08:47:50.763Z","level":"log","context":"RoutesResolver","message":"MspSubscriptionController {/msp-subscription}:"}
{"timestamp":"2026-10-24T08:47:50.763Z","level":"log","context":"RouterExplorer","message":"Mapped {/msp-subscription/current, GET} route"}
{"timestamp":"2026-10-24T08:47:50.763Z","level":"log","context":"RouterExplorer","message":"Mapped {/msp-subscription/invoices, GET} route"}
{"timestamp":"2026-10-24T08:47:50.763Z","level":"log","context":"RouterExplorer","message":"Mapped {/msp-subscription/invoice/:invoiceId/pdf, GET} route"}
{"timestamp":"2026-10-24T08:47:50.763Z","level":"log","context":"RoutesResolver","message":"MspSubscriptionController {/api/msp-subscription}:"}
{"timestamp":"2026-10-24T08:47:50.764Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/msp-subscription/current, GET} route"}
{"timestamp":"2026-10-24T08:47:50.764Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/msp-subscription/invoices, GET} route"}
{"timestamp":"2026-10-24T08:47:50.764Z","level":"log","context":"RouterExplorer","message":"Mapped {/api/msp-subscription/invoice/:invoiceId/pdf, GET} route"}
{"timestamp":"2026-10-24T08:47:50.839Z","level":"log","context":"NestApplication","message":"Nest application successfully started"}
{"timestamp":"2026-10-24T08:47:50.850Z","level":"log","context":"Bootstrap","message":"Users API successfully started on port 3842"}
{"timestamp":"2026-10-24T08:47:50.850Z","level":"log","context":"SeedService","message":"🌱 Starting database seeding..."}
{"timestamp":"2026-10-24T08:47:50.856Z","level":"log","context":"SeedService","message":"Admin account already exists, skipping seed"}
{"timestamp":"2026-10-24T08:47:50.859Z","level":"log","context":"SeedService","message":"Reseller account already exists, skipping seed"}
{"timestamp":"2026-10-24T08:47:50.860Z","level":"log","context":"SeedService","message":"MSP account already exists, skipping seed"}
{"timestamp":"2026-10-24T08:47:50.860Z","level":"log","context":"SeedService","message":"✅ Database seeding completed successfully"}
