2025-08-31 00:42:50 -05:00
{
2025-09-12 14:42:00 -05:00
"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"
2025-08-31 00:42:50 -05:00
}
},
2025-09-12 14:42:00 -05:00
"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" ]
2025-08-31 00:42:50 -05:00
},
2025-09-12 14:42:00 -05:00
"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" ]
2025-08-31 00:42:50 -05:00
},
2025-09-12 14:42:00 -05:00
"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"
]
2025-08-31 00:42:50 -05:00
},
2025-09-12 14:42:00 -05:00
"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" }
2025-08-31 00:42:50 -05:00
}
},
2025-09-12 14:42:00 -05:00
"ServerStatus" : {
"type" : "object" ,
"properties" : {
"status" : { "type" : "string" , "enum" : [ "online" , "offline" ] },
"lastChecked" : { "type" : "string" , "format" : "date-time" }
2025-08-31 00:42:50 -05:00
}
},
2025-09-12 14:42:00 -05:00
"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" }
2025-08-31 00:42:50 -05:00
}
},
2025-09-12 14:42:00 -05:00
"FileManagerFile" : {
"type" : "object" ,
"properties" : {
"name" : { "type" : "string" },
"path" : { "type" : "string" },
"type" : { "type" : "string" , "enum" : [ "file" , "directory" ] },
"isSSH" : { "type" : "boolean" },
"sshSessionId" : { "type" : "string" }
2025-08-31 00:42:50 -05:00
},
2025-09-12 14:42:00 -05:00
"required" : [ "name" , "path" ]
},
"UserInfo" : {
"type" : "object" ,
"properties" : {
"id" : { "type" : "string" },
"username" : { "type" : "string" },
"is_admin" : { "type" : "boolean" }
2025-08-31 00:42:50 -05:00
},
2025-09-12 14:42:00 -05:00
"required" : [ "id" , "username" , "is_admin" ]
},
"AuthResponse" : {
"type" : "object" ,
"properties" : {
"token" : { "type" : "string" }
2025-08-31 00:42:50 -05:00
},
2025-09-12 14:42:00 -05:00
"required" : [ "token" ]
},
"Error" : {
"type" : "object" ,
"properties" : {
"error" : { "type" : "string" },
"details" : { "type" : "string" }
2025-08-31 00:42:50 -05:00
}
}
},
2025-09-12 14:42:00 -05:00
"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" }
2025-08-31 00:42:50 -05:00
}
}
}
}
}
}
2025-09-12 14:42:00 -05:00
}
},
"/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" }
2025-08-31 00:42:50 -05:00
}
}
}
2025-09-12 14:42:00 -05:00
}
},
"401" : {
"description" : "Version information not available" ,
"content" : {
"text/plain" : {
"schema" : { "type" : "string" }
2025-08-31 00:42:50 -05:00
}
}
}
}
2025-09-12 14:42:00 -05:00
}
},
"/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" : {
2025-08-31 00:42:50 -05:00
"type" : "object" ,
"properties" : {
2025-09-12 14:42:00 -05:00
"id" : { "type" : "integer" },
2025-08-31 00:42:50 -05:00
"title" : { "type" : "string" },
"description" : { "type" : "string" },
"link" : { "type" : "string" },
2025-09-12 14:42:00 -05:00
"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" }
2025-08-31 00:42:50 -05:00
}
}
}
}
2025-09-12 14:42:00 -05:00
}
},
"total_count" : { "type" : "integer" },
"cached" : { "type" : "boolean" },
"cache_age" : { "type" : "number" }
2025-08-31 00:42:50 -05:00
}
}
}
}
}
}
2025-09-12 14:42:00 -05:00
}
},
"/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" ,
2025-08-31 00:42:50 -05:00
"content" : {
"application/json" : {
2025-09-12 14:42:00 -05:00
"schema" : {
"type" : "array" ,
"items" : { "$ref" : "#/components/schemas/SSHHost" }
}
2025-08-31 00:42:50 -05:00
}
}
},
2025-09-12 14:42:00 -05:00
"401" : { "$ref" : "#/components/responses/Unauthorized" }
2025-08-31 00:42:50 -05:00
}
},
2025-09-12 14:42:00 -05:00
"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"
}
2025-08-31 00:42:50 -05:00
}
}
},
2025-09-12 14:42:00 -05:00
"application/json" : {
"schema" : { "$ref" : "#/components/schemas/SSHHostData" }
}
2025-08-31 00:42:50 -05:00
}
},
2025-09-12 14:42:00 -05:00
"responses" : {
"200" : {
"description" : "OK" ,
2025-08-31 00:42:50 -05:00
"content" : {
"application/json" : {
2025-09-12 14:42:00 -05:00
"schema" : { "$ref" : "#/components/schemas/SSHHost" }
2025-08-31 00:42:50 -05:00
}
}
},
2025-09-12 14:42:00 -05:00
"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"
}
2025-08-31 00:42:50 -05:00
}
}
},
2025-09-12 14:42:00 -05:00
"application/json" : {
"schema" : { "$ref" : "#/components/schemas/SSHHostData" }
}
2025-08-31 00:42:50 -05:00
}
},
2025-09-12 14:42:00 -05:00
"responses" : {
"200" : {
"description" : "OK" ,
"content" : {
"application/json" : {
"schema" : { "$ref" : "#/components/schemas/SSHHost" }
}
2025-08-31 00:42:50 -05:00
}
2025-09-12 14:42:00 -05:00
},
"400" : { "$ref" : "#/components/responses/BadRequest" },
"401" : { "$ref" : "#/components/responses/Unauthorized" },
"404" : { "$ref" : "#/components/responses/NotFound" }
2025-08-31 00:42:50 -05:00
}
},
2025-09-12 14:42:00 -05:00
"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"
2025-08-31 00:42:50 -05:00
}
2025-09-12 14:42:00 -05:00
],
"responses" : {
"200" : {
"description" : "OK" ,
2025-08-31 00:42:50 -05:00
"content" : {
"application/json" : {
"schema" : {
"type" : "object" ,
"properties" : {
2025-09-12 14:42:00 -05:00
"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" : {
2025-08-31 00:42:50 -05:00
"type" : "array" ,
2025-09-12 14:42:00 -05:00
"items" : { "type" : "string" }
2025-08-31 00:42:50 -05:00
}
2025-09-12 14:42:00 -05:00
}
2025-08-31 00:42:50 -05:00
}
}
}
},
2025-09-12 14:42:00 -05:00
"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" }
2025-08-31 00:42:50 -05:00
}
}
2025-09-12 14:42:00 -05:00
}
},
"401" : { "$ref" : "#/components/responses/Unauthorized" }
2025-08-31 00:42:50 -05:00
}
},
2025-09-12 14:42:00 -05:00
"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" ]
2025-08-31 00:42:50 -05:00
}
2025-09-12 14:42:00 -05:00
}
2025-08-31 00:42:50 -05:00
}
},
2025-09-12 14:42:00 -05:00
"responses" : {
"200" : {
"description" : "OK" ,
2025-08-31 00:42:50 -05:00
"content" : {
"application/json" : {
"schema" : {
"type" : "object" ,
"properties" : {
2025-09-12 14:42:00 -05:00
"message" : { "type" : "string" }
}
2025-08-31 00:42:50 -05:00
}
}
}
},
2025-09-12 14:42:00 -05:00
"400" : { "$ref" : "#/components/responses/BadRequest" },
"401" : { "$ref" : "#/components/responses/Unauthorized" }
2025-08-31 00:42:50 -05:00
}
},
2025-09-12 14:42:00 -05:00
"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" ,
2025-08-31 00:42:50 -05:00
"required" : true ,
2025-09-12 14:42:00 -05:00
"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" ,
2025-08-31 00:42:50 -05:00
"content" : {
"application/json" : {
"schema" : {
"type" : "object" ,
"properties" : {
2025-09-12 14:42:00 -05:00
"message" : { "type" : "string" }
}
2025-08-31 00:42:50 -05:00
}
}
}
},
2025-09-12 14:42:00 -05:00
"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" }
2025-08-31 00:42:50 -05:00
}
}
}
2025-09-12 14:42:00 -05:00
},
"401" : { "$ref" : "#/components/responses/Unauthorized" }
2025-08-31 00:42:50 -05:00
}
},
2025-09-12 14:42:00 -05:00
"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" ]
2025-08-31 00:42:50 -05:00
}
2025-09-12 14:42:00 -05:00
}
2025-08-31 00:42:50 -05:00
}
},
2025-09-12 14:42:00 -05:00
"responses" : {
"200" : {
"description" : "OK" ,
2025-08-31 00:42:50 -05:00
"content" : {
"application/json" : {
"schema" : {
"type" : "object" ,
"properties" : {
2025-09-12 14:42:00 -05:00
"message" : { "type" : "string" }
}
2025-08-31 00:42:50 -05:00
}
}
}
},
2025-09-12 14:42:00 -05:00
"400" : { "$ref" : "#/components/responses/BadRequest" },
"401" : { "$ref" : "#/components/responses/Unauthorized" }
2025-08-31 00:42:50 -05:00
}
},
2025-09-12 14:42:00 -05:00
"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" ,
2025-08-31 00:42:50 -05:00
"required" : true ,
2025-09-12 14:42:00 -05:00
"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" ,
2025-08-31 00:42:50 -05:00
"content" : {
"application/json" : {
"schema" : {
"type" : "object" ,
"properties" : {
2025-09-12 14:42:00 -05:00
"message" : { "type" : "string" }
}
2025-08-31 00:42:50 -05:00
}
}
}
},
2025-09-12 14:42:00 -05:00
"400" : { "$ref" : "#/components/responses/BadRequest" },
"401" : { "$ref" : "#/components/responses/Unauthorized" }
2025-08-31 00:42:50 -05:00
}
2025-09-12 14:42:00 -05:00
}
},
"/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" ,
2025-08-31 00:42:50 -05:00
"content" : {
"application/json" : {
"schema" : {
2025-09-12 14:42:00 -05:00
"type" : "array" ,
"items" : {
2025-08-31 00:42:50 -05:00
"type" : "object" ,
"properties" : {
2025-09-12 14:42:00 -05:00
"name" : { "type" : "string" },
2025-08-31 00:42:50 -05:00
"path" : { "type" : "string" }
2025-09-12 14:42:00 -05:00
},
"required" : [ "name" , "path" ]
2025-08-31 00:42:50 -05:00
}
}
}
}
},
2025-09-12 14:42:00 -05:00
"401" : { "$ref" : "#/components/responses/Unauthorized" }
2025-08-31 00:42:50 -05:00
}
},
2025-09-12 14:42:00 -05:00
"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" ]
2025-08-31 00:42:50 -05:00
}
}
}
},
2025-09-12 14:42:00 -05:00
"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" ,
2025-08-31 00:42:50 -05:00
"required" : true ,
2025-09-12 14:42:00 -05:00
"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" ,
2025-08-31 00:42:50 -05:00
"content" : {
"application/json" : {
"schema" : {
"type" : "object" ,
"properties" : {
"allowed" : { "type" : "boolean" }
}
}
}
2025-09-12 14:42:00 -05:00
}
2025-08-31 00:42:50 -05:00
}
}
},
2025-09-12 14:42:00 -05:00
"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" ,
2025-08-31 00:42:50 -05:00
"content" : {
"application/json" : {
"schema" : {
"type" : "object" ,
"properties" : {
2025-09-12 14:42:00 -05:00
"message" : { "type" : "string" }
2025-08-31 00:42:50 -05:00
}
}
}
}
2025-09-12 14:42:00 -05:00
},
"401" : { "$ref" : "#/components/responses/Unauthorized" }
2025-08-31 00:42:50 -05:00
}
2025-09-12 14:42:00 -05:00
}
},
"/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" ,
2025-08-31 00:42:50 -05:00
"content" : {
"application/json" : {
"schema" : {
"type" : "object" ,
"properties" : {
2025-09-12 14:42:00 -05:00
"message" : { "type" : "string" }
2025-08-31 00:42:50 -05:00
}
}
}
}
}
}
2025-09-12 14:42:00 -05:00
}
},
"/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" ,
2025-08-31 00:42:50 -05:00
"content" : {
"application/json" : {
"schema" : {
"type" : "object" ,
"properties" : {
2025-09-12 14:42:00 -05:00
"tempToken" : { "type" : "string" }
2025-08-31 00:42:50 -05:00
}
}
}
}
}
}
2025-09-12 14:42:00 -05:00
}
},
"/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" ]
2025-08-31 00:42:50 -05:00
}
2025-09-12 14:42:00 -05:00
}
2025-08-31 00:42:50 -05:00
}
2025-09-12 14:42:00 -05:00
},
"responses" : {
"200" : {
"description" : "OK" ,
2025-08-31 00:42:50 -05:00
"content" : {
"application/json" : {
"schema" : {
"type" : "object" ,
"properties" : {
2025-09-12 14:42:00 -05:00
"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" }
}
2025-08-31 00:42:50 -05:00
}
}
}
},
2025-09-12 14:42:00 -05:00
"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" : {
2025-08-31 00:42:50 -05:00
"type" : "object" ,
"properties" : {
2025-09-12 14:42:00 -05:00
"id" : { "type" : "string" },
"title" : { "type" : "string" },
2025-08-31 00:42:50 -05:00
"message" : { "type" : "string" },
2025-09-12 14:42:00 -05:00
"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" }
2025-08-31 00:42:50 -05:00
}
}
}
}
2025-09-12 14:42:00 -05:00
}
2025-08-31 00:42:50 -05:00
}
}
2025-09-12 14:42:00 -05:00
}
},
"/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" ,
2025-08-31 00:42:50 -05:00
"content" : {
"application/json" : {
"schema" : {
"type" : "object" ,
"properties" : {
2025-09-12 14:42:00 -05:00
"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" }
2025-08-31 00:42:50 -05:00
}
}
}
}
}
}
}
}
}
2025-09-12 14:42:00 -05:00
}
},
"/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" ,
2025-08-31 00:42:50 -05:00
"content" : {
"application/json" : {
"schema" : {
"type" : "object" ,
"properties" : {
2025-09-12 14:42:00 -05:00
"message" : { "type" : "string" }
2025-08-31 00:42:50 -05:00
}
}
}
}
}
}
}
}
}
2025-09-12 14:42:00 -05:00
}