{"owner":"bluewave-labs","repo":"Checkmate","hasSpec":true,"specFile":"server/openapi.json","branch":"HEAD","format":"json","version":"3.0.0","title":"Checkmate API","description":"Generated from Zod validation schemas. Source of truth: server/src/api/validation/*.ts","pathsCount":59,"endpoints":[{"method":"POST","path":"/auth/register","summary":"Register a new user (first user becomes superadmin)"},{"method":"POST","path":"/auth/login","summary":"Log in"},{"method":"POST","path":"/auth/recovery/request","summary":"Request a password recovery email"},{"method":"POST","path":"/auth/recovery/validate","summary":"Validate a password recovery token"},{"method":"POST","path":"/auth/recovery/reset","summary":"Reset password using a recovery token"},{"method":"GET","path":"/auth/users/superadmin","summary":"Check whether a superadmin user exists"},{"method":"GET","path":"/auth/users","summary":"List all users (admin/superadmin)"},{"method":"POST","path":"/auth/users","summary":"Create a new user (superadmin)"},{"method":"GET","path":"/auth/users/{userId}","summary":"Get a user by id"},{"method":"PATCH","path":"/auth/users/{userId}","summary":"Edit a user (superadmin)"},{"method":"DELETE","path":"/auth/users/{userId}","summary":"Delete a user (admin/superadmin)"},{"method":"PATCH","path":"/auth/users/{userId}/password","summary":"Change a user's password (superadmin)"},{"method":"PATCH","path":"/auth/user","summary":"Edit the currently authenticated user"},{"method":"DELETE","path":"/auth/user","summary":"Delete the currently authenticated user"},{"method":"GET","path":"/checks/team/summary","summary":"Aggregate check summary for the caller's team"},{"method":"GET","path":"/checks/team","summary":"List checks across the team"},{"method":"DELETE","path":"/checks/team","summary":"Delete all checks for the team (admin/superadmin)"},{"method":"GET","path":"/checks/{monitorId}","summary":"List checks for a monitor"},{"method":"DELETE","path":"/checks/{monitorId}","summary":"Delete checks for a monitor"},{"method":"GET","path":"/diagnostic/system","summary":"Get system diagnostics (admin/superadmin)"},{"method":"GET","path":"/geo-checks/{monitorId}","summary":"Get geo check results for a monitor"},{"method":"GET","path":"/incidents/team","summary":"List incidents for the caller's team"},{"method":"GET","path":"/incidents/team/summary","summary":"Incident summary for the caller's team"},{"method":"GET","path":"/incidents/{incidentId}","summary":"Get an incident by id"},{"method":"PUT","path":"/incidents/{incidentId}/resolve","summary":"Manually resolve an incident (admin/superadmin)"},{"method":"POST","path":"/invite/send","summary":"Send an invite email (admin/superadmin)"},{"method":"POST","path":"/invite/verify","summary":"Verify an invite token"},{"method":"POST","path":"/invite","summary":"Create an invite token (admin/superadmin)"},{"method":"GET","path":"/logs","summary":"Get application logs (admin/superadmin)"},{"method":"POST","path":"/maintenance-window","summary":"Create one or more maintenance windows"},{"method":"GET","path":"/maintenance-window/team","summary":"List maintenance windows for the caller's team"},{"method":"GET","path":"/maintenance-window/monitor/{monitorId}","summary":"List maintenance windows for a monitor"},{"method":"GET","path":"/maintenance-window/{id}","summary":"Get a maintenance window by id"},{"method":"PATCH","path":"/maintenance-window/{id}","summary":"Edit a maintenance window"},{"method":"DELETE","path":"/maintenance-window/{id}","summary":"Delete a maintenance window"},{"method":"GET","path":"/monitors/team","summary":"List monitors for the caller's team"},{"method":"GET","path":"/monitors/team/with-checks","summary":"List team monitors with their most recent checks (paginated)"},{"method":"GET","path":"/monitors/team/groups","summary":"List monitor groups for the caller's team"},{"method":"GET","path":"/monitors/uptime/details/{monitorId}","summary":"Get uptime details for a monitor"},{"method":"GET","path":"/monitors/hardware/details/{monitorId}","summary":"Get hardware metrics detail for a monitor"},{"method":"GET","path":"/monitors/pagespeed/details/{monitorId}","summary":"Get PageSpeed detail for a monitor"},{"method":"GET","path":"/monitors/{monitorId}/geo-checks","summary":"Get geo check results for a monitor"},{"method":"POST","path":"/monitors/pause/{monitorId}","summary":"Toggle pause state for a monitor"},{"method":"GET","path":"/monitors/certificate/{monitorId}","summary":"Get SSL certificate info for a monitor"},{"method":"PATCH","path":"/monitors/notifications","summary":"Bulk update notifications across monitors"},{"method":"POST","path":"/monitors","summary":"Create a new monitor"},{"method":"DELETE","path":"/monitors","summary":"Delete every monitor (superadmin only)"},{"method":"POST","path":"/monitors/demo","summary":"Insert preconfigured demo monitors"},{"method":"GET","path":"/monitors/export/json","summary":"Export all team monitors as JSON"},{"method":"POST","path":"/monitors/import/json","summary":"Import monitors from JSON"},{"method":"GET","path":"/monitors/games","summary":"List supported game-server types"},{"method":"GET","path":"/monitors/{monitorId}","summary":"Get a monitor by id"},{"method":"PATCH","path":"/monitors/{monitorId}","summary":"Edit a monitor"},{"method":"DELETE","path":"/monitors/{monitorId}","summary":"Delete a monitor"},{"method":"POST","path":"/notifications","summary":"Create a notification channel"},{"method":"POST","path":"/notifications/test/all","summary":"Send a test alert through every notification channel for the team"},{"method":"POST","path":"/notifications/test","summary":"Send a test alert through a single notification channel"},{"method":"GET","path":"/notifications/team","summary":"List notification channels for the caller's team"},{"method":"GET","path":"/notifications/{id}","summary":"Get a notification channel by id"},{"method":"DELETE","path":"/notifications/{id}","summary":"Delete a notification channel"},{"method":"PATCH","path":"/notifications/{id}","summary":"Edit a notification channel"},{"method":"GET","path":"/queue/jobs","summary":"List queued monitor jobs (admin/superadmin)"},{"method":"GET","path":"/queue/metrics","summary":"Get queue runtime metrics (admin/superadmin)"},{"method":"GET","path":"/queue/all-metrics","summary":"Get queue metrics across all monitors (admin/superadmin)"},{"method":"POST","path":"/queue/flush","summary":"Flush the monitor job queue (admin/superadmin)"},{"method":"GET","path":"/settings","summary":"Get application settings"},{"method":"PATCH","path":"/settings","summary":"Update application settings (admin/superadmin)"},{"method":"POST","path":"/settings/test-email","summary":"Send a test email using current SMTP settings (admin/superadmin)"},{"method":"GET","path":"/status-page/team","summary":"List status pages for the caller's team"},{"method":"POST","path":"/status-page","summary":"Create a status page (logo upload optional)"},{"method":"PUT","path":"/status-page/{id}","summary":"Update a status page (logo upload optional)"},{"method":"DELETE","path":"/status-page/{id}","summary":"Delete a status page"},{"method":"GET","path":"/status-page/resolve","summary":"Resolve a published status page by custom domain"},{"method":"GET","path":"/status-page/{url}","summary":"Get a public status page by its URL slug"}],"spec":{"openapi":"3.0.0","info":{"title":"Checkmate API","version":"1.0.0","description":"Generated from Zod validation schemas. Source of truth: server/src/api/validation/*.ts"},"servers":[{"url":"/api/v1","description":"Current server"}],"tags":[{"name":"auth","description":"Sign up, log in, password reset, and the authenticated user's profile."},{"name":"monitors","description":"Configure and inspect monitors (HTTP, port, ping, hardware, docker, game, gRPC) for the caller's team."},{"name":"checks","description":"Individual monitoring check results, including history, summaries, and bulk deletes."},{"name":"geo-checks","description":"Geographic check results for monitors with multi-region probing enabled."},{"name":"incidents","description":"Downtime incidents derived from monitor state changes, including filtering and CSV export."},{"name":"notifications","description":"Notification channels (email, webhook, Slack, Discord, PagerDuty, Matrix, Rocket.Chat, Teams, Telegram, Pushover, Twilio) and test alerts."},{"name":"maintenance-window","description":"Scheduled maintenance windows during which monitors do not generate incidents or alerts."},{"name":"status-page","description":"Public status pages, their configuration, and the monitors they expose."},{"name":"settings","description":"Global application settings (admin/superadmin)."},{"name":"invite","description":"Team invitations and accepting them."},{"name":"queue","description":"Background job queue introspection and admin actions (admin/superadmin)."},{"name":"diagnostic","description":"System diagnostics for the running server (admin/superadmin)."},{"name":"logs","description":"Application logs for the running server (admin/superadmin)."}],"components":{"securitySchemes":{"bearerAuth":{"type":"http","scheme":"bearer","bearerFormat":"JWT"}},"schemas":{"AuthPayload":{"type":"object","properties":{"user":{"$ref":"#/components/schemas/User"},"token":{"type":"string"}},"required":["user"],"example":{"user":{"_id":"65f1c2a4d8b9e0123456789a","firstName":"Ada","lastName":"Lovelace","email":"ada@example.com","role":["admin"],"teamId":"65f1c2a4d8b9e01234567890","createdAt":"2026-04-01T10:00:00.000Z","updatedAt":"2026-04-15T14:30:00.000Z"},"token":"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9..."}},"User":{"type":"object","properties":{"_id":{"type":"string"},"firstName":{"type":"string"},"lastName":{"type":"string"},"email":{"type":"string"},"role":{"type":"array","items":{"type":"string"}},"teamId":{"type":"string"},"profileImage":{"type":"string","nullable":true},"createdAt":{"type":"string"},"updatedAt":{"type":"string"}},"required":["_id","firstName","lastName","email","role","createdAt","updatedAt"],"additionalProperties":{"nullable":true},"example":{"_id":"65f1c2a4d8b9e0123456789a","firstName":"Ada","lastName":"Lovelace","email":"ada@example.com","role":["admin"],"teamId":"65f1c2a4d8b9e01234567890","createdAt":"2026-04-01T10:00:00.000Z","updatedAt":"2026-04-15T14:30:00.000Z"}},"Incident":{"type":"object","properties":{"id":{"type":"string","example":"65f1c2a4d8b9e0123456789c"},"monitorId":{"type":"string","example":"65f1c2a4d8b9e0123456789a"},"teamId":{"type":"string","example":"65f1c2a4d8b9e01234567890"},"startTime":{"type":"string","example":"2026-04-15T03:21:00.000Z"},"endTime":{"type":"string","nullable":true,"example":"2026-04-15T03:34:00.000Z"},"status":{"type":"boolean","example":true,"description":"true = resolved, false = ongoing"},"message":{"type":"string","nullable":true,"example":"HTTP 503 from origin"},"statusCode":{"type":"number","nullable":true,"example":503},"resolutionType":{"type":"string","nullable":true,"enum":["automatic","manual",null],"example":"automatic"},"resolvedBy":{"type":"string","nullable":true},"resolvedByEmail":{"type":"string","nullable":true},"comment":{"type":"string","nullable":true},"createdAt":{"type":"string","example":"2026-04-15T03:21:00.000Z"},"updatedAt":{"type":"string","example":"2026-04-15T03:34:00.000Z"}},"required":["id","monitorId","teamId","startTime","endTime","status","resolutionType","createdAt","updatedAt"],"additionalProperties":{"nullable":true}},"IncidentSummary":{"type":"object","properties":{"total":{"type":"number","example":12},"totalActive":{"type":"number","example":1},"totalManualResolutions":{"type":"number","example":2},"totalAutomaticResolutions":{"type":"number","example":9},"avgResolutionTimeHours":{"type":"number","example":0.5},"topMonitor":{"type":"object","nullable":true,"properties":{"monitorId":{"type":"string","example":"65f1c2a4d8b9e0123456789a"},"monitorName":{"type":"string","nullable":true,"example":"Marketing site"},"incidentCount":{"type":"number","example":4}},"required":["monitorId","monitorName","incidentCount"]},"latestIncidents":{"type":"array","items":{"$ref":"#/components/schemas/IncidentSummaryItem"}}},"required":["total","totalActive","totalManualResolutions","totalAutomaticResolutions","avgResolutionTimeHours","topMonitor","latestIncidents"]},"IncidentSummaryItem":{"type":"object","properties":{"id":{"type":"string","example":"65f1c2a4d8b9e0123456789c"},"monitorId":{"type":"string","example":"65f1c2a4d8b9e0123456789a"},"monitorName":{"type":"string","nullable":true,"example":"Marketing site"},"status":{"type":"boolean","example":true},"startTime":{"type":"string","example":"2026-04-15T03:21:00.000Z"},"endTime":{"type":"string","nullable":true,"example":"2026-04-15T03:34:00.000Z"},"resolutionType":{"type":"string","nullable":true,"enum":["automatic","manual",null],"example":"automatic"},"message":{"type":"string","nullable":true,"example":"HTTP 503 from origin"},"statusCode":{"type":"number","nullable":true,"example":503},"createdAt":{"type":"string","example":"2026-04-15T03:21:00.000Z"}},"required":["id","monitorId","monitorName","status","startTime","endTime","resolutionType","message","statusCode","createdAt"]},"Monitor":{"type":"object","properties":{"_id":{"type":"string"},"name":{"type":"string"},"description":{"type":"string"},"type":{"type":"string","enum":["http","ping","pagespeed","hardware","docker","port","game","grpc","websocket","dns","unknown"]},"url":{"type":"string"},"port":{"type":"number"},"isActive":{"type":"boolean"},"interval":{"type":"number"},"status":{"type":"string","enum":["up","down","paused","initializing","maintenance","breached"]},"statusWindowSize":{"type":"number"},"statusWindowThreshold":{"type":"number"},"ignoreTlsErrors":{"type":"boolean"},"useAdvancedMatching":{"type":"boolean"},"jsonPath":{"type":"string"},"expectedValue":{"type":"string"},"matchMethod":{"type":"string","enum":["equal","include","regex"]},"method":{"type":"string","enum":["GET","HEAD"]},"notifications":{"type":"array","items":{"type":"string"}},"tags":{"type":"array","items":{"type":"string"}},"customUpCodes":{"type":"array","items":{"type":"number"}},"secret":{"type":"string"},"cpuAlertThreshold":{"type":"number"},"memoryAlertThreshold":{"type":"number"},"diskAlertThreshold":{"type":"number"},"tempAlertThreshold":{"type":"number"},"selectedDisks":{"type":"array","items":{"type":"string"}},"gameId":{"type":"string"},"grpcServiceName":{"type":"string"},"group":{"type":"string","nullable":true},"geoCheckEnabled":{"type":"boolean"},"geoCheckLocations":{"type":"array","items":{"type":"string","enum":["EU","NA","AS","SA","AF","OC"]}},"geoCheckInterval":{"type":"number"},"dnsServer":{"type":"string"},"dnsRecordType":{"type":"string","enum":["A","AAAA","CNAME","MX","TXT","NS"]},"teamId":{"type":"string"},"userId":{"type":"string"},"createdAt":{"type":"string"},"updatedAt":{"type":"string"},"lastEvaluatedAt":{"type":"number"}},"required":["_id","name","type","url","isActive","interval","status","statusWindowSize","statusWindowThreshold","ignoreTlsErrors","useAdvancedMatching","method","notifications","tags","cpuAlertThreshold","memoryAlertThreshold","diskAlertThreshold","tempAlertThreshold","selectedDisks","geoCheckEnabled","geoCheckLocations","geoCheckInterval","teamId","userId","createdAt","updatedAt","lastEvaluatedAt"],"additionalProperties":{"nullable":true},"example":{"_id":"65f1c2a4d8b9e0123456789a","name":"Marketing site","description":"Production marketing site monitored from the EU region","type":"http","url":"https://www.example.com","port":443,"isActive":true,"interval":60000,"status":"up","statusWindowSize":5,"statusWindowThreshold":3,"ignoreTlsErrors":false,"useAdvancedMatching":false,"notifications":["65f1c2a4d8b9e0123456789b"],"cpuAlertThreshold":90,"memoryAlertThreshold":90,"diskAlertThreshold":90,"tempAlertThreshold":80,"selectedDisks":[],"geoCheckEnabled":false,"geoCheckLocations":[],"geoCheckInterval":300000,"teamId":"65f1c2a4d8b9e01234567890","userId":"65f1c2a4d8b9e01234567891","createdAt":"2026-04-01T10:00:00.000Z","updatedAt":"2026-04-15T14:30:00.000Z"}},"UptimeDetails":{"type":"object","properties":{"monitorData":{"type":"object","properties":{"monitor":{"type":"object","properties":{"name":{"type":"string"},"description":{"type":"string"},"type":{"type":"string","enum":["http","ping","pagespeed","hardware","docker","port","game","grpc","websocket","dns","unknown"]},"url":{"type":"string"},"port":{"type":"number"},"isActive":{"type":"boolean"},"interval":{"type":"number"},"status":{"type":"string","enum":["up","down","paused","initializing","maintenance","breached"]},"statusWindowSize":{"type":"number"},"statusWindowThreshold":{"type":"number"},"ignoreTlsErrors":{"type":"boolean"},"useAdvancedMatching":{"type":"boolean"},"jsonPath":{"type":"string"},"expectedValue":{"type":"string"},"matchMethod":{"type":"string","enum":["equal","include","regex"]},"method":{"type":"string","enum":["GET","HEAD"]},"notifications":{"type":"array","items":{"type":"string"}},"tags":{"type":"array","items":{"type":"string"}},"customUpCodes":{"type":"array","items":{"type":"number"}},"secret":{"type":"string"},"cpuAlertThreshold":{"type":"number"},"memoryAlertThreshold":{"type":"number"},"diskAlertThreshold":{"type":"number"},"tempAlertThreshold":{"type":"number"},"selectedDisks":{"type":"array","items":{"type":"string"}},"gameId":{"type":"string"},"grpcServiceName":{"type":"string"},"group":{"type":"string","nullable":true},"geoCheckEnabled":{"type":"boolean"},"geoCheckLocations":{"type":"array","items":{"type":"string","enum":["EU","NA","AS","SA","AF","OC"]}},"geoCheckInterval":{"type":"number"},"dnsServer":{"type":"string"},"dnsRecordType":{"type":"string","enum":["A","AAAA","CNAME","MX","TXT","NS"]},"teamId":{"type":"string"},"userId":{"type":"string"},"createdAt":{"type":"string"},"updatedAt":{"type":"string"},"lastEvaluatedAt":{"type":"number"},"id":{"type":"string"}},"required":["name","type","url","isActive","interval","status","statusWindowSize","statusWindowThreshold","ignoreTlsErrors","useAdvancedMatching","method","notifications","tags","cpuAlertThreshold","memoryAlertThreshold","diskAlertThreshold","tempAlertThreshold","selectedDisks","geoCheckEnabled","geoCheckLocations","geoCheckInterval","teamId","userId","createdAt","updatedAt","lastEvaluatedAt","id"],"additionalProperties":{"nullable":true}},"groupedChecks":{"type":"array","items":{"type":"object","properties":{"bucketDate":{"type":"string"},"avgResponseTime":{"type":"number"},"totalChecks":{"type":"number"},"avgDns":{"type":"number"},"avgTcp":{"type":"number"},"avgTls":{"type":"number"},"avgRequest":{"type":"number"},"avgFirstByte":{"type":"number"},"avgDownload":{"type":"number"}},"required":["bucketDate","avgResponseTime","totalChecks","avgDns","avgTcp","avgTls","avgRequest","avgFirstByte","avgDownload"]}},"groupedUpChecks":{"type":"array","items":{"type":"object","properties":{"bucketDate":{"type":"string"},"avgResponseTime":{"type":"number"},"totalChecks":{"type":"number"}},"required":["bucketDate","avgResponseTime","totalChecks"]}},"groupedDownChecks":{"type":"array","items":{"type":"object","properties":{"bucketDate":{"type":"string"},"avgResponseTime":{"type":"number"},"totalChecks":{"type":"number"}},"required":["bucketDate","avgResponseTime","totalChecks"]}},"groupedAvgResponseTime":{"type":"number"},"groupedUptimePercentage":{"type":"number"}},"required":["monitor","groupedChecks","groupedUpChecks","groupedDownChecks","groupedAvgResponseTime","groupedUptimePercentage"]},"monitorStats":{"type":"object","nullable":true,"properties":{"id":{"type":"string"},"monitorId":{"type":"string"},"avgResponseTime":{"type":"number"},"maxResponseTime":{"type":"number"},"totalChecks":{"type":"number"},"totalUpChecks":{"type":"number"},"totalDownChecks":{"type":"number"},"uptimePercentage":{"type":"number"},"lastCheckTimestamp":{"type":"number"},"lastResponseTime":{"type":"number"},"timeOfLastFailure":{"type":"number"},"createdAt":{"type":"string"},"updatedAt":{"type":"string"}},"required":["id","monitorId","avgResponseTime","maxResponseTime","totalChecks","totalUpChecks","totalDownChecks","uptimePercentage","lastCheckTimestamp","lastResponseTime","createdAt","updatedAt"]}},"required":["monitorData","monitorStats"]},"NotificationChannelBody":{"oneOf":[{"$ref":"#/components/schemas/EmailNotification"},{"$ref":"#/components/schemas/WebhookNotification"},{"$ref":"#/components/schemas/RocketChatNotification"},{"$ref":"#/components/schemas/SlackNotification"},{"$ref":"#/components/schemas/DiscordNotification"},{"$ref":"#/components/schemas/PagerDutyNotification"},{"$ref":"#/components/schemas/MatrixNotification"},{"$ref":"#/components/schemas/TeamsNotification"},{"$ref":"#/components/schemas/TelegramNotification"},{"$ref":"#/components/schemas/PushoverNotification"},{"$ref":"#/components/schemas/TwilioNotification"},{"$ref":"#/components/schemas/NtfyNotification"}],"discriminator":{"propertyName":"type","mapping":{"email":"#/components/schemas/EmailNotification","webhook":"#/components/schemas/WebhookNotification","rocket_chat":"#/components/schemas/RocketChatNotification","slack":"#/components/schemas/SlackNotification","discord":"#/components/schemas/DiscordNotification","pager_duty":"#/components/schemas/PagerDutyNotification","matrix":"#/components/schemas/MatrixNotification","teams":"#/components/schemas/TeamsNotification","telegram":"#/components/schemas/TelegramNotification","pushover":"#/components/schemas/PushoverNotification","twilio":"#/components/schemas/TwilioNotification","ntfy":"#/components/schemas/NtfyNotification"}}},"EmailNotification":{"type":"object","properties":{"notificationName":{"type":"string","minLength":1},"type":{"type":"string","enum":["email"]},"address":{"type":"string","format":"email"},"homeserverUrl":{"anyOf":[{"type":"string"},{"type":"string","enum":[""]}]},"roomId":{"anyOf":[{"type":"string"},{"type":"string","enum":[""]}]},"accessToken":{"anyOf":[{"type":"string"},{"type":"string","enum":[""]}]}},"required":["notificationName","type","address"],"example":{"notificationName":"Ops on-call email","type":"email","address":"alerts@example.com"}},"WebhookNotification":{"type":"object","properties":{"notificationName":{"type":"string","minLength":1},"type":{"type":"string","enum":["webhook"]},"address":{"type":"string","format":"uri"},"homeserverUrl":{"anyOf":[{"type":"string"},{"type":"string","enum":[""]}]},"roomId":{"anyOf":[{"type":"string"},{"type":"string","enum":[""]}]},"accessToken":{"anyOf":[{"type":"string"},{"type":"string","enum":[""]}]}},"required":["notificationName","type","address"],"example":{"notificationName":"Custom webhook","type":"webhook","address":"https://example.com/hooks/checkmate"}},"RocketChatNotification":{"type":"object","properties":{"notificationName":{"type":"string","minLength":1},"type":{"type":"string","enum":["rocket_chat"]},"address":{"type":"string","format":"uri"}},"required":["notificationName","type","address"],"example":{"notificationName":"Rocket.Chat alerts","type":"rocket_chat","address":"https://chat.example.com/hooks/integration-id/token"}},"SlackNotification":{"type":"object","properties":{"notificationName":{"type":"string","minLength":1},"type":{"type":"string","enum":["slack"]},"address":{"type":"string","format":"uri"},"homeserverUrl":{"anyOf":[{"type":"string"},{"type":"string","enum":[""]}]},"roomId":{"anyOf":[{"type":"string"},{"type":"string","enum":[""]}]},"accessToken":{"anyOf":[{"type":"string"},{"type":"string","enum":[""]}]}},"required":["notificationName","type","address"],"example":{"notificationName":"#alerts","type":"slack","address":"https://hooks.slack.com/services/T000/B000/XXXX"}},"DiscordNotification":{"type":"object","properties":{"notificationName":{"type":"string","minLength":1},"type":{"type":"string","enum":["discord"]},"address":{"type":"string","format":"uri"},"homeserverUrl":{"anyOf":[{"type":"string"},{"type":"string","enum":[""]}]},"roomId":{"anyOf":[{"type":"string"},{"type":"string","enum":[""]}]},"accessToken":{"anyOf":[{"type":"string"},{"type":"string","enum":[""]}]}},"required":["notificationName","type","address"],"example":{"notificationName":"#status","type":"discord","address":"https://discord.com/api/webhooks/123/abc"}},"PagerDutyNotification":{"type":"object","properties":{"notificationName":{"type":"string","minLength":1},"type":{"type":"string","enum":["pager_duty"]},"address":{"type":"string","minLength":1},"homeserverUrl":{"anyOf":[{"type":"string"},{"type":"string","enum":[""]}]},"roomId":{"anyOf":[{"type":"string"},{"type":"string","enum":[""]}]},"accessToken":{"anyOf":[{"type":"string"},{"type":"string","enum":[""]}]}},"required":["notificationName","type","address"],"example":{"notificationName":"PagerDuty primary","type":"pager_duty","address":"R01XXXXXXXXXXXXXXXXXXXXXXX"}},"MatrixNotification":{"type":"object","properties":{"notificationName":{"type":"string","minLength":1},"type":{"type":"string","enum":["matrix"]},"address":{"anyOf":[{"type":"string"},{"type":"string","enum":[""]}]},"homeserverUrl":{"type":"string","format":"uri"},"roomId":{"type":"string","minLength":1},"accessToken":{"type":"string","minLength":1}},"required":["notificationName","type","homeserverUrl","roomId","accessToken"],"example":{"notificationName":"Matrix room","type":"matrix","homeserverUrl":"https://matrix.example.com","roomId":"!abc123:example.com","accessToken":"syt_xxx"}},"TeamsNotification":{"type":"object","properties":{"notificationName":{"type":"string","minLength":1},"type":{"type":"string","enum":["teams"]},"address":{"type":"string","format":"uri"}},"required":["notificationName","type","address"],"example":{"notificationName":"Teams ops channel","type":"teams","address":"https://outlook.office.com/webhook/..."}},"TelegramNotification":{"type":"object","properties":{"notificationName":{"type":"string","minLength":1},"type":{"type":"string","enum":["telegram"]},"address":{"type":"string","minLength":1},"accessToken":{"type":"string","minLength":1}},"required":["notificationName","type","address","accessToken"],"example":{"notificationName":"Telegram bot","type":"telegram","address":"-1001234567890","accessToken":"123456:ABC-DEF"}},"PushoverNotification":{"type":"object","properties":{"notificationName":{"type":"string","minLength":1},"type":{"type":"string","enum":["pushover"]},"address":{"type":"string","minLength":1},"accessToken":{"type":"string","minLength":1}},"required":["notificationName","type","address","accessToken"],"example":{"notificationName":"Pushover personal","type":"pushover","address":"u1234567890abcdef","accessToken":"a1234567890abcdef"}},"TwilioNotification":{"type":"object","properties":{"notificationName":{"type":"string","minLength":1},"type":{"type":"string","enum":["twilio"]},"accountSid":{"type":"string","minLength":1},"accessToken":{"type":"string","minLength":1},"phone":{"type":"string","minLength":1},"twilioPhoneNumber":{"type":"string","minLength":1}},"required":["notificationName","type","accountSid","accessToken","phone","twilioPhoneNumber"],"example":{"notificationName":"Twilio SMS","type":"twilio","accountSid":"ACxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx","accessToken":"your-auth-token","phone":"+15551234567","twilioPhoneNumber":"+15557654321"}},"NtfyNotification":{"type":"object","properties":{"notificationName":{"type":"string","minLength":1},"type":{"type":"string","enum":["ntfy"]},"address":{"type":"string","format":"uri"},"topic":{"type":"string","minLength":1}},"required":["notificationName","type","address","topic"],"example":{"notificationName":"ntfy topic","type":"ntfy","address":"https://ntfy.sh","topic":"checkmate-alerts"}}},"parameters":{}},"paths":{"/auth/register":{"post":{"tags":["auth"],"summary":"Register a new user (first user becomes superadmin)","requestBody":{"content":{"multipart/form-data":{"schema":{"type":"object","properties":{"firstName":{"type":"string","maxLength":50,"pattern":"^(?=.*[\\p{L}\\p{Sc}])[\\p{L}\\p{Sc}\\s'\\-().]+$/u"},"lastName":{"type":"string","maxLength":50,"pattern":"^(?=.*[\\p{L}\\p{Sc}])[\\p{L}\\p{Sc}\\s'\\-().]+$/u"},"email":{"type":"string","format":"email"},"password":{"type":"string","minLength":8,"pattern":"^(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[!?@#$%^&*()\\-_=+[\\]{};:'\",.~`|\\\\/])[A-Za-z0-9!?@#$%^&*()\\-_=+[\\]{};:'\",.~`|\\\\/]+$"},"profileImage":{"type":"string","format":"binary"},"inviteToken":{"type":"string","default":""}},"required":["firstName","lastName","email","password","profileImage"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"msg":{"type":"string"},"data":{"$ref":"#/components/schemas/AuthPayload"}},"required":["success","msg","data"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"msg":{"type":"string"},"data":{"nullable":true}},"required":["success","msg"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"msg":{"type":"string"},"data":{"nullable":true}},"required":["success","msg"]}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"msg":{"type":"string"},"data":{"nullable":true}},"required":["success","msg"]}}}}}}},"/auth/login":{"post":{"tags":["auth"],"summary":"Log in","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"email":{"type":"string","format":"email"},"password":{"type":"string","minLength":1}},"required":["email","password"]},"example":{"email":"ada@example.com","password":"S3cure!Passw0rd"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"msg":{"type":"string"},"data":{"$ref":"#/components/schemas/AuthPayload"}},"required":["success","msg","data"]},"example":{"success":true,"msg":"OK","data":{"user":{"_id":"65f1c2a4d8b9e0123456789a","firstName":"Ada","lastName":"Lovelace","email":"ada@example.com","role":["admin"],"teamId":"65f1c2a4d8b9e01234567890","createdAt":"2026-04-01T10:00:00.000Z","updatedAt":"2026-04-15T14:30:00.000Z"},"token":"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9..."}}}}},"401":{"description":"Invalid credentials","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"msg":{"type":"string"}},"required":["success","msg"]}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"msg":{"type":"string"},"data":{"nullable":true}},"required":["success","msg"]}}}}}}},"/auth/recovery/request":{"post":{"tags":["auth"],"summary":"Request a password recovery email","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"email":{"type":"string","format":"email"}},"required":["email"]},"example":{"email":"ada@example.com"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"msg":{"type":"string"}},"required":["success","msg"]},"example":{"success":true,"msg":"OK"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"msg":{"type":"string"},"data":{"nullable":true}},"required":["success","msg"]}}}}}}},"/auth/recovery/validate":{"post":{"tags":["auth"],"summary":"Validate a password recovery token","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"recoveryToken":{"type":"string","minLength":1}},"required":["recoveryToken"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"msg":{"type":"string"}},"required":["success","msg"]},"example":{"success":true,"msg":"OK"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"msg":{"type":"string"},"data":{"nullable":true}},"required":["success","msg"]}}}}}}},"/auth/recovery/reset":{"post":{"tags":["auth"],"summary":"Reset password using a recovery token","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"recoveryToken":{"type":"string","minLength":1},"password":{"type":"string","minLength":8,"pattern":"^(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[!?@#$%^&*()\\-_=+[\\]{};:'\",.~`|\\\\/])[A-Za-z0-9!?@#$%^&*()\\-_=+[\\]{};:'\",.~`|\\\\/]+$"},"confirm":{"type":"string"}},"required":["recoveryToken","password"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"msg":{"type":"string"}},"required":["success","msg"]},"example":{"success":true,"msg":"OK"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"msg":{"type":"string"},"data":{"nullable":true}},"required":["success","msg"]}}}}}}},"/auth/users/superadmin":{"get":{"tags":["auth"],"summary":"Check whether a superadmin user exists","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"msg":{"type":"string"},"data":{"type":"object","properties":{"superAdminExists":{"type":"boolean"}},"required":["superAdminExists"]}},"required":["success","msg","data"]}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"msg":{"type":"string"},"data":{"nullable":true}},"required":["success","msg"]}}}}}}},"/auth/users":{"get":{"tags":["auth"],"summary":"List all users (admin/superadmin)","security":[{"bearerAuth":[]}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"msg":{"type":"string"},"data":{"type":"array","items":{"$ref":"#/components/schemas/User"}}},"required":["success","msg","data"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"msg":{"type":"string"},"data":{"nullable":true}},"required":["success","msg"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"msg":{"type":"string"},"data":{"nullable":true}},"required":["success","msg"]}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"msg":{"type":"string"},"data":{"nullable":true}},"required":["success","msg"]}}}}}},"post":{"tags":["auth"],"summary":"Create a new user (superadmin)","security":[{"bearerAuth":[]}],"requestBody":{"content":{"multipart/form-data":{"schema":{"type":"object","properties":{"firstName":{"type":"string","maxLength":50,"pattern":"^(?=.*[\\p{L}\\p{Sc}])[\\p{L}\\p{Sc}\\s'\\-().]+$/u"},"lastName":{"type":"string","maxLength":50,"pattern":"^(?=.*[\\p{L}\\p{Sc}])[\\p{L}\\p{Sc}\\s'\\-().]+$/u"},"email":{"type":"string","format":"email"},"password":{"type":"string","minLength":8,"pattern":"^(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[!?@#$%^&*()\\-_=+[\\]{};:'\",.~`|\\\\/])[A-Za-z0-9!?@#$%^&*()\\-_=+[\\]{};:'\",.~`|\\\\/]+$"},"role":{"type":"array","items":{"type":"string","enum":["user","admin","superadmin","demo"]},"minItems":1},"profileImage":{"type":"string","format":"binary"}},"required":["firstName","lastName","email","password","role","profileImage"]}}}},"responses":{"201":{"description":"User created","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"msg":{"type":"string"},"data":{"$ref":"#/components/schemas/User"}},"required":["success","msg","data"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"msg":{"type":"string"},"data":{"nullable":true}},"required":["success","msg"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"msg":{"type":"string"},"data":{"nullable":true}},"required":["success","msg"]}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"msg":{"type":"string"},"data":{"nullable":true}},"required":["success","msg"]}}}}}}},"/auth/users/{userId}":{"get":{"tags":["auth"],"summary":"Get a user by id","security":[{"bearerAuth":[]}],"parameters":[{"schema":{"type":"string","minLength":1},"required":true,"name":"userId","in":"path"}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"msg":{"type":"string"},"data":{"$ref":"#/components/schemas/User"}},"required":["success","msg","data"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"msg":{"type":"string"},"data":{"nullable":true}},"required":["success","msg"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"msg":{"type":"string"},"data":{"nullable":true}},"required":["success","msg"]}}}},"404":{"description":"User not found","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"msg":{"type":"string"}},"required":["success","msg"]}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"msg":{"type":"string"},"data":{"nullable":true}},"required":["success","msg"]}}}}}},"patch":{"tags":["auth"],"summary":"Edit a user (superadmin)","security":[{"bearerAuth":[]}],"parameters":[{"schema":{"type":"string","minLength":1},"required":true,"name":"userId","in":"path"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"firstName":{"type":"string","maxLength":50,"pattern":"^(?=.*[\\p{L}\\p{Sc}])[\\p{L}\\p{Sc}\\s'\\-().]+$/u"},"lastName":{"type":"string","maxLength":50,"pattern":"^(?=.*[\\p{L}\\p{Sc}])[\\p{L}\\p{Sc}\\s'\\-().]+$/u"},"role":{"type":"array","items":{"type":"string","enum":["user","admin","superadmin","demo"]},"minItems":1}},"required":["firstName","lastName","role"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"msg":{"type":"string"}},"required":["success","msg"]},"example":{"success":true,"msg":"OK"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"msg":{"type":"string"},"data":{"nullable":true}},"required":["success","msg"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"msg":{"type":"string"},"data":{"nullable":true}},"required":["success","msg"]}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"msg":{"type":"string"},"data":{"nullable":true}},"required":["success","msg"]}}}}}},"delete":{"tags":["auth"],"summary":"Delete a user (admin/superadmin)","security":[{"bearerAuth":[]}],"parameters":[{"schema":{"type":"string","minLength":1},"required":true,"name":"userId","in":"path"}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"msg":{"type":"string"}},"required":["success","msg"]},"example":{"success":true,"msg":"OK"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"msg":{"type":"string"},"data":{"nullable":true}},"required":["success","msg"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"msg":{"type":"string"},"data":{"nullable":true}},"required":["success","msg"]}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"msg":{"type":"string"},"data":{"nullable":true}},"required":["success","msg"]}}}}}}},"/auth/users/{userId}/password":{"patch":{"tags":["auth"],"summary":"Change a user's password (superadmin)","security":[{"bearerAuth":[]}],"parameters":[{"schema":{"type":"string","minLength":1},"required":true,"name":"userId","in":"path"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"password":{"type":"string","minLength":8,"pattern":"^(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[!?@#$%^&*()\\-_=+[\\]{};:'\",.~`|\\\\/])[A-Za-z0-9!?@#$%^&*()\\-_=+[\\]{};:'\",.~`|\\\\/]+$"}},"required":["password"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"msg":{"type":"string"}},"required":["success","msg"]},"example":{"success":true,"msg":"OK"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"msg":{"type":"string"},"data":{"nullable":true}},"required":["success","msg"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"msg":{"type":"string"},"data":{"nullable":true}},"required":["success","msg"]}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"msg":{"type":"string"},"data":{"nullable":true}},"required":["success","msg"]}}}}}}},"/auth/user":{"patch":{"tags":["auth"],"summary":"Edit the currently authenticated user","security":[{"bearerAuth":[]}],"requestBody":{"content":{"multipart/form-data":{"schema":{"type":"object","properties":{"firstName":{"type":"string","maxLength":50,"pattern":"^(?=.*[\\p{L}\\p{Sc}])[\\p{L}\\p{Sc}\\s'\\-().]+$/u"},"lastName":{"type":"string","maxLength":50,"pattern":"^(?=.*[\\p{L}\\p{Sc}])[\\p{L}\\p{Sc}\\s'\\-().]+$/u"},"email":{"type":"string","format":"email"},"profilePicture":{"type":"string"},"password":{"type":"string","minLength":8,"pattern":"^(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[!?@#$%^&*()\\-_=+[\\]{};:'\",.~`|\\\\/])[A-Za-z0-9!?@#$%^&*()\\-_=+[\\]{};:'\",.~`|\\\\/]+$"},"newPassword":{"type":"string","minLength":8,"pattern":"^(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[!?@#$%^&*()\\-_=+[\\]{};:'\",.~`|\\\\/])[A-Za-z0-9!?@#$%^&*()\\-_=+[\\]{};:'\",.~`|\\\\/]+$"},"deleteProfileImage":{"type":"boolean"},"profileImage":{"type":"string","format":"binary"}},"required":["profileImage"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"msg":{"type":"string"},"data":{"$ref":"#/components/schemas/User"}},"required":["success","msg","data"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"msg":{"type":"string"},"data":{"nullable":true}},"required":["success","msg"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"msg":{"type":"string"},"data":{"nullable":true}},"required":["success","msg"]}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"msg":{"type":"string"},"data":{"nullable":true}},"required":["success","msg"]}}}}}},"delete":{"tags":["auth"],"summary":"Delete the currently authenticated user","security":[{"bearerAuth":[]}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"msg":{"type":"string"}},"required":["success","msg"]},"example":{"success":true,"msg":"OK"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"msg":{"type":"string"},"data":{"nullable":true}},"required":["success","msg"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"msg":{"type":"string"},"data":{"nullable":true}},"required":["success","msg"]}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"msg":{"type":"string"},"data":{"nullable":true}},"required":["success","msg"]}}}}}}},"/checks/team/summary":{"get":{"tags":["checks"],"summary":"Aggregate check summary for the caller's team","security":[{"bearerAuth":[]}],"parameters":[{"schema":{"type":"string","enum":["recent","hour","day","week","month","all"]},"required":false,"name":"dateRange","in":"query"}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"msg":{"type":"string"},"data":{"nullable":true}},"required":["success","msg"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"msg":{"type":"string"},"data":{"nullable":true}},"required":["success","msg"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"msg":{"type":"string"},"data":{"nullable":true}},"required":["success","msg"]}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"msg":{"type":"string"},"data":{"nullable":true}},"required":["success","msg"]}}}}}}},"/checks/team":{"get":{"tags":["checks"],"summary":"List checks across the team","security":[{"bearerAuth":[]}],"parameters":[{"schema":{"type":"string","enum":["asc","desc"]},"required":true,"name":"sortOrder","in":"query"},{"schema":{"type":"number","nullable":true},"required":false,"name":"limit","in":"query"},{"schema":{"type":"string","enum":["recent","hour","day","week","month","all"]},"required":true,"name":"dateRange","in":"query"},{"schema":{"type":"string","enum":["all","up","down","resolve"]},"required":false,"name":"filter","in":"query"},{"schema":{"type":"boolean"},"required":false,"name":"ack","in":"query"},{"schema":{"type":"number","nullable":true},"required":false,"name":"page","in":"query"},{"schema":{"type":"number","nullable":true},"required":false,"name":"rowsPerPage","in":"query"}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"msg":{"type":"string"},"data":{"nullable":true}},"required":["success","msg"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"msg":{"type":"string"},"data":{"nullable":true}},"required":["success","msg"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"msg":{"type":"string"},"data":{"nullable":true}},"required":["success","msg"]}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"msg":{"type":"string"},"data":{"nullable":true}},"required":["success","msg"]}}}}}},"delete":{"tags":["checks"],"summary":"Delete all checks for the team (admin/superadmin)","security":[{"bearerAuth":[]}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"msg":{"type":"string"},"data":{"type":"object","properties":{"deletedCount":{"type":"number"}},"required":["deletedCount"]}},"required":["success","msg","data"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"msg":{"type":"string"},"data":{"nullable":true}},"required":["success","msg"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"msg":{"type":"string"},"data":{"nullable":true}},"required":["success","msg"]}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"msg":{"type":"string"},"data":{"nullable":true}},"required":["success","msg"]}}}}}}},"/checks/{monitorId}":{"get":{"tags":["checks"],"summary":"List checks for a monitor","security":[{"bearerAuth":[]}],"parameters":[{"schema":{"type":"string","minLength":1},"required":true,"name":"monitorId","in":"path"},{"schema":{"type":"string","enum":["http","ping","pagespeed","hardware","docker","port","game","grpc","websocket","dns","unknown"]},"required":false,"name":"type","in":"query"},{"schema":{"type":"string","enum":["asc","desc"]},"required":true,"name":"sortOrder","in":"query"},{"schema":{"type":"number","nullable":true},"required":false,"name":"limit","in":"query"},{"schema":{"type":"string","enum":["recent","hour","day","week","month","all"]},"required":true,"name":"dateRange","in":"query"},{"schema":{"type":"string","enum":["all","up","down","resolve"]},"required":false,"name":"filter","in":"query"},{"schema":{"type":"boolean"},"required":false,"name":"ack","in":"query"},{"schema":{"type":"number","nullable":true},"required":false,"name":"page","in":"query"},{"schema":{"type":"number","nullable":true},"required":false,"name":"rowsPerPage","in":"query"},{"schema":{"type":"boolean"},"required":false,"name":"status","in":"query"},{"schema":{"anyOf":[{"type":"string","enum":["EU","NA","AS","SA","AF","OC"]},{"type":"array","items":{"type":"string","enum":["EU","NA","AS","SA","AF","OC"]}}]},"required":false,"name":"continent","in":"query"}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"msg":{"type":"string"},"data":{"nullable":true}},"required":["success","msg"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"msg":{"type":"string"},"data":{"nullable":true}},"required":["success","msg"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"msg":{"type":"string"},"data":{"nullable":true}},"required":["success","msg"]}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"msg":{"type":"string"},"data":{"nullable":true}},"required":["success","msg"]}}}}}},"delete":{"tags":["checks"],"summary":"Delete checks for a monitor","security":[{"bearerAuth":[]}],"parameters":[{"schema":{"type":"string","minLength":1},"required":true,"name":"monitorId","in":"path"}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"msg":{"type":"string"}},"required":["success","msg"]},"example":{"success":true,"msg":"OK"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"msg":{"type":"string"},"data":{"nullable":true}},"required":["success","msg"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"msg":{"type":"string"},"data":{"nullable":true}},"required":["success","msg"]}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"msg":{"type":"string"},"data":{"nullable":true}},"required":["success","msg"]}}}}}}},"/diagnostic/system":{"get":{"tags":["diagnostic"],"summary":"Get system diagnostics (admin/superadmin)","security":[{"bearerAuth":[]}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"msg":{"type":"string"},"data":{"nullable":true}},"required":["success","msg"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"msg":{"type":"string"},"data":{"nullable":true}},"required":["success","msg"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"msg":{"type":"string"},"data":{"nullable":true}},"required":["success","msg"]}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"msg":{"type":"string"},"data":{"nullable":true}},"required":["success","msg"]}}}}}}},"/geo-checks/{monitorId}":{"get":{"tags":["geo-checks"],"summary":"Get geo check results for a monitor","security":[{"bearerAuth":[]}],"parameters":[{"schema":{"type":"string","minLength":1},"required":true,"name":"monitorId","in":"path"},{"schema":{"type":"string","enum":["http","ping","pagespeed","hardware","docker","port","game","grpc","websocket","dns","unknown"]},"required":false,"name":"type","in":"query"},{"schema":{"type":"string","enum":["asc","desc"]},"required":true,"name":"sortOrder","in":"query"},{"schema":{"type":"number","nullable":true},"required":false,"name":"limit","in":"query"},{"schema":{"type":"string","enum":["recent","hour","day","week","month","all"]},"required":true,"name":"dateRange","in":"query"},{"schema":{"type":"string","enum":["all","up","down","resolve"]},"required":false,"name":"filter","in":"query"},{"schema":{"type":"boolean"},"required":false,"name":"ack","in":"query"},{"schema":{"type":"number","nullable":true},"required":false,"name":"page","in":"query"},{"schema":{"type":"number","nullable":true},"required":false,"name":"rowsPerPage","in":"query"},{"schema":{"type":"boolean"},"required":false,"name":"status","in":"query"},{"schema":{"anyOf":[{"type":"string","enum":["EU","NA","AS","SA","AF","OC"]},{"type":"array","items":{"type":"string","enum":["EU","NA","AS","SA","AF","OC"]}}]},"required":false,"name":"continent","in":"query"}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"msg":{"type":"string"},"data":{"nullable":true}},"required":["success","msg"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"msg":{"type":"string"},"data":{"nullable":true}},"required":["success","msg"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"msg":{"type":"string"},"data":{"nullable":true}},"required":["success","msg"]}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"msg":{"type":"string"},"data":{"nullable":true}},"required":["success","msg"]}}}}}}},"/incidents/team":{"get":{"tags":["incidents"],"summary":"List incidents for the caller's team","security":[{"bearerAuth":[]}],"parameters":[{"schema":{"type":"string","enum":["asc","desc"]},"required":true,"name":"sortOrder","in":"query"},{"schema":{"type":"string","enum":["recent","hour","day","week","month","all"],"default":"all"},"required":false,"name":"dateRange","in":"query"},{"schema":{"type":"integer","nullable":true,"minimum":0},"required":false,"name":"page","in":"query"},{"schema":{"type":"integer","minimum":1},"required":true,"name":"rowsPerPage","in":"query"},{"schema":{"type":"boolean"},"required":false,"name":"status","in":"query"},{"schema":{"type":"string"},"required":false,"name":"monitorId","in":"query"},{"schema":{"type":"string","enum":["automatic","manual"]},"required":false,"name":"resolutionType","in":"query"}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"msg":{"type":"string"},"data":{"type":"array","items":{"$ref":"#/components/schemas/Incident"}}},"required":["success","msg","data"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"msg":{"type":"string"},"data":{"nullable":true}},"required":["success","msg"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"msg":{"type":"string"},"data":{"nullable":true}},"required":["success","msg"]}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"msg":{"type":"string"},"data":{"nullable":true}},"required":["success","msg"]}}}}}}},"/incidents/team/summary":{"get":{"tags":["incidents"],"summary":"Incident summary for the caller's team","security":[{"bearerAuth":[]}],"parameters":[{"schema":{"type":"integer","minimum":1},"required":false,"name":"limit","in":"query"}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"msg":{"type":"string"},"data":{"$ref":"#/components/schemas/IncidentSummary"}},"required":["success","msg","data"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"msg":{"type":"string"},"data":{"nullable":true}},"required":["success","msg"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"msg":{"type":"string"},"data":{"nullable":true}},"required":["success","msg"]}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"msg":{"type":"string"},"data":{"nullable":true}},"required":["success","msg"]}}}}}}},"/incidents/{incidentId}":{"get":{"tags":["incidents"],"summary":"Get an incident by id","security":[{"bearerAuth":[]}],"parameters":[{"schema":{"type":"string"},"required":true,"name":"incidentId","in":"path"}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"msg":{"type":"string"},"data":{"type":"object","properties":{"incident":{"$ref":"#/components/schemas/Incident"},"monitor":{"nullable":true},"user":{"nullable":true}},"required":["incident"]}},"required":["success","msg","data"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"msg":{"type":"string"},"data":{"nullable":true}},"required":["success","msg"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"msg":{"type":"string"},"data":{"nullable":true}},"required":["success","msg"]}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"msg":{"type":"string"},"data":{"nullable":true}},"required":["success","msg"]}}}}}}},"/incidents/{incidentId}/resolve":{"put":{"tags":["incidents"],"summary":"Manually resolve an incident (admin/superadmin)","security":[{"bearerAuth":[]}],"parameters":[{"schema":{"type":"string"},"required":true,"name":"incidentId","in":"path"}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"msg":{"type":"string"}},"required":["success","msg"]},"example":{"success":true,"msg":"OK"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"msg":{"type":"string"},"data":{"nullable":true}},"required":["success","msg"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"msg":{"type":"string"},"data":{"nullable":true}},"required":["success","msg"]}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"msg":{"type":"string"},"data":{"nullable":true}},"required":["success","msg"]}}}}}}},"/invite/send":{"post":{"tags":["invite"],"summary":"Send an invite email (admin/superadmin)","security":[{"bearerAuth":[]}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"email":{"type":"string","format":"email"},"role":{"type":"array","items":{"type":"string","enum":["user","admin","superadmin","demo"]},"minItems":1},"teamId":{"type":"string","minLength":1}},"required":["email","role","teamId"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"msg":{"type":"string"}},"required":["success","msg"]},"example":{"success":true,"msg":"OK"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"msg":{"type":"string"},"data":{"nullable":true}},"required":["success","msg"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"msg":{"type":"string"},"data":{"nullable":true}},"required":["success","msg"]}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"msg":{"type":"string"},"data":{"nullable":true}},"required":["success","msg"]}}}}}}},"/invite/verify":{"post":{"tags":["invite"],"summary":"Verify an invite token","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"token":{"type":"string","minLength":1}},"required":["token"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"msg":{"type":"string"},"data":{"type":"object","properties":{"email":{"type":"string"},"role":{"type":"array","items":{"type":"string"}}},"required":["email"],"additionalProperties":{"nullable":true}}},"required":["success","msg","data"]}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"msg":{"type":"string"},"data":{"nullable":true}},"required":["success","msg"]}}}}}}},"/invite":{"post":{"tags":["invite"],"summary":"Create an invite token (admin/superadmin)","security":[{"bearerAuth":[]}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"email":{"type":"string","format":"email"},"role":{"type":"array","items":{"type":"string","enum":["user","admin","superadmin","demo"]},"minItems":1},"teamId":{"type":"string","minLength":1}},"required":["email","role","teamId"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"msg":{"type":"string"},"data":{"type":"object","properties":{"token":{"type":"string"}},"required":["token"],"additionalProperties":{"nullable":true}}},"required":["success","msg","data"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"msg":{"type":"string"},"data":{"nullable":true}},"required":["success","msg"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"msg":{"type":"string"},"data":{"nullable":true}},"required":["success","msg"]}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"msg":{"type":"string"},"data":{"nullable":true}},"required":["success","msg"]}}}}}}},"/logs":{"get":{"tags":["logs"],"summary":"Get application logs (admin/superadmin)","security":[{"bearerAuth":[]}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"msg":{"type":"string"},"data":{"nullable":true}},"required":["success","msg"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"msg":{"type":"string"},"data":{"nullable":true}},"required":["success","msg"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"msg":{"type":"string"},"data":{"nullable":true}},"required":["success","msg"]}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"msg":{"type":"string"},"data":{"nullable":true}},"required":["success","msg"]}}}}}}},"/maintenance-window":{"post":{"tags":["maintenance-window"],"summary":"Create one or more maintenance windows","security":[{"bearerAuth":[]}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"monitors":{"type":"array","items":{"type":"string"},"minItems":1},"name":{"type":"string","minLength":1},"active":{"type":"boolean"},"duration":{"type":"number","minimum":1},"durationUnit":{"type":"string","enum":["seconds","minutes","hours","days"]},"start":{"type":"string","nullable":true,"format":"date-time"},"end":{"type":"string","nullable":true,"format":"date-time"},"repeat":{"type":"number","minimum":0},"expiry":{"type":"string","nullable":true,"format":"date-time"}},"required":["monitors","name","duration","durationUnit","start","end","repeat"],"additionalProperties":false}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"msg":{"type":"string"},"data":{"nullable":true}},"required":["success","msg"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"msg":{"type":"string"},"data":{"nullable":true}},"required":["success","msg"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"msg":{"type":"string"},"data":{"nullable":true}},"required":["success","msg"]}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"msg":{"type":"string"},"data":{"nullable":true}},"required":["success","msg"]}}}}}}},"/maintenance-window/team":{"get":{"tags":["maintenance-window"],"summary":"List maintenance windows for the caller's team","security":[{"bearerAuth":[]}],"parameters":[{"schema":{"type":"boolean"},"required":false,"name":"active","in":"query"},{"schema":{"type":"number","nullable":true},"required":false,"name":"page","in":"query"},{"schema":{"type":"number","nullable":true},"required":false,"name":"rowsPerPage","in":"query"},{"schema":{"type":"string"},"required":false,"name":"field","in":"query"},{"schema":{"type":"string","enum":["asc","desc"]},"required":false,"name":"order","in":"query"}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"msg":{"type":"string"},"data":{"nullable":true}},"required":["success","msg"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"msg":{"type":"string"},"data":{"nullable":true}},"required":["success","msg"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"msg":{"type":"string"},"data":{"nullable":true}},"required":["success","msg"]}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"msg":{"type":"string"},"data":{"nullable":true}},"required":["success","msg"]}}}}}}},"/maintenance-window/monitor/{monitorId}":{"get":{"tags":["maintenance-window"],"summary":"List maintenance windows for a monitor","security":[{"bearerAuth":[]}],"parameters":[{"schema":{"type":"string","minLength":1},"required":true,"name":"monitorId","in":"path"}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"msg":{"type":"string"},"data":{"nullable":true}},"required":["success","msg"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"msg":{"type":"string"},"data":{"nullable":true}},"required":["success","msg"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"msg":{"type":"string"},"data":{"nullable":true}},"required":["success","msg"]}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"msg":{"type":"string"},"data":{"nullable":true}},"required":["success","msg"]}}}}}}},"/maintenance-window/{id}":{"get":{"tags":["maintenance-window"],"summary":"Get a maintenance window by id","security":[{"bearerAuth":[]}],"parameters":[{"schema":{"type":"string","minLength":1},"required":true,"name":"id","in":"path"}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"msg":{"type":"string"},"data":{"nullable":true}},"required":["success","msg"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"msg":{"type":"string"},"data":{"nullable":true}},"required":["success","msg"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"msg":{"type":"string"},"data":{"nullable":true}},"required":["success","msg"]}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"msg":{"type":"string"},"data":{"nullable":true}},"required":["success","msg"]}}}}}},"patch":{"tags":["maintenance-window"],"summary":"Edit a maintenance window","security":[{"bearerAuth":[]}],"parameters":[{"schema":{"type":"string","minLength":1},"required":true,"name":"id","in":"path"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"active":{"type":"boolean"},"name":{"type":"string"},"repeat":{"type":"number"},"start":{"type":"string","nullable":true,"format":"date-time"},"end":{"type":"string","nullable":true,"format":"date-time"},"expiry":{"type":"string","nullable":true,"format":"date-time"},"monitors":{"type":"array","items":{"type":"string"},"minItems":1},"duration":{"type":"number"},"durationUnit":{"type":"string","enum":["seconds","minutes","hours","days"]}},"additionalProperties":false}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"msg":{"type":"string"},"data":{"nullable":true}},"required":["success","msg"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"msg":{"type":"string"},"data":{"nullable":true}},"required":["success","msg"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"msg":{"type":"string"},"data":{"nullable":true}},"required":["success","msg"]}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"msg":{"type":"string"},"data":{"nullable":true}},"required":["success","msg"]}}}}}},"delete":{"tags":["maintenance-window"],"summary":"Delete a maintenance window","security":[{"bearerAuth":[]}],"parameters":[{"schema":{"type":"string","minLength":1},"required":true,"name":"id","in":"path"}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"msg":{"type":"string"}},"required":["success","msg"]},"example":{"success":true,"msg":"OK"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"msg":{"type":"string"},"data":{"nullable":true}},"required":["success","msg"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"msg":{"type":"string"},"data":{"nullable":true}},"required":["success","msg"]}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"msg":{"type":"string"},"data":{"nullable":true}},"required":["success","msg"]}}}}}}},"/monitors/team":{"get":{"tags":["monitors"],"summary":"List monitors for the caller's team","security":[{"bearerAuth":[]}],"parameters":[{"schema":{"anyOf":[{"type":"string","enum":["http","ping","pagespeed","hardware","docker","port","game","grpc","websocket","dns","unknown"]},{"type":"array","items":{"type":"string","enum":["http","ping","pagespeed","hardware","docker","port","game","grpc","websocket","dns","unknown"]}}]},"required":false,"name":"type","in":"query"},{"schema":{"anyOf":[{"type":"string"},{"type":"string","enum":[""]}]},"required":false,"name":"filter","in":"query"},{"schema":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"required":false,"name":"tags","in":"query"}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"msg":{"type":"string"},"data":{"type":"array","items":{"$ref":"#/components/schemas/Monitor"}}},"required":["success","msg","data"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"msg":{"type":"string"},"data":{"nullable":true}},"required":["success","msg"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"msg":{"type":"string"},"data":{"nullable":true}},"required":["success","msg"]}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"msg":{"type":"string"},"data":{"nullable":true}},"required":["success","msg"]}}}}}}},"/monitors/team/with-checks":{"get":{"tags":["monitors"],"summary":"List team monitors with their most recent checks (paginated)","security":[{"bearerAuth":[]}],"parameters":[{"schema":{"type":"integer","minimum":1,"maximum":100},"required":false,"name":"limit","in":"query"},{"schema":{"type":"integer","nullable":true,"minimum":0},"required":false,"name":"page","in":"query"},{"schema":{"type":"integer","minimum":1,"maximum":100},"required":false,"name":"rowsPerPage","in":"query"},{"schema":{"anyOf":[{"type":"string"},{"type":"string","enum":[""]}]},"required":false,"name":"filter","in":"query"},{"schema":{"type":"string"},"required":false,"name":"field","in":"query"},{"schema":{"type":"string","enum":["asc","desc"]},"required":false,"name":"order","in":"query"},{"schema":{"anyOf":[{"type":"string","enum":["http","ping","pagespeed","hardware","docker","port","game","grpc","websocket","dns","unknown"]},{"type":"array","items":{"type":"string","enum":["http","ping","pagespeed","hardware","docker","port","game","grpc","websocket","dns","unknown"]}}]},"required":false,"name":"type","in":"query"},{"schema":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"required":false,"name":"tags","in":"query"},{"schema":{"type":"boolean"},"required":false,"name":"explain","in":"query"}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"msg":{"type":"string"},"data":{"nullable":true}},"required":["success","msg"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"msg":{"type":"string"},"data":{"nullable":true}},"required":["success","msg"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"msg":{"type":"string"},"data":{"nullable":true}},"required":["success","msg"]}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"msg":{"type":"string"},"data":{"nullable":true}},"required":["success","msg"]}}}}}}},"/monitors/team/groups":{"get":{"tags":["monitors"],"summary":"List monitor groups for the caller's team","security":[{"bearerAuth":[]}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"msg":{"type":"string"},"data":{"type":"array","items":{"type":"string"}}},"required":["success","msg","data"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"msg":{"type":"string"},"data":{"nullable":true}},"required":["success","msg"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"msg":{"type":"string"},"data":{"nullable":true}},"required":["success","msg"]}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"msg":{"type":"string"},"data":{"nullable":true}},"required":["success","msg"]}}}}}}},"/monitors/uptime/details/{monitorId}":{"get":{"tags":["monitors"],"summary":"Get uptime details for a monitor","security":[{"bearerAuth":[]}],"parameters":[{"schema":{"type":"string","minLength":1},"required":true,"name":"monitorId","in":"path"},{"schema":{"type":"string","enum":["recent","hour","day","week","month","all"]},"required":true,"name":"dateRange","in":"query"}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"msg":{"type":"string"},"data":{"$ref":"#/components/schemas/UptimeDetails"}},"required":["success","msg","data"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"msg":{"type":"string"},"data":{"nullable":true}},"required":["success","msg"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"msg":{"type":"string"},"data":{"nullable":true}},"required":["success","msg"]}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"msg":{"type":"string"},"data":{"nullable":true}},"required":["success","msg"]}}}}}}},"/monitors/hardware/details/{monitorId}":{"get":{"tags":["monitors"],"summary":"Get hardware metrics detail for a monitor","security":[{"bearerAuth":[]}],"parameters":[{"schema":{"type":"string","minLength":1},"required":true,"name":"monitorId","in":"path"},{"schema":{"type":"string","enum":["recent","hour","day","week","month","all"]},"required":false,"name":"dateRange","in":"query"}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"msg":{"type":"string"},"data":{"nullable":true}},"required":["success","msg"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"msg":{"type":"string"},"data":{"nullable":true}},"required":["success","msg"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"msg":{"type":"string"},"data":{"nullable":true}},"required":["success","msg"]}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"msg":{"type":"string"},"data":{"nullable":true}},"required":["success","msg"]}}}}}}},"/monitors/pagespeed/details/{monitorId}":{"get":{"tags":["monitors"],"summary":"Get PageSpeed detail for a monitor","security":[{"bearerAuth":[]}],"parameters":[{"schema":{"type":"string","minLength":1},"required":true,"name":"monitorId","in":"path"},{"schema":{"type":"string","enum":["recent","hour","day","week","month","all"]},"required":false,"name":"dateRange","in":"query"}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"msg":{"type":"string"},"data":{"nullable":true}},"required":["success","msg"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"msg":{"type":"string"},"data":{"nullable":true}},"required":["success","msg"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"msg":{"type":"string"},"data":{"nullable":true}},"required":["success","msg"]}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"msg":{"type":"string"},"data":{"nullable":true}},"required":["success","msg"]}}}}}}},"/monitors/{monitorId}/geo-checks":{"get":{"tags":["monitors"],"summary":"Get geo check results for a monitor","security":[{"bearerAuth":[]}],"parameters":[{"schema":{"type":"string","minLength":1},"required":true,"name":"monitorId","in":"path"},{"schema":{"type":"boolean"},"required":false,"name":"status","in":"query"},{"schema":{"type":"string","enum":["asc","desc"]},"required":false,"name":"sortOrder","in":"query"},{"schema":{"type":"number","nullable":true},"required":false,"name":"limit","in":"query"},{"schema":{"type":"string","enum":["recent","hour","day","week","month","all"]},"required":false,"name":"dateRange","in":"query"},{"schema":{"type":"number","nullable":true},"required":false,"name":"numToDisplay","in":"query"},{"schema":{"type":"boolean"},"required":false,"name":"normalize","in":"query"},{"schema":{"anyOf":[{"type":"string","enum":["EU","NA","AS","SA","AF","OC"]},{"type":"array","items":{"type":"string","enum":["EU","NA","AS","SA","AF","OC"]}}]},"required":false,"name":"continent","in":"query"}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"msg":{"type":"string"},"data":{"nullable":true}},"required":["success","msg"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"msg":{"type":"string"},"data":{"nullable":true}},"required":["success","msg"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"msg":{"type":"string"},"data":{"nullable":true}},"required":["success","msg"]}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"msg":{"type":"string"},"data":{"nullable":true}},"required":["success","msg"]}}}}}}},"/monitors/pause/{monitorId}":{"post":{"tags":["monitors"],"summary":"Toggle pause state for a monitor","security":[{"bearerAuth":[]}],"parameters":[{"schema":{"type":"string","minLength":1},"required":true,"name":"monitorId","in":"path"}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"msg":{"type":"string"},"data":{"$ref":"#/components/schemas/Monitor"}},"required":["success","msg","data"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"msg":{"type":"string"},"data":{"nullable":true}},"required":["success","msg"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"msg":{"type":"string"},"data":{"nullable":true}},"required":["success","msg"]}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"msg":{"type":"string"},"data":{"nullable":true}},"required":["success","msg"]}}}}}}},"/monitors/certificate/{monitorId}":{"get":{"tags":["monitors"],"summary":"Get SSL certificate info for a monitor","security":[{"bearerAuth":[]}],"parameters":[{"schema":{"type":"string","minLength":1},"required":true,"name":"monitorId","in":"path"}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"msg":{"type":"string"},"data":{"type":"object","properties":{"certificateDate":{"type":"string"}},"required":["certificateDate"]}},"required":["success","msg","data"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"msg":{"type":"string"},"data":{"nullable":true}},"required":["success","msg"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"msg":{"type":"string"},"data":{"nullable":true}},"required":["success","msg"]}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"msg":{"type":"string"},"data":{"nullable":true}},"required":["success","msg"]}}}}}}},"/monitors/notifications":{"patch":{"tags":["monitors"],"summary":"Bulk update notifications across monitors","security":[{"bearerAuth":[]}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"monitorIds":{"type":"array","items":{"type":"string"},"minItems":1,"maxItems":100},"notificationIds":{"type":"array","items":{"type":"string"},"maxItems":100},"action":{"type":"string","enum":["add","remove","set"]}},"required":["monitorIds","notificationIds","action"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"msg":{"type":"string"},"data":{"type":"object","properties":{"modifiedCount":{"type":"number"}},"required":["modifiedCount"]}},"required":["success","msg","data"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"msg":{"type":"string"},"data":{"nullable":true}},"required":["success","msg"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"msg":{"type":"string"},"data":{"nullable":true}},"required":["success","msg"]}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"msg":{"type":"string"},"data":{"nullable":true}},"required":["success","msg"]}}}}}}},"/monitors":{"post":{"tags":["monitors"],"summary":"Create a new monitor","security":[{"bearerAuth":[]}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"_id":{"type":"string"},"name":{"type":"string","minLength":1},"description":{"anyOf":[{"type":"string"},{"type":"string","enum":[""]}]},"type":{"type":"string","enum":["http","ping","pagespeed","hardware","docker","port","game","grpc","websocket","dns","unknown"]},"statusWindowSize":{"type":"number","minimum":1,"maximum":20,"default":5},"statusWindowThreshold":{"type":"number","minimum":1,"maximum":100,"default":60},"url":{"type":"string","minLength":1},"ignoreTlsErrors":{"type":"boolean","default":false},"useAdvancedMatching":{"type":"boolean","default":false},"port":{"type":"number"},"isActive":{"type":"boolean"},"interval":{"type":"number"},"cpuAlertThreshold":{"type":"number"},"memoryAlertThreshold":{"type":"number"},"diskAlertThreshold":{"type":"number"},"tempAlertThreshold":{"type":"number"},"notifications":{"type":"array","items":{"type":"string"}},"tags":{"type":"array","items":{"type":"string"}},"customUpCodes":{"type":"array","items":{"type":"number"},"default":[]},"secret":{"type":"string"},"jsonPath":{"anyOf":[{"type":"string"},{"type":"string","enum":[""]}]},"expectedValue":{"anyOf":[{"type":"string"},{"type":"string","enum":[""]}]},"matchMethod":{"anyOf":[{"type":"string","enum":["equal","include","regex"]},{"type":"string","enum":[""]}]},"method":{"type":"string","enum":["GET","HEAD"]},"gameId":{"anyOf":[{"type":"string"},{"type":"string","enum":[""]}]},"grpcServiceName":{"anyOf":[{"type":"string"},{"type":"string","enum":[""]}],"default":""},"strategy":{"type":"string","enum":["desktop","mobile"]},"selectedDisks":{"type":"array","items":{"type":"string"}},"group":{"anyOf":[{"type":"string","maxLength":50},{"nullable":true},{"type":"string","enum":[""]}]},"geoCheckEnabled":{"type":"boolean"},"geoCheckLocations":{"type":"array","items":{"type":"string","enum":["EU","NA","AS","SA","AF","OC"]}},"geoCheckInterval":{"type":"number","minimum":300000},"dnsServer":{"type":"string","minLength":1},"dnsRecordType":{"type":"string","enum":["A","AAAA","CNAME","MX","TXT","NS"]}},"required":["name","type","url"]}}}},"responses":{"200":{"description":"Monitor created","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"msg":{"type":"string"},"data":{"$ref":"#/components/schemas/Monitor"}},"required":["success","msg","data"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"msg":{"type":"string"},"data":{"nullable":true}},"required":["success","msg"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"msg":{"type":"string"},"data":{"nullable":true}},"required":["success","msg"]}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"msg":{"type":"string"},"data":{"nullable":true}},"required":["success","msg"]}}}}}},"delete":{"tags":["monitors"],"summary":"Delete every monitor (superadmin only)","security":[{"bearerAuth":[]}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"msg":{"type":"string"}},"required":["success","msg"]},"example":{"success":true,"msg":"OK"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"msg":{"type":"string"},"data":{"nullable":true}},"required":["success","msg"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"msg":{"type":"string"},"data":{"nullable":true}},"required":["success","msg"]}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"msg":{"type":"string"},"data":{"nullable":true}},"required":["success","msg"]}}}}}}},"/monitors/demo":{"post":{"tags":["monitors"],"summary":"Insert preconfigured demo monitors","security":[{"bearerAuth":[]}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"msg":{"type":"string"},"data":{"type":"number"}},"required":["success","msg","data"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"msg":{"type":"string"},"data":{"nullable":true}},"required":["success","msg"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"msg":{"type":"string"},"data":{"nullable":true}},"required":["success","msg"]}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"msg":{"type":"string"},"data":{"nullable":true}},"required":["success","msg"]}}}}}}},"/monitors/export/json":{"get":{"tags":["monitors"],"summary":"Export all team monitors as JSON","security":[{"bearerAuth":[]}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"msg":{"type":"string"},"data":{"nullable":true}},"required":["success","msg"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"msg":{"type":"string"},"data":{"nullable":true}},"required":["success","msg"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"msg":{"type":"string"},"data":{"nullable":true}},"required":["success","msg"]}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"msg":{"type":"string"},"data":{"nullable":true}},"required":["success","msg"]}}}}}}},"/monitors/import/json":{"post":{"tags":["monitors"],"summary":"Import monitors from JSON","security":[{"bearerAuth":[]}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"monitors":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"userId":{"type":"string"},"teamId":{"type":"string"},"name":{"type":"string","minLength":1},"description":{"anyOf":[{"type":"string"},{"type":"string","enum":[""]}]},"status":{"type":"string","enum":["up","down","paused","initializing","maintenance","breached"],"default":"initializing"},"statusWindow":{"type":"array","items":{"type":"boolean"},"default":[]},"statusWindowSize":{"type":"number","minimum":1,"maximum":20,"default":5},"statusWindowThreshold":{"type":"number","minimum":1,"maximum":100,"default":60},"type":{"type":"string","enum":["http","ping","pagespeed","hardware","docker","port","game","grpc","websocket","dns","unknown"]},"ignoreTlsErrors":{"type":"boolean","default":false},"useAdvancedMatching":{"type":"boolean","default":false},"jsonPath":{"anyOf":[{"type":"string"},{"type":"string","enum":[""]}]},"expectedValue":{"anyOf":[{"type":"string"},{"type":"string","enum":[""]}]},"matchMethod":{"anyOf":[{"type":"string","enum":["equal","include","regex"]},{"type":"string","enum":[""]}]},"method":{"type":"string","enum":["GET","HEAD"],"default":"GET"},"url":{"type":"string","minLength":1},"port":{"type":"number"},"isActive":{"type":"boolean","default":true},"interval":{"type":"number","default":60000},"uptimePercentage":{"type":"number"},"notifications":{"type":"array","items":{"type":"string"},"default":[]},"tags":{"type":"array","items":{"type":"string"},"default":[]},"customUpCodes":{"type":"array","items":{"type":"number"},"default":[]},"secret":{"type":"string"},"cpuAlertThreshold":{"type":"number","default":100},"cpuAlertCounter":{"type":"number","default":5},"memoryAlertThreshold":{"type":"number","default":100},"memoryAlertCounter":{"type":"number","default":5},"diskAlertThreshold":{"type":"number","default":100},"diskAlertCounter":{"type":"number","default":5},"tempAlertThreshold":{"type":"number","default":100},"tempAlertCounter":{"type":"number","default":5},"selectedDisks":{"type":"array","items":{"type":"string"},"default":[]},"gameId":{"anyOf":[{"type":"string"},{"type":"string","enum":[""]}]},"grpcServiceName":{"anyOf":[{"type":"string"},{"type":"string","enum":[""]}],"default":""},"strategy":{"type":"string","enum":["desktop","mobile"]},"group":{"anyOf":[{"type":"string","maxLength":50},{"nullable":true}],"default":null},"geoCheckEnabled":{"type":"boolean","default":false},"geoCheckLocations":{"type":"array","items":{"type":"string","enum":["EU","NA","AS","SA","AF","OC"]},"default":[]},"geoCheckInterval":{"type":"number","minimum":300000,"default":300000},"dnsServer":{"type":"string","minLength":1},"dnsRecordType":{"type":"string","enum":["A","AAAA","CNAME","MX","TXT","NS"]},"createdAt":{"type":"string"},"updatedAt":{"type":"string"}},"required":["name","type","url"]},"minItems":1}},"required":["monitors"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"msg":{"type":"string"},"data":{"type":"object","properties":{"imported":{"type":"number"}},"required":["imported"],"additionalProperties":{"nullable":true}}},"required":["success","msg","data"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"msg":{"type":"string"},"data":{"nullable":true}},"required":["success","msg"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"msg":{"type":"string"},"data":{"nullable":true}},"required":["success","msg"]}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"msg":{"type":"string"},"data":{"nullable":true}},"required":["success","msg"]}}}}}}},"/monitors/games":{"get":{"tags":["monitors"],"summary":"List supported game-server types","security":[{"bearerAuth":[]}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"msg":{"type":"string"},"data":{"type":"array","items":{"type":"string"}}},"required":["success","msg","data"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"msg":{"type":"string"},"data":{"nullable":true}},"required":["success","msg"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"msg":{"type":"string"},"data":{"nullable":true}},"required":["success","msg"]}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"msg":{"type":"string"},"data":{"nullable":true}},"required":["success","msg"]}}}}}}},"/monitors/{monitorId}":{"get":{"tags":["monitors"],"summary":"Get a monitor by id","security":[{"bearerAuth":[]}],"parameters":[{"schema":{"type":"string","minLength":1},"required":true,"name":"monitorId","in":"path"}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"msg":{"type":"string"},"data":{"$ref":"#/components/schemas/Monitor"}},"required":["success","msg","data"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"msg":{"type":"string"},"data":{"nullable":true}},"required":["success","msg"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"msg":{"type":"string"},"data":{"nullable":true}},"required":["success","msg"]}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"msg":{"type":"string"},"data":{"nullable":true}},"required":["success","msg"]}}}}}},"patch":{"tags":["monitors"],"summary":"Edit a monitor","security":[{"bearerAuth":[]}],"parameters":[{"schema":{"type":"string","minLength":1},"required":true,"name":"monitorId","in":"path"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string"},"type":{"type":"string","enum":["http","ping","pagespeed","hardware","docker","port","game","grpc","websocket","dns","unknown"]},"url":{"type":"string"},"statusWindowSize":{"type":"number","minimum":1,"maximum":20,"default":5},"statusWindowThreshold":{"type":"number","minimum":1,"maximum":100,"default":60},"description":{"anyOf":[{"type":"string"},{"type":"string","enum":[""]}]},"interval":{"type":"number"},"notifications":{"type":"array","items":{"type":"string"}},"tags":{"type":"array","items":{"type":"string"}},"customUpCodes":{"type":"array","items":{"type":"number"}},"secret":{"type":"string"},"ignoreTlsErrors":{"type":"boolean"},"useAdvancedMatching":{"type":"boolean"},"jsonPath":{"anyOf":[{"type":"string"},{"type":"string","enum":[""]}]},"expectedValue":{"anyOf":[{"type":"string"},{"type":"string","enum":[""]}]},"matchMethod":{"anyOf":[{"type":"string","enum":["equal","include","regex"]},{"type":"string","enum":[""]}]},"method":{"type":"string","enum":["GET","HEAD"]},"port":{"type":"number","minimum":1,"maximum":65535},"cpuAlertThreshold":{"type":"number"},"memoryAlertThreshold":{"type":"number"},"diskAlertThreshold":{"type":"number"},"tempAlertThreshold":{"type":"number"},"gameId":{"anyOf":[{"type":"string"},{"type":"string","enum":[""]}]},"grpcServiceName":{"anyOf":[{"type":"string"},{"type":"string","enum":[""]}]},"strategy":{"type":"string","enum":["desktop","mobile"]},"selectedDisks":{"type":"array","items":{"type":"string"}},"group":{"anyOf":[{"type":"string","maxLength":50},{"nullable":true},{"type":"string","enum":[""]}]},"geoCheckEnabled":{"type":"boolean"},"geoCheckLocations":{"type":"array","items":{"type":"string","enum":["EU","NA","AS","SA","AF","OC"]}},"geoCheckInterval":{"type":"number","minimum":300000},"dnsServer":{"type":"string","minLength":1},"dnsRecordType":{"type":"string","enum":["A","AAAA","CNAME","MX","TXT","NS"]}}}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"msg":{"type":"string"},"data":{"$ref":"#/components/schemas/Monitor"}},"required":["success","msg","data"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"msg":{"type":"string"},"data":{"nullable":true}},"required":["success","msg"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"msg":{"type":"string"},"data":{"nullable":true}},"required":["success","msg"]}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"msg":{"type":"string"},"data":{"nullable":true}},"required":["success","msg"]}}}}}},"delete":{"tags":["monitors"],"summary":"Delete a monitor","security":[{"bearerAuth":[]}],"parameters":[{"schema":{"type":"string","minLength":1},"required":true,"name":"monitorId","in":"path"}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"msg":{"type":"string"},"data":{"$ref":"#/components/schemas/Monitor"}},"required":["success","msg","data"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"msg":{"type":"string"},"data":{"nullable":true}},"required":["success","msg"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"msg":{"type":"string"},"data":{"nullable":true}},"required":["success","msg"]}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"msg":{"type":"string"},"data":{"nullable":true}},"required":["success","msg"]}}}}}}},"/notifications":{"post":{"tags":["notifications"],"summary":"Create a notification channel","description":"Create a notification channel of any supported type. The `type` field discriminates the body shape.","security":[{"bearerAuth":[]}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotificationChannelBody"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"msg":{"type":"string"},"data":{"nullable":true}},"required":["success","msg"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"msg":{"type":"string"},"data":{"nullable":true}},"required":["success","msg"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"msg":{"type":"string"},"data":{"nullable":true}},"required":["success","msg"]}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"msg":{"type":"string"},"data":{"nullable":true}},"required":["success","msg"]}}}}}}},"/notifications/test/all":{"post":{"tags":["notifications"],"summary":"Send a test alert through every notification channel for the team","security":[{"bearerAuth":[]}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"monitorId":{"type":"string","minLength":1}},"required":["monitorId"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"msg":{"type":"string"},"data":{"nullable":true}},"required":["success","msg"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"msg":{"type":"string"},"data":{"nullable":true}},"required":["success","msg"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"msg":{"type":"string"},"data":{"nullable":true}},"required":["success","msg"]}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"msg":{"type":"string"},"data":{"nullable":true}},"required":["success","msg"]}}}}}}},"/notifications/test":{"post":{"tags":["notifications"],"summary":"Send a test alert through a single notification channel","security":[{"bearerAuth":[]}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotificationChannelBody"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"msg":{"type":"string"},"data":{"type":"object","properties":{"success":{"type":"boolean"}},"required":["success"],"additionalProperties":{"nullable":true}}},"required":["success","msg","data"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"msg":{"type":"string"},"data":{"nullable":true}},"required":["success","msg"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"msg":{"type":"string"},"data":{"nullable":true}},"required":["success","msg"]}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"msg":{"type":"string"},"data":{"nullable":true}},"required":["success","msg"]}}}}}}},"/notifications/team":{"get":{"tags":["notifications"],"summary":"List notification channels for the caller's team","security":[{"bearerAuth":[]}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"msg":{"type":"string"},"data":{"nullable":true}},"required":["success","msg"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"msg":{"type":"string"},"data":{"nullable":true}},"required":["success","msg"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"msg":{"type":"string"},"data":{"nullable":true}},"required":["success","msg"]}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"msg":{"type":"string"},"data":{"nullable":true}},"required":["success","msg"]}}}}}}},"/notifications/{id}":{"get":{"tags":["notifications"],"summary":"Get a notification channel by id","security":[{"bearerAuth":[]}],"parameters":[{"schema":{"type":"string","minLength":1},"required":true,"name":"id","in":"path"}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"msg":{"type":"string"},"data":{"nullable":true}},"required":["success","msg"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"msg":{"type":"string"},"data":{"nullable":true}},"required":["success","msg"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"msg":{"type":"string"},"data":{"nullable":true}},"required":["success","msg"]}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"msg":{"type":"string"},"data":{"nullable":true}},"required":["success","msg"]}}}}}},"delete":{"tags":["notifications"],"summary":"Delete a notification channel","security":[{"bearerAuth":[]}],"parameters":[{"schema":{"type":"string","minLength":1},"required":true,"name":"id","in":"path"}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"msg":{"type":"string"}},"required":["success","msg"]},"example":{"success":true,"msg":"OK"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"msg":{"type":"string"},"data":{"nullable":true}},"required":["success","msg"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"msg":{"type":"string"},"data":{"nullable":true}},"required":["success","msg"]}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"msg":{"type":"string"},"data":{"nullable":true}},"required":["success","msg"]}}}}}},"patch":{"tags":["notifications"],"summary":"Edit a notification channel","security":[{"bearerAuth":[]}],"parameters":[{"schema":{"type":"string","minLength":1},"required":true,"name":"id","in":"path"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotificationChannelBody"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"msg":{"type":"string"},"data":{"nullable":true}},"required":["success","msg"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"msg":{"type":"string"},"data":{"nullable":true}},"required":["success","msg"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"msg":{"type":"string"},"data":{"nullable":true}},"required":["success","msg"]}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"msg":{"type":"string"},"data":{"nullable":true}},"required":["success","msg"]}}}}}}},"/queue/jobs":{"get":{"tags":["queue"],"summary":"List queued monitor jobs (admin/superadmin)","security":[{"bearerAuth":[]}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"msg":{"type":"string"},"data":{"nullable":true}},"required":["success","msg"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"msg":{"type":"string"},"data":{"nullable":true}},"required":["success","msg"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"msg":{"type":"string"},"data":{"nullable":true}},"required":["success","msg"]}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"msg":{"type":"string"},"data":{"nullable":true}},"required":["success","msg"]}}}}}}},"/queue/metrics":{"get":{"tags":["queue"],"summary":"Get queue runtime metrics (admin/superadmin)","security":[{"bearerAuth":[]}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"msg":{"type":"string"},"data":{"nullable":true}},"required":["success","msg"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"msg":{"type":"string"},"data":{"nullable":true}},"required":["success","msg"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"msg":{"type":"string"},"data":{"nullable":true}},"required":["success","msg"]}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"msg":{"type":"string"},"data":{"nullable":true}},"required":["success","msg"]}}}}}}},"/queue/all-metrics":{"get":{"tags":["queue"],"summary":"Get queue metrics across all monitors (admin/superadmin)","security":[{"bearerAuth":[]}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"msg":{"type":"string"},"data":{"nullable":true}},"required":["success","msg"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"msg":{"type":"string"},"data":{"nullable":true}},"required":["success","msg"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"msg":{"type":"string"},"data":{"nullable":true}},"required":["success","msg"]}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"msg":{"type":"string"},"data":{"nullable":true}},"required":["success","msg"]}}}}}}},"/queue/flush":{"post":{"tags":["queue"],"summary":"Flush the monitor job queue (admin/superadmin)","security":[{"bearerAuth":[]}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"msg":{"type":"string"}},"required":["success","msg"]},"example":{"success":true,"msg":"OK"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"msg":{"type":"string"},"data":{"nullable":true}},"required":["success","msg"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"msg":{"type":"string"},"data":{"nullable":true}},"required":["success","msg"]}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"msg":{"type":"string"},"data":{"nullable":true}},"required":["success","msg"]}}}}}}},"/settings":{"get":{"tags":["settings"],"summary":"Get application settings","security":[{"bearerAuth":[]}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"msg":{"type":"string"},"data":{"nullable":true}},"required":["success","msg"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"msg":{"type":"string"},"data":{"nullable":true}},"required":["success","msg"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"msg":{"type":"string"},"data":{"nullable":true}},"required":["success","msg"]}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"msg":{"type":"string"},"data":{"nullable":true}},"required":["success","msg"]}}}}}},"patch":{"tags":["settings"],"summary":"Update application settings (admin/superadmin)","security":[{"bearerAuth":[]}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"checkTTL":{"type":"integer","minimum":1,"maximum":366},"systemEmailPort":{"type":"number","nullable":true},"pagespeedApiKey":{"type":"string","nullable":true},"language":{"type":"string"},"timezone":{"type":"string"},"systemEmailHost":{"type":"string","nullable":true},"systemEmailAddress":{"type":"string","nullable":true},"systemEmailDisplayName":{"type":"string","nullable":true,"maxLength":100},"systemEmailPassword":{"type":"string","nullable":true},"systemEmailUser":{"type":"string","nullable":true},"systemEmailConnectionHost":{"type":"string","nullable":true},"systemEmailTLSServername":{"type":"string","nullable":true},"showURL":{"type":"boolean"},"systemEmailSecure":{"type":"boolean"},"systemEmailPool":{"type":"boolean"},"systemEmailIgnoreTLS":{"type":"boolean"},"systemEmailRequireTLS":{"type":"boolean"},"systemEmailRejectUnauthorized":{"type":"boolean"},"globalThresholds":{"type":"object","properties":{"cpu":{"type":"number","minimum":1,"maximum":100},"memory":{"type":"number","minimum":1,"maximum":100},"disk":{"type":"number","minimum":1,"maximum":100},"temperature":{"type":"number","minimum":1,"maximum":150}}}}}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"msg":{"type":"string"},"data":{"nullable":true}},"required":["success","msg"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"msg":{"type":"string"},"data":{"nullable":true}},"required":["success","msg"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"msg":{"type":"string"},"data":{"nullable":true}},"required":["success","msg"]}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"msg":{"type":"string"},"data":{"nullable":true}},"required":["success","msg"]}}}}}}},"/settings/test-email":{"post":{"tags":["settings"],"summary":"Send a test email using current SMTP settings (admin/superadmin)","security":[{"bearerAuth":[]}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"to":{"type":"string","minLength":1},"systemEmailHost":{"type":"string"},"systemEmailPort":{"type":"number"},"systemEmailSecure":{"type":"boolean"},"systemEmailPool":{"type":"boolean"},"systemEmailAddress":{"type":"string"},"systemEmailDisplayName":{"type":"string"},"systemEmailPassword":{"type":"string"},"systemEmailUser":{"type":"string"},"systemEmailConnectionHost":{"anyOf":[{"type":"string"},{"type":"string","enum":[""]}]},"systemEmailIgnoreTLS":{"type":"boolean"},"systemEmailRequireTLS":{"type":"boolean"},"systemEmailRejectUnauthorized":{"type":"boolean"},"systemEmailTLSServername":{"anyOf":[{"type":"string"},{"type":"string","enum":[""]}]}},"required":["to"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"msg":{"type":"string"}},"required":["success","msg"]},"example":{"success":true,"msg":"OK"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"msg":{"type":"string"},"data":{"nullable":true}},"required":["success","msg"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"msg":{"type":"string"},"data":{"nullable":true}},"required":["success","msg"]}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"msg":{"type":"string"},"data":{"nullable":true}},"required":["success","msg"]}}}}}}},"/status-page/team":{"get":{"tags":["status-page"],"summary":"List status pages for the caller's team","security":[{"bearerAuth":[]}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"msg":{"type":"string"},"data":{"nullable":true}},"required":["success","msg"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"msg":{"type":"string"},"data":{"nullable":true}},"required":["success","msg"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"msg":{"type":"string"},"data":{"nullable":true}},"required":["success","msg"]}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"msg":{"type":"string"},"data":{"nullable":true}},"required":["success","msg"]}}}}}}},"/status-page":{"post":{"tags":["status-page"],"summary":"Create a status page (logo upload optional)","security":[{"bearerAuth":[]}],"requestBody":{"content":{"multipart/form-data":{"schema":{"type":"object","properties":{"type":{"anyOf":[{"type":"string","enum":["uptime","infrastructure"]},{"type":"array","items":{"type":"string","enum":["uptime","infrastructure"]}}]},"companyName":{"type":"string","minLength":1},"url":{"type":"string","pattern":"^[a-zA-Z0-9_-]+$"},"customDomain":{"anyOf":[{"type":"string","pattern":"^(?=.{1,253}$)([a-zA-Z0-9_](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?\\.)+[a-zA-Z]{2,63}$"},{"nullable":true}]},"timezone":{"type":"string"},"color":{"type":"string"},"monitors":{"type":"array","items":{"type":"string","pattern":"^[0-9a-fA-F]{24}$"},"minItems":1},"subMonitors":{"type":"array","items":{"type":"string","pattern":"^[0-9a-fA-F]{24}$"}},"deleteSubmonitors":{"type":"boolean"},"isPublished":{"type":"boolean"},"showCharts":{"type":"boolean"},"showUptimePercentage":{"type":"boolean"},"showAdminLoginLink":{"type":"boolean"},"showInfrastructure":{"type":"boolean"},"customCSS":{"type":"string","maxLength":100000},"removeLogo":{"anyOf":[{"type":"string","enum":["true"]},{"type":"string","enum":["false"]}]},"theme":{"type":"string","enum":["refined","modern","bold","editorial","minimal"]},"themeMode":{"type":"string","enum":["auto","light","dark"]},"logo":{"type":"string","format":"binary"}},"required":["type","companyName","url","monitors","isPublished","showUptimePercentage","logo"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"msg":{"type":"string"},"data":{"nullable":true}},"required":["success","msg"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"msg":{"type":"string"},"data":{"nullable":true}},"required":["success","msg"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"msg":{"type":"string"},"data":{"nullable":true}},"required":["success","msg"]}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"msg":{"type":"string"},"data":{"nullable":true}},"required":["success","msg"]}}}}}}},"/status-page/{id}":{"put":{"tags":["status-page"],"summary":"Update a status page (logo upload optional)","security":[{"bearerAuth":[]}],"requestBody":{"content":{"multipart/form-data":{"schema":{"type":"object","properties":{"type":{"anyOf":[{"type":"string","enum":["uptime","infrastructure"]},{"type":"array","items":{"type":"string","enum":["uptime","infrastructure"]}}]},"companyName":{"type":"string","minLength":1},"url":{"type":"string","pattern":"^[a-zA-Z0-9_-]+$"},"customDomain":{"anyOf":[{"type":"string","pattern":"^(?=.{1,253}$)([a-zA-Z0-9_](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?\\.)+[a-zA-Z]{2,63}$"},{"nullable":true}]},"timezone":{"type":"string"},"color":{"type":"string"},"monitors":{"type":"array","items":{"type":"string","pattern":"^[0-9a-fA-F]{24}$"},"minItems":1},"subMonitors":{"type":"array","items":{"type":"string","pattern":"^[0-9a-fA-F]{24}$"}},"deleteSubmonitors":{"type":"boolean"},"isPublished":{"type":"boolean"},"showCharts":{"type":"boolean"},"showUptimePercentage":{"type":"boolean"},"showAdminLoginLink":{"type":"boolean"},"showInfrastructure":{"type":"boolean"},"customCSS":{"type":"string","maxLength":100000},"removeLogo":{"anyOf":[{"type":"string","enum":["true"]},{"type":"string","enum":["false"]}]},"theme":{"type":"string","enum":["refined","modern","bold","editorial","minimal"]},"themeMode":{"type":"string","enum":["auto","light","dark"]},"logo":{"type":"string","format":"binary"}},"required":["type","companyName","url","monitors","isPublished","showUptimePercentage","logo"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"msg":{"type":"string"},"data":{"nullable":true}},"required":["success","msg"]}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"msg":{"type":"string"},"data":{"nullable":true}},"required":["success","msg"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"msg":{"type":"string"},"data":{"nullable":true}},"required":["success","msg"]}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"msg":{"type":"string"},"data":{"nullable":true}},"required":["success","msg"]}}}}}},"delete":{"tags":["status-page"],"summary":"Delete a status page","security":[{"bearerAuth":[]}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"msg":{"type":"string"}},"required":["success","msg"]},"example":{"success":true,"msg":"OK"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"msg":{"type":"string"},"data":{"nullable":true}},"required":["success","msg"]}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"msg":{"type":"string"},"data":{"nullable":true}},"required":["success","msg"]}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"msg":{"type":"string"},"data":{"nullable":true}},"required":["success","msg"]}}}}}}},"/status-page/resolve":{"get":{"tags":["status-page"],"summary":"Resolve a published status page by custom domain","parameters":[{"schema":{"anyOf":[{"type":"string","enum":["uptime","infrastructure"]},{"type":"array","items":{"type":"string","enum":["uptime","infrastructure"]}}]},"required":true,"name":"type","in":"query"},{"schema":{"type":"number","nullable":true},"required":false,"name":"timeFrame","in":"query"},{"schema":{"type":"string"},"required":false,"name":"domain","in":"query"}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"msg":{"type":"string"},"data":{"nullable":true}},"required":["success","msg"]}}}},"404":{"description":"Status page not found"},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"msg":{"type":"string"},"data":{"nullable":true}},"required":["success","msg"]}}}}}}},"/status-page/{url}":{"get":{"tags":["status-page"],"summary":"Get a public status page by its URL slug","parameters":[{"schema":{"type":"string","minLength":1},"required":true,"name":"url","in":"path"},{"schema":{"anyOf":[{"type":"string","enum":["uptime","infrastructure"]},{"type":"array","items":{"type":"string","enum":["uptime","infrastructure"]}}]},"required":true,"name":"type","in":"query"},{"schema":{"type":"number","nullable":true},"required":false,"name":"timeFrame","in":"query"}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"msg":{"type":"string"},"data":{"nullable":true}},"required":["success","msg"]}}}},"404":{"description":"Status page not found"},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"msg":{"type":"string"},"data":{"nullable":true}},"required":["success","msg"]}}}}}}}}}}