{
  "openapi": "3.0.3",
  "info": {
    "title": "Termix API",
    "version": "1.0.0",
    "description": "Comprehensive API for Termix SSH management, file operations, tunneling, and server monitoring. This API provides endpoints for managing SSH hosts, file operations, tunnel connections, server monitoring, user management, and system alerts.",
    "contact": {
      "name": "Termix Development Team"
    }
  },
  "servers": [
    {
      "url": "http://localhost:8081",
      "description": "Main database and authentication server"
    },
    {
      "url": "http://localhost:8083",
      "description": "SSH tunnel management server"
    },
    {
      "url": "http://localhost:8084",
      "description": "SSH file manager server"
    },
    {
      "url": "http://localhost:8085",
      "description": "Server statistics and monitoring server"
    }
  ],
  "security": [
    {
      "bearerAuth": []
    }
  ],
  "tags": [
    {
      "name": "System",
      "description": "System health, version, and release information endpoints"
    },
    {
      "name": "SSH Hosts",
      "description": "SSH host management, creation, updates, and deletion"
    },
    {
      "name": "File Manager",
      "description": "File manager operations including recent, pinned, and shortcuts"
    },
    {
      "name": "SSH File Operations",
      "description": "SSH file operations like reading, writing, creating, and deleting files"
    },
    {
      "name": "Tunnel Management",
      "description": "SSH tunnel connection, disconnection, and status management"
    },
    {
      "name": "Server Statistics",
      "description": "Server status monitoring and metrics collection"
    },
    {
      "name": "User Management",
      "description": "User account management and administration"
    },
    {
      "name": "Authentication",
      "description": "User authentication, login, and password management"
    },
    {
      "name": "TOTP",
      "description": "Two-factor authentication using TOTP (Time-based One-Time Password)"
    },
    {
      "name": "Alerts",
      "description": "System alerts and notifications management"
    }
  ],
  "components": {
    "securitySchemes": {
      "bearerAuth": {
        "type": "http",
        "scheme": "bearer",
        "bearerFormat": "JWT"
      }
    },
    "schemas": {
      "SSHHost": {
        "type": "object",
        "properties": {
          "id": { "type": "integer" },
          "name": { "type": "string" },
          "ip": { "type": "string" },
          "port": { "type": "integer" },
          "username": { "type": "string" },
          "folder": { "type": "string" },
          "tags": { "type": "array", "items": { "type": "string" } },
          "pin": { "type": "boolean" },
          "authType": { "type": "string", "enum": ["password", "key"] },
          "password": { "type": "string" },
          "key": { "type": "string" },
          "keyPassword": { "type": "string" },
          "keyType": { "type": "string" },
          "enableTerminal": { "type": "boolean" },
          "enableTunnel": { "type": "boolean" },
          "enableFileManager": { "type": "boolean" },
          "defaultPath": { "type": "string" },
          "tunnelConnections": {
            "type": "array",
            "items": { "type": "object" }
          },
          "createdAt": { "type": "string", "format": "date-time" },
          "updatedAt": { "type": "string", "format": "date-time" }
        },
        "required": ["id", "ip", "port", "username", "authType"]
      },
      "SSHHostData": {
        "type": "object",
        "properties": {
          "name": { "type": "string" },
          "ip": { "type": "string" },
          "port": { "type": "integer" },
          "username": { "type": "string" },
          "folder": { "type": "string" },
          "tags": { "type": "array", "items": { "type": "string" } },
          "pin": { "type": "boolean" },
          "authType": { "type": "string", "enum": ["password", "key"] },
          "password": { "type": "string" },
          "key": { "type": "string" },
          "keyPassword": { "type": "string" },
          "keyType": { "type": "string" },
          "enableTerminal": { "type": "boolean" },
          "enableTunnel": { "type": "boolean" },
          "enableFileManager": { "type": "boolean" },
          "defaultPath": { "type": "string" },
          "tunnelConnections": {
            "type": "array",
            "items": { "type": "object" }
          }
        },
        "required": ["ip", "port", "username", "authType"]
      },
      "TunnelConfig": {
        "type": "object",
        "properties": {
          "name": { "type": "string" },
          "hostName": { "type": "string" },
          "sourceIP": { "type": "string" },
          "sourceSSHPort": { "type": "integer" },
          "sourceUsername": { "type": "string" },
          "sourcePassword": { "type": "string" },
          "sourceAuthMethod": { "type": "string" },
          "sourceSSHKey": { "type": "string" },
          "sourceKeyPassword": { "type": "string" },
          "sourceKeyType": { "type": "string" },
          "endpointIP": { "type": "string" },
          "endpointSSHPort": { "type": "integer" },
          "endpointUsername": { "type": "string" },
          "endpointPassword": { "type": "string" },
          "endpointAuthMethod": { "type": "string" },
          "endpointSSHKey": { "type": "string" },
          "endpointKeyPassword": { "type": "string" },
          "endpointKeyType": { "type": "string" },
          "sourcePort": { "type": "integer" },
          "endpointPort": { "type": "integer" },
          "maxRetries": { "type": "integer" },
          "retryInterval": { "type": "integer" },
          "autoStart": { "type": "boolean" },
          "isPinned": { "type": "boolean" }
        },
        "required": [
          "name",
          "hostName",
          "sourceIP",
          "sourceSSHPort",
          "sourceUsername",
          "endpointIP",
          "endpointSSHPort",
          "endpointUsername",
          "sourcePort",
          "endpointPort"
        ]
      },
      "TunnelStatus": {
        "type": "object",
        "properties": {
          "status": { "type": "string" },
          "reason": { "type": "string" },
          "errorType": { "type": "string" },
          "retryCount": { "type": "integer" },
          "maxRetries": { "type": "integer" },
          "nextRetryIn": { "type": "integer" },
          "retryExhausted": { "type": "boolean" }
        }
      },
      "ServerStatus": {
        "type": "object",
        "properties": {
          "status": { "type": "string", "enum": ["online", "offline"] },
          "lastChecked": { "type": "string", "format": "date-time" }
        }
      },
      "ServerMetrics": {
        "type": "object",
        "properties": {
          "cpu": {
            "type": "object",
            "properties": {
              "percent": { "type": "number" },
              "cores": { "type": "number" },
              "load": {
                "type": "array",
                "items": { "type": "number" },
                "minItems": 3,
                "maxItems": 3
              }
            }
          },
          "memory": {
            "type": "object",
            "properties": {
              "percent": { "type": "number" },
              "usedGiB": { "type": "number" },
              "totalGiB": { "type": "number" }
            }
          },
          "disk": {
            "type": "object",
            "properties": {
              "percent": { "type": "number" },
              "usedHuman": { "type": "string" },
              "totalHuman": { "type": "string" }
            }
          },
          "lastChecked": { "type": "string", "format": "date-time" }
        }
      },
      "FileManagerFile": {
        "type": "object",
        "properties": {
          "name": { "type": "string" },
          "path": { "type": "string" },
          "type": { "type": "string", "enum": ["file", "directory"] },
          "isSSH": { "type": "boolean" },
          "sshSessionId": { "type": "string" }
        },
        "required": ["name", "path"]
      },
      "UserInfo": {
        "type": "object",
        "properties": {
          "id": { "type": "string" },
          "username": { "type": "string" },
          "is_admin": { "type": "boolean" }
        },
        "required": ["id", "username", "is_admin"]
      },
      "AuthResponse": {
        "type": "object",
        "properties": {
          "token": { "type": "string" }
        },
        "required": ["token"]
      },
      "Error": {
        "type": "object",
        "properties": {
          "error": { "type": "string" },
          "details": { "type": "string" }
        }
      }
    },
    "parameters": {
      "hostId": {
        "name": "hostId",
        "in": "query",
        "description": "The ID of the SSH host",
        "required": true,
        "schema": {
          "type": "integer"
        }
      },
      "sessionId": {
        "name": "sessionId",
        "in": "query",
        "description": "The SSH session identifier",
        "required": true,
        "schema": {
          "type": "string"
        }
      },
      "path": {
        "name": "path",
        "in": "query",
        "description": "The file or directory path",
        "required": true,
        "schema": {
          "type": "string"
        }
      },
      "tunnelName": {
        "name": "tunnelName",
        "in": "path",
        "description": "The name of the tunnel",
        "required": true,
        "schema": {
          "type": "string"
        }
      },
      "userId": {
        "name": "userId",
        "in": "path",
        "description": "The user identifier",
        "required": true,
        "schema": {
          "type": "string"
        }
      },
      "hostIdPath": {
        "name": "id",
        "in": "path",
        "description": "The SSH host identifier",
        "required": true,
        "schema": {
          "type": "integer"
        }
      },
      "serverIdPath": {
        "name": "id",
        "in": "path",
        "description": "The server identifier",
        "required": true,
        "schema": {
          "type": "integer"
        }
      }
    },
    "responses": {
      "BadRequest": {
        "description": "Bad Request",
        "content": {
          "application/json": {
            "schema": { "$ref": "#/components/schemas/Error" }
          }
        }
      },
      "Unauthorized": {
        "description": "Unauthorized",
        "content": {
          "application/json": {
            "schema": { "$ref": "#/components/schemas/Error" }
          }
        }
      },
      "NotFound": {
        "description": "Not Found",
        "content": {
          "application/json": {
            "schema": { "$ref": "#/components/schemas/Error" }
          }
        }
      },
      "InternalServerError": {
        "description": "Internal Server Error",
        "content": {
          "application/json": {
            "schema": { "$ref": "#/components/schemas/Error" }
          }
        }
      }
    }
  },
  "paths": {
    "/health": {
      "get": {
        "summary": "Health check endpoint",
        "description": "Simple health check to verify the API server is running and responsive. **Server: localhost:8081**",
        "operationId": "getHealth",
        "tags": ["System"],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "status": { "type": "string", "example": "ok" }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/version": {
      "get": {
        "summary": "Get version information and check for updates",
        "description": "Get version information and check for updates. **Server: localhost:8081**",
        "operationId": "getVersion",
        "tags": ["System"],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "status": {
                      "type": "string",
                      "enum": ["up_to_date", "requires_update"]
                    },
                    "version": { "type": "string" },
                    "latest_release": {
                      "type": "object",
                      "properties": {
                        "tag_name": { "type": "string" },
                        "name": { "type": "string" },
                        "published_at": { "type": "string" },
                        "html_url": { "type": "string" }
                      }
                    },
                    "cached": { "type": "boolean" },
                    "cache_age": { "type": "number" }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Version information not available",
            "content": {
              "text/plain": {
                "schema": { "type": "string" }
              }
            }
          }
        }
      }
    },
    "/releases/rss": {
      "get": {
        "summary": "Get releases in RSS format",
        "description": "Get releases in RSS format. **Server: localhost:8081**",
        "operationId": "getReleasesRSS",
        "tags": ["System"],
        "parameters": [
          {
            "name": "page",
            "in": "query",
            "schema": { "type": "integer", "default": 1 }
          },
          {
            "name": "per_page",
            "in": "query",
            "schema": { "type": "integer", "default": 20, "maximum": 100 }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "feed": {
                      "type": "object",
                      "properties": {
                        "title": { "type": "string" },
                        "description": { "type": "string" },
                        "link": { "type": "string" },
                        "updated": { "type": "string" }
                      }
                    },
                    "items": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "id": { "type": "integer" },
                          "title": { "type": "string" },
                          "description": { "type": "string" },
                          "link": { "type": "string" },
                          "pubDate": { "type": "string" },
                          "version": { "type": "string" },
                          "isPrerelease": { "type": "boolean" },
                          "isDraft": { "type": "boolean" },
                          "assets": {
                            "type": "array",
                            "items": {
                              "type": "object",
                              "properties": {
                                "name": { "type": "string" },
                                "size": { "type": "number" },
                                "download_count": { "type": "number" },
                                "download_url": { "type": "string" }
                              }
                            }
                          }
                        }
                      }
                    },
                    "total_count": { "type": "integer" },
                    "cached": { "type": "boolean" },
                    "cache_age": { "type": "number" }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/ssh/db/host": {
      "get": {
        "summary": "Get all SSH hosts",
        "description": "Retrieve a list of all configured SSH hosts in the system. This endpoint requires authentication and returns host information including connection details, authentication methods, and enabled features. **Server: localhost:8081**",
        "operationId": "getSSHHosts",
        "tags": ["SSH Hosts"],
        "security": [{ "bearerAuth": [] }],
        "responses": {
          "200": {
            "description": "Successfully retrieved SSH hosts",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": { "$ref": "#/components/schemas/SSHHost" }
                }
              }
            }
          },
          "401": { "$ref": "#/components/responses/Unauthorized" }
        }
      },
      "post": {
        "summary": "Create a new SSH host",
        "description": "Create a new SSH host configuration. **Server: localhost:8081**",
        "operationId": "createSSHHost",
        "tags": ["SSH Hosts"],
        "security": [{ "bearerAuth": [] }],
        "requestBody": {
          "required": true,
          "content": {
            "multipart/form-data": {
              "schema": {
                "type": "object",
                "properties": {
                  "key": {
                    "type": "string",
                    "format": "binary",
                    "description": "SSH private key file (optional)"
                  },
                  "data": {
                    "type": "string",
                    "description": "JSON string containing host data"
                  }
                }
              }
            },
            "application/json": {
              "schema": { "$ref": "#/components/schemas/SSHHostData" }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/SSHHost" }
              }
            }
          },
          "400": { "$ref": "#/components/responses/BadRequest" },
          "401": { "$ref": "#/components/responses/Unauthorized" }
        }
      }
    },
    "/ssh/db/host/{id}": {
      "get": {
        "summary": "Get SSH host by ID",
        "description": "Get SSH host by ID. **Server: localhost:8081**",
        "operationId": "getSSHHostById",
        "tags": ["SSH Hosts"],
        "security": [{ "bearerAuth": [] }],
        "parameters": [
          {
            "$ref": "#/components/parameters/hostIdPath"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/SSHHost" }
              }
            }
          },
          "404": { "$ref": "#/components/responses/NotFound" },
          "401": { "$ref": "#/components/responses/Unauthorized" }
        }
      },
      "put": {
        "summary": "Update SSH host",
        "description": "Update SSH host configuration. **Server: localhost:8081**",
        "operationId": "updateSSHHost",
        "tags": ["SSH Hosts"],
        "security": [{ "bearerAuth": [] }],
        "parameters": [
          {
            "$ref": "#/components/parameters/hostIdPath"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "multipart/form-data": {
              "schema": {
                "type": "object",
                "properties": {
                  "key": {
                    "type": "string",
                    "format": "binary",
                    "description": "SSH private key file (optional)"
                  },
                  "data": {
                    "type": "string",
                    "description": "JSON string containing host data"
                  }
                }
              }
            },
            "application/json": {
              "schema": { "$ref": "#/components/schemas/SSHHostData" }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/SSHHost" }
              }
            }
          },
          "400": { "$ref": "#/components/responses/BadRequest" },
          "401": { "$ref": "#/components/responses/Unauthorized" },
          "404": { "$ref": "#/components/responses/NotFound" }
        }
      },
      "delete": {
        "summary": "Delete SSH host",
        "description": "Delete SSH host configuration. **Server: localhost:8081**",
        "operationId": "deleteSSHHost",
        "tags": ["SSH Hosts"],
        "security": [{ "bearerAuth": [] }],
        "parameters": [
          {
            "$ref": "#/components/parameters/hostIdPath"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "message": { "type": "string" }
                  }
                }
              }
            }
          },
          "401": { "$ref": "#/components/responses/Unauthorized" },
          "404": { "$ref": "#/components/responses/NotFound" }
        }
      }
    },
    "/ssh/db/folders": {
      "get": {
        "summary": "Get all SSH host folders",
        "description": "Get all SSH host folders. **Server: localhost:8081**",
        "operationId": "getSSHFolders",
        "tags": ["SSH Hosts"],
        "security": [{ "bearerAuth": [] }],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": { "type": "string" }
                }
              }
            }
          },
          "401": { "$ref": "#/components/responses/Unauthorized" }
        }
      }
    },
    "/ssh/bulk-import": {
      "post": {
        "summary": "Bulk import SSH hosts",
        "description": "Bulk import SSH hosts. **Server: localhost:8081**",
        "operationId": "bulkImportSSHHosts",
        "tags": ["SSH Hosts"],
        "security": [{ "bearerAuth": [] }],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "hosts": {
                    "type": "array",
                    "items": { "$ref": "#/components/schemas/SSHHostData" }
                  }
                },
                "required": ["hosts"]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "message": { "type": "string" },
                    "success": { "type": "integer" },
                    "failed": { "type": "integer" },
                    "errors": {
                      "type": "array",
                      "items": { "type": "string" }
                    }
                  }
                }
              }
            }
          },
          "400": { "$ref": "#/components/responses/BadRequest" },
          "401": { "$ref": "#/components/responses/Unauthorized" }
        }
      }
    },
    "/ssh/file_manager/recent": {
      "get": {
        "summary": "Get recent files for a host",
        "description": "Get recent files for a host. **Server: localhost:8081**",
        "operationId": "getFileManagerRecent",
        "tags": ["File Manager"],
        "security": [{ "bearerAuth": [] }],
        "parameters": [
          {
            "$ref": "#/components/parameters/hostId"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": { "$ref": "#/components/schemas/FileManagerFile" }
                }
              }
            }
          },
          "401": { "$ref": "#/components/responses/Unauthorized" }
        }
      },
      "post": {
        "summary": "Add file to recent list",
        "description": "Add file to recent list. **Server: localhost:8081**",
        "operationId": "addFileManagerRecent",
        "tags": ["File Manager"],
        "security": [{ "bearerAuth": [] }],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "name": { "type": "string" },
                  "path": { "type": "string" },
                  "isSSH": { "type": "boolean" },
                  "sshSessionId": { "type": "string" },
                  "hostId": { "type": "integer" }
                },
                "required": ["name", "path", "isSSH", "hostId"]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "message": { "type": "string" }
                  }
                }
              }
            }
          },
          "400": { "$ref": "#/components/responses/BadRequest" },
          "401": { "$ref": "#/components/responses/Unauthorized" }
        }
      },
      "delete": {
        "summary": "Remove file from recent list",
        "description": "Remove file from recent list. **Server: localhost:8081**",
        "operationId": "removeFileManagerRecent",
        "tags": ["File Manager"],
        "security": [{ "bearerAuth": [] }],
        "parameters": [
          {
            "name": "name",
            "in": "query",
            "description": "File name",
            "required": true,
            "schema": { "type": "string" }
          },
          {
            "name": "path",
            "in": "query",
            "description": "File path",
            "required": true,
            "schema": { "type": "string" }
          },
          {
            "name": "isSSH",
            "in": "query",
            "description": "Whether this is an SSH file",
            "required": true,
            "schema": { "type": "boolean" }
          },
          {
            "name": "sshSessionId",
            "in": "query",
            "description": "SSH session ID",
            "required": false,
            "schema": { "type": "string" }
          },
          {
            "name": "hostId",
            "in": "query",
            "description": "Host ID",
            "required": true,
            "schema": { "type": "integer" }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "message": { "type": "string" }
                  }
                }
              }
            }
          },
          "400": { "$ref": "#/components/responses/BadRequest" },
          "401": { "$ref": "#/components/responses/Unauthorized" }
        }
      }
    },
    "/ssh/file_manager/pinned": {
      "get": {
        "summary": "Get pinned files for a host",
        "description": "Get pinned files for a host. **Server: localhost:8081**",
        "operationId": "getFileManagerPinned",
        "tags": ["File Manager"],
        "security": [{ "bearerAuth": [] }],
        "parameters": [
          {
            "$ref": "#/components/parameters/hostId"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": { "$ref": "#/components/schemas/FileManagerFile" }
                }
              }
            }
          },
          "401": { "$ref": "#/components/responses/Unauthorized" }
        }
      },
      "post": {
        "summary": "Add file to pinned list",
        "description": "Add file to pinned list. **Server: localhost:8081**",
        "operationId": "addFileManagerPinned",
        "tags": ["File Manager"],
        "security": [{ "bearerAuth": [] }],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "name": { "type": "string" },
                  "path": { "type": "string" },
                  "isSSH": { "type": "boolean" },
                  "sshSessionId": { "type": "string" },
                  "hostId": { "type": "integer" }
                },
                "required": ["name", "path", "isSSH", "hostId"]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "message": { "type": "string" }
                  }
                }
              }
            }
          },
          "400": { "$ref": "#/components/responses/BadRequest" },
          "401": { "$ref": "#/components/responses/Unauthorized" }
        }
      },
      "delete": {
        "summary": "Remove file from pinned list",
        "description": "Remove file from pinned list. **Server: localhost:8081**",
        "operationId": "removeFileManagerPinned",
        "tags": ["File Manager"],
        "security": [{ "bearerAuth": [] }],
        "parameters": [
          {
            "name": "name",
            "in": "query",
            "description": "File name",
            "required": true,
            "schema": { "type": "string" }
          },
          {
            "name": "path",
            "in": "query",
            "description": "File path",
            "required": true,
            "schema": { "type": "string" }
          },
          {
            "name": "isSSH",
            "in": "query",
            "description": "Whether this is an SSH file",
            "required": true,
            "schema": { "type": "boolean" }
          },
          {
            "name": "sshSessionId",
            "in": "query",
            "description": "SSH session ID",
            "required": false,
            "schema": { "type": "string" }
          },
          {
            "name": "hostId",
            "in": "query",
            "description": "Host ID",
            "required": true,
            "schema": { "type": "integer" }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "message": { "type": "string" }
                  }
                }
              }
            }
          },
          "400": { "$ref": "#/components/responses/BadRequest" },
          "401": { "$ref": "#/components/responses/Unauthorized" }
        }
      }
    },
    "/ssh/file_manager/shortcuts": {
      "get": {
        "summary": "Get file shortcuts for a host",
        "description": "Get file shortcuts for a host. **Server: localhost:8081**",
        "operationId": "getFileManagerShortcuts",
        "tags": ["File Manager"],
        "security": [{ "bearerAuth": [] }],
        "parameters": [
          {
            "$ref": "#/components/parameters/hostId"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "type": "object",
                    "properties": {
                      "name": { "type": "string" },
                      "path": { "type": "string" }
                    },
                    "required": ["name", "path"]
                  }
                }
              }
            }
          },
          "401": { "$ref": "#/components/responses/Unauthorized" }
        }
      },
      "post": {
        "summary": "Add file shortcut",
        "description": "Add file shortcut. **Server: localhost:8081**",
        "operationId": "addFileManagerShortcut",
        "tags": ["File Manager"],
        "security": [{ "bearerAuth": [] }],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "name": { "type": "string" },
                  "path": { "type": "string" },
                  "isSSH": { "type": "boolean" },
                  "sshSessionId": { "type": "string" },
                  "hostId": { "type": "integer" }
                },
                "required": ["name", "path", "isSSH", "hostId"]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "message": { "type": "string" }
                  }
                }
              }
            }
          },
          "400": { "$ref": "#/components/responses/BadRequest" },
          "401": { "$ref": "#/components/responses/Unauthorized" }
        }
      },
      "delete": {
        "summary": "Remove file shortcut",
        "description": "Remove file shortcut. **Server: localhost:8081**",
        "operationId": "removeFileManagerShortcut",
        "tags": ["File Manager"],
        "security": [{ "bearerAuth": [] }],
        "parameters": [
          {
            "name": "name",
            "in": "query",
            "description": "File name",
            "required": true,
            "schema": { "type": "string" }
          },
          {
            "name": "path",
            "in": "query",
            "description": "File path",
            "required": true,
            "schema": { "type": "string" }
          },
          {
            "name": "isSSH",
            "in": "query",
            "description": "Whether this is an SSH file",
            "required": true,
            "schema": { "type": "boolean" }
          },
          {
            "name": "sshSessionId",
            "in": "query",
            "description": "SSH session ID",
            "required": false,
            "schema": { "type": "string" }
          },
          {
            "name": "hostId",
            "in": "query",
            "description": "Host ID",
            "required": true,
            "schema": { "type": "integer" }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "message": { "type": "string" }
                  }
                }
              }
            }
          },
          "400": { "$ref": "#/components/responses/BadRequest" },
          "401": { "$ref": "#/components/responses/Unauthorized" }
        }
      }
    },
    "/ssh/file_manager/ssh/connect": {
      "post": {
        "summary": "Connect to SSH server",
        "description": "Connect to SSH server. **Server: localhost:8084**",
        "operationId": "connectSSH",
        "tags": ["SSH File Operations"],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "sessionId": { "type": "string" },
                  "ip": { "type": "string" },
                  "port": { "type": "integer" },
                  "username": { "type": "string" },
                  "password": { "type": "string" },
                  "sshKey": { "type": "string" },
                  "keyPassword": { "type": "string" }
                },
                "required": ["sessionId", "ip", "username", "port"]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "message": { "type": "string" }
                  }
                }
              }
            }
          },
          "400": { "$ref": "#/components/responses/BadRequest" }
        }
      }
    },
    "/ssh/file_manager/ssh/disconnect": {
      "post": {
        "summary": "Disconnect from SSH server",
        "description": "Disconnect from SSH server. **Server: localhost:8084**",
        "operationId": "disconnectSSH",
        "tags": ["SSH File Operations"],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "sessionId": { "type": "string" }
                },
                "required": ["sessionId"]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "message": { "type": "string" }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/ssh/file_manager/ssh/status": {
      "get": {
        "summary": "Get SSH connection status",
        "description": "Get SSH connection status. **Server: localhost:8084**",
        "operationId": "getSSHStatus",
        "tags": ["SSH File Operations"],
        "parameters": [
          {
            "$ref": "#/components/parameters/sessionId"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "connected": { "type": "boolean" }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/ssh/file_manager/ssh/listFiles": {
      "get": {
        "summary": "List files in SSH directory",
        "description": "List files in SSH directory. **Server: localhost:8084**",
        "operationId": "listSSHFiles",
        "tags": ["SSH File Operations"],
        "parameters": [
          {
            "$ref": "#/components/parameters/sessionId"
          },
          {
            "$ref": "#/components/parameters/path"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "type": "object",
                    "properties": {
                      "name": { "type": "string" },
                      "path": { "type": "string" },
                      "type": {
                        "type": "string",
                        "enum": ["file", "directory"]
                      },
                      "size": { "type": "number" },
                      "modified": { "type": "string" },
                      "permissions": { "type": "string" }
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/ssh/file_manager/ssh/readFile": {
      "get": {
        "summary": "Read SSH file content",
        "description": "Read SSH file content. **Server: localhost:8084**",
        "operationId": "readSSHFile",
        "tags": ["SSH File Operations"],
        "parameters": [
          {
            "$ref": "#/components/parameters/sessionId"
          },
          {
            "$ref": "#/components/parameters/path"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "content": { "type": "string" },
                    "path": { "type": "string" }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/ssh/file_manager/ssh/writeFile": {
      "post": {
        "summary": "Write content to SSH file",
        "description": "Write content to SSH file. **Server: localhost:8084**",
        "operationId": "writeSSHFile",
        "tags": ["SSH File Operations"],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "sessionId": { "type": "string" },
                  "path": { "type": "string" },
                  "content": { "type": "string" }
                },
                "required": ["sessionId", "path", "content"]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "message": { "type": "string" }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/ssh/file_manager/ssh/createFile": {
      "post": {
        "summary": "Create new SSH file",
        "description": "Create new SSH file. **Server: localhost:8084**",
        "operationId": "createSSHFile",
        "tags": ["SSH File Operations"],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "sessionId": { "type": "string" },
                  "path": { "type": "string" },
                  "fileName": { "type": "string" },
                  "content": { "type": "string" }
                },
                "required": ["sessionId", "path", "fileName"]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "message": { "type": "string" }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/ssh/file_manager/ssh/createFolder": {
      "post": {
        "summary": "Create new SSH folder",
        "description": "Create new SSH folder. **Server: localhost:8084**",
        "operationId": "createSSHFolder",
        "tags": ["SSH File Operations"],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "sessionId": { "type": "string" },
                  "path": { "type": "string" },
                  "folderName": { "type": "string" }
                },
                "required": ["sessionId", "path", "folderName"]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "message": { "type": "string" }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/ssh/file_manager/ssh/deleteItem": {
      "delete": {
        "summary": "Delete SSH file or folder",
        "description": "Delete SSH file or folder. **Server: localhost:8084**",
        "operationId": "deleteSSHItem",
        "tags": ["SSH File Operations"],
        "parameters": [
          {
            "name": "sessionId",
            "in": "query",
            "description": "SSH session ID",
            "required": true,
            "schema": { "type": "string" }
          },
          {
            "name": "path",
            "in": "query",
            "description": "File or directory path",
            "required": true,
            "schema": { "type": "string" }
          },
          {
            "name": "isDirectory",
            "in": "query",
            "description": "Whether the item is a directory",
            "required": true,
            "schema": { "type": "boolean" }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "message": { "type": "string" }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/ssh/file_manager/ssh/renameItem": {
      "put": {
        "summary": "Rename SSH file or folder",
        "description": "Rename SSH file or folder. **Server: localhost:8084**",
        "operationId": "renameSSHItem",
        "tags": ["SSH File Operations"],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "sessionId": { "type": "string" },
                  "oldPath": { "type": "string" },
                  "newName": { "type": "string" }
                },
                "required": ["sessionId", "oldPath", "newName"]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "message": { "type": "string" }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/ssh/tunnel/status": {
      "get": {
        "summary": "Get all tunnel statuses",
        "description": "Get all tunnel statuses. **Server: localhost:8083**",
        "operationId": "getTunnelStatuses",
        "tags": ["Tunnel Management"],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": {
                    "$ref": "#/components/schemas/TunnelStatus"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/ssh/tunnel/status/{tunnelName}": {
      "get": {
        "summary": "Get tunnel status by name",
        "description": "Get tunnel status by name. **Server: localhost:8083**",
        "operationId": "getTunnelStatusByName",
        "tags": ["Tunnel Management"],
        "parameters": [
          {
            "$ref": "#/components/parameters/tunnelName"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/TunnelStatus" }
              }
            }
          }
        }
      }
    },
    "/ssh/tunnel/connect": {
      "post": {
        "summary": "Connect to tunnel",
        "description": "Connect to tunnel. **Server: localhost:8083**",
        "operationId": "connectTunnel",
        "tags": ["Tunnel Management"],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": { "$ref": "#/components/schemas/TunnelConfig" }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "message": { "type": "string" }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/ssh/tunnel/disconnect": {
      "post": {
        "summary": "Disconnect tunnel",
        "description": "Disconnect tunnel. **Server: localhost:8083**",
        "operationId": "disconnectTunnel",
        "tags": ["Tunnel Management"],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "tunnelName": { "type": "string" }
                },
                "required": ["tunnelName"]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "message": { "type": "string" }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/ssh/tunnel/cancel": {
      "post": {
        "summary": "Cancel tunnel connection",
        "description": "Cancel tunnel connection. **Server: localhost:8083**",
        "operationId": "cancelTunnel",
        "tags": ["Tunnel Management"],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "tunnelName": { "type": "string" }
                },
                "required": ["tunnelName"]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "message": { "type": "string" }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/status": {
      "get": {
        "summary": "Get all server statuses",
        "description": "Get all server statuses. **Server: localhost:8085**",
        "operationId": "getAllServerStatuses",
        "tags": ["Server Statistics"],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": {
                    "$ref": "#/components/schemas/ServerStatus"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/status/{id}": {
      "get": {
        "summary": "Get server status by ID",
        "description": "Get server status by ID. **Server: localhost:8085**",
        "operationId": "getServerStatusById",
        "tags": ["Server Statistics"],
        "parameters": [
          {
            "$ref": "#/components/parameters/serverIdPath"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/ServerStatus" }
              }
            }
          }
        }
      }
    },
    "/metrics/{id}": {
      "get": {
        "summary": "Get server metrics by ID",
        "description": "Get server metrics by ID. **Server: localhost:8085**",
        "operationId": "getServerMetricsById",
        "tags": ["Server Statistics"],
        "parameters": [
          {
            "$ref": "#/components/parameters/serverIdPath"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/ServerMetrics" }
              }
            }
          }
        }
      }
    },
    "/refresh": {
      "post": {
        "summary": "Refresh server statistics",
        "description": "Refresh server statistics. **Server: localhost:8085**",
        "operationId": "refreshServerStats",
        "tags": ["Server Statistics"],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "message": { "type": "string" }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/users/create": {
      "post": {
        "summary": "Create new user account",
        "description": "Create new user account. **Server: localhost:8081**",
        "operationId": "createUser",
        "tags": ["User Management"],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "username": { "type": "string" },
                  "password": { "type": "string" }
                },
                "required": ["username", "password"]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "message": { "type": "string" }
                  }
                }
              }
            }
          },
          "400": { "$ref": "#/components/responses/BadRequest" }
        }
      }
    },
    "/users/login": {
      "post": {
        "summary": "User login",
        "description": "User login. **Server: localhost:8081**",
        "operationId": "loginUser",
        "tags": ["Authentication"],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "username": { "type": "string" },
                  "password": { "type": "string" }
                },
                "required": ["username", "password"]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/AuthResponse" }
              }
            }
          },
          "400": { "$ref": "#/components/responses/BadRequest" },
          "401": { "$ref": "#/components/responses/Unauthorized" }
        }
      }
    },
    "/users/me": {
      "get": {
        "summary": "Get current user info",
        "description": "Get current user info. **Server: localhost:8081**",
        "operationId": "getUserInfo",
        "tags": ["User Management"],
        "security": [{ "bearerAuth": [] }],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/UserInfo" }
              }
            }
          },
          "401": { "$ref": "#/components/responses/Unauthorized" }
        }
      }
    },
    "/users/count": {
      "get": {
        "summary": "Get total user count",
        "description": "Get total user count. **Server: localhost:8081**",
        "operationId": "getUserCount",
        "tags": ["User Management"],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "count": { "type": "integer" }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/users/registration-allowed": {
      "get": {
        "summary": "Check if user registration is allowed",
        "description": "Check if user registration is allowed. **Server: localhost:8081**",
        "operationId": "getRegistrationAllowed",
        "tags": ["User Management"],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "allowed": { "type": "boolean" }
                  }
                }
              }
            }
          }
        }
      },
      "patch": {
        "summary": "Update registration allowed status",
        "description": "Update registration allowed status. **Server: localhost:8081**",
        "operationId": "updateRegistrationAllowed",
        "tags": ["User Management"],
        "security": [{ "bearerAuth": [] }],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "allowed": { "type": "boolean" }
                },
                "required": ["allowed"]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "message": { "type": "string" }
                  }
                }
              }
            }
          },
          "401": { "$ref": "#/components/responses/Unauthorized" }
        }
      }
    },
    "/users/initiate-reset": {
      "post": {
        "summary": "Initiate password reset",
        "description": "Initiate password reset. **Server: localhost:8081**",
        "operationId": "initiatePasswordReset",
        "tags": ["Authentication"],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "username": { "type": "string" }
                },
                "required": ["username"]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "message": { "type": "string" }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/users/verify-reset-code": {
      "post": {
        "summary": "Verify password reset code",
        "description": "Verify password reset code. **Server: localhost:8081**",
        "operationId": "verifyPasswordResetCode",
        "tags": ["Authentication"],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "username": { "type": "string" },
                  "resetCode": { "type": "string" }
                },
                "required": ["username", "resetCode"]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "tempToken": { "type": "string" }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/users/complete-reset": {
      "post": {
        "summary": "Complete password reset",
        "description": "Complete password reset. **Server: localhost:8081**",
        "operationId": "completePasswordReset",
        "tags": ["Authentication"],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "username": { "type": "string" },
                  "tempToken": { "type": "string" },
                  "newPassword": { "type": "string" }
                },
                "required": ["username", "tempToken", "newPassword"]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "message": { "type": "string" }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/users/totp/setup": {
      "post": {
        "summary": "Setup TOTP authentication",
        "description": "Setup TOTP authentication. **Server: localhost:8081**",
        "operationId": "setupTOTP",
        "tags": ["TOTP"],
        "security": [{ "bearerAuth": [] }],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "secret": { "type": "string" },
                    "qr_code": { "type": "string" }
                  }
                }
              }
            }
          },
          "401": { "$ref": "#/components/responses/Unauthorized" }
        }
      }
    },
    "/users/totp/enable": {
      "post": {
        "summary": "Enable TOTP authentication",
        "description": "Enable TOTP authentication. **Server: localhost:8081**",
        "operationId": "enableTOTP",
        "tags": ["TOTP"],
        "security": [{ "bearerAuth": [] }],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "totp_code": { "type": "string" }
                },
                "required": ["totp_code"]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "message": { "type": "string" },
                    "backup_codes": {
                      "type": "array",
                      "items": { "type": "string" }
                    }
                  }
                }
              }
            }
          },
          "401": { "$ref": "#/components/responses/Unauthorized" }
        }
      }
    },
    "/users/totp/verify-login": {
      "post": {
        "summary": "Verify TOTP during login",
        "description": "Verify TOTP during login. **Server: localhost:8081**",
        "operationId": "verifyTOTPLogin",
        "tags": ["TOTP"],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "temp_token": { "type": "string" },
                  "totp_code": { "type": "string" }
                },
                "required": ["temp_token", "totp_code"]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/AuthResponse" }
              }
            }
          }
        }
      }
    },
    "/alerts": {
      "get": {
        "summary": "Get all system alerts",
        "description": "Get all system alerts. **Server: localhost:8081**",
        "operationId": "getAllAlerts",
        "tags": ["Alerts"],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "type": "object",
                    "properties": {
                      "id": { "type": "string" },
                      "title": { "type": "string" },
                      "message": { "type": "string" },
                      "expiresAt": { "type": "string" },
                      "priority": {
                        "type": "string",
                        "enum": ["low", "medium", "high", "critical"]
                      },
                      "type": {
                        "type": "string",
                        "enum": ["info", "warning", "error", "success"]
                      },
                      "actionUrl": { "type": "string" },
                      "actionText": { "type": "string" }
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/alerts/user/{userId}": {
      "get": {
        "summary": "Get alerts for specific user",
        "description": "Get alerts for specific user. **Server: localhost:8081**",
        "operationId": "getUserAlerts",
        "tags": ["Alerts"],
        "parameters": [
          {
            "$ref": "#/components/parameters/userId"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "alerts": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "id": { "type": "string" },
                          "title": { "type": "string" },
                          "message": { "type": "string" },
                          "expiresAt": { "type": "string" },
                          "priority": {
                            "type": "string",
                            "enum": ["low", "medium", "high", "critical"]
                          },
                          "type": {
                            "type": "string",
                            "enum": ["info", "warning", "error", "success"]
                          },
                          "actionUrl": { "type": "string" },
                          "actionText": { "type": "string" }
                        }
                      }
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/alerts/dismiss": {
      "post": {
        "summary": "Dismiss an alert",
        "description": "Dismiss an alert. **Server: localhost:8081**",
        "operationId": "dismissAlert",
        "tags": ["Alerts"],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "userId": { "type": "string" },
                  "alertId": { "type": "string" }
                },
                "required": ["userId", "alertId"]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "message": { "type": "string" }
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}
