- The egress job runs through WorkerHelper.getEgressRecoveryJob(), like
the cleanup jobs, instead of a direct service call from the queue
- Toggling egressCheckEnabled resets the egress state and removes any
pending recovery job
- Probes resolve and pass the proxy, so http targets honour the global
proxy as monitors do
- PingProvider keeps IPv6 addresses intact instead of truncating at the
first colon
- Egress targets are parsed by one function shared by the validator and
the probe; malformed addresses such as unbalanced brackets are rejected
- Notification id pattern drops the /i flag, which produced an invalid
OpenAPI pattern
- EgressState findSingleton reads before it writes, so a read no longer
bumps updatedAt
- "disabled" is a distinct assessment result and is cached like any other
- Concurrent failures share an in-flight assessment for as long as it
runs, then reuse the settled result for 5 s
- The recovery job row is only removed if nobody rescheduled it since
this run claimed it, so a concurrent new episode keeps its job
- Deleting a notification removes it from egressNotifications
🔧
14442 lines
302 KiB
JSON
14442 lines
302 KiB
JSON
{
|
|
"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": "proxies",
|
|
"description": "Outbound proxy servers for routing HTTP monitor checks, team-scoped with an instance-wide admin listing."
|
|
},
|
|
{
|
|
"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"
|
|
},
|
|
"proxyMode": {
|
|
"type": "string",
|
|
"enum": ["inherit", "none", "custom"]
|
|
},
|
|
"proxyId": {
|
|
"type": "string"
|
|
},
|
|
"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"
|
|
},
|
|
"dockerLogsEnabled": {
|
|
"type": "boolean"
|
|
},
|
|
"dockerTlsCa": {
|
|
"type": "string"
|
|
},
|
|
"dockerTlsCert": {
|
|
"type": "string"
|
|
},
|
|
"dockerTlsKeySet": {
|
|
"type": "boolean"
|
|
},
|
|
"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",
|
|
"proxyMode",
|
|
"useAdvancedMatching",
|
|
"method",
|
|
"notifications",
|
|
"tags",
|
|
"cpuAlertThreshold",
|
|
"memoryAlertThreshold",
|
|
"diskAlertThreshold",
|
|
"tempAlertThreshold",
|
|
"selectedDisks",
|
|
"geoCheckEnabled",
|
|
"geoCheckLocations",
|
|
"geoCheckInterval",
|
|
"dockerLogsEnabled",
|
|
"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"
|
|
},
|
|
"proxyMode": {
|
|
"type": "string",
|
|
"enum": ["inherit", "none", "custom"]
|
|
},
|
|
"proxyId": {
|
|
"type": "string"
|
|
},
|
|
"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"
|
|
},
|
|
"dockerLogsEnabled": {
|
|
"type": "boolean"
|
|
},
|
|
"dockerTlsCa": {
|
|
"type": "string"
|
|
},
|
|
"dockerTlsCert": {
|
|
"type": "string"
|
|
},
|
|
"dockerTlsKeySet": {
|
|
"type": "boolean"
|
|
},
|
|
"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",
|
|
"proxyMode",
|
|
"useAdvancedMatching",
|
|
"method",
|
|
"notifications",
|
|
"tags",
|
|
"cpuAlertThreshold",
|
|
"memoryAlertThreshold",
|
|
"diskAlertThreshold",
|
|
"tempAlertThreshold",
|
|
"selectedDisks",
|
|
"geoCheckEnabled",
|
|
"geoCheckLocations",
|
|
"geoCheckInterval",
|
|
"dockerLogsEnabled",
|
|
"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/SignalgridNotification"
|
|
},
|
|
{
|
|
"$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",
|
|
"signalgrid": "#/components/schemas/SignalgridNotification",
|
|
"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"
|
|
}
|
|
},
|
|
"SignalgridNotification": {
|
|
"type": "object",
|
|
"properties": {
|
|
"notificationName": {
|
|
"type": "string",
|
|
"minLength": 1
|
|
},
|
|
"type": {
|
|
"type": "string",
|
|
"enum": ["signalgrid"]
|
|
},
|
|
"address": {
|
|
"type": "string",
|
|
"minLength": 1
|
|
},
|
|
"accessToken": {
|
|
"type": "string",
|
|
"minLength": 1
|
|
}
|
|
},
|
|
"required": ["notificationName", "type", "address", "accessToken"],
|
|
"example": {
|
|
"notificationName": "Signalgrid",
|
|
"type": "signalgrid",
|
|
"address": "your-channel",
|
|
"accessToken": "your-client-key"
|
|
}
|
|
},
|
|
"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
|
|
},
|
|
"ntfyAuthType": {
|
|
"type": "string",
|
|
"enum": ["none", "token", "basic"]
|
|
},
|
|
"ntfyUsername": {
|
|
"anyOf": [
|
|
{
|
|
"type": "string"
|
|
},
|
|
{
|
|
"type": "string",
|
|
"enum": [""]
|
|
}
|
|
]
|
|
},
|
|
"accessToken": {
|
|
"anyOf": [
|
|
{
|
|
"type": "string"
|
|
},
|
|
{
|
|
"type": "string",
|
|
"enum": [""]
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"required": ["notificationName", "type", "address", "topic"],
|
|
"example": {
|
|
"notificationName": "ntfy topic",
|
|
"type": "ntfy",
|
|
"address": "https://ntfy.sh",
|
|
"topic": "checkmate-alerts",
|
|
"ntfyAuthType": "token",
|
|
"accessToken": "tk_your-ntfy-access-token"
|
|
}
|
|
},
|
|
"PublicStatusPagePayload": {
|
|
"type": "object",
|
|
"properties": {
|
|
"statusPage": {
|
|
"type": "object",
|
|
"properties": {
|
|
"id": {
|
|
"type": "string"
|
|
},
|
|
"userId": {
|
|
"type": "string"
|
|
},
|
|
"teamId": {
|
|
"type": "string"
|
|
},
|
|
"type": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string",
|
|
"enum": ["uptime", "infrastructure"]
|
|
}
|
|
},
|
|
"companyName": {
|
|
"type": "string"
|
|
},
|
|
"url": {
|
|
"type": "string"
|
|
},
|
|
"customDomain": {
|
|
"type": "string",
|
|
"nullable": true
|
|
},
|
|
"timezone": {
|
|
"type": "string"
|
|
},
|
|
"color": {
|
|
"type": "string"
|
|
},
|
|
"monitors": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"subMonitors": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"originalMonitors": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"logo": {
|
|
"type": "object",
|
|
"nullable": true,
|
|
"properties": {
|
|
"data": {
|
|
"type": "string"
|
|
},
|
|
"contentType": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": ["data", "contentType"]
|
|
},
|
|
"isPublished": {
|
|
"type": "boolean"
|
|
},
|
|
"showCharts": {
|
|
"type": "boolean"
|
|
},
|
|
"showUptimePercentage": {
|
|
"type": "boolean"
|
|
},
|
|
"showAdminLoginLink": {
|
|
"type": "boolean"
|
|
},
|
|
"showInfrastructure": {
|
|
"type": "boolean"
|
|
},
|
|
"customCSS": {
|
|
"type": "string"
|
|
},
|
|
"theme": {
|
|
"type": "string",
|
|
"enum": ["refined", "modern", "bold", "editorial", "minimal"]
|
|
},
|
|
"themeMode": {
|
|
"type": "string",
|
|
"enum": ["auto", "light", "dark"]
|
|
},
|
|
"createdAt": {
|
|
"type": "string"
|
|
},
|
|
"updatedAt": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": [
|
|
"id",
|
|
"userId",
|
|
"teamId",
|
|
"type",
|
|
"companyName",
|
|
"url",
|
|
"color",
|
|
"monitors",
|
|
"subMonitors",
|
|
"isPublished",
|
|
"showCharts",
|
|
"showUptimePercentage",
|
|
"showAdminLoginLink",
|
|
"showInfrastructure",
|
|
"customCSS",
|
|
"theme",
|
|
"themeMode",
|
|
"createdAt",
|
|
"updatedAt"
|
|
]
|
|
},
|
|
"monitors": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "object",
|
|
"properties": {
|
|
"id": {
|
|
"type": "string"
|
|
},
|
|
"name": {
|
|
"type": "string"
|
|
},
|
|
"type": {
|
|
"type": "string",
|
|
"enum": ["http", "ping", "pagespeed", "hardware", "docker", "port", "game", "grpc", "websocket", "dns", "unknown"]
|
|
},
|
|
"status": {
|
|
"type": "string",
|
|
"enum": ["up", "down", "paused", "initializing", "maintenance", "breached"]
|
|
},
|
|
"uptimePercentage": {
|
|
"type": "number"
|
|
},
|
|
"recentChecks": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "object",
|
|
"properties": {
|
|
"id": {
|
|
"type": "string"
|
|
},
|
|
"status": {
|
|
"type": "boolean"
|
|
},
|
|
"responseTime": {
|
|
"type": "number"
|
|
},
|
|
"statusCode": {
|
|
"type": "number"
|
|
},
|
|
"message": {
|
|
"type": "string"
|
|
},
|
|
"createdAt": {
|
|
"type": "string"
|
|
},
|
|
"accessibility": {
|
|
"type": "number"
|
|
},
|
|
"bestPractices": {
|
|
"type": "number"
|
|
},
|
|
"seo": {
|
|
"type": "number"
|
|
},
|
|
"performance": {
|
|
"type": "number"
|
|
},
|
|
"containerSummary": {
|
|
"type": "object",
|
|
"properties": {
|
|
"total": {
|
|
"type": "number"
|
|
},
|
|
"running": {
|
|
"type": "number"
|
|
},
|
|
"stopped": {
|
|
"type": "number"
|
|
},
|
|
"unhealthy": {
|
|
"type": "number"
|
|
}
|
|
},
|
|
"required": ["total", "running", "stopped", "unhealthy"]
|
|
}
|
|
},
|
|
"required": ["id", "status", "responseTime", "statusCode", "message", "createdAt"],
|
|
"additionalProperties": {
|
|
"nullable": true
|
|
}
|
|
}
|
|
},
|
|
"url": {
|
|
"type": "string"
|
|
},
|
|
"port": {
|
|
"type": "number"
|
|
},
|
|
"dailyChecks": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "object",
|
|
"properties": {
|
|
"monitorId": {
|
|
"type": "string"
|
|
},
|
|
"date": {
|
|
"type": "string"
|
|
},
|
|
"totalChecks": {
|
|
"type": "number"
|
|
},
|
|
"upChecks": {
|
|
"type": "number"
|
|
},
|
|
"downChecks": {
|
|
"type": "number"
|
|
},
|
|
"avgResponseTime": {
|
|
"type": "number",
|
|
"nullable": true
|
|
}
|
|
},
|
|
"required": ["monitorId", "date", "totalChecks", "upChecks", "downChecks", "avgResponseTime"]
|
|
}
|
|
}
|
|
},
|
|
"required": ["id", "name", "type", "status", "recentChecks"]
|
|
}
|
|
},
|
|
"range": {
|
|
"type": "string",
|
|
"enum": ["30d", "60d", "90d"]
|
|
},
|
|
"bucketTimezone": {
|
|
"type": "string"
|
|
},
|
|
"checkTTLDays": {
|
|
"type": "number"
|
|
}
|
|
},
|
|
"required": ["statusPage", "monitors"],
|
|
"example": {
|
|
"statusPage": {
|
|
"id": "65f1c2a4d8b9e0123456789c",
|
|
"userId": "65f1c2a4d8b9e01234567891",
|
|
"teamId": "65f1c2a4d8b9e01234567890",
|
|
"type": ["uptime"],
|
|
"companyName": "Acme",
|
|
"url": "acme-status",
|
|
"customDomain": null,
|
|
"timezone": "America/Toronto",
|
|
"color": "#4169E1",
|
|
"monitors": ["65f1c2a4d8b9e0123456789a"],
|
|
"subMonitors": [],
|
|
"isPublished": true,
|
|
"showCharts": true,
|
|
"showUptimePercentage": true,
|
|
"showAdminLoginLink": false,
|
|
"showInfrastructure": false,
|
|
"customCSS": "",
|
|
"theme": "refined",
|
|
"themeMode": "auto",
|
|
"createdAt": "2026-04-01T10:00:00.000Z",
|
|
"updatedAt": "2026-04-15T14:30:00.000Z"
|
|
},
|
|
"range": "90d",
|
|
"bucketTimezone": "America/Toronto",
|
|
"checkTTLDays": 30,
|
|
"monitors": [
|
|
{
|
|
"id": "65f1c2a4d8b9e0123456789a",
|
|
"name": "API",
|
|
"type": "http",
|
|
"status": "up",
|
|
"uptimePercentage": 0.9987,
|
|
"recentChecks": [],
|
|
"dailyChecks": [
|
|
{
|
|
"monitorId": "65f1c2a4d8b9e0123456789a",
|
|
"date": "2026-07-19",
|
|
"totalChecks": 2880,
|
|
"upChecks": 2877,
|
|
"downChecks": 3,
|
|
"avgResponseTime": 142
|
|
}
|
|
]
|
|
}
|
|
]
|
|
}
|
|
}
|
|
},
|
|
"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/docker/details/{monitorId}": {
|
|
"get": {
|
|
"tags": ["monitors"],
|
|
"summary": "Get Docker host 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": 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": {
|
|
"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"
|
|
},
|
|
"proxyMode": {
|
|
"type": "string",
|
|
"enum": ["inherit", "none", "custom"]
|
|
},
|
|
"proxyId": {
|
|
"type": "string"
|
|
},
|
|
"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"
|
|
},
|
|
"dockerLogsEnabled": {
|
|
"type": "boolean"
|
|
},
|
|
"dockerTlsCa": {
|
|
"type": "string"
|
|
},
|
|
"dockerTlsCert": {
|
|
"type": "string"
|
|
},
|
|
"dockerTlsKeySet": {
|
|
"type": "boolean"
|
|
},
|
|
"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",
|
|
"proxyMode",
|
|
"useAdvancedMatching",
|
|
"method",
|
|
"notifications",
|
|
"tags",
|
|
"cpuAlertThreshold",
|
|
"memoryAlertThreshold",
|
|
"diskAlertThreshold",
|
|
"tempAlertThreshold",
|
|
"selectedDisks",
|
|
"geoCheckEnabled",
|
|
"geoCheckLocations",
|
|
"geoCheckInterval",
|
|
"dockerLogsEnabled",
|
|
"teamId",
|
|
"userId",
|
|
"createdAt",
|
|
"updatedAt",
|
|
"lastEvaluatedAt",
|
|
"id"
|
|
],
|
|
"additionalProperties": {
|
|
"nullable": true
|
|
}
|
|
},
|
|
"stats": {
|
|
"type": "object",
|
|
"properties": {
|
|
"aggregateData": {
|
|
"type": "object",
|
|
"properties": {
|
|
"totalChecks": {
|
|
"type": "number"
|
|
}
|
|
},
|
|
"required": ["totalChecks"]
|
|
},
|
|
"upChecks": {
|
|
"type": "object",
|
|
"properties": {
|
|
"totalChecks": {
|
|
"type": "number"
|
|
}
|
|
},
|
|
"required": ["totalChecks"]
|
|
},
|
|
"aggregate": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "object",
|
|
"properties": {
|
|
"_id": {
|
|
"type": "string"
|
|
},
|
|
"avgResponseTime": {
|
|
"type": "number",
|
|
"nullable": true
|
|
},
|
|
"upCount": {
|
|
"type": "number"
|
|
},
|
|
"totalCount": {
|
|
"type": "number"
|
|
},
|
|
"avgRunning": {
|
|
"type": "number",
|
|
"nullable": true
|
|
},
|
|
"avgTotal": {
|
|
"type": "number",
|
|
"nullable": true
|
|
},
|
|
"avgUnhealthy": {
|
|
"type": "number",
|
|
"nullable": true
|
|
}
|
|
},
|
|
"required": ["_id", "avgResponseTime", "upCount", "totalCount", "avgRunning", "avgTotal", "avgUnhealthy"]
|
|
}
|
|
},
|
|
"latest": {
|
|
"type": "object",
|
|
"nullable": true,
|
|
"properties": {
|
|
"containers": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "object",
|
|
"properties": {
|
|
"id": {
|
|
"type": "string"
|
|
},
|
|
"name": {
|
|
"type": "string"
|
|
},
|
|
"image": {
|
|
"type": "string"
|
|
},
|
|
"state": {
|
|
"type": "string",
|
|
"enum": ["created", "running", "paused", "restarting", "removing", "exited", "dead"]
|
|
},
|
|
"status": {
|
|
"type": "string"
|
|
},
|
|
"health": {
|
|
"type": "string",
|
|
"enum": ["healthy", "unhealthy", "starting", "none"]
|
|
},
|
|
"cpuPct": {
|
|
"type": "number"
|
|
},
|
|
"memoryUsedBytes": {
|
|
"type": "number"
|
|
},
|
|
"memoryLimitBytes": {
|
|
"type": "number"
|
|
},
|
|
"memoryPct": {
|
|
"type": "number"
|
|
},
|
|
"restartCount": {
|
|
"type": "number"
|
|
},
|
|
"startedAt": {
|
|
"type": "string"
|
|
},
|
|
"ports": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "object",
|
|
"properties": {
|
|
"privatePort": {
|
|
"type": "number"
|
|
},
|
|
"protocol": {
|
|
"type": "string",
|
|
"enum": ["tcp", "udp", "sctp"]
|
|
},
|
|
"publicPort": {
|
|
"type": "number"
|
|
},
|
|
"hostIp": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": ["privatePort", "protocol"]
|
|
}
|
|
},
|
|
"mounts": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "object",
|
|
"properties": {
|
|
"type": {
|
|
"type": "string"
|
|
},
|
|
"name": {
|
|
"type": "string"
|
|
},
|
|
"source": {
|
|
"type": "string"
|
|
},
|
|
"destination": {
|
|
"type": "string"
|
|
},
|
|
"mode": {
|
|
"type": "string"
|
|
},
|
|
"rw": {
|
|
"type": "boolean"
|
|
}
|
|
},
|
|
"required": ["type", "source", "destination", "mode", "rw"]
|
|
}
|
|
}
|
|
},
|
|
"required": ["id", "name", "image", "state", "status", "health"]
|
|
}
|
|
},
|
|
"summary": {
|
|
"type": "object",
|
|
"properties": {
|
|
"total": {
|
|
"type": "number"
|
|
},
|
|
"running": {
|
|
"type": "number"
|
|
},
|
|
"stopped": {
|
|
"type": "number"
|
|
},
|
|
"unhealthy": {
|
|
"type": "number"
|
|
}
|
|
},
|
|
"required": ["total", "running", "stopped", "unhealthy"]
|
|
},
|
|
"checkedAt": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": ["containers", "checkedAt"]
|
|
}
|
|
},
|
|
"required": ["aggregateData", "upChecks", "aggregate", "latest"]
|
|
},
|
|
"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": ["monitor", "stats", "monitorStats"]
|
|
}
|
|
},
|
|
"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/docker/details/{monitorId}/containers/{containerName}": {
|
|
"get": {
|
|
"tags": ["monitors"],
|
|
"summary": "Get details for one container on a Docker host monitor",
|
|
"security": [
|
|
{
|
|
"bearerAuth": []
|
|
}
|
|
],
|
|
"parameters": [
|
|
{
|
|
"schema": {
|
|
"type": "string",
|
|
"minLength": 1
|
|
},
|
|
"required": true,
|
|
"name": "monitorId",
|
|
"in": "path"
|
|
},
|
|
{
|
|
"schema": {
|
|
"type": "string",
|
|
"minLength": 1
|
|
},
|
|
"required": true,
|
|
"name": "containerName",
|
|
"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": {
|
|
"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"
|
|
},
|
|
"proxyMode": {
|
|
"type": "string",
|
|
"enum": ["inherit", "none", "custom"]
|
|
},
|
|
"proxyId": {
|
|
"type": "string"
|
|
},
|
|
"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"
|
|
},
|
|
"dockerLogsEnabled": {
|
|
"type": "boolean"
|
|
},
|
|
"dockerTlsCa": {
|
|
"type": "string"
|
|
},
|
|
"dockerTlsCert": {
|
|
"type": "string"
|
|
},
|
|
"dockerTlsKeySet": {
|
|
"type": "boolean"
|
|
},
|
|
"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",
|
|
"proxyMode",
|
|
"useAdvancedMatching",
|
|
"method",
|
|
"notifications",
|
|
"tags",
|
|
"cpuAlertThreshold",
|
|
"memoryAlertThreshold",
|
|
"diskAlertThreshold",
|
|
"tempAlertThreshold",
|
|
"selectedDisks",
|
|
"geoCheckEnabled",
|
|
"geoCheckLocations",
|
|
"geoCheckInterval",
|
|
"dockerLogsEnabled",
|
|
"teamId",
|
|
"userId",
|
|
"createdAt",
|
|
"updatedAt",
|
|
"lastEvaluatedAt",
|
|
"id"
|
|
],
|
|
"additionalProperties": {
|
|
"nullable": true
|
|
}
|
|
},
|
|
"stats": {
|
|
"type": "object",
|
|
"properties": {
|
|
"aggregate": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "object",
|
|
"properties": {
|
|
"_id": {
|
|
"type": "string"
|
|
},
|
|
"avgCpuPct": {
|
|
"type": "number",
|
|
"nullable": true
|
|
},
|
|
"avgMemoryUsedBytes": {
|
|
"type": "number",
|
|
"nullable": true
|
|
},
|
|
"avgMemoryPct": {
|
|
"type": "number",
|
|
"nullable": true
|
|
},
|
|
"minRestartCount": {
|
|
"type": "number",
|
|
"nullable": true
|
|
},
|
|
"maxRestartCount": {
|
|
"type": "number",
|
|
"nullable": true
|
|
}
|
|
},
|
|
"required": ["_id", "avgCpuPct", "avgMemoryUsedBytes", "avgMemoryPct", "minRestartCount", "maxRestartCount"]
|
|
}
|
|
},
|
|
"restartsInRange": {
|
|
"type": "number"
|
|
},
|
|
"latest": {
|
|
"type": "object",
|
|
"nullable": true,
|
|
"properties": {
|
|
"container": {
|
|
"type": "object",
|
|
"properties": {
|
|
"id": {
|
|
"type": "string"
|
|
},
|
|
"name": {
|
|
"type": "string"
|
|
},
|
|
"image": {
|
|
"type": "string"
|
|
},
|
|
"state": {
|
|
"type": "string",
|
|
"enum": ["created", "running", "paused", "restarting", "removing", "exited", "dead"]
|
|
},
|
|
"status": {
|
|
"type": "string"
|
|
},
|
|
"health": {
|
|
"type": "string",
|
|
"enum": ["healthy", "unhealthy", "starting", "none"]
|
|
},
|
|
"cpuPct": {
|
|
"type": "number"
|
|
},
|
|
"memoryUsedBytes": {
|
|
"type": "number"
|
|
},
|
|
"memoryLimitBytes": {
|
|
"type": "number"
|
|
},
|
|
"memoryPct": {
|
|
"type": "number"
|
|
},
|
|
"restartCount": {
|
|
"type": "number"
|
|
},
|
|
"startedAt": {
|
|
"type": "string"
|
|
},
|
|
"ports": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "object",
|
|
"properties": {
|
|
"privatePort": {
|
|
"type": "number"
|
|
},
|
|
"protocol": {
|
|
"type": "string",
|
|
"enum": ["tcp", "udp", "sctp"]
|
|
},
|
|
"publicPort": {
|
|
"type": "number"
|
|
},
|
|
"hostIp": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": ["privatePort", "protocol"]
|
|
}
|
|
},
|
|
"mounts": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "object",
|
|
"properties": {
|
|
"type": {
|
|
"type": "string"
|
|
},
|
|
"name": {
|
|
"type": "string"
|
|
},
|
|
"source": {
|
|
"type": "string"
|
|
},
|
|
"destination": {
|
|
"type": "string"
|
|
},
|
|
"mode": {
|
|
"type": "string"
|
|
},
|
|
"rw": {
|
|
"type": "boolean"
|
|
}
|
|
},
|
|
"required": ["type", "source", "destination", "mode", "rw"]
|
|
}
|
|
}
|
|
},
|
|
"required": ["id", "name", "image", "state", "status", "health"]
|
|
},
|
|
"checkedAt": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": ["container", "checkedAt"]
|
|
}
|
|
},
|
|
"required": ["aggregate", "restartsInRange", "latest"]
|
|
}
|
|
},
|
|
"required": ["monitor", "stats"]
|
|
}
|
|
},
|
|
"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/docker/details/{monitorId}/containers/{containerName}/logs": {
|
|
"get": {
|
|
"tags": ["monitors"],
|
|
"summary": "Get stored log lines for one container on a Docker host monitor, newest first",
|
|
"security": [
|
|
{
|
|
"bearerAuth": []
|
|
}
|
|
],
|
|
"parameters": [
|
|
{
|
|
"schema": {
|
|
"type": "string",
|
|
"minLength": 1
|
|
},
|
|
"required": true,
|
|
"name": "monitorId",
|
|
"in": "path"
|
|
},
|
|
{
|
|
"schema": {
|
|
"type": "string",
|
|
"minLength": 1
|
|
},
|
|
"required": true,
|
|
"name": "containerName",
|
|
"in": "path"
|
|
},
|
|
{
|
|
"schema": {
|
|
"type": "string",
|
|
"format": "date-time"
|
|
},
|
|
"required": false,
|
|
"name": "before",
|
|
"in": "query"
|
|
},
|
|
{
|
|
"schema": {
|
|
"type": "string",
|
|
"format": "date-time"
|
|
},
|
|
"required": false,
|
|
"name": "after",
|
|
"in": "query"
|
|
},
|
|
{
|
|
"schema": {
|
|
"type": "integer",
|
|
"minimum": 1,
|
|
"maximum": 50,
|
|
"default": 20
|
|
},
|
|
"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": {
|
|
"type": "object",
|
|
"properties": {
|
|
"logs": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "object",
|
|
"properties": {
|
|
"id": {
|
|
"type": "string"
|
|
},
|
|
"metadata": {
|
|
"type": "object",
|
|
"properties": {
|
|
"monitorId": {
|
|
"type": "string"
|
|
},
|
|
"teamId": {
|
|
"type": "string"
|
|
},
|
|
"containerId": {
|
|
"type": "string"
|
|
},
|
|
"containerName": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": ["monitorId", "teamId", "containerId", "containerName"]
|
|
},
|
|
"lines": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "object",
|
|
"properties": {
|
|
"ts": {
|
|
"type": "string"
|
|
},
|
|
"stream": {
|
|
"type": "string",
|
|
"enum": ["stdout", "stderr"]
|
|
},
|
|
"text": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": ["ts", "stream", "text"]
|
|
}
|
|
},
|
|
"gap": {
|
|
"type": "boolean"
|
|
},
|
|
"checkedAt": {
|
|
"type": "string"
|
|
},
|
|
"expiry": {
|
|
"type": "string"
|
|
},
|
|
"createdAt": {
|
|
"type": "string"
|
|
},
|
|
"updatedAt": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": ["id", "metadata", "lines", "gap", "checkedAt", "expiry", "createdAt", "updatedAt"]
|
|
}
|
|
},
|
|
"nextCursor": {
|
|
"type": "string",
|
|
"nullable": true
|
|
}
|
|
},
|
|
"required": ["logs", "nextCursor"]
|
|
}
|
|
},
|
|
"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/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": {
|
|
"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/domain/{monitorId}": {
|
|
"get": {
|
|
"tags": ["monitors"],
|
|
"summary": "Get domain registration expiry 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": {
|
|
"domain": {
|
|
"type": "string",
|
|
"nullable": true
|
|
},
|
|
"expiryDate": {
|
|
"type": "string",
|
|
"nullable": true
|
|
}
|
|
},
|
|
"required": ["domain", "expiryDate"]
|
|
}
|
|
},
|
|
"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
|
|
},
|
|
"proxyMode": {
|
|
"type": "string",
|
|
"enum": ["inherit", "none", "custom"],
|
|
"default": "inherit"
|
|
},
|
|
"proxyId": {
|
|
"type": "string"
|
|
},
|
|
"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
|
|
},
|
|
"dockerLogsEnabled": {
|
|
"type": "boolean"
|
|
},
|
|
"dockerTlsCa": {
|
|
"anyOf": [
|
|
{
|
|
"type": "string"
|
|
},
|
|
{
|
|
"type": "string",
|
|
"enum": [""]
|
|
}
|
|
]
|
|
},
|
|
"dockerTlsCert": {
|
|
"anyOf": [
|
|
{
|
|
"type": "string"
|
|
},
|
|
{
|
|
"type": "string",
|
|
"enum": [""]
|
|
}
|
|
]
|
|
},
|
|
"dockerTlsKey": {
|
|
"anyOf": [
|
|
{
|
|
"type": "string"
|
|
},
|
|
{
|
|
"type": "string",
|
|
"enum": [""]
|
|
}
|
|
]
|
|
},
|
|
"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
|
|
},
|
|
"proxyMode": {
|
|
"type": "string",
|
|
"enum": ["inherit", "none", "custom"],
|
|
"default": "inherit"
|
|
},
|
|
"proxyId": {
|
|
"type": "string"
|
|
},
|
|
"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
|
|
},
|
|
"dockerLogsEnabled": {
|
|
"type": "boolean",
|
|
"default": false
|
|
},
|
|
"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"
|
|
},
|
|
"proxyMode": {
|
|
"type": "string",
|
|
"enum": ["inherit", "none", "custom"]
|
|
},
|
|
"proxyId": {
|
|
"type": "string"
|
|
},
|
|
"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
|
|
},
|
|
"dockerLogsEnabled": {
|
|
"type": "boolean"
|
|
},
|
|
"dockerTlsCa": {
|
|
"anyOf": [
|
|
{
|
|
"type": "string"
|
|
},
|
|
{
|
|
"type": "string",
|
|
"enum": [""]
|
|
}
|
|
]
|
|
},
|
|
"dockerTlsCert": {
|
|
"anyOf": [
|
|
{
|
|
"type": "string"
|
|
},
|
|
{
|
|
"type": "string",
|
|
"enum": [""]
|
|
}
|
|
]
|
|
},
|
|
"dockerTlsKey": {
|
|
"anyOf": [
|
|
{
|
|
"type": "string"
|
|
},
|
|
{
|
|
"type": "string",
|
|
"enum": [""]
|
|
}
|
|
]
|
|
},
|
|
"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"]
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/proxies": {
|
|
"post": {
|
|
"tags": ["proxies"],
|
|
"summary": "Create a proxy for the caller's team",
|
|
"security": [
|
|
{
|
|
"bearerAuth": []
|
|
}
|
|
],
|
|
"requestBody": {
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object",
|
|
"properties": {
|
|
"name": {
|
|
"type": "string",
|
|
"minLength": 1
|
|
},
|
|
"protocol": {
|
|
"type": "string",
|
|
"enum": ["http", "https"]
|
|
},
|
|
"host": {
|
|
"type": "string",
|
|
"minLength": 1
|
|
},
|
|
"port": {
|
|
"type": "integer",
|
|
"minimum": 1,
|
|
"maximum": 65535
|
|
},
|
|
"username": {
|
|
"type": "string"
|
|
},
|
|
"password": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": ["name", "protocol", "host", "port"]
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object",
|
|
"properties": {
|
|
"success": {
|
|
"type": "boolean",
|
|
"enum": [true]
|
|
},
|
|
"msg": {
|
|
"type": "string"
|
|
},
|
|
"data": {
|
|
"type": "object",
|
|
"properties": {
|
|
"id": {
|
|
"type": "string"
|
|
},
|
|
"teamId": {
|
|
"type": "string"
|
|
},
|
|
"name": {
|
|
"type": "string"
|
|
},
|
|
"protocol": {
|
|
"type": "string",
|
|
"enum": ["http", "https"]
|
|
},
|
|
"host": {
|
|
"type": "string"
|
|
},
|
|
"port": {
|
|
"type": "number"
|
|
},
|
|
"username": {
|
|
"type": "string"
|
|
},
|
|
"hasPassword": {
|
|
"type": "boolean"
|
|
},
|
|
"createdAt": {
|
|
"type": "string"
|
|
},
|
|
"updatedAt": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": ["id", "teamId", "name", "protocol", "host", "port", "hasPassword", "createdAt", "updatedAt"],
|
|
"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"]
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"get": {
|
|
"tags": ["proxies"],
|
|
"summary": "List all proxies on the instance (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": {
|
|
"type": "object",
|
|
"properties": {
|
|
"id": {
|
|
"type": "string"
|
|
},
|
|
"teamId": {
|
|
"type": "string"
|
|
},
|
|
"name": {
|
|
"type": "string"
|
|
},
|
|
"protocol": {
|
|
"type": "string",
|
|
"enum": ["http", "https"]
|
|
},
|
|
"host": {
|
|
"type": "string"
|
|
},
|
|
"port": {
|
|
"type": "number"
|
|
},
|
|
"username": {
|
|
"type": "string"
|
|
},
|
|
"hasPassword": {
|
|
"type": "boolean"
|
|
},
|
|
"createdAt": {
|
|
"type": "string"
|
|
},
|
|
"updatedAt": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": ["id", "teamId", "name", "protocol", "host", "port", "hasPassword", "createdAt", "updatedAt"],
|
|
"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"]
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/proxies/team": {
|
|
"get": {
|
|
"tags": ["proxies"],
|
|
"summary": "List proxies 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": "object",
|
|
"properties": {
|
|
"id": {
|
|
"type": "string"
|
|
},
|
|
"teamId": {
|
|
"type": "string"
|
|
},
|
|
"name": {
|
|
"type": "string"
|
|
},
|
|
"protocol": {
|
|
"type": "string",
|
|
"enum": ["http", "https"]
|
|
},
|
|
"host": {
|
|
"type": "string"
|
|
},
|
|
"port": {
|
|
"type": "number"
|
|
},
|
|
"username": {
|
|
"type": "string"
|
|
},
|
|
"hasPassword": {
|
|
"type": "boolean"
|
|
},
|
|
"createdAt": {
|
|
"type": "string"
|
|
},
|
|
"updatedAt": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": ["id", "teamId", "name", "protocol", "host", "port", "hasPassword", "createdAt", "updatedAt"],
|
|
"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"]
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/proxies/{id}": {
|
|
"get": {
|
|
"tags": ["proxies"],
|
|
"summary": "Get a proxy 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": {
|
|
"type": "object",
|
|
"properties": {
|
|
"id": {
|
|
"type": "string"
|
|
},
|
|
"teamId": {
|
|
"type": "string"
|
|
},
|
|
"name": {
|
|
"type": "string"
|
|
},
|
|
"protocol": {
|
|
"type": "string",
|
|
"enum": ["http", "https"]
|
|
},
|
|
"host": {
|
|
"type": "string"
|
|
},
|
|
"port": {
|
|
"type": "number"
|
|
},
|
|
"username": {
|
|
"type": "string"
|
|
},
|
|
"hasPassword": {
|
|
"type": "boolean"
|
|
},
|
|
"createdAt": {
|
|
"type": "string"
|
|
},
|
|
"updatedAt": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": ["id", "teamId", "name", "protocol", "host", "port", "hasPassword", "createdAt", "updatedAt"],
|
|
"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"]
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"patch": {
|
|
"tags": ["proxies"],
|
|
"summary": "Edit a proxy",
|
|
"security": [
|
|
{
|
|
"bearerAuth": []
|
|
}
|
|
],
|
|
"parameters": [
|
|
{
|
|
"schema": {
|
|
"type": "string",
|
|
"minLength": 1
|
|
},
|
|
"required": true,
|
|
"name": "id",
|
|
"in": "path"
|
|
}
|
|
],
|
|
"requestBody": {
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object",
|
|
"properties": {
|
|
"name": {
|
|
"type": "string",
|
|
"minLength": 1
|
|
},
|
|
"protocol": {
|
|
"type": "string",
|
|
"enum": ["http", "https"]
|
|
},
|
|
"host": {
|
|
"type": "string",
|
|
"minLength": 1
|
|
},
|
|
"port": {
|
|
"type": "integer",
|
|
"minimum": 1,
|
|
"maximum": 65535
|
|
},
|
|
"username": {
|
|
"type": "string"
|
|
},
|
|
"password": {
|
|
"type": "string"
|
|
},
|
|
"clearPassword": {
|
|
"type": "boolean"
|
|
},
|
|
"clearUsername": {
|
|
"type": "boolean"
|
|
}
|
|
},
|
|
"required": ["name", "protocol", "host", "port"]
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object",
|
|
"properties": {
|
|
"success": {
|
|
"type": "boolean",
|
|
"enum": [true]
|
|
},
|
|
"msg": {
|
|
"type": "string"
|
|
},
|
|
"data": {
|
|
"type": "object",
|
|
"properties": {
|
|
"id": {
|
|
"type": "string"
|
|
},
|
|
"teamId": {
|
|
"type": "string"
|
|
},
|
|
"name": {
|
|
"type": "string"
|
|
},
|
|
"protocol": {
|
|
"type": "string",
|
|
"enum": ["http", "https"]
|
|
},
|
|
"host": {
|
|
"type": "string"
|
|
},
|
|
"port": {
|
|
"type": "number"
|
|
},
|
|
"username": {
|
|
"type": "string"
|
|
},
|
|
"hasPassword": {
|
|
"type": "boolean"
|
|
},
|
|
"createdAt": {
|
|
"type": "string"
|
|
},
|
|
"updatedAt": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": ["id", "teamId", "name", "protocol", "host", "port", "hasPassword", "createdAt", "updatedAt"],
|
|
"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"]
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"delete": {
|
|
"tags": ["proxies"],
|
|
"summary": "Delete a proxy",
|
|
"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": {
|
|
"type": "object",
|
|
"properties": {
|
|
"id": {
|
|
"type": "string"
|
|
},
|
|
"teamId": {
|
|
"type": "string"
|
|
},
|
|
"name": {
|
|
"type": "string"
|
|
},
|
|
"protocol": {
|
|
"type": "string",
|
|
"enum": ["http", "https"]
|
|
},
|
|
"host": {
|
|
"type": "string"
|
|
},
|
|
"port": {
|
|
"type": "number"
|
|
},
|
|
"username": {
|
|
"type": "string"
|
|
},
|
|
"hasPassword": {
|
|
"type": "boolean"
|
|
},
|
|
"createdAt": {
|
|
"type": "string"
|
|
},
|
|
"updatedAt": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": ["id", "teamId", "name", "protocol", "host", "port", "hasPassword", "createdAt", "updatedAt"],
|
|
"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"]
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"409": {
|
|
"description": "Proxy is in use by monitors or set as the global proxy",
|
|
"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
|
|
}
|
|
}
|
|
},
|
|
"globalProxyEnabled": {
|
|
"type": "boolean"
|
|
},
|
|
"globalProxyId": {
|
|
"type": "string",
|
|
"nullable": true
|
|
},
|
|
"egressCheckEnabled": {
|
|
"type": "boolean"
|
|
},
|
|
"egressCheckTargets": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string",
|
|
"minLength": 1,
|
|
"maxLength": 253
|
|
},
|
|
"maxItems": 10
|
|
},
|
|
"egressPollIntervalSeconds": {
|
|
"type": "integer",
|
|
"minimum": 5,
|
|
"maximum": 600
|
|
},
|
|
"egressNotifications": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string",
|
|
"pattern": "^[0-9a-fA-F]{24}$"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"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": "string",
|
|
"enum": ["latest", "30d", "60d", "90d"],
|
|
"default": "latest"
|
|
},
|
|
"required": false,
|
|
"name": "range",
|
|
"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": {
|
|
"$ref": "#/components/schemas/PublicStatusPagePayload"
|
|
}
|
|
},
|
|
"required": ["success", "msg", "data"]
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"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": "string",
|
|
"enum": ["latest", "30d", "60d", "90d"],
|
|
"default": "latest"
|
|
},
|
|
"required": false,
|
|
"name": "range",
|
|
"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/PublicStatusPagePayload"
|
|
}
|
|
},
|
|
"required": ["success", "msg", "data"]
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"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"]
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|