{
	"openapi": "3.1.0",
	"info": {
		"title": "Checkmate API",
		"summary": "Checkmate OpenAPI Specifications",
		"description": "Checkmate is an open source monitoring tool used to track the operational status and performance of servers and websites. It regularly checks whether a server/website is accessible and performs optimally, providing real-time alerts and reports on the monitored services' availability, downtime, and response time.",
		"contact": {
			"name": "API Support",
			"url": "mailto:support@bluewavelabs.ca",
			"email": "support@bluewavelabs.ca"
		},
		"license": {
			"name": "AGPLv3",
			"url": "https://github.com/bluewave-labs/checkmate/tree/HEAD/LICENSE"
		},
		"version": "2.3"
	},
	"servers": [
		{
			"url": "http://localhost:{PORT}/{API_PATH}",
			"description": "Local Development Server",
			"variables": {
				"PORT": {
					"description": "API Port",
					"enum": ["52345"],
					"default": "52345"
				},
				"API_PATH": {
					"description": "API Base Path",
					"enum": ["api/v1"],
					"default": "api/v1"
				}
			}
		},
		{
			"url": "https://checkmate-demo.bluewavelabs.ca/{API_PATH}",
			"description": "Checkmate Demo Server",
			"variables": {
				"API_PATH": {
					"description": "API Base Path",
					"enum": ["api/v1"],
					"default": "api/v1"
				}
			}
		}
	],
	"tags": [
		{
			"name": "auth",
			"description": "Authentication and user management"
		},
		{
			"name": "invite",
			"description": "Team invitation management"
		},
		{
			"name": "monitors",
			"description": "Monitor management (uptime, page speed, hardware)"
		},
		{
			"name": "checks",
			"description": "Monitor check results and history"
		},
		{
			"name": "maintenance-window",
			"description": "Scheduled maintenance windows"
		},
		{
			"name": "queue",
			"description": "Job queue management"
		},
		{
			"name": "status-page",
			"description": "Public status page management"
		},
		{
			"name": "settings",
			"description": "Application configuration settings"
		},
		{
			"name": "logs",
			"description": "Application logs and diagnostics"
		},
		{
			"name": "notifications",
			"description": "Notification integrations (email, slack, discord, etc.)"
		},
		{
			"name": "diagnostic",
			"description": "System health and performance diagnostics"
		}
	],
	"paths": {
		"/auth/register": {
			"post": {
				"tags": ["auth"],
				"summary": "Register new user",
				"description": "Register a new user account with profile information",
				"requestBody": {
					"required": true,
					"content": {
						"application/json": {
							"schema": {
								"$ref": "#/components/schemas/RegisterRequest"
							}
						}
					}
				},
				"responses": {
					"200": {
						"description": "User registered successfully",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/AuthResponse"
								}
							}
						}
					},
					"422": {
						"$ref": "#/components/responses/ValidationError"
					},
					"500": {
						"$ref": "#/components/responses/InternalServerError"
					}
				}
			}
		},
		"/auth/login": {
			"post": {
				"tags": ["auth"],
				"summary": "User login",
				"description": "Authenticate user with email and password",
				"requestBody": {
					"required": true,
					"content": {
						"application/json": {
							"schema": {
								"$ref": "#/components/schemas/LoginRequest"
							}
						}
					}
				},
				"responses": {
					"200": {
						"description": "Login successful",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/AuthResponse"
								}
							}
						}
					},
					"401": {
						"$ref": "#/components/responses/Unauthorized"
					},
					"422": {
						"$ref": "#/components/responses/ValidationError"
					},
					"500": {
						"$ref": "#/components/responses/InternalServerError"
					}
				}
			}
		},
		"/auth/refresh": {
			"post": {
				"tags": ["auth"],
				"summary": "Refresh access token",
				"description": "Generate new access token using refresh token",
				"parameters": [
					{
						"name": "x-refresh-token",
						"in": "header",
						"description": "Refresh token",
						"required": true,
						"schema": {
							"type": "string"
						}
					},
					{
						"name": "authorization",
						"in": "header",
						"description": "Bearer token (old access token)",
						"required": true,
						"schema": {
							"type": "string"
						}
					}
				],
				"responses": {
					"200": {
						"description": "Token refreshed successfully",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/AuthResponse"
								}
							}
						}
					},
					"401": {
						"$ref": "#/components/responses/Unauthorized"
					},
					"500": {
						"$ref": "#/components/responses/InternalServerError"
					}
				}
			}
		},
		"/auth/user/{userId}": {
			"put": {
				"tags": ["auth"],
				"summary": "Update user profile",
				"description": "Update user information including profile image",
				"parameters": [
					{
						"name": "userId",
						"in": "path",
						"required": true,
						"schema": {
							"type": "string"
						}
					}
				],
				"requestBody": {
					"required": true,
					"content": {
						"multipart/form-data": {
							"schema": {
								"$ref": "#/components/schemas/UserUpdateRequest"
							}
						}
					}
				},
				"responses": {
					"200": {
						"$ref": "#/components/responses/Success"
					},
					"422": {
						"$ref": "#/components/responses/ValidationError"
					},
					"500": {
						"$ref": "#/components/responses/InternalServerError"
					}
				},
				"security": [
					{
						"bearerAuth": []
					}
				]
			},
			"delete": {
				"tags": ["auth"],
				"summary": "Delete user account",
				"description": "Permanently delete user account and associated data",
				"parameters": [
					{
						"name": "userId",
						"in": "path",
						"required": true,
						"schema": {
							"type": "string"
						}
					}
				],
				"responses": {
					"200": {
						"$ref": "#/components/responses/Success"
					},
					"404": {
						"$ref": "#/components/responses/NotFound"
					},
					"500": {
						"$ref": "#/components/responses/InternalServerError"
					}
				},
				"security": [
					{
						"bearerAuth": []
					}
				]
			}
		},
		"/auth/users": {
			"get": {
				"tags": ["auth"],
				"summary": "Get all users",
				"description": "Retrieve all users (admin/superadmin only)",
				"responses": {
					"200": {
						"description": "Users retrieved successfully",
						"content": {
							"application/json": {
								"schema": {
									"allOf": [
										{
											"$ref": "#/components/schemas/SuccessResponse"
										},
										{
											"type": "object",
											"properties": {
												"data": {
													"type": "array",
													"items": {
														"$ref": "#/components/schemas/User"
													}
												}
											}
										}
									]
								}
							}
						}
					},
					"403": {
						"$ref": "#/components/responses/Forbidden"
					},
					"500": {
						"$ref": "#/components/responses/InternalServerError"
					}
				},
				"security": [
					{
						"bearerAuth": []
					}
				]
			}
		},
		"/auth/users/superadmin": {
			"get": {
				"tags": ["auth"],
				"summary": "Check superadmin exists",
				"description": "Check if a superadmin account exists in the system",
				"responses": {
					"200": {
						"description": "Check completed",
						"content": {
							"application/json": {
								"schema": {
									"allOf": [
										{
											"$ref": "#/components/schemas/SuccessResponse"
										},
										{
											"type": "object",
											"properties": {
												"data": {
													"type": "object",
													"properties": {
														"exists": {
															"type": "boolean"
														}
													}
												}
											}
										}
									]
								}
							}
						}
					},
					"500": {
						"$ref": "#/components/responses/InternalServerError"
					}
				}
			}
		},
		"/auth/recovery/request": {
			"post": {
				"tags": ["auth"],
				"summary": "Request password reset",
				"description": "Send password reset email to user",
				"requestBody": {
					"required": true,
					"content": {
						"application/json": {
							"schema": {
								"type": "object",
								"required": ["email"],
								"properties": {
									"email": {
										"type": "string",
										"format": "email",
										"description": "User email address"
									}
								}
							}
						}
					}
				},
				"responses": {
					"200": {
						"$ref": "#/components/responses/Success"
					},
					"404": {
						"description": "User not found"
					},
					"500": {
						"$ref": "#/components/responses/InternalServerError"
					}
				}
			}
		},
		"/auth/recovery/validate": {
			"post": {
				"tags": ["auth"],
				"summary": "Validate recovery token",
				"description": "Validate password reset token",
				"requestBody": {
					"required": true,
					"content": {
						"application/json": {
							"schema": {
								"type": "object",
								"required": ["recoveryToken"],
								"properties": {
									"recoveryToken": {
										"type": "string",
										"description": "Password reset token"
									}
								}
							}
						}
					}
				},
				"responses": {
					"200": {
						"$ref": "#/components/responses/Success"
					},
					"400": {
						"description": "Invalid or expired token"
					},
					"500": {
						"$ref": "#/components/responses/InternalServerError"
					}
				}
			}
		},
		"/auth/recovery/reset": {
			"post": {
				"tags": ["auth"],
				"summary": "Reset password",
				"description": "Reset user password with recovery token",
				"requestBody": {
					"required": true,
					"content": {
						"application/json": {
							"schema": {
								"type": "object",
								"required": ["recoveryToken", "password"],
								"properties": {
									"recoveryToken": {
										"type": "string",
										"description": "Password reset token"
									},
									"password": {
										"type": "string",
										"format": "password",
										"description": "New password"
									}
								}
							}
						}
					}
				},
				"responses": {
					"200": {
						"$ref": "#/components/responses/Success"
					},
					"400": {
						"description": "Invalid token or password requirements not met"
					},
					"500": {
						"$ref": "#/components/responses/InternalServerError"
					}
				}
			}
		},
		"/monitors": {
			"get": {
				"tags": ["monitors"],
				"summary": "Get all monitors",
				"description": "Retrieve all monitors for the authenticated user",
				"responses": {
					"200": {
						"description": "Monitors retrieved successfully",
						"content": {
							"application/json": {
								"schema": {
									"allOf": [
										{
											"$ref": "#/components/schemas/SuccessResponse"
										},
										{
											"type": "object",
											"properties": {
												"data": {
													"type": "array",
													"items": {
														"$ref": "#/components/schemas/Monitor"
													}
												}
											}
										}
									]
								}
							}
						}
					},
					"500": {
						"$ref": "#/components/responses/InternalServerError"
					}
				},
				"security": [
					{
						"bearerAuth": []
					}
				]
			},
			"post": {
				"tags": ["monitors"],
				"summary": "Create monitor",
				"description": "Create a new monitoring endpoint",
				"requestBody": {
					"required": true,
					"content": {
						"application/json": {
							"schema": {
								"$ref": "#/components/schemas/CreateMonitorRequest"
							}
						}
					}
				},
				"responses": {
					"201": {
						"description": "Monitor created successfully",
						"content": {
							"application/json": {
								"schema": {
									"allOf": [
										{
											"$ref": "#/components/schemas/SuccessResponse"
										},
										{
											"type": "object",
											"properties": {
												"data": {
													"$ref": "#/components/schemas/Monitor"
												}
											}
										}
									]
								}
							}
						}
					},
					"422": {
						"$ref": "#/components/responses/ValidationError"
					},
					"500": {
						"$ref": "#/components/responses/InternalServerError"
					}
				},
				"security": [
					{
						"bearerAuth": []
					}
				]
			},
			"delete": {
				"tags": ["monitors"],
				"summary": "Delete all monitors",
				"description": "Delete all monitors (superadmin only)",
				"responses": {
					"200": {
						"$ref": "#/components/responses/Success"
					},
					"403": {
						"$ref": "#/components/responses/Forbidden"
					},
					"500": {
						"$ref": "#/components/responses/InternalServerError"
					}
				},
				"security": [
					{
						"bearerAuth": []
					}
				]
			}
		},
		"/monitors/team": {
			"get": {
				"tags": ["monitors"],
				"summary": "Get monitors by team",
				"description": "Get monitors filtered by team with optional parameters",
				"parameters": [
					{
						"name": "status",
						"in": "query",
						"description": "Filter by monitor status (up/down)",
						"schema": {
							"type": "boolean"
						}
					},
					{
						"name": "type",
						"in": "query",
						"description": "Filter by monitor type",
						"schema": {
							"type": "string",
							"enum": ["http", "ping", "pagespeed", "hardware", "docker", "port"]
						}
					},
					{
						"name": "page",
						"in": "query",
						"description": "Page number for pagination",
						"schema": {
							"type": "integer",
							"minimum": 1,
							"default": 1
						}
					},
					{
						"name": "rowsPerPage",
						"in": "query",
						"description": "Number of monitors per page",
						"schema": {
							"type": "integer",
							"minimum": 1,
							"maximum": 100,
							"default": 10
						}
					},
					{
						"name": "filter",
						"in": "query",
						"description": "Search filter value",
						"schema": {
							"type": "string"
						}
					},
					{
						"name": "field",
						"in": "query",
						"description": "Field to filter on",
						"schema": {
							"type": "string",
							"enum": ["name", "url", "description"]
						}
					}
				],
				"responses": {
					"200": {
						"description": "Team monitors retrieved successfully",
						"content": {
							"application/json": {
								"schema": {
									"allOf": [
										{
											"$ref": "#/components/schemas/SuccessResponse"
										},
										{
											"type": "object",
											"properties": {
												"data": {
													"type": "object",
													"properties": {
														"monitors": {
															"type": "array",
															"items": {
																"$ref": "#/components/schemas/Monitor"
															}
														},
														"totalCount": {
															"type": "integer"
														}
													}
												}
											}
										}
									]
								}
							}
						}
					},
					"500": {
						"$ref": "#/components/responses/InternalServerError"
					}
				},
				"security": [
					{
						"bearerAuth": []
					}
				]
			}
		},
		"/monitors/team/with-checks": {
			"get": {
				"tags": ["monitors"],
				"summary": "Get monitors with recent checks",
				"description": "Get team monitors with their most recent check results",
				"parameters": [
					{
						"name": "limit",
						"in": "query",
						"description": "Number of recent checks to include per monitor",
						"schema": {
							"type": "integer",
							"minimum": 1,
							"maximum": 50,
							"default": 10
						}
					}
				],
				"responses": {
					"200": {
						"description": "Monitors with checks retrieved successfully"
					},
					"500": {
						"$ref": "#/components/responses/InternalServerError"
					}
				},
				"security": [
					{
						"bearerAuth": []
					}
				]
			}
		},
		"/monitors/team/summary": {
			"get": {
				"tags": ["monitors"],
				"summary": "Get monitors summary",
				"description": "Get team monitors with summary statistics",
				"parameters": [
					{
						"name": "type",
						"in": "query",
						"description": "Filter by monitor type",
						"schema": {
							"type": "array",
							"items": {
								"type": "string",
								"enum": ["http", "ping", "pagespeed", "hardware", "docker", "port"]
							}
						}
					}
				],
				"responses": {
					"200": {
						"description": "Monitor summary retrieved successfully"
					},
					"500": {
						"$ref": "#/components/responses/InternalServerError"
					}
				},
				"security": [
					{
						"bearerAuth": []
					}
				]
			}
		},
		"/monitors/{monitorId}": {
			"get": {
				"tags": ["monitors"],
				"summary": "Get monitor by ID",
				"description": "Retrieve a specific monitor by its ID",
				"parameters": [
					{
						"name": "monitorId",
						"in": "path",
						"required": true,
						"description": "Monitor ID",
						"schema": {
							"type": "string"
						}
					}
				],
				"responses": {
					"200": {
						"description": "Monitor retrieved successfully",
						"content": {
							"application/json": {
								"schema": {
									"allOf": [
										{
											"$ref": "#/components/schemas/SuccessResponse"
										},
										{
											"type": "object",
											"properties": {
												"data": {
													"$ref": "#/components/schemas/Monitor"
												}
											}
										}
									]
								}
							}
						}
					},
					"404": {
						"$ref": "#/components/responses/NotFound"
					},
					"500": {
						"$ref": "#/components/responses/InternalServerError"
					}
				},
				"security": [
					{
						"bearerAuth": []
					}
				]
			},
			"put": {
				"tags": ["monitors"],
				"summary": "Update monitor",
				"description": "Update an existing monitor",
				"parameters": [
					{
						"name": "monitorId",
						"in": "path",
						"required": true,
						"schema": {
							"type": "string"
						}
					}
				],
				"requestBody": {
					"required": true,
					"content": {
						"application/json": {
							"schema": {
								"$ref": "#/components/schemas/UpdateMonitorRequest"
							}
						}
					}
				},
				"responses": {
					"200": {
						"$ref": "#/components/responses/Success"
					},
					"404": {
						"$ref": "#/components/responses/NotFound"
					},
					"422": {
						"$ref": "#/components/responses/ValidationError"
					},
					"500": {
						"$ref": "#/components/responses/InternalServerError"
					}
				},
				"security": [
					{
						"bearerAuth": []
					}
				]
			},
			"delete": {
				"tags": ["monitors"],
				"summary": "Delete monitor",
				"description": "Delete a specific monitor",
				"parameters": [
					{
						"name": "monitorId",
						"in": "path",
						"required": true,
						"schema": {
							"type": "string"
						}
					}
				],
				"responses": {
					"200": {
						"$ref": "#/components/responses/Success"
					},
					"404": {
						"$ref": "#/components/responses/NotFound"
					},
					"500": {
						"$ref": "#/components/responses/InternalServerError"
					}
				},
				"security": [
					{
						"bearerAuth": []
					}
				]
			}
		},
		"/monitors/uptime/details/{monitorId}": {
			"get": {
				"tags": ["monitors"],
				"summary": "Get uptime details",
				"description": "Get detailed uptime statistics for a monitor",
				"parameters": [
					{
						"name": "monitorId",
						"in": "path",
						"required": true,
						"schema": {
							"type": "string"
						}
					}
				],
				"responses": {
					"200": {
						"description": "Uptime details retrieved successfully"
					},
					"404": {
						"$ref": "#/components/responses/NotFound"
					},
					"500": {
						"$ref": "#/components/responses/InternalServerError"
					}
				},
				"security": [
					{
						"bearerAuth": []
					}
				]
			}
		},
		"/monitors/hardware/details/{monitorId}": {
			"get": {
				"tags": ["monitors"],
				"summary": "Get hardware monitoring details",
				"description": "Get hardware performance metrics for a monitor",
				"parameters": [
					{
						"name": "monitorId",
						"in": "path",
						"required": true,
						"schema": {
							"type": "string"
						}
					}
				],
				"responses": {
					"200": {
						"description": "Hardware details retrieved successfully"
					},
					"404": {
						"$ref": "#/components/responses/NotFound"
					},
					"500": {
						"$ref": "#/components/responses/InternalServerError"
					}
				},
				"security": [
					{
						"bearerAuth": []
					}
				]
			}
		},
		"/monitors/pause/{monitorId}": {
			"post": {
				"tags": ["monitors"],
				"summary": "Pause/unpause monitor",
				"description": "Toggle monitor active status",
				"parameters": [
					{
						"name": "monitorId",
						"in": "path",
						"required": true,
						"schema": {
							"type": "string"
						}
					}
				],
				"responses": {
					"200": {
						"$ref": "#/components/responses/Success"
					},
					"404": {
						"$ref": "#/components/responses/NotFound"
					},
					"500": {
						"$ref": "#/components/responses/InternalServerError"
					}
				},
				"security": [
					{
						"bearerAuth": []
					}
				]
			}
		},
		"/monitors/stats/{monitorId}": {
			"get": {
				"tags": ["monitors"],
				"summary": "Get monitor statistics",
				"description": "Get comprehensive statistics for a monitor",
				"parameters": [
					{
						"name": "monitorId",
						"in": "path",
						"required": true,
						"schema": {
							"type": "string"
						}
					}
				],
				"responses": {
					"200": {
						"description": "Monitor statistics retrieved successfully"
					},
					"404": {
						"$ref": "#/components/responses/NotFound"
					},
					"500": {
						"$ref": "#/components/responses/InternalServerError"
					}
				},
				"security": [
					{
						"bearerAuth": []
					}
				]
			}
		},
		"/monitors/certificate/{monitorId}": {
			"get": {
				"tags": ["monitors"],
				"summary": "Get SSL certificate info",
				"description": "Get SSL certificate information for a monitor",
				"parameters": [
					{
						"name": "monitorId",
						"in": "path",
						"required": true,
						"schema": {
							"type": "string"
						}
					}
				],
				"responses": {
					"200": {
						"description": "Certificate information retrieved successfully"
					},
					"404": {
						"$ref": "#/components/responses/NotFound"
					},
					"500": {
						"$ref": "#/components/responses/InternalServerError"
					}
				},
				"security": [
					{
						"bearerAuth": []
					}
				]
			}
		},
		"/monitors/demo": {
			"post": {
				"tags": ["monitors"],
				"summary": "Add demo monitors",
				"description": "Add preconfigured demo monitors for testing",
				"responses": {
					"200": {
						"$ref": "#/components/responses/Success"
					},
					"500": {
						"$ref": "#/components/responses/InternalServerError"
					}
				},
				"security": [
					{
						"bearerAuth": []
					}
				]
			}
		},
		"/monitors/export": {
			"get": {
				"tags": ["monitors"],
				"summary": "Export monitors to CSV",
				"description": "Export all monitors to CSV format",
				"responses": {
					"200": {
						"description": "CSV file generated successfully",
						"content": {
							"text/csv": {
								"schema": {
									"type": "string"
								}
							}
						}
					},
					"500": {
						"$ref": "#/components/responses/InternalServerError"
					}
				},
				"security": [
					{
						"bearerAuth": []
					}
				]
			}
		},
		"/monitors/bulk": {
			"post": {
				"tags": ["monitors"],
				"summary": "Bulk import monitors",
				"description": "Import monitors from CSV file",
				"requestBody": {
					"required": true,
					"content": {
						"multipart/form-data": {
							"schema": {
								"type": "object",
								"properties": {
									"csvFile": {
										"type": "string",
										"format": "binary",
										"description": "CSV file containing monitor data"
									}
								}
							}
						}
					}
				},
				"responses": {
					"200": {
						"description": "Monitors imported successfully"
					},
					"422": {
						"$ref": "#/components/responses/ValidationError"
					},
					"500": {
						"$ref": "#/components/responses/InternalServerError"
					}
				},
				"security": [
					{
						"bearerAuth": []
					}
				]
			}
		},
		"/monitors/test-email": {
			"post": {
				"tags": ["monitors"],
				"summary": "Send test email",
				"description": "Send a test email notification",
				"responses": {
					"200": {
						"$ref": "#/components/responses/Success"
					},
					"500": {
						"$ref": "#/components/responses/InternalServerError"
					}
				},
				"security": [
					{
						"bearerAuth": []
					}
				]
			}
		},
		"/settings": {
			"get": {
				"tags": ["settings"],
				"summary": "Get application settings",
				"description": "Retrieve current application configuration",
				"responses": {
					"200": {
						"description": "Settings retrieved successfully",
						"content": {
							"application/json": {
								"schema": {
									"allOf": [
										{
											"$ref": "#/components/schemas/SuccessResponse"
										},
										{
											"type": "object",
											"properties": {
												"data": {
													"$ref": "#/components/schemas/AppSettings"
												}
											}
										}
									]
								}
							}
						}
					},
					"500": {
						"$ref": "#/components/responses/InternalServerError"
					}
				},
				"security": [
					{
						"bearerAuth": []
					}
				]
			},
			"put": {
				"tags": ["settings"],
				"summary": "Update application settings",
				"description": "Update application configuration (admin/superadmin only)",
				"requestBody": {
					"required": true,
					"content": {
						"application/json": {
							"schema": {
								"$ref": "#/components/schemas/AppSettings"
							}
						}
					}
				},
				"responses": {
					"200": {
						"$ref": "#/components/responses/Success"
					},
					"403": {
						"$ref": "#/components/responses/Forbidden"
					},
					"422": {
						"$ref": "#/components/responses/ValidationError"
					},
					"500": {
						"$ref": "#/components/responses/InternalServerError"
					}
				},
				"security": [
					{
						"bearerAuth": []
					}
				]
			}
		},
		"/settings/test-email": {
			"post": {
				"tags": ["settings"],
				"summary": "Send test email",
				"description": "Send test email to verify email configuration",
				"responses": {
					"200": {
						"$ref": "#/components/responses/Success"
					},
					"403": {
						"$ref": "#/components/responses/Forbidden"
					},
					"500": {
						"$ref": "#/components/responses/InternalServerError"
					}
				},
				"security": [
					{
						"bearerAuth": []
					}
				]
			}
		},
		"/notifications": {
			"get": {
				"tags": ["notifications"],
				"summary": "Get team notifications",
				"description": "Get all notification configurations for the team",
				"responses": {
					"200": {
						"description": "Notifications retrieved successfully",
						"content": {
							"application/json": {
								"schema": {
									"allOf": [
										{
											"$ref": "#/components/schemas/SuccessResponse"
										},
										{
											"type": "object",
											"properties": {
												"data": {
													"type": "array",
													"items": {
														"$ref": "#/components/schemas/Notification"
													}
												}
											}
										}
									]
								}
							}
						}
					},
					"500": {
						"$ref": "#/components/responses/InternalServerError"
					}
				},
				"security": [
					{
						"bearerAuth": []
					}
				]
			},
			"post": {
				"tags": ["notifications"],
				"summary": "Create notification",
				"description": "Create a new notification integration",
				"requestBody": {
					"required": true,
					"content": {
						"application/json": {
							"schema": {
								"$ref": "#/components/schemas/CreateNotificationRequest"
							}
						}
					}
				},
				"responses": {
					"201": {
						"description": "Notification created successfully"
					},
					"422": {
						"$ref": "#/components/responses/ValidationError"
					},
					"500": {
						"$ref": "#/components/responses/InternalServerError"
					}
				},
				"security": [
					{
						"bearerAuth": []
					}
				]
			}
		},
		"/notifications/{id}": {
			"get": {
				"tags": ["notifications"],
				"summary": "Get notification by ID",
				"description": "Retrieve a specific notification configuration",
				"parameters": [
					{
						"name": "id",
						"in": "path",
						"required": true,
						"schema": {
							"type": "string"
						}
					}
				],
				"responses": {
					"200": {
						"description": "Notification retrieved successfully"
					},
					"404": {
						"$ref": "#/components/responses/NotFound"
					},
					"500": {
						"$ref": "#/components/responses/InternalServerError"
					}
				},
				"security": [
					{
						"bearerAuth": []
					}
				]
			},
			"put": {
				"tags": ["notifications"],
				"summary": "Update notification",
				"description": "Update an existing notification configuration",
				"parameters": [
					{
						"name": "id",
						"in": "path",
						"required": true,
						"schema": {
							"type": "string"
						}
					}
				],
				"requestBody": {
					"required": true,
					"content": {
						"application/json": {
							"schema": {
								"$ref": "#/components/schemas/CreateNotificationRequest"
							}
						}
					}
				},
				"responses": {
					"200": {
						"$ref": "#/components/responses/Success"
					},
					"404": {
						"$ref": "#/components/responses/NotFound"
					},
					"422": {
						"$ref": "#/components/responses/ValidationError"
					},
					"500": {
						"$ref": "#/components/responses/InternalServerError"
					}
				},
				"security": [
					{
						"bearerAuth": []
					}
				]
			},
			"delete": {
				"tags": ["notifications"],
				"summary": "Delete notification",
				"description": "Delete a notification configuration",
				"parameters": [
					{
						"name": "id",
						"in": "path",
						"required": true,
						"schema": {
							"type": "string"
						}
					}
				],
				"responses": {
					"200": {
						"$ref": "#/components/responses/Success"
					},
					"404": {
						"$ref": "#/components/responses/NotFound"
					},
					"500": {
						"$ref": "#/components/responses/InternalServerError"
					}
				},
				"security": [
					{
						"bearerAuth": []
					}
				]
			}
		},
		"/notifications/test": {
			"post": {
				"tags": ["notifications"],
				"summary": "Test notification",
				"description": "Send a test notification to verify configuration",
				"responses": {
					"200": {
						"$ref": "#/components/responses/Success"
					},
					"500": {
						"$ref": "#/components/responses/InternalServerError"
					}
				},
				"security": [
					{
						"bearerAuth": []
					}
				]
			}
		},
		"/notifications/test/all": {
			"post": {
				"tags": ["notifications"],
				"summary": "Test all notifications",
				"description": "Send test notifications to all configured integrations",
				"responses": {
					"200": {
						"$ref": "#/components/responses/Success"
					},
					"500": {
						"$ref": "#/components/responses/InternalServerError"
					}
				},
				"security": [
					{
						"bearerAuth": []
					}
				]
			}
		},
		"/logs": {
			"get": {
				"tags": ["logs"],
				"summary": "Get application logs",
				"description": "Retrieve application logs (admin/superadmin only)",
				"parameters": [
					{
						"name": "level",
						"in": "query",
						"description": "Log level filter",
						"schema": {
							"type": "string",
							"enum": ["error", "warn", "info", "debug"]
						}
					},
					{
						"name": "limit",
						"in": "query",
						"description": "Number of log entries to return",
						"schema": {
							"type": "integer",
							"minimum": 1,
							"maximum": 1000,
							"default": 100
						}
					}
				],
				"responses": {
					"200": {
						"description": "Logs retrieved successfully"
					},
					"403": {
						"$ref": "#/components/responses/Forbidden"
					},
					"500": {
						"$ref": "#/components/responses/InternalServerError"
					}
				},
				"security": [
					{
						"bearerAuth": []
					}
				]
			}
		},
		"/diagnostic/system": {
			"get": {
				"tags": ["diagnostic"],
				"summary": "Get system diagnostics",
				"description": "Get system health and performance metrics (admin/superadmin only)",
				"responses": {
					"200": {
						"description": "System diagnostics retrieved successfully",
						"content": {
							"application/json": {
								"schema": {
									"allOf": [
										{
											"$ref": "#/components/schemas/SuccessResponse"
										},
										{
											"type": "object",
											"properties": {
												"data": {
													"$ref": "#/components/schemas/SystemDiagnostics"
												}
											}
										}
									]
								}
							}
						}
					},
					"403": {
						"$ref": "#/components/responses/Forbidden"
					},
					"500": {
						"$ref": "#/components/responses/InternalServerError"
					}
				},
				"security": [
					{
						"bearerAuth": []
					}
				]
			}
		},
		"/auth/user": {
			"put": {
				"tags": ["auth"],
				"summary": "Update current user profile",
				"description": "Update authenticated user's profile information",
				"requestBody": {
					"required": true,
					"content": {
						"multipart/form-data": {
							"schema": {
								"$ref": "#/components/schemas/UserUpdateRequest"
							}
						}
					}
				},
				"responses": {
					"200": {
						"$ref": "#/components/responses/Success"
					},
					"422": {
						"$ref": "#/components/responses/ValidationError"
					},
					"500": {
						"$ref": "#/components/responses/InternalServerError"
					}
				},
				"security": [
					{
						"bearerAuth": []
					}
				]
			},
			"delete": {
				"tags": ["auth"],
				"summary": "Delete current user account",
				"description": "Delete authenticated user's account and associated data",
				"responses": {
					"200": {
						"$ref": "#/components/responses/Success"
					},
					"500": {
						"$ref": "#/components/responses/InternalServerError"
					}
				},
				"security": [
					{
						"bearerAuth": []
					}
				]
			}
		},
		"/auth/users/{userId}": {
			"get": {
				"tags": ["auth"],
				"summary": "Get user by ID",
				"description": "Get a specific user by ID (superadmin only)",
				"parameters": [
					{
						"name": "userId",
						"in": "path",
						"required": true,
						"schema": {
							"type": "string"
						}
					}
				],
				"responses": {
					"200": {
						"description": "User retrieved successfully",
						"content": {
							"application/json": {
								"schema": {
									"allOf": [
										{
											"$ref": "#/components/schemas/SuccessResponse"
										},
										{
											"type": "object",
											"properties": {
												"data": {
													"$ref": "#/components/schemas/User"
												}
											}
										}
									]
								}
							}
						}
					},
					"404": {
						"$ref": "#/components/responses/NotFound"
					},
					"403": {
						"$ref": "#/components/responses/Forbidden"
					},
					"500": {
						"$ref": "#/components/responses/InternalServerError"
					}
				},
				"security": [
					{
						"bearerAuth": []
					}
				]
			},
			"put": {
				"tags": ["auth"],
				"summary": "Update user by ID",
				"description": "Update a specific user by ID (superadmin only)",
				"parameters": [
					{
						"name": "userId",
						"in": "path",
						"required": true,
						"schema": {
							"type": "string"
						}
					}
				],
				"requestBody": {
					"required": true,
					"content": {
						"application/json": {
							"schema": {
								"$ref": "#/components/schemas/UserUpdateRequest"
							}
						}
					}
				},
				"responses": {
					"200": {
						"$ref": "#/components/responses/Success"
					},
					"404": {
						"$ref": "#/components/responses/NotFound"
					},
					"403": {
						"$ref": "#/components/responses/Forbidden"
					},
					"422": {
						"$ref": "#/components/responses/ValidationError"
					},
					"500": {
						"$ref": "#/components/responses/InternalServerError"
					}
				},
				"security": [
					{
						"bearerAuth": []
					}
				]
			}
		},
		"/invite": {
			"post": {
				"tags": ["invite"],
				"summary": "Create invite token",
				"description": "Create a new invitation token",
				"requestBody": {
					"required": true,
					"content": {
						"application/json": {
							"schema": {
								"type": "object",
								"required": ["email", "role"],
								"properties": {
									"email": {
										"type": "string",
										"format": "email"
									},
									"role": {
										"type": "array",
										"items": {
											"type": "string",
											"enum": ["user", "admin"]
										}
									}
								}
							}
						}
					}
				},
				"responses": {
					"201": {
						"description": "Invite token created successfully"
					},
					"403": {
						"$ref": "#/components/responses/Forbidden"
					},
					"422": {
						"$ref": "#/components/responses/ValidationError"
					},
					"500": {
						"$ref": "#/components/responses/InternalServerError"
					}
				},
				"security": [
					{
						"bearerAuth": []
					}
				]
			}
		},
		"/invite/send": {
			"post": {
				"tags": ["invite"],
				"summary": "Send invitation email",
				"description": "Send invitation email to user",
				"requestBody": {
					"required": true,
					"content": {
						"application/json": {
							"schema": {
								"type": "object",
								"required": ["email"],
								"properties": {
									"email": {
										"type": "string",
										"format": "email"
									}
								}
							}
						}
					}
				},
				"responses": {
					"200": {
						"$ref": "#/components/responses/Success"
					},
					"403": {
						"$ref": "#/components/responses/Forbidden"
					},
					"500": {
						"$ref": "#/components/responses/InternalServerError"
					}
				},
				"security": [
					{
						"bearerAuth": []
					}
				]
			}
		},
		"/invite/verify": {
			"post": {
				"tags": ["invite"],
				"summary": "Verify invitation token",
				"description": "Verify an invitation token",
				"requestBody": {
					"required": true,
					"content": {
						"application/json": {
							"schema": {
								"type": "object",
								"required": ["token"],
								"properties": {
									"token": {
										"type": "string"
									}
								}
							}
						}
					}
				},
				"responses": {
					"200": {
						"$ref": "#/components/responses/Success"
					},
					"400": {
						"description": "Invalid or expired token"
					},
					"500": {
						"$ref": "#/components/responses/InternalServerError"
					}
				}
			}
		},
		"/checks/{monitorId}": {
			"get": {
				"tags": ["checks"],
				"summary": "Get checks by monitor",
				"description": "Get all checks for a specific monitor",
				"parameters": [
					{
						"name": "monitorId",
						"in": "path",
						"required": true,
						"schema": {
							"type": "string"
						}
					}
				],
				"responses": {
					"200": {
						"description": "Checks retrieved successfully"
					},
					"404": {
						"$ref": "#/components/responses/NotFound"
					},
					"500": {
						"$ref": "#/components/responses/InternalServerError"
					}
				},
				"security": [
					{
						"bearerAuth": []
					}
				]
			},
			"delete": {
				"tags": ["checks"],
				"summary": "Delete checks by monitor",
				"description": "Delete all checks for a specific monitor",
				"parameters": [
					{
						"name": "monitorId",
						"in": "path",
						"required": true,
						"schema": {
							"type": "string"
						}
					}
				],
				"responses": {
					"200": {
						"$ref": "#/components/responses/Success"
					},
					"404": {
						"$ref": "#/components/responses/NotFound"
					},
					"500": {
						"$ref": "#/components/responses/InternalServerError"
					}
				},
				"security": [
					{
						"bearerAuth": []
					}
				]
			}
		},
		"/checks/team": {
			"get": {
				"tags": ["checks"],
				"summary": "Get checks by team",
				"description": "Get all checks for team monitors",
				"responses": {
					"200": {
						"description": "Team checks retrieved successfully"
					},
					"500": {
						"$ref": "#/components/responses/InternalServerError"
					}
				},
				"security": [
					{
						"bearerAuth": []
					}
				]
			},
			"delete": {
				"tags": ["checks"],
				"summary": "Delete team checks",
				"description": "Delete all checks for team (admin/superadmin only)",
				"responses": {
					"200": {
						"$ref": "#/components/responses/Success"
					},
					"403": {
						"$ref": "#/components/responses/Forbidden"
					},
					"500": {
						"$ref": "#/components/responses/InternalServerError"
					}
				},
				"security": [
					{
						"bearerAuth": []
					}
				]
			}
		},
		"/checks/team/summary": {
			"get": {
				"tags": ["checks"],
				"summary": "Get team checks summary",
				"description": "Get summary statistics for team checks",
				"responses": {
					"200": {
						"description": "Team checks summary retrieved successfully"
					},
					"500": {
						"$ref": "#/components/responses/InternalServerError"
					}
				},
				"security": [
					{
						"bearerAuth": []
					}
				]
			}
		},
		"/checks/team/ttl": {
			"put": {
				"tags": ["checks"],
				"summary": "Update checks TTL",
				"description": "Update time-to-live for checks (admin/superadmin only)",
				"requestBody": {
					"required": true,
					"content": {
						"application/json": {
							"schema": {
								"type": "object",
								"required": ["ttl"],
								"properties": {
									"ttl": {
										"type": "integer",
										"minimum": 1,
										"description": "Time to live in days"
									}
								}
							}
						}
					}
				},
				"responses": {
					"200": {
						"$ref": "#/components/responses/Success"
					},
					"403": {
						"$ref": "#/components/responses/Forbidden"
					},
					"422": {
						"$ref": "#/components/responses/ValidationError"
					},
					"500": {
						"$ref": "#/components/responses/InternalServerError"
					}
				},
				"security": [
					{
						"bearerAuth": []
					}
				]
			}
		},
		"/checks/check/{checkId}": {
			"put": {
				"tags": ["checks"],
				"summary": "Acknowledge check",
				"description": "Acknowledge a specific check",
				"parameters": [
					{
						"name": "checkId",
						"in": "path",
						"required": true,
						"schema": {
							"type": "string"
						}
					}
				],
				"responses": {
					"200": {
						"$ref": "#/components/responses/Success"
					},
					"404": {
						"$ref": "#/components/responses/NotFound"
					},
					"500": {
						"$ref": "#/components/responses/InternalServerError"
					}
				},
				"security": [
					{
						"bearerAuth": []
					}
				]
			}
		},
		"/maintenance-window": {
			"post": {
				"tags": ["maintenance-window"],
				"summary": "Create maintenance window",
				"description": "Create a new maintenance window",
				"requestBody": {
					"required": true,
					"content": {
						"application/json": {
							"schema": {
								"type": "object",
								"required": ["name", "startTime", "endTime"],
								"properties": {
									"name": {
										"type": "string",
										"maxLength": 100
									},
									"description": {
										"type": "string",
										"maxLength": 500
									},
									"startTime": {
										"type": "string",
										"format": "date-time"
									},
									"endTime": {
										"type": "string",
										"format": "date-time"
									},
									"monitors": {
										"type": "array",
										"items": {
											"type": "string"
										}
									}
								}
							}
						}
					}
				},
				"responses": {
					"201": {
						"description": "Maintenance window created successfully"
					},
					"422": {
						"$ref": "#/components/responses/ValidationError"
					},
					"500": {
						"$ref": "#/components/responses/InternalServerError"
					}
				},
				"security": [
					{
						"bearerAuth": []
					}
				]
			}
		},
		"/maintenance-window/team": {
			"get": {
				"tags": ["maintenance-window"],
				"summary": "Get team maintenance windows",
				"description": "Get all maintenance windows for the team",
				"responses": {
					"200": {
						"description": "Maintenance windows retrieved successfully"
					},
					"500": {
						"$ref": "#/components/responses/InternalServerError"
					}
				},
				"security": [
					{
						"bearerAuth": []
					}
				]
			}
		},
		"/maintenance-window/monitor/{monitorId}": {
			"get": {
				"tags": ["maintenance-window"],
				"summary": "Get maintenance windows by monitor",
				"description": "Get all maintenance windows for a specific monitor",
				"parameters": [
					{
						"name": "monitorId",
						"in": "path",
						"required": true,
						"schema": {
							"type": "string"
						}
					}
				],
				"responses": {
					"200": {
						"description": "Monitor maintenance windows retrieved successfully"
					},
					"404": {
						"$ref": "#/components/responses/NotFound"
					},
					"500": {
						"$ref": "#/components/responses/InternalServerError"
					}
				},
				"security": [
					{
						"bearerAuth": []
					}
				]
			}
		},
		"/maintenance-window/{id}": {
			"get": {
				"tags": ["maintenance-window"],
				"summary": "Get maintenance window by ID",
				"description": "Get a specific maintenance window",
				"parameters": [
					{
						"name": "id",
						"in": "path",
						"required": true,
						"schema": {
							"type": "string"
						}
					}
				],
				"responses": {
					"200": {
						"description": "Maintenance window retrieved successfully"
					},
					"404": {
						"$ref": "#/components/responses/NotFound"
					},
					"500": {
						"$ref": "#/components/responses/InternalServerError"
					}
				},
				"security": [
					{
						"bearerAuth": []
					}
				]
			},
			"put": {
				"tags": ["maintenance-window"],
				"summary": "Update maintenance window",
				"description": "Update an existing maintenance window",
				"parameters": [
					{
						"name": "id",
						"in": "path",
						"required": true,
						"schema": {
							"type": "string"
						}
					}
				],
				"requestBody": {
					"required": true,
					"content": {
						"application/json": {
							"schema": {
								"type": "object",
								"properties": {
									"name": {
										"type": "string",
										"maxLength": 100
									},
									"description": {
										"type": "string",
										"maxLength": 500
									},
									"startTime": {
										"type": "string",
										"format": "date-time"
									},
									"endTime": {
										"type": "string",
										"format": "date-time"
									},
									"monitors": {
										"type": "array",
										"items": {
											"type": "string"
										}
									}
								}
							}
						}
					}
				},
				"responses": {
					"200": {
						"$ref": "#/components/responses/Success"
					},
					"404": {
						"$ref": "#/components/responses/NotFound"
					},
					"422": {
						"$ref": "#/components/responses/ValidationError"
					},
					"500": {
						"$ref": "#/components/responses/InternalServerError"
					}
				},
				"security": [
					{
						"bearerAuth": []
					}
				]
			},
			"delete": {
				"tags": ["maintenance-window"],
				"summary": "Delete maintenance window",
				"description": "Delete a specific maintenance window",
				"parameters": [
					{
						"name": "id",
						"in": "path",
						"required": true,
						"schema": {
							"type": "string"
						}
					}
				],
				"responses": {
					"200": {
						"$ref": "#/components/responses/Success"
					},
					"404": {
						"$ref": "#/components/responses/NotFound"
					},
					"500": {
						"$ref": "#/components/responses/InternalServerError"
					}
				},
				"security": [
					{
						"bearerAuth": []
					}
				]
			}
		},
		"/queue/health": {
			"get": {
				"tags": ["queue"],
				"summary": "Check queue health",
				"description": "Check the health status of the job queue (admin/superadmin only)",
				"responses": {
					"200": {
						"description": "Queue health status retrieved successfully"
					},
					"403": {
						"$ref": "#/components/responses/Forbidden"
					},
					"500": {
						"$ref": "#/components/responses/InternalServerError"
					}
				},
				"security": [
					{
						"bearerAuth": []
					}
				]
			}
		},
		"/queue/all-metrics": {
			"get": {
				"tags": ["queue"],
				"summary": "Get all queue metrics",
				"description": "Get comprehensive queue metrics (admin/superadmin only)",
				"responses": {
					"200": {
						"description": "All queue metrics retrieved successfully"
					},
					"403": {
						"$ref": "#/components/responses/Forbidden"
					},
					"500": {
						"$ref": "#/components/responses/InternalServerError"
					}
				},
				"security": [
					{
						"bearerAuth": []
					}
				]
			}
		},
		"/queue/flush": {
			"post": {
				"tags": ["queue"],
				"summary": "Flush queue",
				"description": "Clear all jobs from the queue (admin/superadmin only)",
				"responses": {
					"200": {
						"$ref": "#/components/responses/Success"
					},
					"403": {
						"$ref": "#/components/responses/Forbidden"
					},
					"500": {
						"$ref": "#/components/responses/InternalServerError"
					}
				},
				"security": [
					{
						"bearerAuth": []
					}
				]
			}
		},
		"/monitors/games": {
			"get": {
				"tags": ["monitors"],
				"summary": "Get game server list",
				"description": "Get available game servers for monitoring",
				"responses": {
					"200": {
						"description": "Game servers retrieved successfully",
						"content": {
							"application/json": {
								"schema": {
									"allOf": [
										{
											"$ref": "#/components/schemas/SuccessResponse"
										},
										{
											"type": "object",
											"properties": {
												"data": {
													"type": "array",
													"items": {
														"type": "object",
														"properties": {
															"id": {
																"type": "string"
															},
															"name": {
																"type": "string"
															}
														}
													}
												}
											}
										}
									]
								}
							}
						}
					},
					"500": {
						"$ref": "#/components/responses/InternalServerError"
					}
				},
				"security": [
					{
						"bearerAuth": []
					}
				]
			}
		},
		"/status-page": {
			"get": {
				"tags": ["status-page"],
				"summary": "Get status page",
				"description": "Get default status page information",
				"responses": {
					"200": {
						"$ref": "#/components/responses/Success"
					},
					"500": {
						"$ref": "#/components/responses/InternalServerError"
					}
				}
			},
			"post": {
				"tags": ["status-page"],
				"summary": "Create status page",
				"description": "Create a new status page with optional logo upload",
				"requestBody": {
					"content": {
						"multipart/form-data": {
							"schema": {
								"type": "object",
								"properties": {
									"logo": {
										"type": "string",
										"format": "binary",
										"description": "Logo file for the status page"
									},
									"title": {
										"type": "string",
										"description": "Status page title"
									},
									"description": {
										"type": "string",
										"description": "Status page description"
									},
									"url": {
										"type": "string",
										"description": "Custom URL for the status page"
									}
								}
							}
						}
					}
				},
				"responses": {
					"201": {
						"$ref": "#/components/responses/Success"
					},
					"400": {
						"$ref": "#/components/responses/BadRequest"
					},
					"401": {
						"$ref": "#/components/responses/Unauthorized"
					},
					"500": {
						"$ref": "#/components/responses/InternalServerError"
					}
				},
				"security": [
					{
						"bearerAuth": []
					}
				]
			},
			"put": {
				"tags": ["status-page"],
				"summary": "Update status page",
				"description": "Update an existing status page with optional logo upload",
				"requestBody": {
					"content": {
						"multipart/form-data": {
							"schema": {
								"type": "object",
								"properties": {
									"logo": {
										"type": "string",
										"format": "binary",
										"description": "Logo file for the status page"
									},
									"title": {
										"type": "string",
										"description": "Status page title"
									},
									"description": {
										"type": "string",
										"description": "Status page description"
									},
									"url": {
										"type": "string",
										"description": "Custom URL for the status page"
									}
								}
							}
						}
					}
				},
				"responses": {
					"200": {
						"$ref": "#/components/responses/Success"
					},
					"400": {
						"$ref": "#/components/responses/BadRequest"
					},
					"401": {
						"$ref": "#/components/responses/Unauthorized"
					},
					"404": {
						"$ref": "#/components/responses/NotFound"
					},
					"500": {
						"$ref": "#/components/responses/InternalServerError"
					}
				},
				"security": [
					{
						"bearerAuth": []
					}
				]
			}
		},
		"/status-page/team": {
			"get": {
				"tags": ["status-page"],
				"summary": "Get status pages by team",
				"description": "Get all status pages for the authenticated user's team",
				"responses": {
					"200": {
						"$ref": "#/components/responses/Success"
					},
					"401": {
						"$ref": "#/components/responses/Unauthorized"
					},
					"500": {
						"$ref": "#/components/responses/InternalServerError"
					}
				},
				"security": [
					{
						"bearerAuth": []
					}
				]
			}
		},
		"/status-page/{url}": {
			"get": {
				"tags": ["status-page"],
				"summary": "Get status page by URL",
				"description": "Get a specific status page by its custom URL",
				"parameters": [
					{
						"name": "url",
						"in": "path",
						"required": true,
						"schema": {
							"type": "string"
						},
						"description": "Custom URL of the status page"
					}
				],
				"responses": {
					"200": {
						"$ref": "#/components/responses/Success"
					},
					"404": {
						"$ref": "#/components/responses/NotFound"
					},
					"500": {
						"$ref": "#/components/responses/InternalServerError"
					}
				}
			},
			"delete": {
				"tags": ["status-page"],
				"summary": "Delete status page",
				"description": "Delete a status page by its custom URL",
				"parameters": [
					{
						"name": "url",
						"in": "path",
						"required": true,
						"schema": {
							"type": "string"
						},
						"description": "Custom URL of the status page (supports wildcards)"
					}
				],
				"responses": {
					"200": {
						"$ref": "#/components/responses/Success"
					},
					"401": {
						"$ref": "#/components/responses/Unauthorized"
					},
					"404": {
						"$ref": "#/components/responses/NotFound"
					},
					"500": {
						"$ref": "#/components/responses/InternalServerError"
					}
				},
				"security": [
					{
						"bearerAuth": []
					}
				]
			}
		}
	},
	"components": {
		"securitySchemes": {
			"bearerAuth": {
				"type": "http",
				"scheme": "bearer",
				"bearerFormat": "JWT",
				"description": "JWT token obtained from login endpoint"
			}
		},
		"responses": {
			"Success": {
				"description": "Operation successful",
				"content": {
					"application/json": {
						"schema": {
							"$ref": "#/components/schemas/SuccessResponse"
						}
					}
				}
			},
			"NotFound": {
				"description": "Resource not found",
				"content": {
					"application/json": {
						"schema": {
							"$ref": "#/components/schemas/ErrorResponse"
						}
					}
				}
			},
			"ValidationError": {
				"description": "Validation failed",
				"content": {
					"application/json": {
						"schema": {
							"$ref": "#/components/schemas/ErrorResponse"
						}
					}
				}
			},
			"Unauthorized": {
				"description": "Authentication required or token invalid",
				"content": {
					"application/json": {
						"schema": {
							"$ref": "#/components/schemas/ErrorResponse"
						}
					}
				}
			},
			"Forbidden": {
				"description": "Insufficient permissions",
				"content": {
					"application/json": {
						"schema": {
							"$ref": "#/components/schemas/ErrorResponse"
						}
					}
				}
			},
			"InternalServerError": {
				"description": "Internal server error",
				"content": {
					"application/json": {
						"schema": {
							"$ref": "#/components/schemas/ErrorResponse"
						}
					}
				}
			}
		},
		"schemas": {
			"SuccessResponse": {
				"type": "object",
				"required": ["success", "msg"],
				"properties": {
					"success": {
						"type": "boolean",
						"example": true
					},
					"msg": {
						"type": "string",
						"example": "Operation completed successfully"
					},
					"data": {
						"type": "object",
						"description": "Response payload (varies by endpoint)"
					}
				}
			},
			"ErrorResponse": {
				"type": "object",
				"required": ["success", "msg"],
				"properties": {
					"success": {
						"type": "boolean",
						"example": false
					},
					"msg": {
						"type": "string",
						"example": "An error occurred"
					},
					"details": {
						"type": "object",
						"description": "Additional error details"
					}
				}
			},
			"RegisterRequest": {
				"type": "object",
				"required": ["firstName", "lastName", "email", "password"],
				"properties": {
					"firstName": {
						"type": "string",
						"minLength": 1,
						"maxLength": 50,
						"example": "John"
					},
					"lastName": {
						"type": "string",
						"minLength": 1,
						"maxLength": 50,
						"example": "Doe"
					},
					"email": {
						"type": "string",
						"format": "email",
						"example": "john@example.com"
					},
					"password": {
						"type": "string",
						"minLength": 8,
						"format": "password",
						"example": "SecurePass123!"
					},
					"profileImage": {
						"type": "string",
						"format": "binary",
						"description": "Optional profile image file"
					},
					"role": {
						"type": "array",
						"items": {
							"type": "string",
							"enum": ["user", "admin", "superadmin", "Demo"]
						},
						"default": ["user"]
					}
				}
			},
			"LoginRequest": {
				"type": "object",
				"required": ["email", "password"],
				"properties": {
					"email": {
						"type": "string",
						"format": "email",
						"example": "john@example.com"
					},
					"password": {
						"type": "string",
						"format": "password",
						"example": "SecurePass123!"
					}
				}
			},
			"AuthResponse": {
				"allOf": [
					{
						"$ref": "#/components/schemas/SuccessResponse"
					},
					{
						"type": "object",
						"properties": {
							"data": {
								"type": "object",
								"properties": {
									"token": {
										"type": "string",
										"description": "JWT access token"
									},
									"user": {
										"$ref": "#/components/schemas/User"
									}
								}
							}
						}
					}
				]
			},
			"UserUpdateRequest": {
				"type": "object",
				"properties": {
					"firstName": {
						"type": "string",
						"minLength": 1,
						"maxLength": 50
					},
					"lastName": {
						"type": "string",
						"minLength": 1,
						"maxLength": 50
					},
					"password": {
						"type": "string",
						"format": "password",
						"description": "Current password for verification"
					},
					"newPassword": {
						"type": "string",
						"minLength": 8,
						"format": "password",
						"description": "New password (if changing)"
					},
					"profileImage": {
						"type": "string",
						"format": "binary",
						"description": "New profile image file"
					},
					"deleteProfileImage": {
						"type": "boolean",
						"description": "Flag to delete current profile image"
					}
				}
			},
			"User": {
				"type": "object",
				"properties": {
					"_id": {
						"type": "string",
						"example": "64f123a456b789012c345def"
					},
					"firstName": {
						"type": "string",
						"example": "John"
					},
					"lastName": {
						"type": "string",
						"example": "Doe"
					},
					"email": {
						"type": "string",
						"format": "email",
						"example": "john@example.com"
					},
					"role": {
						"type": "array",
						"items": {
							"type": "string",
							"enum": ["user", "admin", "superadmin", "Demo"]
						}
					},
					"profileImage": {
						"type": "string",
						"description": "URL or path to profile image"
					},
					"isActive": {
						"type": "boolean"
					},
					"teamId": {
						"type": "string"
					},
					"createdAt": {
						"type": "string",
						"format": "date-time"
					},
					"updatedAt": {
						"type": "string",
						"format": "date-time"
					}
				}
			},
			"CreateMonitorRequest": {
				"type": "object",
				"required": ["name", "description", "type", "url", "interval"],
				"properties": {
					"name": {
						"type": "string",
						"minLength": 1,
						"maxLength": 100,
						"example": "My Website Monitor"
					},
					"description": {
						"type": "string",
						"maxLength": 500,
						"example": "Monitors the main website homepage"
					},
					"type": {
						"type": "string",
						"enum": ["http", "ping", "pagespeed", "hardware", "docker", "port"],
						"example": "http"
					},
					"url": {
						"type": "string",
						"format": "uri",
						"example": "https://example.com"
					},
					"interval": {
						"type": "integer",
						"minimum": 30,
						"maximum": 3600,
						"example": 300,
						"description": "Check interval in seconds"
					},
					"isActive": {
						"type": "boolean",
						"default": true
					},
					"notifications": {
						"type": "array",
						"items": {
							"type": "string"
						},
						"description": "Array of notification IDs to associate with this monitor"
					},
					"httpOptions": {
						"type": "object",
						"properties": {
							"method": {
								"type": "string",
								"enum": ["GET", "POST", "PUT", "DELETE", "HEAD"],
								"default": "GET"
							},
							"headers": {
								"type": "object",
								"additionalProperties": {
									"type": "string"
								}
							},
							"body": {
								"type": "string",
								"description": "Request body for POST/PUT requests"
							},
							"timeout": {
								"type": "integer",
								"minimum": 1000,
								"maximum": 30000,
								"default": 5000,
								"description": "Request timeout in milliseconds"
							}
						}
					},
					"assertions": {
						"type": "array",
						"items": {
							"type": "object",
							"properties": {
								"type": {
									"type": "string",
									"enum": ["status-code", "response-time", "body-contains", "header-contains"]
								},
								"comparison": {
									"type": "string",
									"enum": ["equals", "not-equals", "greater-than", "less-than", "contains", "not-contains"]
								},
								"value": {
									"type": "string"
								}
							}
						}
					}
				}
			},
			"UpdateMonitorRequest": {
				"type": "object",
				"properties": {
					"name": {
						"type": "string",
						"minLength": 1,
						"maxLength": 100
					},
					"description": {
						"type": "string",
						"maxLength": 500
					},
					"interval": {
						"type": "integer",
						"minimum": 30,
						"maximum": 3600
					},
					"isActive": {
						"type": "boolean"
					},
					"notifications": {
						"type": "array",
						"items": {
							"type": "string"
						}
					},
					"httpOptions": {
						"type": "object",
						"properties": {
							"method": {
								"type": "string",
								"enum": ["GET", "POST", "PUT", "DELETE", "HEAD"]
							},
							"headers": {
								"type": "object",
								"additionalProperties": {
									"type": "string"
								}
							},
							"body": {
								"type": "string"
							},
							"timeout": {
								"type": "integer",
								"minimum": 1000,
								"maximum": 30000
							}
						}
					},
					"assertions": {
						"type": "array",
						"items": {
							"type": "object",
							"properties": {
								"type": {
									"type": "string",
									"enum": ["status-code", "response-time", "body-contains", "header-contains"]
								},
								"comparison": {
									"type": "string",
									"enum": ["equals", "not-equals", "greater-than", "less-than", "contains", "not-contains"]
								},
								"value": {
									"type": "string"
								}
							}
						}
					}
				}
			},
			"Monitor": {
				"type": "object",
				"properties": {
					"_id": {
						"type": "string",
						"example": "64f123a456b789012c345def"
					},
					"userId": {
						"type": "string"
					},
					"teamId": {
						"type": "string"
					},
					"name": {
						"type": "string",
						"example": "My Website Monitor"
					},
					"description": {
						"type": "string",
						"example": "Monitors the main website homepage"
					},
					"type": {
						"type": "string",
						"enum": ["http", "ping", "pagespeed", "hardware", "docker", "port"]
					},
					"url": {
						"type": "string",
						"format": "uri",
						"example": "https://example.com"
					},
					"interval": {
						"type": "integer",
						"example": 300
					},
					"isActive": {
						"type": "boolean",
						"example": true
					},
					"status": {
						"type": "boolean",
						"description": "Current monitor status (up/down)"
					},
					"lastChecked": {
						"type": "string",
						"format": "date-time",
						"description": "Timestamp of last check"
					},
					"notifications": {
						"type": "array",
						"items": {
							"type": "string"
						}
					},
					"httpOptions": {
						"type": "object",
						"properties": {
							"method": {
								"type": "string"
							},
							"headers": {
								"type": "object"
							},
							"body": {
								"type": "string"
							},
							"timeout": {
								"type": "integer"
							}
						}
					},
					"assertions": {
						"type": "array",
						"items": {
							"type": "object"
						}
					},
					"createdAt": {
						"type": "string",
						"format": "date-time"
					},
					"updatedAt": {
						"type": "string",
						"format": "date-time"
					}
				}
			},
			"CreateNotificationRequest": {
				"type": "object",
				"required": ["type", "name"],
				"properties": {
					"type": {
						"type": "string",
						"enum": ["email", "webhook", "slack", "discord", "telegram", "zapier"],
						"example": "email"
					},
					"name": {
						"type": "string",
						"minLength": 1,
						"maxLength": 100,
						"example": "Admin Email Notifications"
					},
					"config": {
						"type": "object",
						"description": "Configuration specific to notification type",
						"oneOf": [
							{
								"title": "Email Configuration",
								"properties": {
									"to": {
										"type": "array",
										"items": {
											"type": "string",
											"format": "email"
										}
									}
								}
							},
							{
								"title": "Webhook Configuration",
								"properties": {
									"url": {
										"type": "string",
										"format": "uri"
									},
									"headers": {
										"type": "object",
										"additionalProperties": {
											"type": "string"
										}
									}
								}
							},
							{
								"title": "Slack Configuration",
								"properties": {
									"webhookUrl": {
										"type": "string",
										"format": "uri"
									},
									"channel": {
										"type": "string"
									}
								}
							},
							{
								"title": "Discord Configuration",
								"properties": {
									"webhookUrl": {
										"type": "string",
										"format": "uri"
									}
								}
							}
						]
					},
					"isActive": {
						"type": "boolean",
						"default": true
					}
				}
			},
			"Notification": {
				"type": "object",
				"properties": {
					"_id": {
						"type": "string"
					},
					"userId": {
						"type": "string"
					},
					"teamId": {
						"type": "string"
					},
					"type": {
						"type": "string",
						"enum": ["email", "webhook", "slack", "discord", "telegram", "zapier"]
					},
					"name": {
						"type": "string"
					},
					"config": {
						"type": "object",
						"description": "Type-specific configuration"
					},
					"isActive": {
						"type": "boolean"
					},
					"createdAt": {
						"type": "string",
						"format": "date-time"
					},
					"updatedAt": {
						"type": "string",
						"format": "date-time"
					}
				}
			},
			"AppSettings": {
				"type": "object",
				"properties": {
					"appName": {
						"type": "string",
						"example": "Checkmate"
					},
					"appUrl": {
						"type": "string",
						"format": "uri",
						"example": "https://checkmate.example.com"
					},
					"logLevel": {
						"type": "string",
						"enum": ["error", "warn", "info", "debug"],
						"default": "info"
					},
					"emailConfig": {
						"type": "object",
						"properties": {
							"host": {
								"type": "string"
							},
							"port": {
								"type": "integer"
							},
							"secure": {
								"type": "boolean"
							},
							"user": {
								"type": "string"
							},
							"pass": {
								"type": "string",
								"format": "password"
							},
							"from": {
								"type": "string",
								"format": "email"
							}
						}
					},
					"webhookRetries": {
						"type": "integer",
						"minimum": 0,
						"maximum": 10,
						"default": 3
					},
					"checksRetention": {
						"type": "integer",
						"minimum": 1,
						"maximum": 365,
						"default": 90,
						"description": "Days to retain check results"
					}
				}
			},
			"SystemDiagnostics": {
				"type": "object",
				"properties": {
					"uptime": {
						"type": "number",
						"description": "System uptime in seconds"
					},
					"memory": {
						"type": "object",
						"properties": {
							"total": {
								"type": "number",
								"description": "Total memory in bytes"
							},
							"used": {
								"type": "number",
								"description": "Used memory in bytes"
							},
							"free": {
								"type": "number",
								"description": "Free memory in bytes"
							}
						}
					},
					"cpu": {
						"type": "object",
						"properties": {
							"usage": {
								"type": "number",
								"description": "CPU usage percentage"
							},
							"cores": {
								"type": "integer",
								"description": "Number of CPU cores"
							}
						}
					},
					"database": {
						"type": "object",
						"properties": {
							"status": {
								"type": "string",
								"enum": ["connected", "disconnected", "error"]
							},
							"responseTime": {
								"type": "number",
								"description": "Database response time in milliseconds"
							}
						}
					},
					"queue": {
						"type": "object",
						"properties": {
							"active": {
								"type": "integer"
							},
							"waiting": {
								"type": "integer"
							},
							"completed": {
								"type": "integer"
							},
							"failed": {
								"type": "integer"
							}
						}
					}
				}
			}
		}
	}
}
