{
    "openapi": "3.0.0",
    "info": {
        "title": "FeatherPanel API Documentation",
        "description": "The FeatherPanel API is a RESTful API that allows you to manage your FeatherPanel server and resources.",
        "termsOfService": "https://mythical.systems/terms",
        "contact": {
            "name": "MythicalSystems",
            "url": "https://mythical.systems",
            "email": "support@mythical.systems"
        },
        "license": {
            "name": "MIT",
            "url": "https://opensource.org/licenses/MIT"
        },
        "version": "v1.4.0"
    },
    "servers": [
        {
            "url": "/",
            "description": "FeatherPanel API Server"
        }
    ],
    "paths": {
        "/api/admin/abuseipdb/status": {
            "get": {
                "tags": [
                    "Admin - AbuseIPDB"
                ],
                "summary": "AbuseIPDB integration status",
                "description": "Returns whether AbuseIPDB is enabled and configured (API key presence only, never the key).",
                "operationId": "25768aa3164dae6afe93d4808b1b8f95",
                "responses": {
                    "200": {
                        "description": "Status retrieved"
                    },
                    "401": {
                        "description": "Unauthorized"
                    },
                    "403": {
                        "description": "Forbidden"
                    }
                }
            }
        },
        "/api/admin/abuseipdb/categories": {
            "get": {
                "tags": [
                    "Admin - AbuseIPDB"
                ],
                "summary": "List AbuseIPDB report categories",
                "operationId": "506b9f31ffdeebc7ce357682e28a792f",
                "responses": {
                    "200": {
                        "description": "Categories retrieved"
                    }
                }
            }
        },
        "/api/admin/abuseipdb/check": {
            "get": {
                "tags": [
                    "Admin - AbuseIPDB"
                ],
                "summary": "Check a single IP against AbuseIPDB",
                "operationId": "ef2215f938b172c3ff53662586a820f8",
                "parameters": [
                    {
                        "name": "ip",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "max_age_days",
                        "in": "query",
                        "required": false,
                        "schema": {
                            "type": "integer"
                        }
                    },
                    {
                        "name": "verbose",
                        "in": "query",
                        "required": false,
                        "schema": {
                            "type": "boolean"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Check completed"
                    },
                    "400": {
                        "description": "Invalid request or not configured"
                    }
                }
            }
        },
        "/api/admin/abuseipdb/scan": {
            "post": {
                "tags": [
                    "Admin - AbuseIPDB"
                ],
                "summary": "Scan panel users against AbuseIPDB",
                "description": "Checks unique public first_ip/last_ip values for non-deleted users in batches to respect API rate limits.",
                "operationId": "ae6992442b23dae12c6a0a1061641f29",
                "requestBody": {
                    "required": false,
                    "content": {
                        "application/json": {
                            "schema": {
                                "properties": {
                                    "offset": {
                                        "type": "integer",
                                        "default": 0
                                    },
                                    "limit": {
                                        "type": "integer",
                                        "default": 25,
                                        "maximum": 50
                                    },
                                    "min_score": {
                                        "description": "Override configured minimum confidence score",
                                        "type": "integer"
                                    },
                                    "max_age_days": {
                                        "type": "integer"
                                    },
                                    "only_flagged": {
                                        "type": "boolean",
                                        "default": true
                                    }
                                },
                                "type": "object"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Scan batch completed"
                    },
                    "400": {
                        "description": "Not configured"
                    }
                }
            }
        },
        "/api/admin/allocations": {
            "get": {
                "tags": [
                    "Admin - Allocations"
                ],
                "summary": "Get all allocations",
                "description": "Retrieve a paginated list of all IP allocations with optional filtering by node, server, and search query.",
                "operationId": "24fa9be0aefd1728424dd3172c66ad26",
                "parameters": [
                    {
                        "name": "page",
                        "in": "query",
                        "description": "Page number for pagination",
                        "required": false,
                        "schema": {
                            "type": "integer",
                            "default": 1,
                            "minimum": 1
                        }
                    },
                    {
                        "name": "limit",
                        "in": "query",
                        "description": "Number of records per page",
                        "required": false,
                        "schema": {
                            "type": "integer",
                            "default": 20,
                            "maximum": 100,
                            "minimum": 1
                        }
                    },
                    {
                        "name": "search",
                        "in": "query",
                        "description": "Search term to filter allocations by IP, port, or notes",
                        "required": false,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "node_id",
                        "in": "query",
                        "description": "Filter allocations by node ID",
                        "required": false,
                        "schema": {
                            "type": "integer"
                        }
                    },
                    {
                        "name": "server_id",
                        "in": "query",
                        "description": "Filter allocations by server ID",
                        "required": false,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Allocations retrieved successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "allocations": {
                                            "type": "array",
                                            "items": {
                                                "$ref": "#/components/schemas/Allocation"
                                            }
                                        },
                                        "pagination": {
                                            "$ref": "#/components/schemas/Pagination"
                                        },
                                        "search": {
                                            "properties": {
                                                "query": {
                                                    "type": "string"
                                                },
                                                "has_results": {
                                                    "type": "boolean"
                                                }
                                            },
                                            "type": "object"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "401": {
                        "description": "Unauthorized"
                    },
                    "403": {
                        "description": "Forbidden - Insufficient permissions"
                    }
                }
            },
            "put": {
                "tags": [
                    "Admin - Allocations"
                ],
                "summary": "Create new allocation(s)",
                "description": "Create one or more IP allocations. Supports single port or port range creation. Port ranges are limited to 1000 ports maximum.",
                "operationId": "266a29a29051af3b0aff2112691b2023",
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "required": [
                                    "node_id",
                                    "ip",
                                    "port"
                                ],
                                "properties": {
                                    "id": {
                                        "description": "Optional allocation ID (for migrations)",
                                        "type": "integer",
                                        "example": 1,
                                        "nullable": true
                                    },
                                    "node_id": {
                                        "description": "Node ID where allocation will be created",
                                        "type": "integer",
                                        "minimum": 1
                                    },
                                    "ip": {
                                        "description": "IP address for the allocation",
                                        "type": "string",
                                        "example": "192.168.1.100"
                                    },
                                    "port": {
                                        "oneOf": [
                                            {
                                                "description": "Single port number",
                                                "type": "integer",
                                                "maximum": 65535,
                                                "minimum": 1
                                            },
                                            {
                                                "description": "Port range in format start:end or start-end (iptables-style)",
                                                "type": "string",
                                                "example": "25565:25700"
                                            }
                                        ]
                                    },
                                    "ip_alias": {
                                        "description": "Optional IP alias",
                                        "type": "string",
                                        "nullable": true
                                    },
                                    "server_id": {
                                        "description": "Optional server ID to assign allocation to",
                                        "type": "integer",
                                        "minimum": 1,
                                        "nullable": true
                                    },
                                    "notes": {
                                        "description": "Optional notes for the allocation",
                                        "type": "string",
                                        "nullable": true
                                    }
                                },
                                "type": "object"
                            }
                        }
                    }
                },
                "responses": {
                    "201": {
                        "description": "Allocation(s) created successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "allocations": {
                                            "type": "array",
                                            "items": {
                                                "$ref": "#/components/schemas/Allocation"
                                            }
                                        },
                                        "created_count": {
                                            "description": "Number of allocations created",
                                            "type": "integer"
                                        },
                                        "total_requested": {
                                            "description": "Total number of ports requested",
                                            "type": "integer"
                                        },
                                        "skipped_count": {
                                            "description": "Number of ports skipped (already exist)",
                                            "type": "integer"
                                        },
                                        "existing_ports": {
                                            "description": "List of ports that already existed",
                                            "type": "array",
                                            "items": {
                                                "type": "integer"
                                            }
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request - Invalid data or validation errors"
                    },
                    "401": {
                        "description": "Unauthorized"
                    },
                    "403": {
                        "description": "Forbidden - Insufficient permissions"
                    }
                }
            }
        },
        "/api/admin/allocations/{id}": {
            "get": {
                "tags": [
                    "Admin - Allocations"
                ],
                "summary": "Get allocation by ID",
                "description": "Retrieve a specific allocation by its ID with associated node and server information.",
                "operationId": "1c9836371272cbc666a6dc1447396bab",
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "description": "Allocation ID",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Allocation retrieved successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "allocation": {
                                            "$ref": "#/components/schemas/Allocation"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Invalid ID format"
                    },
                    "401": {
                        "description": "Unauthorized"
                    },
                    "403": {
                        "description": "Forbidden - Insufficient permissions"
                    },
                    "404": {
                        "description": "Allocation not found"
                    }
                }
            },
            "delete": {
                "tags": [
                    "Admin - Allocations"
                ],
                "summary": "Delete allocation",
                "description": "Permanently delete an allocation. This action cannot be undone. Only unassigned allocations can be deleted.",
                "operationId": "6a68dc21646b61ddcb3c279ab331e5bc",
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "description": "Allocation ID",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Allocation deleted successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "message": {
                                            "description": "Success message",
                                            "type": "string"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request - Failed to delete allocation"
                    },
                    "401": {
                        "description": "Unauthorized"
                    },
                    "403": {
                        "description": "Forbidden - Insufficient permissions"
                    },
                    "404": {
                        "description": "Allocation not found"
                    },
                    "409": {
                        "description": "Conflict - Allocation is assigned to a server"
                    }
                }
            },
            "patch": {
                "tags": [
                    "Admin - Allocations"
                ],
                "summary": "Update allocation",
                "description": "Update an existing allocation. Only provided fields will be updated. IP and port combinations must be unique per node.",
                "operationId": "647231bd175cb47e71f2ec267dd50fb5",
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "description": "Allocation ID",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "properties": {
                                    "node_id": {
                                        "description": "Node ID",
                                        "type": "integer",
                                        "minimum": 1
                                    },
                                    "ip": {
                                        "description": "IP address",
                                        "type": "string",
                                        "example": "192.168.1.100"
                                    },
                                    "port": {
                                        "description": "Port number",
                                        "type": "integer",
                                        "maximum": 65535,
                                        "minimum": 1
                                    },
                                    "ip_alias": {
                                        "description": "IP alias",
                                        "type": "string",
                                        "nullable": true
                                    },
                                    "server_id": {
                                        "description": "Server ID to assign allocation to",
                                        "type": "integer",
                                        "minimum": 1,
                                        "nullable": true
                                    },
                                    "notes": {
                                        "description": "Allocation notes",
                                        "type": "string",
                                        "nullable": true
                                    }
                                },
                                "type": "object"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Allocation updated successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "allocation": {
                                            "$ref": "#/components/schemas/Allocation"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request - Invalid data or validation errors"
                    },
                    "401": {
                        "description": "Unauthorized"
                    },
                    "403": {
                        "description": "Forbidden - Insufficient permissions"
                    },
                    "404": {
                        "description": "Allocation not found"
                    }
                }
            }
        },
        "/api/admin/allocations/{id}/assign": {
            "post": {
                "tags": [
                    "Admin - Allocations"
                ],
                "summary": "Assign allocation to server",
                "description": "Assign an unassigned allocation to a specific server.",
                "operationId": "8538ac5acf0d382891a96a3c7de0d29c",
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "description": "Allocation ID",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "required": [
                                    "server_id"
                                ],
                                "properties": {
                                    "server_id": {
                                        "description": "Server ID to assign allocation to",
                                        "type": "integer",
                                        "minimum": 1
                                    }
                                },
                                "type": "object"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Allocation assigned to server successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "allocation": {
                                            "$ref": "#/components/schemas/Allocation"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request - Invalid server ID or assignment failed"
                    },
                    "401": {
                        "description": "Unauthorized"
                    },
                    "403": {
                        "description": "Forbidden - Insufficient permissions"
                    },
                    "404": {
                        "description": "Allocation not found"
                    }
                }
            }
        },
        "/api/admin/allocations/{id}/unassign": {
            "post": {
                "tags": [
                    "Admin - Allocations"
                ],
                "summary": "Unassign allocation from server",
                "description": "Remove the server assignment from an allocation, making it available for reassignment.",
                "operationId": "c2cee3e7cdf47e0fdfaaa3bbfce6aaf4",
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "description": "Allocation ID",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Allocation unassigned from server successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "allocation": {
                                            "$ref": "#/components/schemas/Allocation"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request - Allocation not assigned or unassignment failed"
                    },
                    "401": {
                        "description": "Unauthorized"
                    },
                    "403": {
                        "description": "Forbidden - Insufficient permissions"
                    },
                    "404": {
                        "description": "Allocation not found"
                    }
                }
            }
        },
        "/api/admin/allocations/available": {
            "get": {
                "tags": [
                    "Admin - Allocations"
                ],
                "summary": "Get available allocations",
                "description": "Retrieve a paginated list of allocations that are not assigned to any server. Optionally filter by node.",
                "operationId": "243e4cb0cc58f91a0e6ca0f588b467da",
                "parameters": [
                    {
                        "name": "page",
                        "in": "query",
                        "description": "Page number for pagination",
                        "required": false,
                        "schema": {
                            "type": "integer",
                            "default": 1,
                            "minimum": 1
                        }
                    },
                    {
                        "name": "limit",
                        "in": "query",
                        "description": "Number of records per page",
                        "required": false,
                        "schema": {
                            "type": "integer",
                            "default": 10,
                            "maximum": 100,
                            "minimum": 1
                        }
                    },
                    {
                        "name": "node_id",
                        "in": "query",
                        "description": "Filter available allocations to a specific node",
                        "required": false,
                        "schema": {
                            "type": "integer",
                            "minimum": 1
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Available allocations retrieved successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "allocations": {
                                            "type": "array",
                                            "items": {
                                                "$ref": "#/components/schemas/Allocation"
                                            }
                                        },
                                        "pagination": {
                                            "properties": {
                                                "page": {
                                                    "type": "integer"
                                                },
                                                "limit": {
                                                    "type": "integer"
                                                },
                                                "total": {
                                                    "type": "integer"
                                                }
                                            },
                                            "type": "object"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "401": {
                        "description": "Unauthorized"
                    },
                    "403": {
                        "description": "Forbidden - Insufficient permissions"
                    }
                }
            }
        },
        "/api/admin/allocations/bulk-address": {
            "patch": {
                "tags": [
                    "Admin - Allocations"
                ],
                "summary": "Bulk update allocation IP or alias",
                "description": "Update the IP address and/or IP alias for every allocation on a node that currently uses a specific IP address.",
                "operationId": "6c7422e5e6bccded66eb8877cd89eeba",
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "required": [
                                    "node_id",
                                    "from_ip"
                                ],
                                "properties": {
                                    "node_id": {
                                        "description": "Node ID containing the allocations",
                                        "type": "integer",
                                        "minimum": 1
                                    },
                                    "from_ip": {
                                        "description": "Current allocation IP address",
                                        "type": "string",
                                        "example": "0.0.0.0"
                                    },
                                    "to_ip": {
                                        "description": "New allocation IP address",
                                        "type": "string",
                                        "example": "6.6.6.6",
                                        "nullable": true
                                    },
                                    "ip_alias": {
                                        "description": "New IP alias. Send null or an empty string to clear it.",
                                        "type": "string",
                                        "nullable": true
                                    }
                                },
                                "type": "object"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Allocations updated successfully"
                    },
                    "400": {
                        "description": "Bad request - Invalid data"
                    },
                    "401": {
                        "description": "Unauthorized"
                    },
                    "403": {
                        "description": "Forbidden - Insufficient permissions"
                    },
                    "404": {
                        "description": "Node or matching allocations not found"
                    },
                    "409": {
                        "description": "Target IP has ports already assigned to another server"
                    }
                }
            }
        },
        "/api/admin/allocations/bulk-delete": {
            "delete": {
                "tags": [
                    "Admin - Allocations"
                ],
                "summary": "Bulk delete allocations",
                "description": "Delete multiple allocations at once by providing an array of allocation IDs. Only unassigned allocations will be deleted. Allocations assigned to servers will be skipped.",
                "operationId": "11aee305c9c7355a8fe3db4d9ae7d3db",
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "required": [
                                    "ids"
                                ],
                                "properties": {
                                    "ids": {
                                        "description": "Array of allocation IDs to delete",
                                        "type": "array",
                                        "items": {
                                            "type": "integer"
                                        },
                                        "minItems": 1
                                    }
                                },
                                "type": "object"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Allocations deleted successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "deleted_count": {
                                            "description": "Number of allocations deleted",
                                            "type": "integer"
                                        },
                                        "skipped_count": {
                                            "description": "Number of allocations skipped (assigned to servers)",
                                            "type": "integer"
                                        },
                                        "skipped_ids": {
                                            "description": "IDs of allocations that were skipped",
                                            "type": "array",
                                            "items": {
                                                "type": "integer"
                                            }
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request - Invalid or missing IDs"
                    },
                    "401": {
                        "description": "Unauthorized"
                    },
                    "403": {
                        "description": "Forbidden - Insufficient permissions"
                    }
                }
            }
        },
        "/api/admin/allocations/delete-unused": {
            "delete": {
                "tags": [
                    "Admin - Allocations"
                ],
                "summary": "Delete unused allocations",
                "description": "Delete all allocations that are not assigned to any server. Optionally filter by node ID and/or IP address (subnet).",
                "operationId": "fefdf6f1addf16bfaff9f59f5ab77ce7",
                "requestBody": {
                    "required": false,
                    "content": {
                        "application/json": {
                            "schema": {
                                "properties": {
                                    "node_id": {
                                        "description": "Optional node ID to filter deletions",
                                        "type": "integer",
                                        "minimum": 1,
                                        "nullable": true
                                    },
                                    "ip": {
                                        "description": "Optional IP address to filter deletions by subnet/IP",
                                        "type": "string",
                                        "example": "192.168.1.100",
                                        "nullable": true
                                    }
                                },
                                "type": "object"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Unused allocations deleted successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "deleted_count": {
                                            "description": "Number of allocations deleted",
                                            "type": "integer"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request - Invalid node ID or IP address"
                    },
                    "401": {
                        "description": "Unauthorized"
                    },
                    "403": {
                        "description": "Forbidden - Insufficient permissions"
                    }
                }
            }
        },
        "/api/admin/backup-schedules": {
            "get": {
                "tags": [
                    "Admin - Backup Schedules"
                ],
                "summary": "List admin backup schedules",
                "operationId": "52a46673e6581334c465cee24f43a925",
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            },
            "put": {
                "tags": [
                    "Admin - Backup Schedules"
                ],
                "summary": "Create admin backup schedule",
                "operationId": "b83b9cfbea1657f8c1819f0dcf73f654",
                "responses": {
                    "201": {
                        "description": "Created"
                    }
                }
            }
        },
        "/api/admin/backup-schedules/{id}": {
            "get": {
                "tags": [
                    "Admin - Backup Schedules"
                ],
                "summary": "Get admin backup schedule",
                "operationId": "c20d4f988e54cb1db0e728b21e6fbaf6",
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            },
            "delete": {
                "tags": [
                    "Admin - Backup Schedules"
                ],
                "summary": "Delete admin backup schedule",
                "operationId": "ae28ebe4d3087c49466b3fbf2598196e",
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            },
            "patch": {
                "tags": [
                    "Admin - Backup Schedules"
                ],
                "summary": "Update admin backup schedule",
                "operationId": "bd741b16f9d73a0e94adee81edea1c8b",
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/api/admin/backup-schedules/{id}/run": {
            "post": {
                "tags": [
                    "Admin - Backup Schedules"
                ],
                "summary": "Run admin backup schedule now",
                "operationId": "14a1731a2210de280958c9851230034e",
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/api/admin/backup-schedules/{id}/runs": {
            "get": {
                "tags": [
                    "Admin - Backup Schedules"
                ],
                "summary": "List backup schedule runs",
                "operationId": "e70b20b237b8225a83ce2128d096a0eb",
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/api/admin/backup-schedules/{id}/runs/{runId}": {
            "get": {
                "tags": [
                    "Admin - Backup Schedules"
                ],
                "summary": "Get backup schedule run details",
                "operationId": "72d9390f2ecd77c0098990fe0de623b4",
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/api/admin/backup-schedules/preview-targets": {
            "post": {
                "tags": [
                    "Admin - Backup Schedules"
                ],
                "summary": "Preview target servers for a backup schedule scope",
                "operationId": "124393e9d79a9199cad57a48a65e6a3b",
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/api/admin/blocked-email-domains": {
            "get": {
                "tags": [
                    "Admin - Security"
                ],
                "summary": "List blocked email domains",
                "operationId": "26ee131fb9c0d43cb9a2711266a8754d",
                "parameters": [
                    {
                        "name": "page",
                        "in": "query",
                        "schema": {
                            "type": "integer",
                            "minimum": 1
                        }
                    },
                    {
                        "name": "limit",
                        "in": "query",
                        "schema": {
                            "type": "integer",
                            "maximum": 100,
                            "minimum": 1
                        }
                    },
                    {
                        "name": "search",
                        "in": "query",
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    },
                    "401": {
                        "description": "Unauthorized"
                    }
                }
            },
            "put": {
                "tags": [
                    "Admin - Security"
                ],
                "summary": "Add a blocked domain",
                "operationId": "bbb226779979f2438a6b080086c3accd",
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "required": [
                                    "domain"
                                ],
                                "properties": {
                                    "domain": {
                                        "description": "example.com or user@example.com",
                                        "type": "string"
                                    }
                                },
                                "type": "object"
                            }
                        }
                    }
                },
                "responses": {
                    "201": {
                        "description": "Created"
                    },
                    "400": {
                        "description": "Validation error"
                    },
                    "409": {
                        "description": "Duplicate"
                    }
                }
            }
        },
        "/api/admin/blocked-email-domains/{id}": {
            "delete": {
                "tags": [
                    "Admin - Security"
                ],
                "summary": "Remove a blocked domain",
                "operationId": "004c32e44ffd9c05994a5bee1f11536d",
                "responses": {
                    "200": {
                        "description": "Removed"
                    },
                    "404": {
                        "description": "Not found"
                    }
                }
            }
        },
        "/api/admin/blocked-email-domains/import-preset": {
            "post": {
                "tags": [
                    "Admin - Security"
                ],
                "summary": "Import bundled disposable-domain list into the database",
                "operationId": "0324eba7cc8feeea46fdcc3d1e5e1006",
                "responses": {
                    "200": {
                        "description": "Import finished"
                    },
                    "500": {
                        "description": "Preset file missing or import failed"
                    }
                }
            }
        },
        "/api/admin/blocked-email-domains/import-url": {
            "post": {
                "tags": [
                    "Admin - Security"
                ],
                "summary": "Import blocked domains from a plain-text URL (one domain per line)",
                "operationId": "a6b1f67019c406b9a2a6c6bee70416ce",
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "required": [
                                    "url"
                                ],
                                "properties": {
                                    "url": {
                                        "type": "string",
                                        "format": "uri"
                                    }
                                },
                                "type": "object"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Import finished"
                    },
                    "400": {
                        "description": "Invalid URL"
                    },
                    "502": {
                        "description": "Fetch failed"
                    }
                }
            }
        },
        "/api/admin/blocked-email-domains/import-text": {
            "post": {
                "tags": [
                    "Admin - Security"
                ],
                "summary": "Import blocked domains from pasted plain text (one domain per line)",
                "operationId": "12ede3ef2c9d6cb29796eaf9aa0a4e34",
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "required": [
                                    "text"
                                ],
                                "properties": {
                                    "text": {
                                        "type": "string"
                                    }
                                },
                                "type": "object"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Import finished"
                    },
                    "400": {
                        "description": "Body too large or invalid"
                    }
                }
            }
        },
        "/api/admin/blocked-ips": {
            "get": {
                "tags": [
                    "Admin - Users"
                ],
                "summary": "List banned panel IPs",
                "operationId": "858199eb7e5d4bb5663adfa86ec2a6bb",
                "parameters": [
                    {
                        "name": "page",
                        "in": "query",
                        "schema": {
                            "type": "integer",
                            "minimum": 1
                        }
                    },
                    {
                        "name": "limit",
                        "in": "query",
                        "schema": {
                            "type": "integer",
                            "maximum": 100,
                            "minimum": 1
                        }
                    },
                    {
                        "name": "search",
                        "in": "query",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "active_only",
                        "in": "query",
                        "schema": {
                            "type": "boolean"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    },
                    "401": {
                        "description": "Unauthorized"
                    }
                }
            },
            "put": {
                "tags": [
                    "Admin - Users"
                ],
                "summary": "Ban an IP from panel registration",
                "operationId": "03d31aecf2009ea0ac346ce1542dc62e",
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "required": [
                                    "ip"
                                ],
                                "properties": {
                                    "ip": {
                                        "description": "IPv4/IPv6 or CIDR",
                                        "type": "string"
                                    },
                                    "reason": {
                                        "type": "string",
                                        "nullable": true
                                    },
                                    "duration": {
                                        "description": "Timestring e.g. 1m, 1h, 24h, 7d, 1w, 1h30m; empty/permanent = forever",
                                        "type": "string",
                                        "nullable": true
                                    },
                                    "expires_at": {
                                        "description": "Explicit UTC/ISO expiry; overrides duration when set",
                                        "type": "string",
                                        "nullable": true
                                    }
                                },
                                "type": "object"
                            }
                        }
                    }
                },
                "responses": {
                    "201": {
                        "description": "Created"
                    },
                    "400": {
                        "description": "Validation error"
                    },
                    "409": {
                        "description": "Duplicate"
                    }
                }
            }
        },
        "/api/admin/blocked-ips/{id}": {
            "delete": {
                "tags": [
                    "Admin - Users"
                ],
                "summary": "Remove a panel IP ban",
                "operationId": "fff6b37b2e05c16c16820c7f11e7542d",
                "responses": {
                    "200": {
                        "description": "Removed"
                    },
                    "404": {
                        "description": "Not found"
                    }
                }
            }
        },
        "/api/admin/cloud/data/summary": {
            "get": {
                "tags": [
                    "Admin - FeatherCloud"
                ],
                "summary": "Get Mythic Cloud summary",
                "operationId": "56c592fcbfe48c8631b819ffbe233a25"
            }
        },
        "/api/admin/cloud/data/cloud": {
            "get": {
                "tags": [
                    "Admin - FeatherCloud"
                ],
                "summary": "Get Mythic cloud connection details",
                "operationId": "e7726255eab5cf54639a287fc6fb63bc"
            }
        },
        "/api/admin/cloud/data/credits": {
            "get": {
                "tags": [
                    "Admin - FeatherCloud"
                ],
                "summary": "Get team credits",
                "operationId": "40ec4862c458b44e98b2cf6ca9b8bf16"
            }
        },
        "/api/admin/cloud/data/team": {
            "get": {
                "tags": [
                    "Admin - FeatherCloud"
                ],
                "summary": "Get team information",
                "operationId": "eb9227031f14832de177ccb6a99cc9d9"
            }
        },
        "/api/admin/cloud/data/products": {
            "get": {
                "tags": [
                    "Admin - FeatherCloud"
                ],
                "summary": "Get purchased products",
                "operationId": "cc71fc1e98d9a1ede5ea608d90574176"
            }
        },
        "/api/admin/cloud/data/store": {
            "get": {
                "tags": [
                    "Admin - FeatherCloud"
                ],
                "summary": "Mythic marketplace store catalog",
                "operationId": "fa5d586129eaed87fef5de0609fcb128"
            }
        },
        "/api/admin/cloud/data/store/products/{slug}": {
            "get": {
                "tags": [
                    "Admin - FeatherCloud"
                ],
                "summary": "Mythic store product detail",
                "operationId": "c43fe43222718717f19d34e65302f2a9"
            }
        },
        "/api/admin/cloud/data/store/products/{slug}/versions": {
            "get": {
                "tags": [
                    "Admin - FeatherCloud"
                ],
                "summary": "Store product versions",
                "operationId": "ac3955c9c66def09834d214ec343561a"
            }
        },
        "/api/admin/cloud/data/store/products/{slug}/reviews": {
            "get": {
                "tags": [
                    "Admin - FeatherCloud"
                ],
                "summary": "Store product reviews",
                "operationId": "dbd1775016c6b8801a4eafb454b39bd8"
            },
            "post": {
                "tags": [
                    "Admin - FeatherCloud"
                ],
                "summary": "Create/update store product review",
                "operationId": "31aa8eb52ab07b1bfc86d9d81a923a30"
            }
        },
        "/api/admin/cloud/data/store/products/{slug}/questions": {
            "get": {
                "tags": [
                    "Admin - FeatherCloud"
                ],
                "summary": "Store product questions",
                "operationId": "04ac6bbb36d8dca9f9d40141a16d774a"
            },
            "post": {
                "tags": [
                    "Admin - FeatherCloud"
                ],
                "summary": "Ask a store product question",
                "operationId": "e24764a8ce6a4afd40640822d0d120e6"
            }
        },
        "/api/admin/cloud/data/store/products/{slug}/questions/{questionId}/replies": {
            "post": {
                "tags": [
                    "Admin - FeatherCloud"
                ],
                "summary": "Reply to store product question",
                "operationId": "820afda952c5f50636588ca87e20652c"
            }
        },
        "/api/admin/cloud/data/products/{slug}/releases": {
            "get": {
                "tags": [
                    "Admin - FeatherCloud"
                ],
                "summary": "List product releases",
                "operationId": "47f5379ce34f28ae2da58185f5450673"
            }
        },
        "/api/admin/cloud/data/products/{slug}/releases/{version}/download": {
            "get": {
                "tags": [
                    "Admin - FeatherCloud"
                ],
                "summary": "Download product release .fpa",
                "operationId": "93b2a54f3c41e007bd9ab0a84c4f8c9f"
            }
        },
        "/api/admin/cloud/data/products/{slug}/reviews": {
            "get": {
                "tags": [
                    "Admin - FeatherCloud"
                ],
                "summary": "List product reviews (public)",
                "operationId": "df413674a240d78df6a76daa3f8c966c"
            },
            "post": {
                "tags": [
                    "Admin - FeatherCloud"
                ],
                "summary": "Create/update product review",
                "operationId": "87267dc82cb901315b29df6e24200ad0"
            }
        },
        "/api/admin/cloud/data/products/{slug}/reviews/{reviewId}": {
            "delete": {
                "tags": [
                    "Admin - FeatherCloud"
                ],
                "summary": "Delete product review",
                "operationId": "cbf285de7f9e073c6af94ee525b81786"
            }
        },
        "/api/admin/cloud/data/download/{packageName}/{version}": {
            "get": {
                "tags": [
                    "Admin - FeatherCloud"
                ],
                "summary": "Download premium package",
                "operationId": "00c0d81d9c083b20373f3bec714d4172"
            }
        },
        "/api/admin/cloud/data/eggs": {
            "get": {
                "tags": [
                    "Admin - FeatherCloud"
                ],
                "summary": "List Mythic egg catalog",
                "operationId": "260c20d81ca8700089e017e28d5dcc5d"
            }
        },
        "/api/admin/cloud/data/eggs/{id}": {
            "get": {
                "tags": [
                    "Admin - FeatherCloud"
                ],
                "summary": "Get Mythic egg detail",
                "operationId": "39653bc9dc6413840666e578abc37646"
            }
        },
        "/api/admin/cloud/data/eggs/{id}/download": {
            "get": {
                "tags": [
                    "Admin - FeatherCloud"
                ],
                "summary": "Download Mythic egg JSON",
                "operationId": "702ada0b8c85ece1f0a395f1dcf56e93"
            }
        },
        "/api/admin/cloud/data/eggs/{id}/reviews": {
            "get": {
                "tags": [
                    "Admin - FeatherCloud"
                ],
                "summary": "List egg reviews (public)",
                "operationId": "07355af3d2c7145dd51a1fc5e60ea1f3"
            },
            "post": {
                "tags": [
                    "Admin - FeatherCloud"
                ],
                "summary": "Create/update egg review",
                "operationId": "c92b16117412d0bce6967f5cbf3e25e2"
            },
            "delete": {
                "tags": [
                    "Admin - FeatherCloud"
                ],
                "summary": "Delete own egg review",
                "operationId": "0668dd4d615ed9f928c2d204f621c385"
            }
        },
        "/api/admin/cloud/data/pastes": {
            "post": {
                "tags": [
                    "Admin - FeatherCloud"
                ],
                "summary": "Create Mythic paste/log",
                "operationId": "b26350815c0eb7c307efba35ff54bf3e"
            }
        },
        "/api/admin/cloud/data/pastes/{id}": {
            "get": {
                "tags": [
                    "Admin - FeatherCloud"
                ],
                "summary": "Get Mythic paste metadata",
                "operationId": "37a06ffdb0bb994bc48a89092fad667e"
            }
        },
        "/api/admin/cloud/data/issues/projects": {
            "get": {
                "tags": [
                    "Admin - FeatherCloud"
                ],
                "summary": "List Mythic issue projects",
                "operationId": "239b7c2ecedf391f539b0eea425b5891"
            }
        },
        "/api/admin/cloud/data/issues/{project}": {
            "get": {
                "tags": [
                    "Admin - FeatherCloud"
                ],
                "summary": "List Mythic issues",
                "operationId": "14790f83bc87c473a019470c01525e59"
            },
            "post": {
                "tags": [
                    "Admin - FeatherCloud"
                ],
                "summary": "Create Mythic issue with diagnostics",
                "operationId": "5ac5416e6bfae3d12b7c9a2da5d196e6"
            }
        },
        "/api/admin/cloud/data/report": {
            "post": {
                "tags": [
                    "Admin - FeatherCloud"
                ],
                "summary": "Report a FeatherPanel issue (always project featherpanel)",
                "operationId": "11ce8e4ebb1f2bec69c97cea784da295"
            }
        },
        "/api/admin/cloud/data/suggestion": {
            "post": {
                "tags": [
                    "Admin - FeatherCloud"
                ],
                "summary": "Submit a FeatherPanel feature suggestion (always project featherpanel)",
                "operationId": "a993a2d99a39656291bb89ac84faeefb"
            }
        },
        "/api/admin/cloud/data/issues/{project}/{number}": {
            "get": {
                "tags": [
                    "Admin - FeatherCloud"
                ],
                "summary": "Get Mythic issue",
                "operationId": "cdfa728186edcb1fca8b679bd1ad601c"
            }
        },
        "/api/admin/cloud/data/issues/{project}/{number}/comments": {
            "post": {
                "tags": [
                    "Admin - FeatherCloud"
                ],
                "summary": "Comment on Mythic issue",
                "operationId": "23fb3a3d8be29a1d3beff9d1cd83f3ff"
            }
        },
        "/api/admin/cloud/credentials": {
            "get": {
                "tags": [
                    "Admin - FeatherCloud"
                ],
                "summary": "Retrieve FeatherCloud access credentials",
                "description": "Fetch both the panel-issued and FeatherCloud-issued keypairs for integrations.",
                "operationId": "4ef130cd9b5edbf7ee9ecc3a53237547",
                "responses": {
                    "200": {
                        "description": "Credentials fetched successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/FeatherCloudCredentials"
                                }
                            }
                        }
                    },
                    "401": {
                        "description": "Unauthorized"
                    },
                    "403": {
                        "description": "Forbidden - Insufficient permissions"
                    }
                }
            }
        },
        "/api/admin/cloud/credentials/panel": {
            "put": {
                "tags": [
                    "Admin - FeatherCloud"
                ],
                "summary": "Store panel-issued credentials",
                "description": "Save or update the panel-side keypair that FeatherCloud uses when authenticating against the panel.",
                "operationId": "2cf6263f8580f26ac18097cc2d7c04ae",
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "required": [
                                    "public_key",
                                    "private_key"
                                ],
                                "properties": {
                                    "public_key": {
                                        "type": "string"
                                    },
                                    "private_key": {
                                        "type": "string"
                                    }
                                },
                                "type": "object"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Panel credentials saved successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/FeatherCloudCredentials"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Invalid payload"
                    },
                    "401": {
                        "description": "Unauthorized"
                    },
                    "403": {
                        "description": "Forbidden - Insufficient permissions"
                    },
                    "500": {
                        "description": "Failed to store panel credentials"
                    }
                }
            }
        },
        "/api/admin/cloud/credentials/cloud": {
            "put": {
                "tags": [
                    "Admin - FeatherCloud"
                ],
                "summary": "Store FeatherCloud-issued credentials",
                "description": "Save the keypair that FeatherCloud presents back to the panel for authenticated callbacks.",
                "operationId": "8e90ff1502f608403e4611fdd2309039",
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "required": [
                                    "public_key",
                                    "private_key"
                                ],
                                "properties": {
                                    "public_key": {
                                        "type": "string"
                                    },
                                    "private_key": {
                                        "type": "string"
                                    }
                                },
                                "type": "object"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "FeatherCloud credentials saved successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/FeatherCloudCredentials"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Invalid payload"
                    },
                    "401": {
                        "description": "Unauthorized"
                    },
                    "403": {
                        "description": "Forbidden - Insufficient permissions"
                    },
                    "500": {
                        "description": "Failed to store FeatherCloud credentials"
                    }
                }
            }
        },
        "/api/admin/cloud/credentials/rotate": {
            "post": {
                "tags": [
                    "Admin - FeatherCloud"
                ],
                "summary": "Rotate FeatherCloud access credentials",
                "description": "Generate a new panel-issued public/private keypair used by FeatherCloud integrations.",
                "operationId": "63d59cfd302042e626d1443297bea0d7",
                "responses": {
                    "200": {
                        "description": "Credentials rotated successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/FeatherCloudCredentials"
                                }
                            }
                        }
                    },
                    "401": {
                        "description": "Unauthorized"
                    },
                    "403": {
                        "description": "Forbidden - Insufficient permissions"
                    },
                    "500": {
                        "description": "Failed to rotate credentials"
                    }
                }
            }
        },
        "/api/admin/cloud/oauth2/link": {
            "get": {
                "tags": [
                    "Admin - FeatherCloud"
                ],
                "summary": "Get FeatherCloud OAuth2 link URL",
                "description": "Generate the OAuth2 link URL for connecting this panel to FeatherCloud. This URL includes all necessary panel information and credentials.",
                "operationId": "7071726dfd2295bca59cad3dd9df5e0b",
                "responses": {
                    "200": {
                        "description": "OAuth2 link URL generated successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "oauth2_url": {
                                            "description": "The OAuth2 URL to redirect to",
                                            "type": "string"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "401": {
                        "description": "Unauthorized"
                    },
                    "403": {
                        "description": "Forbidden - Insufficient permissions"
                    },
                    "500": {
                        "description": "Failed to generate OAuth2 URL"
                    }
                }
            }
        },
        "/api/admin/cloud/oauth2/callback": {
            "post": {
                "tags": [
                    "Admin - FeatherCloud"
                ],
                "summary": "Save FeatherCloud OAuth2 callback credentials",
                "description": "Save the cloud_api_key and cloud_api_secret received from FeatherCloud OAuth2 callback. These credentials are used by the panel to access FeatherCloud services.",
                "operationId": "94dd0b5417e8b0ab6783e4361aa2430d",
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "required": [
                                    "cloud_api_key",
                                    "cloud_api_secret"
                                ],
                                "properties": {
                                    "cloud_api_key": {
                                        "description": "The cloud API key generated by FeatherCloud",
                                        "type": "string"
                                    },
                                    "cloud_api_secret": {
                                        "description": "The cloud API secret generated by FeatherCloud",
                                        "type": "string"
                                    }
                                },
                                "type": "object"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Cloud credentials saved successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "message": {
                                            "type": "string"
                                        },
                                        "timestamp": {
                                            "type": "string",
                                            "format": "date-time"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Invalid payload or missing credentials"
                    },
                    "401": {
                        "description": "Unauthorized"
                    },
                    "403": {
                        "description": "Forbidden - Insufficient permissions"
                    },
                    "500": {
                        "description": "Failed to save cloud credentials"
                    }
                }
            }
        },
        "/api/admin/cloud/disconnect": {
            "post": {
                "tags": [
                    "Admin - FeatherCloud"
                ],
                "summary": "Disconnect Mythic Cloud link",
                "description": "Fully clear Mythic link state (identity keys, access keys, team, authorizer, member map) so the panel acts as never linked.",
                "operationId": "94634a19db356eadce1b3101024b4778",
                "requestBody": {
                    "required": false,
                    "content": {
                        "application/json": {
                            "schema": {
                                "properties": {
                                    "wipe_identity_keys": {
                                        "description": "Ignored disconnect always wipes identity keys for a clean unlink",
                                        "type": "boolean"
                                    }
                                },
                                "type": "object"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Disconnected successfully"
                    },
                    "401": {
                        "description": "Unauthorized"
                    },
                    "403": {
                        "description": "Forbidden"
                    }
                }
            }
        },
        "/api/admin/cloud/settings": {
            "get": {
                "tags": [
                    "Admin - FeatherCloud"
                ],
                "summary": "Get Mythic Cloud client settings",
                "operationId": "ed6ef6cfd337564705fbe3030fd44262",
                "responses": {
                    "200": {
                        "description": "Settings fetched"
                    }
                }
            },
            "put": {
                "tags": [
                    "Admin - FeatherCloud"
                ],
                "summary": "Update Mythic Cloud client settings",
                "description": "Configure Panel API base URL, OAuth URL, and module flags. Mythic member ids are resolved automatically never collected from admins.",
                "operationId": "bb7fb6ee1f54218d01d6d5e30421ef64",
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "properties": {
                                    "api_base_url": {
                                        "type": "string"
                                    },
                                    "oauth_url": {
                                        "type": "string"
                                    },
                                    "marketplace_enabled": {
                                        "type": "boolean"
                                    },
                                    "eggs_enabled": {
                                        "type": "boolean"
                                    },
                                    "pastes_enabled": {
                                        "type": "boolean"
                                    },
                                    "issues_enabled": {
                                        "type": "boolean"
                                    }
                                },
                                "type": "object"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Settings updated"
                    },
                    "400": {
                        "description": "Invalid payload"
                    }
                }
            }
        },
        "/api/admin/cloud/members/sync": {
            "post": {
                "tags": [
                    "Admin - FeatherCloud"
                ],
                "summary": "Sync Mythic team members for email → id mapping",
                "operationId": "1ac66f8bcf76bf88d4c36de3282239c2",
                "responses": {
                    "200": {
                        "description": "Members synced"
                    }
                }
            }
        },
        "/api/admin/cloud/sync": {
            "post": {
                "tags": [
                    "Admin - FeatherCloud"
                ],
                "summary": "Sync Mythic summary and purchases",
                "description": "Pulls /panel/summary and /panel/products using stored FCPUB/FCPRIV and refreshes local cache.",
                "operationId": "c52a05957398ac929c1783f120bd8688"
            }
        },
        "/api/admin/plugins/online/list": {
            "get": {
                "tags": [
                    "Admin - Cloud Plugins"
                ],
                "summary": "Get online addons list",
                "description": "Retrieve a paginated list of Mythic marketplace products available to the linked team (GET /panel/products).",
                "operationId": "6ba4216941378eeed08dc358ad478e12",
                "parameters": [
                    {
                        "name": "q",
                        "in": "query",
                        "description": "Search query to filter addons",
                        "required": false,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "page",
                        "in": "query",
                        "description": "Page number for pagination",
                        "required": false,
                        "schema": {
                            "type": "integer",
                            "default": 1,
                            "minimum": 1
                        }
                    },
                    {
                        "name": "per_page",
                        "in": "query",
                        "description": "Number of addons per page",
                        "required": false,
                        "schema": {
                            "type": "integer",
                            "default": 20,
                            "minimum": 1
                        }
                    },
                    {
                        "name": "verified_only",
                        "in": "query",
                        "description": "If true, only return verified packages",
                        "required": false,
                        "schema": {
                            "type": "boolean",
                            "default": false
                        }
                    },
                    {
                        "name": "tags",
                        "in": "query",
                        "description": "Comma-separated list of tags to filter by",
                        "required": false,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "sort_by",
                        "in": "query",
                        "description": "Field to sort by (created_at, downloads, updated_at)",
                        "required": false,
                        "schema": {
                            "type": "string",
                            "default": "created_at",
                            "enum": [
                                "created_at",
                                "downloads",
                                "updated_at"
                            ]
                        }
                    },
                    {
                        "name": "sort_order",
                        "in": "query",
                        "description": "Sort order",
                        "required": false,
                        "schema": {
                            "type": "string",
                            "default": "DESC",
                            "enum": [
                                "ASC",
                                "DESC"
                            ]
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Online addons retrieved successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "addons": {
                                            "type": "array",
                                            "items": {
                                                "$ref": "#/components/schemas/OnlineAddon"
                                            }
                                        },
                                        "pagination": {
                                            "description": "Pagination metadata",
                                            "type": "object"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "401": {
                        "description": "Unauthorized"
                    },
                    "403": {
                        "description": "Forbidden - Insufficient permissions"
                    },
                    "500": {
                        "description": "Internal server error - Failed to fetch online addons or invalid response"
                    }
                }
            }
        },
        "/api/admin/plugins/previously-installed": {
            "get": {
                "tags": [
                    "Admin - Plugins"
                ],
                "summary": "Get previously installed plugins",
                "description": "Retrieve a list of plugins that were previously installed (including uninstalled ones) to help users restore them after FeatherPanel updates.",
                "operationId": "8242fa7cd4686fdba814d498008eb6c5",
                "responses": {
                    "200": {
                        "description": "Previously installed plugins retrieved successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "plugins": {
                                            "type": "array",
                                            "items": {
                                                "properties": {
                                                    "id": {
                                                        "description": "Record ID",
                                                        "type": "integer"
                                                    },
                                                    "name": {
                                                        "description": "Plugin name",
                                                        "type": "string"
                                                    },
                                                    "identifier": {
                                                        "description": "Plugin identifier",
                                                        "type": "string"
                                                    },
                                                    "cloud_id": {
                                                        "description": "Cloud registry ID",
                                                        "type": "integer",
                                                        "nullable": true
                                                    },
                                                    "version": {
                                                        "description": "Plugin version",
                                                        "type": "string",
                                                        "nullable": true
                                                    },
                                                    "installed_at": {
                                                        "description": "Installation timestamp",
                                                        "type": "string",
                                                        "format": "date-time"
                                                    },
                                                    "uninstalled_at": {
                                                        "description": "Uninstallation timestamp",
                                                        "type": "string",
                                                        "format": "date-time",
                                                        "nullable": true
                                                    }
                                                },
                                                "type": "object"
                                            }
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "401": {
                        "description": "Unauthorized"
                    },
                    "403": {
                        "description": "Forbidden - Insufficient permissions"
                    },
                    "500": {
                        "description": "Internal server error"
                    }
                }
            }
        },
        "/api/admin/plugins/online/popular": {
            "get": {
                "tags": [
                    "Admin - Cloud Plugins"
                ],
                "summary": "Get popular packages",
                "description": "Retrieve Mythic team products sorted for the popular addons carousel.",
                "operationId": "8b3c0db10924a3821e04001a4f245be4",
                "parameters": [
                    {
                        "name": "limit",
                        "in": "query",
                        "description": "Number of packages to return",
                        "required": false,
                        "schema": {
                            "type": "integer",
                            "default": 10,
                            "maximum": 50,
                            "minimum": 1
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Popular packages retrieved successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "addons": {
                                            "type": "array",
                                            "items": {
                                                "$ref": "#/components/schemas/OnlineAddon"
                                            }
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "401": {
                        "description": "Unauthorized"
                    },
                    "403": {
                        "description": "Forbidden - Insufficient permissions"
                    },
                    "500": {
                        "description": "Internal server error"
                    }
                }
            }
        },
        "/api/admin/plugins/online/{identifier}": {
            "get": {
                "tags": [
                    "Admin - Cloud Plugins"
                ],
                "summary": "Get package details",
                "description": "Retrieve Mythic product details and downloadable releases for a product slug.",
                "operationId": "7edaaa20d7712bf9c606a0501b7a5cca",
                "parameters": [
                    {
                        "name": "identifier",
                        "in": "path",
                        "description": "Package identifier name",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Package details retrieved successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "package": {
                                            "$ref": "#/components/schemas/OnlineAddon"
                                        },
                                        "versions": {
                                            "type": "array",
                                            "items": {
                                                "type": "object"
                                            }
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "401": {
                        "description": "Unauthorized"
                    },
                    "403": {
                        "description": "Forbidden - Insufficient permissions"
                    },
                    "404": {
                        "description": "Package not found"
                    },
                    "500": {
                        "description": "Internal server error"
                    }
                }
            }
        },
        "/api/admin/plugins/online/tag/{tag}": {
            "get": {
                "tags": [
                    "Admin - Cloud Plugins"
                ],
                "summary": "Search packages by tag",
                "description": "Filter Mythic team products by tag.",
                "operationId": "2d515f557216e00684f7d9a9486b50a2",
                "parameters": [
                    {
                        "name": "tag",
                        "in": "path",
                        "description": "Tag name to search for",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "page",
                        "in": "query",
                        "description": "Page number for pagination",
                        "required": false,
                        "schema": {
                            "type": "integer",
                            "default": 1,
                            "minimum": 1
                        }
                    },
                    {
                        "name": "per_page",
                        "in": "query",
                        "description": "Number of addons per page",
                        "required": false,
                        "schema": {
                            "type": "integer",
                            "default": 20,
                            "minimum": 1
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Packages by tag retrieved successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "addons": {
                                            "type": "array",
                                            "items": {
                                                "$ref": "#/components/schemas/OnlineAddon"
                                            }
                                        },
                                        "tag": {
                                            "type": "string"
                                        },
                                        "pagination": {
                                            "type": "object"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "401": {
                        "description": "Unauthorized"
                    },
                    "403": {
                        "description": "Forbidden - Insufficient permissions"
                    },
                    "500": {
                        "description": "Internal server error"
                    }
                }
            }
        },
        "/api/admin/plugins/online/{identifier}/check": {
            "get": {
                "tags": [
                    "Admin - Cloud Plugins"
                ],
                "summary": "Check addon installation requirements",
                "description": "Check if all dependencies and requirements are met before installing an addon. Returns dependency status, panel version compatibility, and installation readiness.",
                "operationId": "201acf4622329493f3f77a93903c7670",
                "parameters": [
                    {
                        "name": "identifier",
                        "in": "path",
                        "description": "Package identifier name",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "pending_plugins",
                        "in": "query",
                        "description": "Comma-separated addon identifiers also queued for install; plugin= dependencies in this list count as satisfied.",
                        "required": false,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Requirements check completed",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "can_install": {
                                            "description": "Whether the addon can be installed",
                                            "type": "boolean"
                                        },
                                        "package": {
                                            "description": "Package information",
                                            "type": "object"
                                        },
                                        "dependencies": {
                                            "description": "Dependency information",
                                            "type": "object"
                                        },
                                        "panel_version": {
                                            "description": "Panel version compatibility",
                                            "type": "object"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "404": {
                        "description": "Package not found"
                    },
                    "500": {
                        "description": "Internal server error"
                    }
                }
            }
        },
        "/api/admin/plugins/online/install": {
            "post": {
                "tags": [
                    "Admin - Cloud Plugins"
                ],
                "summary": "Install addon from online registry",
                "description": "Download and install an addon from Mythic marketplace releases (GET /panel/products/{slug}/releases/{version}/download).",
                "operationId": "302f9f9a68153fe03352b50695aae24c",
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/OnlineInstall"
                            }
                        }
                    }
                },
                "responses": {
                    "201": {
                        "description": "Addon installed successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "identifier": {
                                            "description": "Installed addon identifier",
                                            "type": "string"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request - Invalid identifier format"
                    },
                    "401": {
                        "description": "Unauthorized"
                    },
                    "402": {
                        "description": "Payment Required - Premium addon must be purchased",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "premium_link": {
                                            "description": "Purchase link for premium addon",
                                            "type": "string"
                                        },
                                        "premium_price": {
                                            "description": "Price in EUR",
                                            "type": "string"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "403": {
                        "description": "Forbidden - Insufficient permissions"
                    },
                    "404": {
                        "description": "Package not found in registry"
                    },
                    "409": {
                        "description": "Conflict - Addon already installed"
                    },
                    "412": {
                        "description": "Precondition Failed - Dependencies not met",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "missing_dependencies": {
                                            "description": "List of missing dependencies",
                                            "type": "array",
                                            "items": {
                                                "type": "string"
                                            }
                                        },
                                        "dependency_details": {
                                            "description": "Detailed dependency check results",
                                            "type": "array",
                                            "items": {
                                                "type": "object"
                                            }
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "422": {
                        "description": "Unprocessable Entity - Failed to extract addon package or migrations failed"
                    },
                    "500": {
                        "description": "Internal server error - Failed to install addon or download failed"
                    }
                }
            }
        },
        "/api/admin/console/execute": {
            "post": {
                "tags": [
                    "Admin - Console"
                ],
                "summary": "Execute system command",
                "description": "Execute a system command in the specified working directory. This endpoint is only available in developer mode and requires ADMIN_ROOT permissions.",
                "operationId": "1841a849bf043c64da4068b9632aead1",
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "required": [
                                    "command"
                                ],
                                "properties": {
                                    "command": {
                                        "description": "The command to execute",
                                        "type": "string",
                                        "example": "ls -la"
                                    },
                                    "cwd": {
                                        "description": "Working directory for command execution",
                                        "type": "string",
                                        "example": "/var/www/featherpanel"
                                    }
                                },
                                "type": "object"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Command executed successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "stdout": {
                                            "description": "Standard output from the command",
                                            "type": "string"
                                        },
                                        "stderr": {
                                            "description": "Standard error output from the command",
                                            "type": "string"
                                        },
                                        "return_code": {
                                            "description": "Command exit code",
                                            "type": "integer"
                                        },
                                        "execution_time": {
                                            "description": "Command execution time in milliseconds",
                                            "type": "number"
                                        },
                                        "command": {
                                            "description": "The executed command",
                                            "type": "string"
                                        },
                                        "working_directory": {
                                            "description": "Working directory where command was executed",
                                            "type": "string"
                                        },
                                        "timestamp": {
                                            "description": "Command execution timestamp",
                                            "type": "string",
                                            "format": "date-time"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request - No command provided"
                    },
                    "401": {
                        "description": "Unauthorized"
                    },
                    "403": {
                        "description": "Forbidden - Developer mode not enabled or insufficient permissions"
                    },
                    "500": {
                        "description": "Internal server error - Command execution failed"
                    }
                }
            }
        },
        "/api/admin/console/system-info": {
            "get": {
                "tags": [
                    "Admin - Console"
                ],
                "summary": "Get system information",
                "description": "Retrieve detailed system information including OS, PHP version, disk usage, memory usage, and uptime. This endpoint is only available in developer mode and requires ADMIN_ROOT permissions.",
                "operationId": "a982786e2d9bd187a687592600a3e0fc",
                "responses": {
                    "200": {
                        "description": "System information retrieved successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "os": {
                                            "description": "Operating system",
                                            "type": "string",
                                            "example": "Linux"
                                        },
                                        "php_version": {
                                            "description": "PHP version",
                                            "type": "string",
                                            "example": "8.2.0"
                                        },
                                        "server_software": {
                                            "description": "Web server software",
                                            "type": "string",
                                            "example": "nginx/1.18.0"
                                        },
                                        "server_name": {
                                            "description": "Server name",
                                            "type": "string",
                                            "example": "featherpanel.local"
                                        },
                                        "user": {
                                            "description": "Current user",
                                            "type": "string",
                                            "example": "www-data"
                                        },
                                        "home": {
                                            "description": "Home directory",
                                            "type": "string",
                                            "example": "/var/www"
                                        },
                                        "working_directory": {
                                            "description": "Current working directory",
                                            "type": "string",
                                            "example": "/var/www/featherpanel"
                                        },
                                        "disk_usage": {
                                            "description": "Disk usage information",
                                            "properties": {
                                                "free": {
                                                    "description": "Free disk space in bytes",
                                                    "type": "integer"
                                                },
                                                "total": {
                                                    "description": "Total disk space in bytes",
                                                    "type": "integer"
                                                },
                                                "used": {
                                                    "description": "Used disk space in bytes",
                                                    "type": "integer"
                                                },
                                                "percentage": {
                                                    "description": "Disk usage percentage",
                                                    "type": "number"
                                                }
                                            },
                                            "type": "object"
                                        },
                                        "memory_usage": {
                                            "description": "Memory usage information (Linux only)",
                                            "type": "object",
                                            "additionalProperties": {
                                                "description": "Memory values in bytes",
                                                "type": "integer"
                                            }
                                        },
                                        "uptime": {
                                            "description": "System uptime",
                                            "type": "string",
                                            "example": "5 days, 12 hours, 30 minutes"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "401": {
                        "description": "Unauthorized"
                    },
                    "403": {
                        "description": "Forbidden - Developer mode not enabled or insufficient permissions"
                    },
                    "500": {
                        "description": "Internal server error - Failed to fetch system info"
                    }
                }
            }
        },
        "/api/admin/dashboard": {
            "get": {
                "tags": [
                    "Admin - Dashboard"
                ],
                "summary": "Get dashboard statistics",
                "description": "Retrieve comprehensive dashboard statistics including user counts, node counts, spell counts, server counts, and recent cron task status.",
                "operationId": "8917da99881c0b492d61f4f50927d5ad",
                "responses": {
                    "200": {
                        "description": "Dashboard statistics retrieved successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "count": {
                                            "description": "System resource counts",
                                            "properties": {
                                                "users": {
                                                    "description": "Total number of users",
                                                    "type": "integer"
                                                },
                                                "nodes": {
                                                    "description": "Total number of nodes",
                                                    "type": "integer"
                                                },
                                                "spells": {
                                                    "description": "Total number of spells (eggs)",
                                                    "type": "integer"
                                                },
                                                "servers": {
                                                    "description": "Total number of servers",
                                                    "type": "integer"
                                                }
                                            },
                                            "type": "object"
                                        },
                                        "cron": {
                                            "description": "Cron task information",
                                            "properties": {
                                                "recent": {
                                                    "description": "Recent cron task executions (last 10)",
                                                    "type": "array",
                                                    "items": {
                                                        "properties": {
                                                            "id": {
                                                                "description": "Task ID",
                                                                "type": "integer"
                                                            },
                                                            "task_name": {
                                                                "description": "Name of the cron task",
                                                                "type": "string",
                                                                "example": "server-schedule-processor"
                                                            },
                                                            "last_run_at": {
                                                                "description": "Last execution timestamp",
                                                                "type": "string",
                                                                "format": "date-time",
                                                                "nullable": true
                                                            },
                                                            "last_run_success": {
                                                                "description": "Whether the last run was successful",
                                                                "type": "boolean"
                                                            },
                                                            "last_run_message": {
                                                                "description": "Last run message or error",
                                                                "type": "string",
                                                                "nullable": true
                                                            },
                                                            "expected_interval_seconds": {
                                                                "description": "Expected interval between runs in seconds",
                                                                "type": "integer"
                                                            },
                                                            "late": {
                                                                "description": "Whether the task is running late",
                                                                "type": "boolean"
                                                            }
                                                        },
                                                        "type": "object"
                                                    }
                                                },
                                                "summary": {
                                                    "description": "Summary message if no cron tasks have run",
                                                    "type": "string",
                                                    "nullable": true
                                                }
                                            },
                                            "type": "object"
                                        },
                                        "changelog": {
                                            "description": "System changelog entries (currently empty)",
                                            "type": "array",
                                            "items": {
                                                "type": "string"
                                            }
                                        },
                                        "version": {
                                            "description": "Version information",
                                            "properties": {
                                                "current": {
                                                    "description": "Current version details",
                                                    "properties": {
                                                        "id": {
                                                            "description": "Version ID",
                                                            "type": "integer"
                                                        },
                                                        "version": {
                                                            "description": "Version string",
                                                            "type": "string"
                                                        },
                                                        "type": {
                                                            "description": "Version type (stable/beta/canary)",
                                                            "type": "string"
                                                        },
                                                        "release_name": {
                                                            "description": "Release name",
                                                            "type": "string"
                                                        },
                                                        "description": {
                                                            "description": "Version description",
                                                            "type": "string"
                                                        },
                                                        "min_supported_php": {
                                                            "description": "Minimum supported PHP version",
                                                            "type": "string"
                                                        },
                                                        "max_supported_php": {
                                                            "description": "Maximum supported PHP version",
                                                            "type": "string"
                                                        },
                                                        "is_security_release": {
                                                            "description": "Whether this is a security release",
                                                            "type": "boolean"
                                                        },
                                                        "created_at": {
                                                            "description": "Version creation timestamp",
                                                            "type": "string",
                                                            "format": "date-time"
                                                        },
                                                        "updated_at": {
                                                            "description": "Version last update timestamp",
                                                            "type": "string",
                                                            "format": "date-time"
                                                        }
                                                    },
                                                    "type": "object"
                                                },
                                                "latest": {
                                                    "description": "Latest version details",
                                                    "properties": {
                                                        "id": {
                                                            "description": "Version ID",
                                                            "type": "integer"
                                                        },
                                                        "version": {
                                                            "description": "Version string",
                                                            "type": "string"
                                                        },
                                                        "type": {
                                                            "description": "Version type (stable/beta/canary)",
                                                            "type": "string"
                                                        },
                                                        "release_name": {
                                                            "description": "Release name",
                                                            "type": "string"
                                                        },
                                                        "description": {
                                                            "description": "Version description",
                                                            "type": "string"
                                                        },
                                                        "min_supported_php": {
                                                            "description": "Minimum supported PHP version",
                                                            "type": "string"
                                                        },
                                                        "max_supported_php": {
                                                            "description": "Maximum supported PHP version",
                                                            "type": "string"
                                                        },
                                                        "is_security_release": {
                                                            "description": "Whether this is a security release",
                                                            "type": "boolean"
                                                        },
                                                        "changelog_fixed": {
                                                            "description": "Fixed items in changelog",
                                                            "type": "array",
                                                            "items": {
                                                                "type": "string"
                                                            }
                                                        },
                                                        "changelog_added": {
                                                            "description": "Added items in changelog",
                                                            "type": "array",
                                                            "items": {
                                                                "type": "string"
                                                            }
                                                        },
                                                        "changelog_removed": {
                                                            "description": "Removed items in changelog",
                                                            "type": "array",
                                                            "items": {
                                                                "type": "string"
                                                            }
                                                        },
                                                        "changelog_improved": {
                                                            "description": "Improved items in changelog",
                                                            "type": "array",
                                                            "items": {
                                                                "type": "string"
                                                            }
                                                        },
                                                        "changelog_updated": {
                                                            "description": "Updated items in changelog",
                                                            "type": "array",
                                                            "items": {
                                                                "type": "string"
                                                            }
                                                        },
                                                        "created_at": {
                                                            "description": "Version creation timestamp",
                                                            "type": "string",
                                                            "format": "date-time"
                                                        },
                                                        "updated_at": {
                                                            "description": "Version last update timestamp",
                                                            "type": "string",
                                                            "format": "date-time"
                                                        }
                                                    },
                                                    "type": "object",
                                                    "nullable": true
                                                },
                                                "update_available": {
                                                    "description": "Whether an update is available",
                                                    "type": "boolean"
                                                },
                                                "last_checked": {
                                                    "description": "When version was last checked",
                                                    "type": "string",
                                                    "format": "date-time",
                                                    "nullable": true
                                                }
                                            },
                                            "type": "object"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "401": {
                        "description": "Unauthorized"
                    },
                    "403": {
                        "description": "Forbidden - Insufficient permissions"
                    },
                    "500": {
                        "description": "Internal server error - Failed to fetch dashboard statistics"
                    }
                }
            }
        },
        "/api/admin/dashboard/cache/clear": {
            "post": {
                "tags": [
                    "Admin - Dashboard"
                ],
                "summary": "Clear system cache",
                "description": "Clears all cached data in the system, including redis and file-based cache.",
                "operationId": "4893480af76f8d51abc5c08aa91ef19c",
                "responses": {
                    "200": {
                        "description": "Cache cleared successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "success": {
                                            "type": "boolean",
                                            "example": true
                                        },
                                        "message": {
                                            "type": "string",
                                            "example": "System cache has been cleared successfully."
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "401": {
                        "description": "Unauthorized"
                    },
                    "403": {
                        "description": "Forbidden - Insufficient permissions"
                    },
                    "500": {
                        "description": "Internal server error - Failed to clear cache"
                    }
                }
            }
        },
        "/api/admin/databases/management/status": {
            "get": {
                "tags": [
                    "Admin - Database Management"
                ],
                "summary": "Get database status",
                "description": "Retrieve comprehensive database status information including MySQL version, uptime, connection statistics, and performance metrics.",
                "operationId": "ad75ca4179b42e481a3215ace87a4301",
                "responses": {
                    "200": {
                        "description": "Database status retrieved successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "engine": {
                                            "description": "Database engine type",
                                            "type": "string",
                                            "example": "mysql"
                                        },
                                        "version": {
                                            "description": "MySQL version",
                                            "type": "string",
                                            "example": "8.0.35"
                                        },
                                        "uptime_seconds": {
                                            "description": "Database uptime in seconds",
                                            "type": "integer"
                                        },
                                        "threads_connected": {
                                            "description": "Number of currently connected threads",
                                            "type": "integer"
                                        },
                                        "threads_running": {
                                            "description": "Number of currently running threads",
                                            "type": "integer"
                                        },
                                        "connections_total": {
                                            "description": "Total number of connections made",
                                            "type": "integer"
                                        },
                                        "aborted_connects": {
                                            "description": "Number of aborted connection attempts",
                                            "type": "integer"
                                        },
                                        "queries_total": {
                                            "description": "Total number of queries executed",
                                            "type": "integer"
                                        },
                                        "questions_total": {
                                            "description": "Total number of questions (statements) executed",
                                            "type": "integer"
                                        },
                                        "qps": {
                                            "description": "Queries per second (calculated)",
                                            "type": "number"
                                        },
                                        "bytes_received": {
                                            "description": "Total bytes received from clients",
                                            "type": "integer"
                                        },
                                        "bytes_sent": {
                                            "description": "Total bytes sent to clients",
                                            "type": "integer"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "401": {
                        "description": "Unauthorized"
                    },
                    "403": {
                        "description": "Forbidden - Insufficient permissions"
                    },
                    "500": {
                        "description": "Internal server error - Failed to fetch database status"
                    }
                }
            }
        },
        "/api/admin/databases/management/migrate": {
            "post": {
                "tags": [
                    "Admin - Database Management"
                ],
                "summary": "Run database migrations",
                "description": "Execute pending database migrations from the storage/migrations directory. This will run all SQL migration files that haven't been executed yet.",
                "operationId": "5c295aefc97f608b5bbdbfc92b2a3465",
                "responses": {
                    "200": {
                        "description": "Migrations executed successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "exit_code": {
                                            "description": "Exit code (0 for success, 1 for errors)",
                                            "type": "integer",
                                            "example": 0
                                        },
                                        "output": {
                                            "description": "Migration execution log with detailed output",
                                            "type": "string"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "401": {
                        "description": "Unauthorized"
                    },
                    "403": {
                        "description": "Forbidden - Insufficient permissions"
                    },
                    "500": {
                        "description": "Internal server error - Failed to run migrations"
                    }
                }
            }
        },
        "/api/admin/databases/management/install-phpmyadmin": {
            "post": {
                "tags": [
                    "Admin - Database Management"
                ],
                "summary": "Install phpMyAdmin",
                "description": "Download and install phpMyAdmin to the public directory. This will download the latest version, extract it, configure it, and install themes.",
                "operationId": "4477a8e37bcfa6dea1ca45b1618a66cb",
                "responses": {
                    "200": {
                        "description": "phpMyAdmin installed successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "message": {
                                            "description": "Success message",
                                            "type": "string",
                                            "example": "phpMyAdmin installed successfully"
                                        },
                                        "already_installed": {
                                            "description": "Whether phpMyAdmin was already installed",
                                            "type": "boolean",
                                            "example": false
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "401": {
                        "description": "Unauthorized"
                    },
                    "403": {
                        "description": "Forbidden - Insufficient permissions"
                    },
                    "500": {
                        "description": "Internal server error - Failed to install phpMyAdmin"
                    }
                }
            }
        },
        "/api/admin/databases/management/phpmyadmin/status": {
            "get": {
                "tags": [
                    "Admin - Database Management"
                ],
                "summary": "Check phpMyAdmin installation status",
                "description": "Check if phpMyAdmin is currently installed.",
                "operationId": "b6dc406f614397abca887db26a34cc9b",
                "responses": {
                    "200": {
                        "description": "phpMyAdmin installation status retrieved successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "installed": {
                                            "description": "Whether phpMyAdmin is installed",
                                            "type": "boolean",
                                            "example": true
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "401": {
                        "description": "Unauthorized"
                    },
                    "403": {
                        "description": "Forbidden - Insufficient permissions"
                    }
                }
            }
        },
        "/api/admin/databases/management/phpmyadmin": {
            "delete": {
                "tags": [
                    "Admin - Database Management"
                ],
                "summary": "Delete phpMyAdmin",
                "description": "Remove phpMyAdmin installation from the public directory.",
                "operationId": "f86a6adf0056c6a727ffdcb82c6d8997",
                "responses": {
                    "200": {
                        "description": "phpMyAdmin deleted successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "message": {
                                            "description": "Success message",
                                            "type": "string",
                                            "example": "phpMyAdmin deleted successfully"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "401": {
                        "description": "Unauthorized"
                    },
                    "403": {
                        "description": "Forbidden - Insufficient permissions"
                    },
                    "404": {
                        "description": "phpMyAdmin is not installed"
                    },
                    "500": {
                        "description": "Internal server error - Failed to delete phpMyAdmin"
                    }
                }
            }
        },
        "/api/admin/database-snapshots": {
            "get": {
                "tags": [
                    "Admin - Database Snapshots"
                ],
                "summary": "List all database snapshots",
                "description": "Retrieve a list of all available database snapshots with metadata.",
                "operationId": "264f95d61623e04e39aa8f51afa08ea6",
                "responses": {
                    "200": {
                        "description": "Snapshots retrieved successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "snapshots": {
                                            "type": "array",
                                            "items": {
                                                "properties": {
                                                    "filename": {
                                                        "type": "string",
                                                        "example": "snapshot_2025-01-15_14-30-00.fpb"
                                                    },
                                                    "size": {
                                                        "description": "File size in bytes",
                                                        "type": "integer",
                                                        "example": 1048576
                                                    },
                                                    "created_at": {
                                                        "type": "string",
                                                        "format": "date-time",
                                                        "example": "2025-01-15T14:30:00Z"
                                                    },
                                                    "size_formatted": {
                                                        "type": "string",
                                                        "example": "1.00 MB"
                                                    }
                                                },
                                                "type": "object"
                                            }
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "401": {
                        "description": "Unauthorized"
                    },
                    "403": {
                        "description": "Forbidden - Insufficient permissions"
                    }
                }
            },
            "post": {
                "tags": [
                    "Admin - Database Snapshots"
                ],
                "summary": "Create a new database snapshot",
                "description": "Create a complete SQL dump of the entire database and save it as a FeatherPanel Backup (.fpb) file.",
                "operationId": "00a153684bab889e3680ffaccbad11c1",
                "requestBody": {
                    "description": "Password verification required",
                    "content": {
                        "application/json": {
                            "schema": {
                                "required": [
                                    "password"
                                ],
                                "properties": {
                                    "password": {
                                        "description": "Current user password for security verification",
                                        "type": "string",
                                        "example": "your-password"
                                    }
                                },
                                "type": "object"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Snapshot created successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "filename": {
                                            "type": "string",
                                            "example": "snapshot_2025-01-15_14-30-00.fpb"
                                        },
                                        "size": {
                                            "description": "File size in bytes",
                                            "type": "integer",
                                            "example": 1048576
                                        },
                                        "size_formatted": {
                                            "type": "string",
                                            "example": "1.00 MB"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request - Missing password"
                    },
                    "401": {
                        "description": "Unauthorized - Invalid password or not authenticated"
                    },
                    "403": {
                        "description": "Forbidden - Insufficient permissions or developer mode not enabled"
                    },
                    "500": {
                        "description": "Internal server error - Failed to create snapshot"
                    }
                }
            }
        },
        "/api/admin/database-snapshots/{filename}/download": {
            "get": {
                "tags": [
                    "Admin - Database Snapshots"
                ],
                "summary": "Download a database snapshot",
                "description": "Download a specific database snapshot file. Password verification required.",
                "operationId": "b6bea877a45f9193b3410783081b0014",
                "parameters": [
                    {
                        "name": "filename",
                        "in": "path",
                        "description": "The filename of the snapshot to download",
                        "required": true,
                        "schema": {
                            "type": "string",
                            "example": "snapshot_2025-01-15_14-30-00.fpb"
                        }
                    },
                    {
                        "name": "password",
                        "in": "query",
                        "description": "Current user password for security verification",
                        "required": true,
                        "schema": {
                            "type": "string",
                            "example": "your-password"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Snapshot file downloaded",
                        "content": {
                            "application/sql": {}
                        }
                    },
                    "400": {
                        "description": "Bad request - Missing password or invalid snapshot"
                    },
                    "401": {
                        "description": "Unauthorized - Invalid password or not authenticated"
                    },
                    "403": {
                        "description": "Forbidden - Insufficient permissions or developer mode not enabled"
                    },
                    "404": {
                        "description": "Snapshot not found"
                    }
                }
            }
        },
        "/api/admin/database-snapshots/{filename}/restore": {
            "post": {
                "tags": [
                    "Admin - Database Snapshots"
                ],
                "summary": "Restore database from snapshot",
                "description": "Wipe the current database and restore it from a snapshot file. WARNING: This will delete all current data!",
                "operationId": "87ee6e6e3cc8db963f93a78bd108be28",
                "parameters": [
                    {
                        "name": "filename",
                        "in": "path",
                        "description": "The filename of the snapshot to restore",
                        "required": true,
                        "schema": {
                            "type": "string",
                            "example": "snapshot_2025-01-15_14-30-00.fpb"
                        }
                    }
                ],
                "requestBody": {
                    "description": "Restore confirmation with password verification",
                    "content": {
                        "application/json": {
                            "schema": {
                                "required": [
                                    "confirm",
                                    "password"
                                ],
                                "properties": {
                                    "confirm": {
                                        "description": "Must be true to confirm restoration",
                                        "type": "boolean",
                                        "example": true
                                    },
                                    "password": {
                                        "description": "Current user password for security verification",
                                        "type": "string",
                                        "example": "your-password"
                                    }
                                },
                                "type": "object"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Database restored successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "message": {
                                            "type": "string",
                                            "example": "Database restored successfully"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request - Missing confirmation, password, or invalid snapshot"
                    },
                    "401": {
                        "description": "Unauthorized - Invalid password or not authenticated"
                    },
                    "403": {
                        "description": "Forbidden - Insufficient permissions or developer mode not enabled"
                    },
                    "404": {
                        "description": "Snapshot not found"
                    },
                    "500": {
                        "description": "Internal server error - Failed to restore database"
                    }
                }
            }
        },
        "/api/admin/database-snapshots/{filename}": {
            "delete": {
                "tags": [
                    "Admin - Database Snapshots"
                ],
                "summary": "Delete a database snapshot",
                "description": "Delete a specific database snapshot file.",
                "operationId": "cec26cad62a96091e54b1572ebc67cdf",
                "parameters": [
                    {
                        "name": "filename",
                        "in": "path",
                        "description": "The filename of the snapshot to delete",
                        "required": true,
                        "schema": {
                            "type": "string",
                            "example": "snapshot_2025-01-15_14-30-00.fpb"
                        }
                    }
                ],
                "requestBody": {
                    "description": "Delete confirmation with password verification",
                    "content": {
                        "application/json": {
                            "schema": {
                                "required": [
                                    "password"
                                ],
                                "properties": {
                                    "password": {
                                        "description": "Current user password for security verification",
                                        "type": "string",
                                        "example": "your-password"
                                    }
                                },
                                "type": "object"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Snapshot deleted successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "message": {
                                            "type": "string",
                                            "example": "Snapshot deleted successfully"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request - Missing password or invalid snapshot"
                    },
                    "401": {
                        "description": "Unauthorized - Invalid password or not authenticated"
                    },
                    "403": {
                        "description": "Forbidden - Insufficient permissions or developer mode not enabled"
                    },
                    "404": {
                        "description": "Snapshot not found"
                    },
                    "500": {
                        "description": "Internal server error - Failed to delete snapshot"
                    }
                }
            }
        },
        "/api/admin/database-snapshots/restore-upload": {
            "post": {
                "tags": [
                    "Admin - Database Snapshots"
                ],
                "summary": "Restore database from uploaded snapshot file",
                "description": "Upload and restore a FeatherPanel Backup (.fpb) file. WARNING: This will wipe all tables and delete all current data!",
                "operationId": "75a15f9bc476412e37b6ab653b4741b9",
                "requestBody": {
                    "required": true,
                    "content": {
                        "multipart/form-data": {
                            "schema": {
                                "required": [
                                    "file",
                                    "confirm",
                                    "password"
                                ],
                                "properties": {
                                    "file": {
                                        "description": "FeatherPanel Backup (.fpb) file to restore",
                                        "type": "string",
                                        "format": "binary"
                                    },
                                    "confirm": {
                                        "description": "Must be true to confirm restoration",
                                        "type": "boolean"
                                    },
                                    "password": {
                                        "description": "Current user password for security verification",
                                        "type": "string"
                                    }
                                },
                                "type": "object"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Database restored successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "message": {
                                            "type": "string",
                                            "example": "Database restored successfully"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request - Missing confirmation, password, or invalid file"
                    },
                    "401": {
                        "description": "Unauthorized - Invalid password or not authenticated"
                    },
                    "403": {
                        "description": "Forbidden - Insufficient permissions or developer mode not enabled"
                    },
                    "500": {
                        "description": "Internal server error - Failed to restore database"
                    }
                }
            }
        },
        "/api/admin/database-snapshots/fresh-restore": {
            "post": {
                "tags": [
                    "Admin - Database Snapshots"
                ],
                "summary": "Restore database to fresh state",
                "description": "Wipe the entire database clean, run migrations, and recreate the current user with the same session token. WARNING: This will delete ALL data including users, servers, and all other records!",
                "operationId": "728d49914fe61a51c77edcdfbe458178",
                "requestBody": {
                    "description": "Fresh restore confirmation with password verification",
                    "content": {
                        "application/json": {
                            "schema": {
                                "required": [
                                    "confirm",
                                    "password"
                                ],
                                "properties": {
                                    "confirm": {
                                        "description": "Must be true to confirm fresh restore",
                                        "type": "boolean",
                                        "example": true
                                    },
                                    "password": {
                                        "description": "Current user password for security verification",
                                        "type": "string",
                                        "example": "your-password"
                                    }
                                },
                                "type": "object"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Database restored to fresh state successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "message": {
                                            "type": "string",
                                            "example": "Database restored to fresh state successfully"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request - Missing confirmation or password"
                    },
                    "401": {
                        "description": "Unauthorized - Invalid password or not authenticated"
                    },
                    "403": {
                        "description": "Forbidden - Insufficient permissions or developer mode not enabled"
                    },
                    "500": {
                        "description": "Internal server error - Failed to restore database"
                    }
                }
            }
        },
        "/api/admin/databases": {
            "get": {
                "tags": [
                    "Admin - Databases"
                ],
                "summary": "Get all databases",
                "description": "Retrieve a paginated list of all database instances with optional filtering by node and search query.",
                "operationId": "45c029c71dc95d1300f6d7782727bd34",
                "parameters": [
                    {
                        "name": "page",
                        "in": "query",
                        "description": "Page number for pagination",
                        "required": false,
                        "schema": {
                            "type": "integer",
                            "default": 1,
                            "minimum": 1
                        }
                    },
                    {
                        "name": "limit",
                        "in": "query",
                        "description": "Number of records per page",
                        "required": false,
                        "schema": {
                            "type": "integer",
                            "default": 10,
                            "maximum": 100,
                            "minimum": 1
                        }
                    },
                    {
                        "name": "search",
                        "in": "query",
                        "description": "Search term to filter databases by name",
                        "required": false,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "node_id",
                        "in": "query",
                        "description": "Filter databases by node ID",
                        "required": false,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Databases retrieved successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "databases": {
                                            "type": "array",
                                            "items": {
                                                "$ref": "#/components/schemas/Database"
                                            }
                                        },
                                        "pagination": {
                                            "properties": {
                                                "current_page": {
                                                    "type": "integer"
                                                },
                                                "per_page": {
                                                    "type": "integer"
                                                },
                                                "total_records": {
                                                    "type": "integer"
                                                },
                                                "total_pages": {
                                                    "type": "integer"
                                                },
                                                "has_next": {
                                                    "type": "boolean"
                                                },
                                                "has_prev": {
                                                    "type": "boolean"
                                                },
                                                "from": {
                                                    "type": "integer"
                                                },
                                                "to": {
                                                    "type": "integer"
                                                }
                                            },
                                            "type": "object"
                                        },
                                        "search": {
                                            "properties": {
                                                "query": {
                                                    "type": "string"
                                                },
                                                "has_results": {
                                                    "type": "boolean"
                                                }
                                            },
                                            "type": "object"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "401": {
                        "description": "Unauthorized"
                    },
                    "403": {
                        "description": "Forbidden - Insufficient permissions"
                    }
                }
            },
            "put": {
                "tags": [
                    "Admin - Databases"
                ],
                "summary": "Create new database",
                "description": "Create a new database instance. Health checks are skipped by default. Use /api/admin/databases/test-connection endpoint to test the connection before creating if needed. Node ID is optional for migration purposes.",
                "operationId": "a5920f7a17381c28d519dd4ad4bd55a5",
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/DatabaseCreate"
                            }
                        }
                    }
                },
                "responses": {
                    "201": {
                        "description": "Database created successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "database_id": {
                                            "description": "ID of the created database",
                                            "type": "integer"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request - Invalid data"
                    },
                    "401": {
                        "description": "Unauthorized"
                    },
                    "403": {
                        "description": "Forbidden - Insufficient permissions"
                    },
                    "404": {
                        "description": "Node not found (only if node_id is provided)"
                    },
                    "500": {
                        "description": "Internal server error - Failed to create database"
                    }
                }
            }
        },
        "/api/admin/databases/{id}": {
            "get": {
                "tags": [
                    "Admin - Databases"
                ],
                "summary": "Get database by ID",
                "description": "Retrieve a specific database instance by its ID with associated node information. Password is excluded from response.",
                "operationId": "b37f9f039acabb9e981a194c45f2d6fa",
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "description": "Database ID",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Database retrieved successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "database": {
                                            "$ref": "#/components/schemas/Database"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Invalid ID format"
                    },
                    "401": {
                        "description": "Unauthorized"
                    },
                    "403": {
                        "description": "Forbidden - Insufficient permissions"
                    },
                    "404": {
                        "description": "Database not found"
                    }
                }
            },
            "delete": {
                "tags": [
                    "Admin - Databases"
                ],
                "summary": "Delete database",
                "description": "Permanently delete a database instance. This action cannot be undone.",
                "operationId": "eb2b97d14351cc68fca08339ec5088be",
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "description": "Database ID",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Database deleted successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "message": {
                                            "description": "Success message",
                                            "type": "string"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "401": {
                        "description": "Unauthorized"
                    },
                    "403": {
                        "description": "Forbidden - Insufficient permissions"
                    },
                    "404": {
                        "description": "Database not found"
                    },
                    "500": {
                        "description": "Internal server error - Failed to delete database"
                    }
                }
            },
            "patch": {
                "tags": [
                    "Admin - Databases"
                ],
                "summary": "Update database",
                "description": "Update an existing database instance. Only provided fields will be updated.",
                "operationId": "77e86e01c5eedf7fa1935461c09fd9ba",
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "description": "Database ID",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/DatabaseUpdate"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Database updated successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "message": {
                                            "description": "Success message",
                                            "type": "string"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request - Invalid data"
                    },
                    "401": {
                        "description": "Unauthorized"
                    },
                    "403": {
                        "description": "Forbidden - Insufficient permissions"
                    },
                    "404": {
                        "description": "Database or node not found"
                    },
                    "500": {
                        "description": "Internal server error - Failed to update database"
                    }
                }
            }
        },
        "/api/admin/databases/node/{nodeId}": {
            "get": {
                "tags": [
                    "Admin - Databases"
                ],
                "summary": "Get databases by node",
                "description": "Retrieve all database instances for a specific node with pagination and search capabilities.",
                "operationId": "3b91ba496b94acda5c5bc81e390b717e",
                "parameters": [
                    {
                        "name": "nodeId",
                        "in": "path",
                        "description": "Node ID",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    },
                    {
                        "name": "page",
                        "in": "query",
                        "description": "Page number for pagination",
                        "required": false,
                        "schema": {
                            "type": "integer",
                            "default": 1,
                            "minimum": 1
                        }
                    },
                    {
                        "name": "limit",
                        "in": "query",
                        "description": "Number of records per page",
                        "required": false,
                        "schema": {
                            "type": "integer",
                            "default": 10,
                            "maximum": 100,
                            "minimum": 1
                        }
                    },
                    {
                        "name": "search",
                        "in": "query",
                        "description": "Search term to filter databases by name",
                        "required": false,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Databases for node retrieved successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "databases": {
                                            "type": "array",
                                            "items": {
                                                "$ref": "#/components/schemas/Database"
                                            }
                                        },
                                        "pagination": {
                                            "properties": {
                                                "current_page": {
                                                    "type": "integer"
                                                },
                                                "per_page": {
                                                    "type": "integer"
                                                },
                                                "total_records": {
                                                    "type": "integer"
                                                },
                                                "total_pages": {
                                                    "type": "integer"
                                                },
                                                "has_next": {
                                                    "type": "boolean"
                                                },
                                                "has_prev": {
                                                    "type": "boolean"
                                                },
                                                "from": {
                                                    "type": "integer"
                                                },
                                                "to": {
                                                    "type": "integer"
                                                }
                                            },
                                            "type": "object"
                                        },
                                        "search": {
                                            "properties": {
                                                "query": {
                                                    "type": "string"
                                                },
                                                "has_results": {
                                                    "type": "boolean"
                                                }
                                            },
                                            "type": "object"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Invalid node ID format"
                    },
                    "401": {
                        "description": "Unauthorized"
                    },
                    "403": {
                        "description": "Forbidden - Insufficient permissions"
                    },
                    "404": {
                        "description": "Node not found"
                    }
                }
            }
        },
        "/api/admin/databases/{id}/health": {
            "get": {
                "tags": [
                    "Admin - Databases"
                ],
                "summary": "Check database health",
                "description": "Perform a health check on a specific database instance by testing the connection.",
                "operationId": "31351164bd97a36caca058fbc26f3a29",
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "description": "Database ID",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Health check completed",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "database_id": {
                                            "description": "Database ID",
                                            "type": "integer"
                                        },
                                        "healthy": {
                                            "description": "Whether the database is healthy",
                                            "type": "boolean"
                                        },
                                        "message": {
                                            "description": "Health check message",
                                            "type": "string"
                                        },
                                        "response_time": {
                                            "description": "Connection response time in milliseconds",
                                            "type": "number",
                                            "nullable": true
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Invalid ID format"
                    },
                    "401": {
                        "description": "Unauthorized"
                    },
                    "403": {
                        "description": "Forbidden - Insufficient permissions"
                    },
                    "404": {
                        "description": "Database not found"
                    }
                }
            }
        },
        "/api/admin/databases/test-connection": {
            "post": {
                "tags": [
                    "Admin - Databases"
                ],
                "summary": "Test database connection",
                "description": "Test a database connection without creating a database record. Useful for validating connection parameters.",
                "operationId": "091989373b43c05528f3488f8f461f30",
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/ConnectionTest"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Connection test completed",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "success": {
                                            "description": "Whether the connection was successful",
                                            "type": "boolean"
                                        },
                                        "message": {
                                            "description": "Connection test message",
                                            "type": "string"
                                        },
                                        "response_time": {
                                            "description": "Connection response time in milliseconds",
                                            "type": "number",
                                            "nullable": true
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request - Missing required fields"
                    },
                    "401": {
                        "description": "Unauthorized"
                    },
                    "403": {
                        "description": "Forbidden - Insufficient permissions"
                    }
                }
            }
        },
        "/api/admin/dns-hosts": {
            "get": {
                "tags": [
                    "Admin - DNS Hosts"
                ],
                "summary": "List DNS hosts",
                "operationId": "7f12864a9afd906f01ebf2682f0ff015"
            },
            "put": {
                "tags": [
                    "Admin - DNS Hosts"
                ],
                "summary": "Create DNS host",
                "operationId": "ebeeda976e668aeb1a13c21bb8cf518c"
            }
        },
        "/api/admin/dns-hosts/{id}": {
            "get": {
                "tags": [
                    "Admin - DNS Hosts"
                ],
                "summary": "Show DNS host",
                "operationId": "cce22fa321e0e546bbae2062773ce2c5"
            },
            "delete": {
                "tags": [
                    "Admin - DNS Hosts"
                ],
                "summary": "Delete DNS host",
                "operationId": "80caf3f737d398e3608f942a9d6a25cb"
            },
            "patch": {
                "tags": [
                    "Admin - DNS Hosts"
                ],
                "summary": "Update DNS host",
                "operationId": "6d7e2f8a8e0e2958ae7f0262647d9d50"
            }
        },
        "/api/admin/dns-hosts/{id}/test": {
            "post": {
                "tags": [
                    "Admin - DNS Hosts"
                ],
                "summary": "Test PowerDNS on DNS host web node",
                "operationId": "528e0196fbc67531ef7ec826835f73be"
            }
        },
        "/api/admin/featherpanel-premium": {
            "get": {
                "tags": [
                    "Admin - FeatherPanel Premium"
                ],
                "summary": "Get FeatherPanel Premium entitlement and customization settings",
                "operationId": "ddcf006cd7ed47c98b338d0cc5c57b33"
            },
            "post": {
                "tags": [
                    "Admin - FeatherPanel Premium"
                ],
                "summary": "Update FeatherPanel Premium customization settings",
                "operationId": "b70f466c2e63dee989790bc380c789c5"
            }
        },
        "/api/admin/featherzerotrust/config": {
            "get": {
                "tags": [
                    "Admin - FeatherZeroTrust"
                ],
                "summary": "Get FeatherZeroTrust configuration",
                "description": "Retrieve current FeatherZeroTrust configuration.",
                "operationId": "0af2a82887d09db2ba62f79817a894e3",
                "responses": {
                    "200": {
                        "description": "Configuration retrieved successfully"
                    }
                }
            },
            "put": {
                "tags": [
                    "Admin - FeatherZeroTrust"
                ],
                "summary": "Update FeatherZeroTrust configuration",
                "description": "Update FeatherZeroTrust configuration settings.",
                "operationId": "c1193de9f762a9b7ad4821cd0d4b9c92",
                "responses": {
                    "200": {
                        "description": "Configuration updated successfully"
                    }
                }
            }
        },
        "/api/admin/featherzerotrust/scan": {
            "post": {
                "tags": [
                    "Admin - FeatherZeroTrust"
                ],
                "summary": "Scan a server",
                "description": "Scan a server for suspicious files using FeatherZeroTrust.",
                "operationId": "64775cdca7a6fb94a0a4215e88c8b67d",
                "responses": {
                    "200": {
                        "description": "Server scan completed successfully"
                    }
                }
            }
        },
        "/api/admin/featherzerotrust/scan/batch": {
            "post": {
                "tags": [
                    "Admin - FeatherZeroTrust"
                ],
                "summary": "Scan multiple servers",
                "description": "Scan multiple servers for suspicious files using FeatherZeroTrust.",
                "operationId": "5e3ff91f9a90b4f32c10bcd5f88eee4a",
                "responses": {
                    "200": {
                        "description": "Batch scan completed"
                    }
                }
            }
        },
        "/api/admin/featherzerotrust/logs": {
            "get": {
                "tags": [
                    "Admin - FeatherZeroTrust"
                ],
                "summary": "Get FeatherZeroTrust cron execution logs",
                "description": "Retrieve cron job execution logs with pagination.",
                "operationId": "badaf88dfa6946ecd50ee76532e496b6",
                "responses": {
                    "200": {
                        "description": "Cron logs retrieved successfully"
                    }
                }
            }
        },
        "/api/admin/featherzerotrust/logs/{executionId}": {
            "get": {
                "tags": [
                    "Admin - FeatherZeroTrust"
                ],
                "summary": "Get detailed cron execution log",
                "description": "Retrieve detailed information about a specific cron execution including server scan logs.",
                "operationId": "8b7cfe5b0c04ffccdb20554dc3999f7e",
                "responses": {
                    "200": {
                        "description": "Execution log retrieved successfully"
                    }
                }
            }
        },
        "/api/admin/featherzerotrust/hashes": {
            "get": {
                "tags": [
                    "Admin - FeatherZeroTrust"
                ],
                "summary": "Get suspicious file hashes",
                "description": "Retrieve suspicious file hashes from the database.",
                "operationId": "d9ed6efe72517dcb5ae2d4a1f1da6eca",
                "parameters": [
                    {
                        "name": "confirmed_only",
                        "in": "query",
                        "description": "Only return confirmed malicious hashes",
                        "required": false,
                        "schema": {
                            "type": "boolean"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Hashes retrieved successfully"
                    }
                }
            },
            "post": {
                "tags": [
                    "Admin - FeatherZeroTrust"
                ],
                "summary": "Add hash manually",
                "description": "Manually add a suspicious file hash to the database.",
                "operationId": "8a275292ffa32de9250fdb7376eb7466",
                "responses": {
                    "200": {
                        "description": "Hash added successfully"
                    }
                }
            }
        },
        "/api/admin/featherzerotrust/hashes/stats": {
            "get": {
                "tags": [
                    "Admin - FeatherZeroTrust"
                ],
                "summary": "Get hash statistics",
                "description": "Retrieve statistics about suspicious file hashes in the database.",
                "operationId": "2eabe495be04a858f0843ae1dc345ad1",
                "responses": {
                    "200": {
                        "description": "Hash statistics retrieved successfully"
                    }
                }
            }
        },
        "/api/admin/featherzerotrust/hashes/check": {
            "post": {
                "tags": [
                    "Admin - FeatherZeroTrust"
                ],
                "summary": "Check hashes against database",
                "description": "Check multiple hashes against the suspicious file hash database.",
                "operationId": "ffbf6c9fc0df7a614d3a59c496d1f39d",
                "responses": {
                    "200": {
                        "description": "Hashes checked successfully"
                    }
                }
            }
        },
        "/api/admin/featherzerotrust/hashes/{hash}/confirm": {
            "put": {
                "tags": [
                    "Admin - FeatherZeroTrust"
                ],
                "summary": "Confirm hash as malicious",
                "description": "Mark a hash as confirmed malicious.",
                "operationId": "841bfe6c197175cb64c5d39b2f7229bb",
                "responses": {
                    "200": {
                        "description": "Hash confirmed as malicious"
                    }
                }
            }
        },
        "/api/admin/featherzerotrust/hashes/bulk/confirm": {
            "post": {
                "tags": [
                    "Admin - FeatherZeroTrust"
                ],
                "summary": "Confirm multiple hashes as malicious",
                "description": "Mark multiple hashes as confirmed malicious.",
                "operationId": "57a4a68ea88705b1ce05acb01221f573",
                "responses": {
                    "200": {
                        "description": "Bulk hash confirmation completed"
                    }
                }
            }
        },
        "/api/admin/featherzerust/hashes/bulk/delete": {
            "post": {
                "tags": [
                    "Admin - FeatherZeroTrust"
                ],
                "summary": "Delete multiple hashes",
                "description": "Delete multiple hashes from the database.",
                "operationId": "b2f8691deec861f421f31ddebc6677ab",
                "responses": {
                    "200": {
                        "description": "Bulk hash deletion completed"
                    }
                }
            }
        },
        "/api/admin/featherzerotrust/hashes/import/malwarebazaar": {
            "post": {
                "tags": [
                    "Admin - FeatherZeroTrust"
                ],
                "summary": "Import hashes from MalwareBazaar",
                "description": "Pull recent suspicious hashes from MalwareBazaar and store them in FeatherZeroTrust hash database.",
                "operationId": "eb2c6f7dbed20457902208510171b8dd",
                "responses": {
                    "200": {
                        "description": "MalwareBazaar import completed"
                    }
                }
            }
        },
        "/api/admin/featherzerotrust/hashes/{hash}": {
            "delete": {
                "tags": [
                    "Admin - FeatherZeroTrust"
                ],
                "summary": "Delete hash",
                "description": "Delete a hash from the database.",
                "operationId": "4fc06bc7ca47a525671f1c0dcab2ec42",
                "responses": {
                    "200": {
                        "description": "Hash deleted successfully"
                    }
                }
            }
        },
        "/api/admin/file-manager/browse": {
            "get": {
                "tags": [
                    "Admin - File Manager"
                ],
                "summary": "Browse directory contents",
                "description": "Browse the contents of a directory in the project filesystem. Only available in developer mode and requires ADMIN_ROOT permissions.",
                "operationId": "f0eeed16508d2673b1260863e4bb2470",
                "parameters": [
                    {
                        "name": "path",
                        "in": "query",
                        "description": "Directory path to browse (relative to project root)",
                        "required": false,
                        "schema": {
                            "type": "string",
                            "default": ""
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Directory contents retrieved successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "path": {
                                            "description": "Current directory path",
                                            "type": "string"
                                        },
                                        "items": {
                                            "type": "array",
                                            "items": {
                                                "$ref": "#/components/schemas/FileItem"
                                            }
                                        },
                                        "parent": {
                                            "description": "Parent directory path",
                                            "type": "string",
                                            "nullable": true
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "401": {
                        "description": "Unauthorized"
                    },
                    "403": {
                        "description": "Forbidden - Developer mode not enabled or insufficient permissions"
                    },
                    "404": {
                        "description": "Directory not found"
                    },
                    "500": {
                        "description": "Internal server error - Failed to browse directory"
                    }
                }
            }
        },
        "/api/admin/file-manager/read": {
            "get": {
                "tags": [
                    "Admin - File Manager"
                ],
                "summary": "Read file contents",
                "description": "Read the contents of a file. Binary files will return null content with isBinary flag set to true. Only available in developer mode and requires ADMIN_ROOT permissions.",
                "operationId": "d2776edd24498aa9d55a5b10587c5d81",
                "parameters": [
                    {
                        "name": "path",
                        "in": "query",
                        "description": "File path to read (relative to project root)",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "File content retrieved successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/FileContent"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request - Path is not a file"
                    },
                    "401": {
                        "description": "Unauthorized"
                    },
                    "403": {
                        "description": "Forbidden - Developer mode not enabled or insufficient permissions"
                    },
                    "404": {
                        "description": "File not found"
                    },
                    "413": {
                        "description": "File too large (max 5MB)"
                    },
                    "500": {
                        "description": "Internal server error - Failed to read file"
                    }
                }
            }
        },
        "/api/admin/file-manager/save": {
            "post": {
                "tags": [
                    "Admin - File Manager"
                ],
                "summary": "Save file contents",
                "description": "Save content to a file. Creates backup of existing files before overwriting. Only available in developer mode and requires ADMIN_ROOT permissions.",
                "operationId": "1bbfc9c60b4fe36e6d937332c9d2514a",
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/FileSave"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "File saved successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "path": {
                                            "description": "File path",
                                            "type": "string"
                                        },
                                        "size": {
                                            "description": "Number of bytes written",
                                            "type": "integer"
                                        },
                                        "modified": {
                                            "description": "Last modification timestamp",
                                            "type": "integer"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "401": {
                        "description": "Unauthorized"
                    },
                    "403": {
                        "description": "Forbidden - Developer mode not enabled, insufficient permissions, or access denied to path"
                    },
                    "500": {
                        "description": "Internal server error - Failed to save file"
                    }
                }
            }
        },
        "/api/admin/file-manager/create": {
            "post": {
                "tags": [
                    "Admin - File Manager"
                ],
                "summary": "Create file or directory",
                "description": "Create a new file or directory. Only available in developer mode and requires ADMIN_ROOT permissions.",
                "operationId": "c76e9ce027f295ecc46fe1f20c2191d2",
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/FileCreate"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "File or directory created successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "path": {
                                            "description": "Created file or directory path",
                                            "type": "string"
                                        },
                                        "isDirectory": {
                                            "description": "Whether a directory was created",
                                            "type": "boolean"
                                        },
                                        "created": {
                                            "description": "Creation timestamp",
                                            "type": "integer"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "401": {
                        "description": "Unauthorized"
                    },
                    "403": {
                        "description": "Forbidden - Developer mode not enabled, insufficient permissions, or access denied to path"
                    },
                    "409": {
                        "description": "Conflict - File or directory already exists"
                    },
                    "500": {
                        "description": "Internal server error - Failed to create file or directory"
                    }
                }
            }
        },
        "/api/admin/file-manager/delete": {
            "post": {
                "tags": [
                    "Admin - File Manager"
                ],
                "summary": "Delete file or directory",
                "description": "Delete a file or directory (recursively for directories). Prevents deletion of critical system directories. Only available in developer mode and requires ADMIN_ROOT permissions.",
                "operationId": "ce10fad622d682a029b1f6db3dd192dd",
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/FileDelete"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "File or directory deleted successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "message": {
                                            "description": "Success message",
                                            "type": "string"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "401": {
                        "description": "Unauthorized"
                    },
                    "403": {
                        "description": "Forbidden - Developer mode not enabled, insufficient permissions, access denied to path, or critical system directory"
                    },
                    "404": {
                        "description": "File or directory not found"
                    },
                    "500": {
                        "description": "Internal server error - Failed to delete file or directory"
                    }
                }
            }
        },
        "/api/admin/hosting-packages": {
            "get": {
                "tags": [
                    "Admin - Hosting packages"
                ],
                "summary": "List hosting packages",
                "operationId": "aefa3740a798c9cdb3f91b7e3b841a9a"
            },
            "put": {
                "tags": [
                    "Admin - Hosting packages"
                ],
                "summary": "Create hosting package",
                "operationId": "01b96275f605eb4032394e32c005746d"
            }
        },
        "/api/admin/hosting-packages/{id}": {
            "get": {
                "tags": [
                    "Admin - Hosting packages"
                ],
                "summary": "Get hosting package",
                "operationId": "8212ccb8443644d5ea5c97b920a0d7ba"
            },
            "delete": {
                "tags": [
                    "Admin - Hosting packages"
                ],
                "summary": "Delete hosting package",
                "operationId": "3326f0f0dfc2272e96c3860e87935920"
            },
            "patch": {
                "tags": [
                    "Admin - Hosting packages"
                ],
                "summary": "Update hosting package",
                "operationId": "3fb0b1e39588227c03a54257adaaed14"
            }
        },
        "/api/admin/images": {
            "get": {
                "tags": [
                    "Admin - Images"
                ],
                "summary": "Get all images",
                "description": "Retrieve a paginated list of all images with optional search functionality.",
                "operationId": "4c4c401a083fef021d1d4af81e7814b7",
                "parameters": [
                    {
                        "name": "page",
                        "in": "query",
                        "description": "Page number for pagination",
                        "required": false,
                        "schema": {
                            "type": "integer",
                            "default": 1,
                            "minimum": 1
                        }
                    },
                    {
                        "name": "limit",
                        "in": "query",
                        "description": "Number of records per page",
                        "required": false,
                        "schema": {
                            "type": "integer",
                            "default": 10,
                            "maximum": 100,
                            "minimum": 1
                        }
                    },
                    {
                        "name": "search",
                        "in": "query",
                        "description": "Search term to filter images by name",
                        "required": false,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Images retrieved successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "images": {
                                            "type": "array",
                                            "items": {
                                                "$ref": "#/components/schemas/Image"
                                            }
                                        },
                                        "pagination": {
                                            "$ref": "#/components/schemas/ImagePagination"
                                        },
                                        "search": {
                                            "properties": {
                                                "query": {
                                                    "type": "string"
                                                },
                                                "has_results": {
                                                    "type": "boolean"
                                                }
                                            },
                                            "type": "object"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "401": {
                        "description": "Unauthorized"
                    },
                    "403": {
                        "description": "Forbidden - Insufficient permissions"
                    }
                }
            },
            "post": {
                "tags": [
                    "Admin - Images"
                ],
                "summary": "Create new image",
                "description": "Create a new image record with name and URL. Validates URL format and ensures uniqueness of name and URL.",
                "operationId": "a8ef6767226f13ad0c902767db254b3f",
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/ImageCreate"
                            }
                        }
                    }
                },
                "responses": {
                    "201": {
                        "description": "Image created successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "image_id": {
                                            "description": "ID of the created image",
                                            "type": "integer"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request - Missing required fields, invalid data types, invalid URL format, or validation errors"
                    },
                    "401": {
                        "description": "Unauthorized"
                    },
                    "403": {
                        "description": "Forbidden - Insufficient permissions"
                    },
                    "409": {
                        "description": "Conflict - Image name or URL already exists"
                    },
                    "500": {
                        "description": "Internal server error - Failed to create image"
                    }
                }
            }
        },
        "/api/admin/images/{id}": {
            "get": {
                "tags": [
                    "Admin - Images"
                ],
                "summary": "Get image by ID",
                "description": "Retrieve a specific image by its ID.",
                "operationId": "38bc016defd8ff9b67733b1736c29a8c",
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "description": "Image ID",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Image retrieved successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "image": {
                                            "$ref": "#/components/schemas/Image"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request - Invalid image ID"
                    },
                    "401": {
                        "description": "Unauthorized"
                    },
                    "403": {
                        "description": "Forbidden - Insufficient permissions"
                    },
                    "404": {
                        "description": "Image not found"
                    }
                }
            },
            "delete": {
                "tags": [
                    "Admin - Images"
                ],
                "summary": "Delete image",
                "description": "Permanently delete an image record.",
                "operationId": "49f6fad2955dc62bf02b99873becc33d",
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "description": "Image ID",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Image deleted successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "message": {
                                            "description": "Success message",
                                            "type": "string"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request - Invalid image ID"
                    },
                    "401": {
                        "description": "Unauthorized"
                    },
                    "403": {
                        "description": "Forbidden - Insufficient permissions"
                    },
                    "404": {
                        "description": "Image not found"
                    },
                    "500": {
                        "description": "Internal server error - Failed to delete image"
                    }
                }
            },
            "patch": {
                "tags": [
                    "Admin - Images"
                ],
                "summary": "Update image",
                "description": "Update an existing image. Only provided fields will be updated. Validates URL format and ensures uniqueness of name and URL.",
                "operationId": "053183fe8b2c363b991e55ad5d6339e6",
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "description": "Image ID",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/ImageUpdate"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Image updated successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "message": {
                                            "description": "Success message",
                                            "type": "string"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request - No data provided, invalid data types, invalid URL format, or validation errors"
                    },
                    "401": {
                        "description": "Unauthorized"
                    },
                    "403": {
                        "description": "Forbidden - Insufficient permissions"
                    },
                    "404": {
                        "description": "Image not found"
                    },
                    "409": {
                        "description": "Conflict - Image name or URL already exists"
                    },
                    "500": {
                        "description": "Internal server error - Failed to update image"
                    }
                }
            }
        },
        "/api/admin/images/upload": {
            "post": {
                "tags": [
                    "Admin - Images"
                ],
                "summary": "Upload image file",
                "description": "Upload an image file and create a corresponding image record. Supports JPG, PNG, GIF, and WebP formats with a maximum size of 10MB.",
                "operationId": "7770aca622b9074e64e141fbc5fec305",
                "requestBody": {
                    "required": true,
                    "content": {
                        "multipart/form-data": {
                            "schema": {
                                "required": [
                                    "name",
                                    "image"
                                ],
                                "properties": {
                                    "name": {
                                        "description": "Image name",
                                        "type": "string",
                                        "maxLength": 191,
                                        "minLength": 1
                                    },
                                    "image": {
                                        "description": "Image file (JPG, PNG, GIF, WebP, max 10MB)",
                                        "type": "string",
                                        "format": "binary"
                                    }
                                },
                                "type": "object"
                            }
                        }
                    }
                },
                "responses": {
                    "201": {
                        "description": "Image uploaded successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "image_id": {
                                            "description": "ID of the created image",
                                            "type": "integer"
                                        },
                                        "url": {
                                            "description": "Public URL of the uploaded image",
                                            "type": "string"
                                        },
                                        "filename": {
                                            "description": "Generated filename",
                                            "type": "string"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request - No file provided, missing name, invalid file, file too large, or invalid file type"
                    },
                    "401": {
                        "description": "Unauthorized"
                    },
                    "403": {
                        "description": "Forbidden - Insufficient permissions"
                    },
                    "409": {
                        "description": "Conflict - Image name already exists"
                    },
                    "500": {
                        "description": "Internal server error - Failed to save file or create image record"
                    }
                }
            }
        },
        "/api/admin/integrity/check": {
            "get": {
                "tags": [
                    "Admin - Integrity"
                ],
                "summary": "Scan panel file integrity (SHA-256)",
                "description": "Hashes core backend PHP tree, public/index.php, and composer lockfiles. Optionally compares against storage/config/panel_integrity_baseline.json.",
                "operationId": "a60e7cc477ac5462bb161eda9b5360a5",
                "responses": {
                    "200": {
                        "description": "Scan completed"
                    },
                    "500": {
                        "description": "Scan failed"
                    }
                }
            }
        },
        "/api/admin/integrity/baseline": {
            "post": {
                "tags": [
                    "Admin - Integrity"
                ],
                "summary": "Save current scan as integrity baseline",
                "description": "Writes storage/config/panel_integrity_baseline.json from the current file hashes.",
                "operationId": "41b0c216bfff2c300b54f7694ce82080",
                "responses": {
                    "200": {
                        "description": "Baseline saved"
                    },
                    "500": {
                        "description": "Failed to save"
                    }
                }
            }
        },
        "/api/admin/analytics/users/overview": {
            "get": {
                "tags": [
                    "Admin - Analytics"
                ],
                "summary": "Get user analytics overview",
                "description": "Retrieve comprehensive overview of user statistics including total, active, banned, verified, and 2FA enabled users.",
                "operationId": "2f15cf5799effef66a0865b7517edba1",
                "responses": {
                    "200": {
                        "description": "User analytics overview retrieved successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/UserAnalyticsOverview"
                                }
                            }
                        }
                    },
                    "401": {
                        "description": "Unauthorized"
                    },
                    "403": {
                        "description": "Forbidden - Insufficient permissions"
                    }
                }
            }
        },
        "/api/admin/analytics/users/by-role": {
            "get": {
                "tags": [
                    "Admin - Analytics"
                ],
                "summary": "Get user distribution by roles",
                "description": "Retrieve user distribution across different roles with counts and percentages.",
                "operationId": "e293f95196998bad09ebd7e0786d7f49",
                "responses": {
                    "200": {
                        "description": "User role distribution retrieved successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "total_users": {
                                            "description": "Total number of users",
                                            "type": "integer"
                                        },
                                        "roles": {
                                            "type": "array",
                                            "items": {
                                                "$ref": "#/components/schemas/RoleDistribution"
                                            }
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "401": {
                        "description": "Unauthorized"
                    },
                    "403": {
                        "description": "Forbidden - Insufficient permissions"
                    }
                }
            }
        },
        "/api/admin/analytics/users/registration-trend": {
            "get": {
                "tags": [
                    "Admin - Analytics"
                ],
                "summary": "Get user registration trend",
                "description": "Retrieve user registration trends over a specified time period.",
                "operationId": "34be02cf49b24d77b8930e335a85fee0",
                "parameters": [
                    {
                        "name": "days",
                        "in": "query",
                        "description": "Number of days to look back (default: 30)",
                        "required": false,
                        "schema": {
                            "type": "integer",
                            "default": 30,
                            "maximum": 365,
                            "minimum": 1
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Registration trend retrieved successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "period_days": {
                                            "description": "Number of days in the period",
                                            "type": "integer"
                                        },
                                        "data": {
                                            "type": "array",
                                            "items": {
                                                "$ref": "#/components/schemas/RegistrationTrend"
                                            }
                                        },
                                        "total_new_users": {
                                            "description": "Total new users in the period",
                                            "type": "integer"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request - Invalid days parameter"
                    },
                    "401": {
                        "description": "Unauthorized"
                    },
                    "403": {
                        "description": "Forbidden - Insufficient permissions"
                    }
                }
            }
        },
        "/api/admin/analytics/users/top-by-servers": {
            "get": {
                "tags": [
                    "Admin - Analytics"
                ],
                "summary": "Get top users by server count",
                "description": "Retrieve the users with the most servers.",
                "operationId": "a85cd8a71b32d721e2f0efda74acea67",
                "parameters": [
                    {
                        "name": "limit",
                        "in": "query",
                        "description": "Number of top users to retrieve (default: 10)",
                        "required": false,
                        "schema": {
                            "type": "integer",
                            "default": 10,
                            "maximum": 100,
                            "minimum": 1
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Top users retrieved successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "limit": {
                                            "description": "Limit applied",
                                            "type": "integer"
                                        },
                                        "users": {
                                            "type": "array",
                                            "items": {
                                                "$ref": "#/components/schemas/TopUser"
                                            }
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request - Invalid limit parameter"
                    },
                    "401": {
                        "description": "Unauthorized"
                    },
                    "403": {
                        "description": "Forbidden - Insufficient permissions"
                    }
                }
            }
        },
        "/api/admin/analytics/users/activity": {
            "get": {
                "tags": [
                    "Admin - Analytics"
                ],
                "summary": "Get user activity summary",
                "description": "Retrieve user activity summary for a specified time period.",
                "operationId": "7e0abf7de53a72042f6a7c03e769e717",
                "parameters": [
                    {
                        "name": "hours",
                        "in": "query",
                        "description": "Number of hours to look back (default: 24)",
                        "required": false,
                        "schema": {
                            "type": "integer",
                            "default": 24,
                            "maximum": 720,
                            "minimum": 1
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "User activity retrieved successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "period_hours": {
                                            "description": "Number of hours in the period",
                                            "type": "integer"
                                        },
                                        "new_users": {
                                            "description": "New users in the period",
                                            "type": "integer"
                                        },
                                        "active_users": {
                                            "description": "Active users in the period",
                                            "type": "integer"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request - Invalid hours parameter"
                    },
                    "401": {
                        "description": "Unauthorized"
                    },
                    "403": {
                        "description": "Forbidden - Insufficient permissions"
                    }
                }
            }
        },
        "/api/admin/analytics/users/dashboard": {
            "get": {
                "tags": [
                    "Admin - Analytics"
                ],
                "summary": "Get comprehensive user analytics dashboard",
                "description": "Retrieve all user analytics data in a single comprehensive dashboard view.",
                "operationId": "c565ab5366689573cf174be6677c4523",
                "responses": {
                    "200": {
                        "description": "Analytics dashboard retrieved successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "overview": {
                                            "$ref": "#/components/schemas/UserAnalyticsOverview"
                                        },
                                        "by_role": {
                                            "description": "User distribution by role",
                                            "type": "object"
                                        },
                                        "registration_trend_7d": {
                                            "description": "7-day registration trend",
                                            "type": "object"
                                        },
                                        "registration_trend_30d": {
                                            "description": "30-day registration trend",
                                            "type": "object"
                                        },
                                        "top_users": {
                                            "description": "Top users by server count",
                                            "type": "object"
                                        },
                                        "activity_24h": {
                                            "description": "24-hour activity summary",
                                            "type": "object"
                                        },
                                        "activity_7d": {
                                            "description": "7-day activity summary",
                                            "type": "object"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "401": {
                        "description": "Unauthorized"
                    },
                    "403": {
                        "description": "Forbidden - Insufficient permissions"
                    }
                }
            }
        },
        "/api/admin/analytics/users/banned": {
            "get": {
                "tags": [
                    "Admin - Analytics"
                ],
                "summary": "Get banned users statistics",
                "description": "Retrieve statistics and information about banned users.",
                "operationId": "f0d9bd1888c0ab0a67dcb0c0bfae2866",
                "parameters": [
                    {
                        "name": "limit",
                        "in": "query",
                        "description": "Number of recent banned users to retrieve (default: 20)",
                        "required": false,
                        "schema": {
                            "type": "integer",
                            "default": 20,
                            "maximum": 100,
                            "minimum": 1
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Banned users statistics retrieved successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "total_banned": {
                                            "description": "Total number of banned users",
                                            "type": "integer"
                                        },
                                        "recent_banned_users": {
                                            "description": "Recently banned users",
                                            "type": "array",
                                            "items": {
                                                "type": "object"
                                            }
                                        },
                                        "ban_trend_30d": {
                                            "description": "30-day ban trend",
                                            "type": "array",
                                            "items": {
                                                "type": "object"
                                            }
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request - Invalid limit parameter"
                    },
                    "401": {
                        "description": "Unauthorized"
                    },
                    "403": {
                        "description": "Forbidden - Insufficient permissions"
                    }
                }
            }
        },
        "/api/admin/analytics/users/security": {
            "get": {
                "tags": [
                    "Admin - Analytics"
                ],
                "summary": "Get user security statistics",
                "description": "Retrieve statistics about user security features (2FA, email verification).",
                "operationId": "faf6ad38d8f06e2090acac0bb0521afa",
                "responses": {
                    "200": {
                        "description": "Security statistics retrieved successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "total_users": {
                                            "description": "Total number of users",
                                            "type": "integer"
                                        },
                                        "two_fa_enabled": {
                                            "description": "Users with 2FA enabled",
                                            "type": "integer"
                                        },
                                        "email_verified": {
                                            "description": "Users with verified email",
                                            "type": "integer"
                                        },
                                        "fully_secured": {
                                            "description": "Users with both 2FA and email verified",
                                            "type": "integer"
                                        },
                                        "not_secured": {
                                            "description": "Users with neither 2FA nor email verified",
                                            "type": "integer"
                                        },
                                        "percentage_two_fa": {
                                            "description": "Percentage with 2FA",
                                            "type": "number",
                                            "format": "float"
                                        },
                                        "percentage_email_verified": {
                                            "description": "Percentage with verified email",
                                            "type": "number",
                                            "format": "float"
                                        },
                                        "percentage_fully_secured": {
                                            "description": "Percentage fully secured",
                                            "type": "number",
                                            "format": "float"
                                        },
                                        "percentage_not_secured": {
                                            "description": "Percentage not secured",
                                            "type": "number",
                                            "format": "float"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "401": {
                        "description": "Unauthorized"
                    },
                    "403": {
                        "description": "Forbidden - Insufficient permissions"
                    }
                }
            }
        },
        "/api/admin/analytics/users/growth": {
            "get": {
                "tags": [
                    "Admin - Analytics"
                ],
                "summary": "Get user growth rate statistics",
                "description": "Retrieve user growth rate statistics comparing recent periods.",
                "operationId": "bb519fe0b741d3d1549de03f6d251b75",
                "responses": {
                    "200": {
                        "description": "Growth rate statistics retrieved successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "last_7_days": {
                                            "description": "New users in last 7 days",
                                            "type": "integer"
                                        },
                                        "previous_7_days": {
                                            "description": "New users in previous 7 days",
                                            "type": "integer"
                                        },
                                        "growth_rate_7d": {
                                            "description": "7-day growth rate percentage",
                                            "type": "number",
                                            "format": "float"
                                        },
                                        "last_30_days": {
                                            "description": "New users in last 30 days",
                                            "type": "integer"
                                        },
                                        "previous_30_days": {
                                            "description": "New users in previous 30 days",
                                            "type": "integer"
                                        },
                                        "growth_rate_30d": {
                                            "description": "30-day growth rate percentage",
                                            "type": "number",
                                            "format": "float"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "401": {
                        "description": "Unauthorized"
                    },
                    "403": {
                        "description": "Forbidden - Insufficient permissions"
                    }
                }
            }
        },
        "/api/admin/analytics/activity/trend": {
            "get": {
                "tags": [
                    "Admin - Analytics"
                ],
                "summary": "Get activity trend over time",
                "description": "Retrieve activity trends for a specified time period.",
                "operationId": "3e9a59209a073909e94e7e75a2bbf255",
                "parameters": [
                    {
                        "name": "days",
                        "in": "query",
                        "description": "Number of days to look back (default: 7)",
                        "required": false,
                        "schema": {
                            "type": "integer",
                            "default": 7,
                            "maximum": 90,
                            "minimum": 1
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Activity trend retrieved successfully"
                    },
                    "401": {
                        "description": "Unauthorized"
                    },
                    "403": {
                        "description": "Forbidden - Insufficient permissions"
                    }
                }
            }
        },
        "/api/admin/analytics/activity/top": {
            "get": {
                "tags": [
                    "Admin - Analytics"
                ],
                "summary": "Get top activities by type",
                "description": "Retrieve the most common activity types.",
                "operationId": "a159f81bede51f2f7aa55b13b4dcc309",
                "parameters": [
                    {
                        "name": "limit",
                        "in": "query",
                        "description": "Number of top activities to retrieve (default: 10)",
                        "required": false,
                        "schema": {
                            "type": "integer",
                            "default": 10,
                            "maximum": 50,
                            "minimum": 1
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Top activities retrieved successfully"
                    },
                    "401": {
                        "description": "Unauthorized"
                    },
                    "403": {
                        "description": "Forbidden - Insufficient permissions"
                    }
                }
            }
        },
        "/api/admin/analytics/activity/breakdown": {
            "get": {
                "tags": [
                    "Admin - Analytics"
                ],
                "summary": "Get activity breakdown by type",
                "description": "Retrieve activity distribution for pie chart visualization.",
                "operationId": "173ed3926e21d8c3f5cf4e159aba6aeb",
                "responses": {
                    "200": {
                        "description": "Activity breakdown retrieved successfully"
                    },
                    "401": {
                        "description": "Unauthorized"
                    },
                    "403": {
                        "description": "Forbidden - Insufficient permissions"
                    }
                }
            }
        },
        "/api/admin/analytics/activity/recent": {
            "get": {
                "tags": [
                    "Admin - Analytics"
                ],
                "summary": "Get recent activities",
                "description": "Retrieve recent user activities with user information.",
                "operationId": "6edafeed63cc47d2fe6922f7969fe248",
                "parameters": [
                    {
                        "name": "limit",
                        "in": "query",
                        "description": "Number of recent activities to retrieve (default: 20)",
                        "required": false,
                        "schema": {
                            "type": "integer",
                            "default": 20,
                            "maximum": 100,
                            "minimum": 1
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Recent activities retrieved successfully"
                    },
                    "401": {
                        "description": "Unauthorized"
                    },
                    "403": {
                        "description": "Forbidden - Insufficient permissions"
                    }
                }
            }
        },
        "/api/admin/analytics/activity/stats": {
            "get": {
                "tags": [
                    "Admin - Analytics"
                ],
                "summary": "Get activity statistics summary",
                "description": "Retrieve overall activity statistics.",
                "operationId": "865803850b945c1511ee1efbf587082c",
                "responses": {
                    "200": {
                        "description": "Activity statistics retrieved successfully"
                    },
                    "401": {
                        "description": "Unauthorized"
                    },
                    "403": {
                        "description": "Forbidden - Insufficient permissions"
                    }
                }
            }
        },
        "/api/admin/analytics/activity/hourly": {
            "get": {
                "tags": [
                    "Admin - Analytics"
                ],
                "summary": "Get hourly activity distribution",
                "description": "Retrieve activity distribution by hour for heatmap visualization.",
                "operationId": "249a5b9ab8f9caabd998493194910dc8",
                "parameters": [
                    {
                        "name": "days",
                        "in": "query",
                        "description": "Number of days to look back (default: 7)",
                        "required": false,
                        "schema": {
                            "type": "integer",
                            "default": 7,
                            "maximum": 30,
                            "minimum": 1
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Hourly activity retrieved successfully"
                    },
                    "401": {
                        "description": "Unauthorized"
                    },
                    "403": {
                        "description": "Forbidden - Insufficient permissions"
                    }
                }
            }
        },
        "/api/admin/analytics/realms/overview": {
            "get": {
                "tags": [
                    "Admin - Analytics"
                ],
                "summary": "Get realms overview",
                "description": "Retrieve statistics about realms.",
                "operationId": "e555c6e5703acfb147428f89a47bdee6",
                "responses": {
                    "200": {
                        "description": "Realms overview retrieved successfully"
                    },
                    "401": {
                        "description": "Unauthorized"
                    },
                    "403": {
                        "description": "Forbidden - Insufficient permissions"
                    }
                }
            }
        },
        "/api/admin/analytics/spells/by-realm": {
            "get": {
                "tags": [
                    "Admin - Analytics"
                ],
                "summary": "Get spells by realm",
                "description": "Retrieve spell distribution across realms.",
                "operationId": "471c1df72269ce82108348dd282b4d81",
                "responses": {
                    "200": {
                        "description": "Spells by realm retrieved successfully"
                    },
                    "401": {
                        "description": "Unauthorized"
                    },
                    "403": {
                        "description": "Forbidden - Insufficient permissions"
                    }
                }
            }
        },
        "/api/admin/analytics/spells/overview": {
            "get": {
                "tags": [
                    "Admin - Analytics"
                ],
                "summary": "Get spells overview",
                "description": "Retrieve statistics about spells.",
                "operationId": "979dcdf41faaa860e5a0257044641c51",
                "responses": {
                    "200": {
                        "description": "Spells overview retrieved successfully"
                    },
                    "401": {
                        "description": "Unauthorized"
                    },
                    "403": {
                        "description": "Forbidden - Insufficient permissions"
                    }
                }
            }
        },
        "/api/admin/analytics/spells/variables": {
            "get": {
                "tags": [
                    "Admin - Analytics"
                ],
                "summary": "Get spell variable statistics",
                "description": "Retrieve statistics about spell variables.",
                "operationId": "343a9b26e9226e8f5f2ec81725670d8c",
                "responses": {
                    "200": {
                        "description": "Spell variables retrieved successfully"
                    },
                    "401": {
                        "description": "Unauthorized"
                    },
                    "403": {
                        "description": "Forbidden - Insufficient permissions"
                    }
                }
            }
        },
        "/api/admin/analytics/images/overview": {
            "get": {
                "tags": [
                    "Admin - Analytics"
                ],
                "summary": "Get images overview",
                "description": "Retrieve statistics about images.",
                "operationId": "fc3c3a35d34614db1ea607a7585b0b39",
                "responses": {
                    "200": {
                        "description": "Images overview retrieved successfully"
                    },
                    "401": {
                        "description": "Unauthorized"
                    },
                    "403": {
                        "description": "Forbidden - Insufficient permissions"
                    }
                }
            }
        },
        "/api/admin/analytics/mail-templates/overview": {
            "get": {
                "tags": [
                    "Admin - Analytics"
                ],
                "summary": "Get mail templates overview",
                "description": "Retrieve statistics about mail templates.",
                "operationId": "1e56cbd922c3f11cbdb4e5003b7379ff",
                "responses": {
                    "200": {
                        "description": "Mail templates overview retrieved successfully"
                    },
                    "401": {
                        "description": "Unauthorized"
                    },
                    "403": {
                        "description": "Forbidden - Insufficient permissions"
                    }
                }
            }
        },
        "/api/admin/analytics/content/dashboard": {
            "get": {
                "tags": [
                    "Admin - Analytics"
                ],
                "summary": "Get comprehensive content analytics dashboard",
                "description": "Retrieve all content analytics data.",
                "operationId": "dad44be21728725d3d56c8fab4e54765",
                "responses": {
                    "200": {
                        "description": "Content dashboard retrieved successfully"
                    },
                    "401": {
                        "description": "Unauthorized"
                    },
                    "403": {
                        "description": "Forbidden - Insufficient permissions"
                    }
                }
            }
        },
        "/api/admin/analytics/tickets/dashboard": {
            "get": {
                "tags": [
                    "Admin - Analytics"
                ],
                "summary": "Get tickets analytics dashboard",
                "description": "Retrieve analytics for ticketing entities.",
                "operationId": "dfeae4c7b2df158861903ee23c4a6298",
                "responses": {
                    "200": {
                        "description": "Tickets dashboard retrieved successfully"
                    },
                    "401": {
                        "description": "Unauthorized"
                    },
                    "403": {
                        "description": "Forbidden - Insufficient permissions"
                    }
                }
            }
        },
        "/api/admin/analytics/plugins/dashboard": {
            "get": {
                "tags": [
                    "Admin - Analytics"
                ],
                "summary": "Get plugins analytics dashboard",
                "description": "Retrieve analytics for plugins and related integrations.",
                "operationId": "4d4d857fa0ea7feab1889a31114e3afe",
                "responses": {
                    "200": {
                        "description": "Plugins dashboard retrieved successfully"
                    },
                    "401": {
                        "description": "Unauthorized"
                    },
                    "403": {
                        "description": "Forbidden - Insufficient permissions"
                    }
                }
            }
        },
        "/api/admin/analytics/knowledgebase/dashboard": {
            "get": {
                "tags": [
                    "Admin - Analytics"
                ],
                "summary": "Get knowledgebase analytics dashboard",
                "description": "Retrieve analytics for knowledgebase entities.",
                "operationId": "cb69afdaa7c4da8cd4490cf8a91385b0",
                "responses": {
                    "200": {
                        "description": "Knowledgebase dashboard retrieved successfully"
                    },
                    "401": {
                        "description": "Unauthorized"
                    },
                    "403": {
                        "description": "Forbidden - Insufficient permissions"
                    }
                }
            }
        },
        "/api/admin/analytics/locations/overview": {
            "get": {
                "tags": [
                    "Admin - Analytics"
                ],
                "summary": "Get locations overview",
                "description": "Retrieve statistics about locations.",
                "operationId": "a077dc53893d9b4a5cca6de69b88fd02",
                "responses": {
                    "200": {
                        "description": "Locations overview retrieved successfully"
                    },
                    "401": {
                        "description": "Unauthorized"
                    },
                    "403": {
                        "description": "Forbidden - Insufficient permissions"
                    }
                }
            }
        },
        "/api/admin/analytics/nodes/by-location": {
            "get": {
                "tags": [
                    "Admin - Analytics"
                ],
                "summary": "Get nodes by location",
                "description": "Retrieve node distribution across locations.",
                "operationId": "7578016a334a7af29b34ad5eea4b86e2",
                "responses": {
                    "200": {
                        "description": "Nodes by location retrieved successfully"
                    },
                    "401": {
                        "description": "Unauthorized"
                    },
                    "403": {
                        "description": "Forbidden - Insufficient permissions"
                    }
                }
            }
        },
        "/api/admin/analytics/nodes/overview": {
            "get": {
                "tags": [
                    "Admin - Analytics"
                ],
                "summary": "Get nodes overview",
                "description": "Retrieve statistics about nodes.",
                "operationId": "12dc8aeb4138b870b15e6411f31bb65c",
                "responses": {
                    "200": {
                        "description": "Nodes overview retrieved successfully"
                    },
                    "401": {
                        "description": "Unauthorized"
                    },
                    "403": {
                        "description": "Forbidden - Insufficient permissions"
                    }
                }
            }
        },
        "/api/admin/analytics/servers/by-node": {
            "get": {
                "tags": [
                    "Admin - Analytics"
                ],
                "summary": "Get servers by node",
                "description": "Retrieve server distribution across nodes.",
                "operationId": "e0230fcb815464bbd7d6ca0a9cfdba15",
                "responses": {
                    "200": {
                        "description": "Servers by node retrieved successfully"
                    },
                    "401": {
                        "description": "Unauthorized"
                    },
                    "403": {
                        "description": "Forbidden - Insufficient permissions"
                    }
                }
            }
        },
        "/api/admin/analytics/nodes/resources": {
            "get": {
                "tags": [
                    "Admin - Analytics"
                ],
                "summary": "Get node resource allocation",
                "description": "Retrieve resource allocation statistics for all nodes.",
                "operationId": "93be991f8cb5772de2a822e3bef88889",
                "responses": {
                    "200": {
                        "description": "Node resources retrieved successfully"
                    },
                    "401": {
                        "description": "Unauthorized"
                    },
                    "403": {
                        "description": "Forbidden - Insufficient permissions"
                    }
                }
            }
        },
        "/api/admin/analytics/allocations/overview": {
            "get": {
                "tags": [
                    "Admin - Analytics"
                ],
                "summary": "Get allocations overview",
                "description": "Retrieve statistics about allocations.",
                "operationId": "d41215251fb113f9ab617eda00057e9e",
                "responses": {
                    "200": {
                        "description": "Allocations overview retrieved successfully"
                    },
                    "401": {
                        "description": "Unauthorized"
                    },
                    "403": {
                        "description": "Forbidden - Insufficient permissions"
                    }
                }
            }
        },
        "/api/admin/analytics/allocations/by-node": {
            "get": {
                "tags": [
                    "Admin - Analytics"
                ],
                "summary": "Get allocations by node",
                "description": "Retrieve allocation distribution across nodes.",
                "operationId": "ae29e25c9c205bb1d955e82a89842937",
                "responses": {
                    "200": {
                        "description": "Allocations by node retrieved successfully"
                    },
                    "401": {
                        "description": "Unauthorized"
                    },
                    "403": {
                        "description": "Forbidden - Insufficient permissions"
                    }
                }
            }
        },
        "/api/admin/analytics/databases/overview": {
            "get": {
                "tags": [
                    "Admin - Analytics"
                ],
                "summary": "Get databases overview",
                "description": "Retrieve statistics about database hosts.",
                "operationId": "070ee899d7ae8d166ee1be54d1ba3c03",
                "responses": {
                    "200": {
                        "description": "Databases overview retrieved successfully"
                    },
                    "401": {
                        "description": "Unauthorized"
                    },
                    "403": {
                        "description": "Forbidden - Insufficient permissions"
                    }
                }
            }
        },
        "/api/admin/analytics/ports/usage": {
            "get": {
                "tags": [
                    "Admin - Analytics"
                ],
                "summary": "Get port usage statistics",
                "description": "Retrieve statistics about most used ports.",
                "operationId": "3fca6971f7739cbe73fc8e7ac386ce58",
                "parameters": [
                    {
                        "name": "limit",
                        "in": "query",
                        "description": "Number of top ports to retrieve (default: 10)",
                        "required": false,
                        "schema": {
                            "type": "integer",
                            "default": 10,
                            "maximum": 50,
                            "minimum": 1
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Port usage retrieved successfully"
                    },
                    "401": {
                        "description": "Unauthorized"
                    },
                    "403": {
                        "description": "Forbidden - Insufficient permissions"
                    }
                }
            }
        },
        "/api/admin/analytics/ips/usage": {
            "get": {
                "tags": [
                    "Admin - Analytics"
                ],
                "summary": "Get IP usage statistics",
                "description": "Retrieve statistics about most used IP addresses.",
                "operationId": "b3f36727b70138c9c3691e23382902b8",
                "parameters": [
                    {
                        "name": "limit",
                        "in": "query",
                        "description": "Number of top IPs to retrieve (default: 10)",
                        "required": false,
                        "schema": {
                            "type": "integer",
                            "default": 10,
                            "maximum": 50,
                            "minimum": 1
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "IP usage retrieved successfully"
                    },
                    "401": {
                        "description": "Unauthorized"
                    },
                    "403": {
                        "description": "Forbidden - Insufficient permissions"
                    }
                }
            }
        },
        "/api/admin/analytics/infrastructure/dashboard": {
            "get": {
                "tags": [
                    "Admin - Analytics"
                ],
                "summary": "Get comprehensive infrastructure dashboard",
                "description": "Retrieve all infrastructure analytics data.",
                "operationId": "1ce28d7196d6c3fe850270c9a3f4c4a3",
                "responses": {
                    "200": {
                        "description": "Infrastructure dashboard retrieved successfully"
                    },
                    "401": {
                        "description": "Unauthorized"
                    },
                    "403": {
                        "description": "Forbidden - Insufficient permissions"
                    }
                }
            }
        },
        "/api/admin/analytics/servers/overview": {
            "get": {
                "tags": [
                    "Admin - Analytics"
                ],
                "summary": "Get servers overview",
                "description": "Retrieve statistics about servers.",
                "operationId": "afb8c847f26e307b687219c825c37e36",
                "responses": {
                    "200": {
                        "description": "Servers overview retrieved successfully"
                    },
                    "401": {
                        "description": "Unauthorized"
                    },
                    "403": {
                        "description": "Forbidden - Insufficient permissions"
                    }
                }
            }
        },
        "/api/admin/analytics/servers/by-realm": {
            "get": {
                "tags": [
                    "Admin - Analytics"
                ],
                "summary": "Get servers by realm",
                "description": "Retrieve server distribution across realms.",
                "operationId": "f81df85f09d0b3cca6ef780d75cf53ab",
                "responses": {
                    "200": {
                        "description": "Servers by realm retrieved successfully"
                    },
                    "401": {
                        "description": "Unauthorized"
                    },
                    "403": {
                        "description": "Forbidden - Insufficient permissions"
                    }
                }
            }
        },
        "/api/admin/analytics/servers/by-spell": {
            "get": {
                "tags": [
                    "Admin - Analytics"
                ],
                "summary": "Get servers by spell",
                "description": "Retrieve server distribution across spells.",
                "operationId": "1ccb8852686ad9a28428f2e687434b4c",
                "responses": {
                    "200": {
                        "description": "Servers by spell retrieved successfully"
                    },
                    "401": {
                        "description": "Unauthorized"
                    },
                    "403": {
                        "description": "Forbidden - Insufficient permissions"
                    }
                }
            }
        },
        "/api/admin/analytics/servers/database-usage": {
            "get": {
                "tags": [
                    "Admin - Analytics"
                ],
                "summary": "Get database usage per server",
                "description": "Retrieve statistics about database usage patterns across servers.",
                "operationId": "f0d751b077c035a27a9d2939e3a2d5a9",
                "responses": {
                    "200": {
                        "description": "Database usage retrieved successfully"
                    },
                    "401": {
                        "description": "Unauthorized"
                    },
                    "403": {
                        "description": "Forbidden - Insufficient permissions"
                    }
                }
            }
        },
        "/api/admin/analytics/servers/allocation-usage": {
            "get": {
                "tags": [
                    "Admin - Analytics"
                ],
                "summary": "Get allocation usage per server",
                "description": "Retrieve statistics about allocation usage patterns across servers.",
                "operationId": "954b99a66204a42ab1458dbde6ad32bc",
                "responses": {
                    "200": {
                        "description": "Allocation usage retrieved successfully"
                    },
                    "401": {
                        "description": "Unauthorized"
                    },
                    "403": {
                        "description": "Forbidden - Insufficient permissions"
                    }
                }
            }
        },
        "/api/admin/analytics/servers/resources": {
            "get": {
                "tags": [
                    "Admin - Analytics"
                ],
                "summary": "Get server resource usage",
                "description": "Retrieve statistics about resource allocation across servers.",
                "operationId": "e6ef5eaca6a094c331acc7cc3f7080ea",
                "responses": {
                    "200": {
                        "description": "Resource usage retrieved successfully"
                    },
                    "401": {
                        "description": "Unauthorized"
                    },
                    "403": {
                        "description": "Forbidden - Insufficient permissions"
                    }
                }
            }
        },
        "/api/admin/analytics/servers/status": {
            "get": {
                "tags": [
                    "Admin - Analytics"
                ],
                "summary": "Get server status distribution",
                "description": "Retrieve distribution of servers by status.",
                "operationId": "c33c794caaa8fe3677b4cd4dc74efd80",
                "responses": {
                    "200": {
                        "description": "Status distribution retrieved successfully"
                    },
                    "401": {
                        "description": "Unauthorized"
                    },
                    "403": {
                        "description": "Forbidden - Insufficient permissions"
                    }
                }
            }
        },
        "/api/admin/analytics/servers/images": {
            "get": {
                "tags": [
                    "Admin - Analytics"
                ],
                "summary": "Get Docker image usage",
                "description": "Retrieve statistics about most used Docker images.",
                "operationId": "21b6f814bc23b67255210cf343a88f5e",
                "parameters": [
                    {
                        "name": "limit",
                        "in": "query",
                        "description": "Number of top images to retrieve (default: 10)",
                        "required": false,
                        "schema": {
                            "type": "integer",
                            "default": 10,
                            "maximum": 50,
                            "minimum": 1
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Image usage retrieved successfully"
                    },
                    "401": {
                        "description": "Unauthorized"
                    },
                    "403": {
                        "description": "Forbidden - Insufficient permissions"
                    }
                }
            }
        },
        "/api/admin/analytics/servers/limits": {
            "get": {
                "tags": [
                    "Admin - Analytics"
                ],
                "summary": "Get server limits distribution",
                "description": "Retrieve statistics about database and backup limits.",
                "operationId": "499eccf90706d6f533cb651b58270e30",
                "responses": {
                    "200": {
                        "description": "Limits distribution retrieved successfully"
                    },
                    "401": {
                        "description": "Unauthorized"
                    },
                    "403": {
                        "description": "Forbidden - Insufficient permissions"
                    }
                }
            }
        },
        "/api/admin/analytics/servers/dashboard": {
            "get": {
                "tags": [
                    "Admin - Analytics"
                ],
                "summary": "Get comprehensive server analytics dashboard",
                "description": "Retrieve all server analytics data.",
                "operationId": "16b9c83f3869863a221b3e565e36a5e8",
                "responses": {
                    "200": {
                        "description": "Server dashboard retrieved successfully"
                    },
                    "401": {
                        "description": "Unauthorized"
                    },
                    "403": {
                        "description": "Forbidden - Insufficient permissions"
                    }
                }
            }
        },
        "/api/admin/analytics/servers/backups": {
            "get": {
                "tags": [
                    "Admin - Analytics"
                ],
                "summary": "Get backup usage statistics",
                "description": "Retrieve statistics about server backups.",
                "operationId": "d59f538a189945e810948251d89c0d64",
                "responses": {
                    "200": {
                        "description": "Backup usage retrieved successfully"
                    },
                    "401": {
                        "description": "Unauthorized"
                    },
                    "403": {
                        "description": "Forbidden - Insufficient permissions"
                    }
                }
            }
        },
        "/api/admin/analytics/servers/schedules": {
            "get": {
                "tags": [
                    "Admin - Analytics"
                ],
                "summary": "Get schedule usage statistics",
                "description": "Retrieve statistics about server schedules and tasks.",
                "operationId": "c854b8b7f5f1f69b1c711b7509cbc6ba",
                "responses": {
                    "200": {
                        "description": "Schedule usage retrieved successfully"
                    },
                    "401": {
                        "description": "Unauthorized"
                    },
                    "403": {
                        "description": "Forbidden - Insufficient permissions"
                    }
                }
            }
        },
        "/api/admin/analytics/servers/subusers": {
            "get": {
                "tags": [
                    "Admin - Analytics"
                ],
                "summary": "Get subuser statistics",
                "description": "Retrieve statistics about server subusers.",
                "operationId": "ea434e428f6b5387cded79847ab3416a",
                "responses": {
                    "200": {
                        "description": "Subuser statistics retrieved successfully"
                    },
                    "401": {
                        "description": "Unauthorized"
                    },
                    "403": {
                        "description": "Forbidden - Insufficient permissions"
                    }
                }
            }
        },
        "/api/admin/analytics/servers/server-activities": {
            "get": {
                "tags": [
                    "Admin - Analytics"
                ],
                "summary": "Get server activity statistics",
                "description": "Retrieve statistics about server-specific activities.",
                "operationId": "1053ad0886c41f6e93b42a9d3064066a",
                "responses": {
                    "200": {
                        "description": "Server activity statistics retrieved successfully"
                    },
                    "401": {
                        "description": "Unauthorized"
                    },
                    "403": {
                        "description": "Forbidden - Insufficient permissions"
                    }
                }
            }
        },
        "/api/admin/analytics/servers/variables": {
            "get": {
                "tags": [
                    "Admin - Analytics"
                ],
                "summary": "Get variable usage statistics",
                "description": "Retrieve statistics about server variables.",
                "operationId": "8424a7c48335119fa38c76b2f5d7e6e2",
                "responses": {
                    "200": {
                        "description": "Variable statistics retrieved successfully"
                    },
                    "401": {
                        "description": "Unauthorized"
                    },
                    "403": {
                        "description": "Forbidden - Insufficient permissions"
                    }
                }
            }
        },
        "/api/admin/analytics/servers/creation-trend": {
            "get": {
                "tags": [
                    "Admin - Analytics"
                ],
                "summary": "Get server creation trend",
                "description": "Retrieve server creation trends over time.",
                "operationId": "07b7b25d98b3c398f7c37d57890722df",
                "parameters": [
                    {
                        "name": "days",
                        "in": "query",
                        "description": "Number of days to look back (default: 30)",
                        "required": false,
                        "schema": {
                            "type": "integer",
                            "default": 30,
                            "maximum": 365,
                            "minimum": 1
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Creation trend retrieved successfully"
                    },
                    "401": {
                        "description": "Unauthorized"
                    },
                    "403": {
                        "description": "Forbidden - Insufficient permissions"
                    }
                }
            }
        },
        "/api/admin/analytics/servers/resource-trends": {
            "get": {
                "tags": [
                    "Admin - Analytics"
                ],
                "summary": "Get resource allocation trends",
                "description": "Retrieve resource allocation trends over time.",
                "operationId": "276038ee79acec0784cbded2a6ff2042",
                "parameters": [
                    {
                        "name": "days",
                        "in": "query",
                        "description": "Number of days to look back (default: 30)",
                        "required": false,
                        "schema": {
                            "type": "integer",
                            "default": 30,
                            "maximum": 90,
                            "minimum": 1
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Resource trends retrieved successfully"
                    },
                    "401": {
                        "description": "Unauthorized"
                    },
                    "403": {
                        "description": "Forbidden - Insufficient permissions"
                    }
                }
            }
        },
        "/api/admin/analytics/servers/age-distribution": {
            "get": {
                "tags": [
                    "Admin - Analytics"
                ],
                "summary": "Get server age distribution",
                "description": "Retrieve server age distribution.",
                "operationId": "3b22ab89eda2d184f532b888b85c8eba",
                "responses": {
                    "200": {
                        "description": "Age distribution retrieved successfully"
                    },
                    "401": {
                        "description": "Unauthorized"
                    },
                    "403": {
                        "description": "Forbidden - Insufficient permissions"
                    }
                }
            }
        },
        "/api/admin/analytics/servers/resource-distribution": {
            "get": {
                "tags": [
                    "Admin - Analytics"
                ],
                "summary": "Get resource distribution",
                "description": "Retrieve how resources are distributed across servers.",
                "operationId": "97579359e818dd5dde1bebbc2c7cede2",
                "responses": {
                    "200": {
                        "description": "Resource distribution retrieved successfully"
                    },
                    "401": {
                        "description": "Unauthorized"
                    },
                    "403": {
                        "description": "Forbidden - Insufficient permissions"
                    }
                }
            }
        },
        "/api/admin/analytics/servers/installation": {
            "get": {
                "tags": [
                    "Admin - Analytics"
                ],
                "summary": "Get installation statistics",
                "description": "Retrieve server installation statistics.",
                "operationId": "a6c033234a78d61ddee46498786d89bd",
                "responses": {
                    "200": {
                        "description": "Installation statistics retrieved successfully"
                    },
                    "401": {
                        "description": "Unauthorized"
                    },
                    "403": {
                        "description": "Forbidden - Insufficient permissions"
                    }
                }
            }
        },
        "/api/admin/analytics/servers/configuration": {
            "get": {
                "tags": [
                    "Admin - Analytics"
                ],
                "summary": "Get configuration patterns",
                "description": "Retrieve server configuration patterns.",
                "operationId": "1bdc6e190b4232b1ef35a67930a265cb",
                "responses": {
                    "200": {
                        "description": "Configuration patterns retrieved successfully"
                    },
                    "401": {
                        "description": "Unauthorized"
                    },
                    "403": {
                        "description": "Forbidden - Insufficient permissions"
                    }
                }
            }
        },
        "/api/admin/analytics/mail-queue/stats": {
            "get": {
                "tags": [
                    "Admin - Analytics"
                ],
                "summary": "Get mail queue statistics",
                "description": "Retrieve statistics about mail queue.",
                "operationId": "ddb9ef7a26b38babb4da69f777406d2d",
                "responses": {
                    "200": {
                        "description": "Mail queue stats retrieved successfully"
                    },
                    "401": {
                        "description": "Unauthorized"
                    },
                    "403": {
                        "description": "Forbidden - Insufficient permissions"
                    }
                }
            }
        },
        "/api/admin/analytics/system/feature-adoption": {
            "get": {
                "tags": [
                    "Admin - Analytics"
                ],
                "summary": "Get feature adoption statistics",
                "description": "Retrieve adoption metrics for chatbot, API clients, OAuth2, and OIDC features.",
                "operationId": "85cbc35b81171edb2768ac3b8a87e15b",
                "responses": {
                    "200": {
                        "description": "Feature adoption stats retrieved successfully"
                    },
                    "401": {
                        "description": "Unauthorized"
                    },
                    "403": {
                        "description": "Forbidden - Insufficient permissions"
                    }
                }
            }
        },
        "/api/admin/analytics/system/dashboard": {
            "get": {
                "tags": [
                    "Admin - Analytics"
                ],
                "summary": "Get comprehensive system analytics dashboard",
                "description": "Retrieve all system analytics data.",
                "operationId": "6241a315c7fa5a8f84d4d4338d8ebb7e",
                "responses": {
                    "200": {
                        "description": "System dashboard retrieved successfully"
                    },
                    "401": {
                        "description": "Unauthorized"
                    },
                    "403": {
                        "description": "Forbidden - Insufficient permissions"
                    }
                }
            }
        },
        "/api/admin/analytics/vds/dashboard": {
            "get": {
                "tags": [
                    "Admin - Analytics"
                ],
                "summary": "Get VDS and platform analytics dashboard",
                "description": "Retrieve analytics for VDS, knowledgebase, ticketing, and newer platform entities.",
                "operationId": "51eb734a5254770286804c6d6810f153",
                "responses": {
                    "200": {
                        "description": "VDS dashboard retrieved successfully"
                    },
                    "401": {
                        "description": "Unauthorized"
                    },
                    "403": {
                        "description": "Forbidden - Insufficient permissions"
                    }
                }
            }
        },
        "/api/admin/knowledgebase/categories": {
            "get": {
                "tags": [
                    "Admin - Knowledgebase"
                ],
                "summary": "Get all knowledgebase categories",
                "description": "Retrieve a paginated list of all knowledgebase categories with optional search functionality.",
                "operationId": "69aa4ba895388308088debf86db928f1",
                "parameters": [
                    {
                        "name": "page",
                        "in": "query",
                        "description": "Page number for pagination",
                        "required": false,
                        "schema": {
                            "type": "integer",
                            "default": 1,
                            "minimum": 1
                        }
                    },
                    {
                        "name": "limit",
                        "in": "query",
                        "description": "Number of records per page",
                        "required": false,
                        "schema": {
                            "type": "integer",
                            "default": 10,
                            "maximum": 100,
                            "minimum": 1
                        }
                    },
                    {
                        "name": "search",
                        "in": "query",
                        "description": "Search term to filter categories",
                        "required": false,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Categories retrieved successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "categories": {
                                            "type": "array",
                                            "items": {
                                                "$ref": "#/components/schemas/KnowledgebaseCategory"
                                            }
                                        },
                                        "pagination": {
                                            "$ref": "#/components/schemas/KnowledgebasePagination"
                                        },
                                        "search": {
                                            "properties": {
                                                "query": {
                                                    "type": "string"
                                                },
                                                "has_results": {
                                                    "type": "boolean"
                                                }
                                            },
                                            "type": "object"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "401": {
                        "description": "Unauthorized"
                    },
                    "403": {
                        "description": "Forbidden - Insufficient permissions"
                    }
                }
            },
            "put": {
                "tags": [
                    "Admin - Knowledgebase"
                ],
                "summary": "Create new knowledgebase category",
                "description": "Create a new knowledgebase category with name, slug, and icon.",
                "operationId": "4f9f8994f21fee2e414d95db29c6bb2d",
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/KnowledgebaseCategoryCreate"
                            }
                        }
                    }
                },
                "responses": {
                    "201": {
                        "description": "Category created successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "category": {
                                            "$ref": "#/components/schemas/KnowledgebaseCategory"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request - Validation errors"
                    },
                    "401": {
                        "description": "Unauthorized"
                    },
                    "403": {
                        "description": "Forbidden - Insufficient permissions"
                    },
                    "500": {
                        "description": "Internal server error"
                    }
                }
            }
        },
        "/api/admin/knowledgebase/categories/{id}": {
            "get": {
                "tags": [
                    "Admin - Knowledgebase"
                ],
                "summary": "Get knowledgebase category by ID",
                "description": "Retrieve a specific knowledgebase category by its ID.",
                "operationId": "b97e0f4a1196cb168119058bc6ab7ce7",
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "description": "Category ID",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Category retrieved successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "category": {
                                            "$ref": "#/components/schemas/KnowledgebaseCategory"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request - Invalid ID"
                    },
                    "401": {
                        "description": "Unauthorized"
                    },
                    "403": {
                        "description": "Forbidden - Insufficient permissions"
                    },
                    "404": {
                        "description": "Category not found"
                    }
                }
            },
            "delete": {
                "tags": [
                    "Admin - Knowledgebase"
                ],
                "summary": "Delete knowledgebase category",
                "description": "Permanently delete a knowledgebase category. This will also delete all articles in this category.",
                "operationId": "8106ba92eaf7f99e60ea7010a8f3e710",
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "description": "Category ID",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Category deleted successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "message": {
                                            "description": "Success message",
                                            "type": "string"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request - Invalid category ID"
                    },
                    "401": {
                        "description": "Unauthorized"
                    },
                    "403": {
                        "description": "Forbidden - Insufficient permissions"
                    },
                    "404": {
                        "description": "Category not found"
                    },
                    "500": {
                        "description": "Internal server error"
                    }
                }
            },
            "patch": {
                "tags": [
                    "Admin - Knowledgebase"
                ],
                "summary": "Update knowledgebase category",
                "description": "Update an existing knowledgebase category. Only provided fields will be updated.",
                "operationId": "26d48f764b6daab73ae5f732435896d8",
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "description": "Category ID",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/KnowledgebaseCategoryUpdate"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Category updated successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "category": {
                                            "$ref": "#/components/schemas/KnowledgebaseCategory"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request - Validation errors"
                    },
                    "401": {
                        "description": "Unauthorized"
                    },
                    "403": {
                        "description": "Forbidden - Insufficient permissions"
                    },
                    "404": {
                        "description": "Category not found"
                    },
                    "500": {
                        "description": "Internal server error"
                    }
                }
            }
        },
        "/api/admin/knowledgebase/articles": {
            "get": {
                "tags": [
                    "Admin - Knowledgebase"
                ],
                "summary": "Get all knowledgebase articles",
                "description": "Retrieve a paginated list of all knowledgebase articles with optional filters.",
                "operationId": "b3911c9334d48d5dab4a06803d3e4244",
                "parameters": [
                    {
                        "name": "page",
                        "in": "query",
                        "description": "Page number for pagination",
                        "required": false,
                        "schema": {
                            "type": "integer",
                            "default": 1,
                            "minimum": 1
                        }
                    },
                    {
                        "name": "limit",
                        "in": "query",
                        "description": "Number of records per page",
                        "required": false,
                        "schema": {
                            "type": "integer",
                            "default": 10,
                            "maximum": 100,
                            "minimum": 1
                        }
                    },
                    {
                        "name": "search",
                        "in": "query",
                        "description": "Search term to filter articles",
                        "required": false,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "category_id",
                        "in": "query",
                        "description": "Filter by category ID",
                        "required": false,
                        "schema": {
                            "type": "integer"
                        }
                    },
                    {
                        "name": "status",
                        "in": "query",
                        "description": "Filter by status",
                        "required": false,
                        "schema": {
                            "type": "string",
                            "enum": [
                                "draft",
                                "published",
                                "archived"
                            ]
                        }
                    },
                    {
                        "name": "pinned",
                        "in": "query",
                        "description": "Filter by pinned status",
                        "required": false,
                        "schema": {
                            "type": "boolean"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Articles retrieved successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "articles": {
                                            "type": "array",
                                            "items": {
                                                "$ref": "#/components/schemas/KnowledgebaseArticle"
                                            }
                                        },
                                        "pagination": {
                                            "$ref": "#/components/schemas/KnowledgebasePagination"
                                        },
                                        "search": {
                                            "properties": {
                                                "query": {
                                                    "type": "string"
                                                },
                                                "has_results": {
                                                    "type": "boolean"
                                                }
                                            },
                                            "type": "object"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "401": {
                        "description": "Unauthorized"
                    },
                    "403": {
                        "description": "Forbidden - Insufficient permissions"
                    }
                }
            },
            "put": {
                "tags": [
                    "Admin - Knowledgebase"
                ],
                "summary": "Create new knowledgebase article",
                "description": "Create a new knowledgebase article with title, slug, content, and optional icon.",
                "operationId": "1b46820598aa787360cb38395066c3e3",
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/KnowledgebaseArticleCreate"
                            }
                        }
                    }
                },
                "responses": {
                    "201": {
                        "description": "Article created successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "article": {
                                            "$ref": "#/components/schemas/KnowledgebaseArticle"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request - Validation errors"
                    },
                    "401": {
                        "description": "Unauthorized"
                    },
                    "403": {
                        "description": "Forbidden - Insufficient permissions"
                    },
                    "500": {
                        "description": "Internal server error"
                    }
                }
            }
        },
        "/api/admin/knowledgebase/articles/{id}": {
            "get": {
                "tags": [
                    "Admin - Knowledgebase"
                ],
                "summary": "Get knowledgebase article by ID",
                "description": "Retrieve a specific knowledgebase article by its ID.",
                "operationId": "f08e5042f93d65607749b84ed1a9b82e",
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "description": "Article ID",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Article retrieved successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "article": {
                                            "$ref": "#/components/schemas/KnowledgebaseArticle"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request - Invalid ID"
                    },
                    "401": {
                        "description": "Unauthorized"
                    },
                    "403": {
                        "description": "Forbidden - Insufficient permissions"
                    },
                    "404": {
                        "description": "Article not found"
                    }
                }
            },
            "delete": {
                "tags": [
                    "Admin - Knowledgebase"
                ],
                "summary": "Delete knowledgebase article",
                "description": "Permanently delete a knowledgebase article. This will also delete all tags and attachments.",
                "operationId": "26740da359f4c72d3e8c0b657005121e",
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "description": "Article ID",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Article deleted successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "message": {
                                            "description": "Success message",
                                            "type": "string"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request - Invalid article ID"
                    },
                    "401": {
                        "description": "Unauthorized"
                    },
                    "403": {
                        "description": "Forbidden - Insufficient permissions"
                    },
                    "404": {
                        "description": "Article not found"
                    },
                    "500": {
                        "description": "Internal server error"
                    }
                }
            },
            "patch": {
                "tags": [
                    "Admin - Knowledgebase"
                ],
                "summary": "Update knowledgebase article",
                "description": "Update an existing knowledgebase article. Only provided fields will be updated.",
                "operationId": "77cd4cd385b872dde6b2a0561cbbdfbc",
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "description": "Article ID",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/KnowledgebaseArticleUpdate"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Article updated successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "article": {
                                            "$ref": "#/components/schemas/KnowledgebaseArticle"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request - Validation errors"
                    },
                    "401": {
                        "description": "Unauthorized"
                    },
                    "403": {
                        "description": "Forbidden - Insufficient permissions"
                    },
                    "404": {
                        "description": "Article not found"
                    },
                    "500": {
                        "description": "Internal server error"
                    }
                }
            }
        },
        "/api/admin/knowledgebase/articles/reorder": {
            "post": {
                "tags": [
                    "Admin - Knowledgebase"
                ],
                "summary": "Reorder knowledgebase articles",
                "description": "Update the sort order of multiple articles at once for custom positioning.",
                "operationId": "9004c8af15b88f1de166bd2bfadca7b2",
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/KnowledgebaseArticleReorder"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Articles reordered successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "message": {
                                            "description": "Success message",
                                            "type": "string"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request - Invalid request data"
                    },
                    "401": {
                        "description": "Unauthorized"
                    },
                    "403": {
                        "description": "Forbidden - Insufficient permissions"
                    },
                    "500": {
                        "description": "Internal server error"
                    }
                }
            }
        },
        "/api/admin/knowledgebase/upload-icon": {
            "post": {
                "tags": [
                    "Admin - Knowledgebase"
                ],
                "summary": "Upload icon for category or article",
                "description": "Upload an icon image file for knowledgebase categories or articles. Supports JPG, PNG, GIF, and WebP formats with a maximum size of 5MB.",
                "operationId": "7603cea349bde1eb0ad74310031d98ea",
                "requestBody": {
                    "required": true,
                    "content": {
                        "multipart/form-data": {
                            "schema": {
                                "required": [
                                    "icon"
                                ],
                                "properties": {
                                    "icon": {
                                        "description": "Icon image file (JPG, PNG, GIF, WebP, max 5MB)",
                                        "type": "string",
                                        "format": "binary"
                                    }
                                },
                                "type": "object"
                            }
                        }
                    }
                },
                "responses": {
                    "201": {
                        "description": "Icon uploaded successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "url": {
                                            "description": "Public URL of the uploaded icon",
                                            "type": "string"
                                        },
                                        "filename": {
                                            "description": "Filename of the uploaded icon",
                                            "type": "string"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request - No file provided, invalid file type, or file too large"
                    },
                    "401": {
                        "description": "Unauthorized"
                    },
                    "403": {
                        "description": "Forbidden - Insufficient permissions"
                    },
                    "500": {
                        "description": "Internal server error - Failed to save file"
                    }
                }
            }
        },
        "/api/admin/knowledgebase/articles/{id}/upload-attachment": {
            "post": {
                "tags": [
                    "Admin - Knowledgebase"
                ],
                "summary": "Upload attachment for article",
                "description": "Upload an attachment file for a knowledgebase article. Supports various file types with a maximum size of 50MB.",
                "operationId": "05ac1ef911ff6d0bcb2e23f8ed86d7c8",
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "description": "Article ID",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "multipart/form-data": {
                            "schema": {
                                "required": [
                                    "file"
                                ],
                                "properties": {
                                    "file": {
                                        "description": "Attachment file (max 50MB)",
                                        "type": "string",
                                        "format": "binary"
                                    }
                                },
                                "type": "object"
                            }
                        }
                    }
                },
                "responses": {
                    "201": {
                        "description": "Attachment uploaded successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "attachment": {
                                            "description": "Attachment record",
                                            "type": "object"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request - No file provided, invalid file type, or file too large"
                    },
                    "401": {
                        "description": "Unauthorized"
                    },
                    "403": {
                        "description": "Forbidden - Insufficient permissions"
                    },
                    "404": {
                        "description": "Article not found"
                    },
                    "500": {
                        "description": "Internal server error - Failed to save file"
                    }
                }
            }
        },
        "/api/admin/knowledgebase/articles/{id}/attachments": {
            "get": {
                "tags": [
                    "Admin - Knowledgebase"
                ],
                "summary": "Get all attachments for an article",
                "description": "Retrieve all attachments for a specific knowledgebase article.",
                "operationId": "588ef7d7e14ef21b3d898f33e27f463a",
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "description": "Article ID",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Attachments retrieved successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "attachments": {
                                            "type": "array",
                                            "items": {
                                                "type": "object"
                                            }
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "401": {
                        "description": "Unauthorized"
                    },
                    "403": {
                        "description": "Forbidden - Insufficient permissions"
                    },
                    "404": {
                        "description": "Article not found"
                    }
                }
            }
        },
        "/api/admin/knowledgebase/articles/{id}/attachments/{attachmentId}": {
            "delete": {
                "tags": [
                    "Admin - Knowledgebase"
                ],
                "summary": "Delete an attachment",
                "description": "Permanently delete an attachment from a knowledgebase article.",
                "operationId": "373b86634df9e5b0a43f55abdad2977a",
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "description": "Article ID",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    },
                    {
                        "name": "attachmentId",
                        "in": "path",
                        "description": "Attachment ID",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Attachment deleted successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "message": {
                                            "description": "Success message",
                                            "type": "string"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request - Invalid attachment ID"
                    },
                    "401": {
                        "description": "Unauthorized"
                    },
                    "403": {
                        "description": "Forbidden - Insufficient permissions"
                    },
                    "404": {
                        "description": "Article or attachment not found"
                    },
                    "500": {
                        "description": "Internal server error"
                    }
                }
            }
        },
        "/api/admin/knowledgebase/articles/{id}/tags": {
            "get": {
                "tags": [
                    "Admin - Knowledgebase"
                ],
                "summary": "Get all tags for an article",
                "description": "Retrieve all tags associated with a specific knowledgebase article.",
                "operationId": "81ffa8832301aa38ea6a2209056a1947",
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "description": "Article ID",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Tags retrieved successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "tags": {
                                            "type": "array",
                                            "items": {
                                                "type": "object"
                                            }
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "401": {
                        "description": "Unauthorized"
                    },
                    "403": {
                        "description": "Forbidden - Insufficient permissions"
                    },
                    "404": {
                        "description": "Article not found"
                    }
                }
            },
            "post": {
                "tags": [
                    "Admin - Knowledgebase"
                ],
                "summary": "Add a tag to an article",
                "description": "Add a new tag to a knowledgebase article.",
                "operationId": "07af2be80e46a88b8b9a4bebdd60359c",
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "description": "Article ID",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "required": [
                                    "tag_name"
                                ],
                                "properties": {
                                    "tag_name": {
                                        "description": "Tag name",
                                        "type": "string",
                                        "example": "tutorial"
                                    }
                                },
                                "type": "object"
                            }
                        }
                    }
                },
                "responses": {
                    "201": {
                        "description": "Tag added successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "tag": {
                                            "type": "object"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request - Validation errors"
                    },
                    "401": {
                        "description": "Unauthorized"
                    },
                    "403": {
                        "description": "Forbidden - Insufficient permissions"
                    },
                    "404": {
                        "description": "Article not found"
                    },
                    "409": {
                        "description": "Tag already exists for this article"
                    }
                }
            }
        },
        "/api/admin/knowledgebase/articles/{id}/tags/{tagId}": {
            "delete": {
                "tags": [
                    "Admin - Knowledgebase"
                ],
                "summary": "Delete a tag from an article",
                "description": "Remove a tag from a knowledgebase article.",
                "operationId": "8e95813fc24acacb79e1552f1a78a3ca",
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "description": "Article ID",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    },
                    {
                        "name": "tagId",
                        "in": "path",
                        "description": "Tag ID",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Tag deleted successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "message": {
                                            "description": "Success message",
                                            "type": "string"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request - Invalid tag ID"
                    },
                    "401": {
                        "description": "Unauthorized"
                    },
                    "403": {
                        "description": "Forbidden - Insufficient permissions"
                    },
                    "404": {
                        "description": "Article or tag not found"
                    },
                    "500": {
                        "description": "Internal server error"
                    }
                }
            }
        },
        "/api/admin/analytics/languages": {
            "get": {
                "tags": [
                    "Admin - Analytics"
                ],
                "summary": "Get language usage analytics",
                "description": "Get a breakdown of user language preferences with counts and percentages.",
                "operationId": "a242208f6e441467c007346a51aeaadf",
                "responses": {
                    "200": {
                        "description": "Language statistics retrieved successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "languages": {
                                            "type": "array",
                                            "items": {
                                                "$ref": "#/components/schemas/LanguageStat"
                                            }
                                        },
                                        "total_users": {
                                            "description": "Total number of users",
                                            "type": "integer"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "401": {
                        "description": "Unauthorized"
                    },
                    "403": {
                        "description": "Forbidden - Insufficient permissions"
                    }
                }
            }
        },
        "/api/admin/analytics/languages/trends": {
            "get": {
                "tags": [
                    "Admin - Analytics"
                ],
                "summary": "Get language adoption trends",
                "description": "Get language adoption trends over the last 12 months.",
                "operationId": "4a8977139fa9782695aac878d42bb37c",
                "responses": {
                    "200": {
                        "description": "Language trends retrieved successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "trends": {
                                            "type": "array",
                                            "items": {
                                                "$ref": "#/components/schemas/LanguageTrend"
                                            }
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "401": {
                        "description": "Unauthorized"
                    },
                    "403": {
                        "description": "Forbidden - Insufficient permissions"
                    }
                }
            }
        },
        "/api/admin/ldap/providers": {
            "get": {
                "tags": [
                    "Admin - LDAP"
                ],
                "summary": "List all LDAP providers",
                "operationId": "5f8036c9097abf34e1fac482ce18b0ae",
                "responses": {
                    "200": {
                        "description": "List of LDAP providers",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "providers": {
                                            "type": "array",
                                            "items": {
                                                "$ref": "#/components/schemas/LdapProvider"
                                            }
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    }
                }
            },
            "put": {
                "tags": [
                    "Admin - LDAP"
                ],
                "summary": "Create a new LDAP provider",
                "operationId": "d4c8a58e89e2ec0b96608beba41760db",
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/LdapProvider"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Provider created successfully"
                    },
                    "400": {
                        "description": "Bad request - Missing required fields"
                    },
                    "500": {
                        "description": "Internal server error"
                    }
                }
            }
        },
        "/api/admin/ldap/providers/{uuid}": {
            "post": {
                "tags": [
                    "Admin - LDAP"
                ],
                "summary": "Update an LDAP provider",
                "operationId": "68d7be8b9fe3e7688a9b974f0406f111",
                "parameters": [
                    {
                        "name": "uuid",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/LdapProvider"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Provider updated successfully"
                    },
                    "404": {
                        "description": "Provider not found"
                    },
                    "500": {
                        "description": "Internal server error"
                    }
                }
            },
            "delete": {
                "tags": [
                    "Admin - LDAP"
                ],
                "summary": "Delete an LDAP provider",
                "operationId": "e7cd2da6aad792c400d30a5ea1120b4d",
                "parameters": [
                    {
                        "name": "uuid",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Provider deleted successfully"
                    },
                    "404": {
                        "description": "Provider not found"
                    },
                    "500": {
                        "description": "Internal server error"
                    }
                }
            }
        },
        "/api/admin/ldap/providers/{uuid}/test": {
            "post": {
                "tags": [
                    "Admin - LDAP"
                ],
                "summary": "Test LDAP provider connection",
                "operationId": "ca8d98c60e96c205172ef7f0290f647f",
                "parameters": [
                    {
                        "name": "uuid",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Connection test result"
                    },
                    "404": {
                        "description": "Provider not found"
                    }
                }
            }
        },
        "/api/admin/locations": {
            "get": {
                "tags": [
                    "Admin - Locations"
                ],
                "summary": "Get all locations",
                "description": "Retrieve a paginated list of all locations with optional search functionality.",
                "operationId": "b8e07a73f3c0a86e71bf0a5382612ac6",
                "parameters": [
                    {
                        "name": "page",
                        "in": "query",
                        "description": "Page number for pagination",
                        "required": false,
                        "schema": {
                            "type": "integer",
                            "default": 1,
                            "minimum": 1
                        }
                    },
                    {
                        "name": "limit",
                        "in": "query",
                        "description": "Number of records per page",
                        "required": false,
                        "schema": {
                            "type": "integer",
                            "default": 10,
                            "maximum": 100,
                            "minimum": 1
                        }
                    },
                    {
                        "name": "search",
                        "in": "query",
                        "description": "Search term to filter locations by name",
                        "required": false,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "type",
                        "in": "query",
                        "description": "Filter by location purpose (game = Wings/game servers, vps = VDS/VM nodes, web = web hosting)",
                        "required": false,
                        "schema": {
                            "type": "string",
                            "enum": [
                                "game",
                                "vps",
                                "web"
                            ]
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Locations retrieved successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "locations": {
                                            "type": "array",
                                            "items": {
                                                "$ref": "#/components/schemas/Location"
                                            }
                                        },
                                        "pagination": {
                                            "$ref": "#/components/schemas/LocationPagination"
                                        },
                                        "search": {
                                            "properties": {
                                                "query": {
                                                    "type": "string"
                                                },
                                                "has_results": {
                                                    "type": "boolean"
                                                }
                                            },
                                            "type": "object"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "401": {
                        "description": "Unauthorized"
                    },
                    "403": {
                        "description": "Forbidden - Insufficient permissions"
                    }
                }
            },
            "put": {
                "tags": [
                    "Admin - Locations"
                ],
                "summary": "Create new location",
                "description": "Create a new location with name and optional description. Validates field lengths.",
                "operationId": "d31f66caf4e69dd7b967b9cf646d4428",
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/LocationCreate"
                            }
                        }
                    }
                },
                "responses": {
                    "201": {
                        "description": "Location created successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "location": {
                                            "$ref": "#/components/schemas/Location"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request - Invalid JSON, missing required fields, invalid data types, or validation errors"
                    },
                    "401": {
                        "description": "Unauthorized"
                    },
                    "403": {
                        "description": "Forbidden - Insufficient permissions"
                    },
                    "500": {
                        "description": "Internal server error - Failed to create location"
                    }
                }
            }
        },
        "/api/admin/locations/{id}": {
            "get": {
                "tags": [
                    "Admin - Locations"
                ],
                "summary": "Get location by ID",
                "description": "Retrieve a specific location by its ID.",
                "operationId": "a5289595ceda966e64b92d102f650ff6",
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "description": "Location ID",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Location retrieved successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "location": {
                                            "$ref": "#/components/schemas/Location"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request - Invalid location ID"
                    },
                    "401": {
                        "description": "Unauthorized"
                    },
                    "403": {
                        "description": "Forbidden - Insufficient permissions"
                    },
                    "404": {
                        "description": "Location not found"
                    }
                }
            },
            "delete": {
                "tags": [
                    "Admin - Locations"
                ],
                "summary": "Delete location",
                "description": "Permanently delete a location record.",
                "operationId": "b814db77cb481aca12b6727f415f560b",
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "description": "Location ID",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Location deleted successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "message": {
                                            "description": "Success message",
                                            "type": "string"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request - Invalid location ID"
                    },
                    "401": {
                        "description": "Unauthorized"
                    },
                    "403": {
                        "description": "Forbidden - Insufficient permissions"
                    },
                    "404": {
                        "description": "Location not found"
                    },
                    "500": {
                        "description": "Internal server error - Failed to delete location"
                    }
                }
            },
            "patch": {
                "tags": [
                    "Admin - Locations"
                ],
                "summary": "Update location",
                "description": "Update an existing location. Only provided fields will be updated. Validates field lengths.",
                "operationId": "deb77ab58bf3f79545349622abe7acb0",
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "description": "Location ID",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/LocationUpdate"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Location updated successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "location": {
                                            "$ref": "#/components/schemas/Location"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request - Invalid JSON, no data provided, invalid data types, or validation errors"
                    },
                    "401": {
                        "description": "Unauthorized"
                    },
                    "403": {
                        "description": "Forbidden - Insufficient permissions"
                    },
                    "404": {
                        "description": "Location not found"
                    },
                    "500": {
                        "description": "Internal server error - Failed to update location"
                    }
                }
            }
        },
        "/api/admin/log-viewer/get": {
            "get": {
                "tags": [
                    "Admin - Log Viewer"
                ],
                "summary": "Get log content",
                "description": "Retrieve the last N lines from a specific log file. Only available in developer mode and requires ADMIN_ROOT permissions.",
                "operationId": "211d219d488de2171c16dfadd028c3b9",
                "parameters": [
                    {
                        "name": "type",
                        "in": "query",
                        "description": "Log type to retrieve",
                        "required": false,
                        "schema": {
                            "type": "string",
                            "default": "web",
                            "enum": [
                                "web",
                                "app",
                                "mail",
                                "runner"
                            ]
                        }
                    },
                    {
                        "name": "lines",
                        "in": "query",
                        "description": "Number of lines to retrieve from the end of the log file",
                        "required": false,
                        "schema": {
                            "type": "integer",
                            "default": 100,
                            "maximum": 10000,
                            "minimum": 1
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Log content retrieved successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/LogContent"
                                }
                            }
                        }
                    },
                    "401": {
                        "description": "Unauthorized"
                    },
                    "403": {
                        "description": "Forbidden - Developer mode not enabled or insufficient permissions"
                    },
                    "404": {
                        "description": "Log file not found"
                    },
                    "500": {
                        "description": "Internal server error - Failed to fetch logs"
                    }
                }
            }
        },
        "/api/admin/log-viewer/clear": {
            "post": {
                "tags": [
                    "Admin - Log Viewer"
                ],
                "summary": "Clear log file",
                "description": "Clear the contents of a specific log file. Requires ADMIN_ROOT permissions.",
                "operationId": "5a03b165b999126fccd8849dd042cb1c",
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/LogClear"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Log file cleared successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "message": {
                                            "description": "Success message",
                                            "type": "string"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "401": {
                        "description": "Unauthorized"
                    },
                    "403": {
                        "description": "Forbidden - Developer mode not enabled or insufficient permissions"
                    },
                    "404": {
                        "description": "Log file not found"
                    },
                    "500": {
                        "description": "Internal server error - Failed to clear logs"
                    }
                }
            }
        },
        "/api/admin/log-viewer/files": {
            "get": {
                "tags": [
                    "Admin - Log Viewer"
                ],
                "summary": "Get log files list",
                "description": "Retrieve a list of all available log files with metadata. Only available in developer mode and requires ADMIN_ROOT permissions.",
                "operationId": "844960def8c3b2ca2e516132cef04625",
                "responses": {
                    "200": {
                        "description": "Log files retrieved successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "files": {
                                            "type": "array",
                                            "items": {
                                                "$ref": "#/components/schemas/LogFile"
                                            }
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "401": {
                        "description": "Unauthorized"
                    },
                    "403": {
                        "description": "Forbidden - Developer mode not enabled or insufficient permissions"
                    },
                    "500": {
                        "description": "Internal server error - Failed to fetch log files"
                    }
                }
            }
        },
        "/api/admin/log-viewer/upload": {
            "post": {
                "tags": [
                    "Admin - Log Viewer"
                ],
                "summary": "Upload logs to MythicalSystems Paste",
                "description": "Upload recent web and app logs to pastes.mythicalsystems.org and get shareable URLs. Requires ADMIN_ROOT permissions.",
                "operationId": "b7044bc744e98af1360d12f531ee2672",
                "responses": {
                    "200": {
                        "description": "Logs uploaded successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "web": {
                                            "properties": {
                                                "success": {
                                                    "type": "boolean"
                                                },
                                                "url": {
                                                    "type": "string"
                                                },
                                                "raw": {
                                                    "type": "string"
                                                },
                                                "id": {
                                                    "type": "string"
                                                }
                                            },
                                            "type": "object"
                                        },
                                        "app": {
                                            "properties": {
                                                "success": {
                                                    "type": "boolean"
                                                },
                                                "url": {
                                                    "type": "string"
                                                },
                                                "raw": {
                                                    "type": "string"
                                                },
                                                "id": {
                                                    "type": "string"
                                                }
                                            },
                                            "type": "object"
                                        },
                                        "runner": {
                                            "properties": {
                                                "success": {
                                                    "type": "boolean"
                                                },
                                                "url": {
                                                    "type": "string"
                                                },
                                                "raw": {
                                                    "type": "string"
                                                },
                                                "id": {
                                                    "type": "string"
                                                }
                                            },
                                            "type": "object"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "401": {
                        "description": "Unauthorized"
                    },
                    "403": {
                        "description": "Forbidden - Developer mode not enabled or insufficient permissions"
                    },
                    "500": {
                        "description": "Internal server error - Failed to upload logs"
                    }
                }
            }
        },
        "/api/admin/mail-hosts": {
            "get": {
                "tags": [
                    "Admin - Mail Hosts"
                ],
                "summary": "List mail hosts",
                "operationId": "62ef6bb339cb836439110ae385a4dd11"
            },
            "put": {
                "tags": [
                    "Admin - Mail Hosts"
                ],
                "summary": "Create mail host",
                "operationId": "bf355d090f6051a417d661c0be006dd5"
            }
        },
        "/api/admin/mail-hosts/{id}": {
            "get": {
                "tags": [
                    "Admin - Mail Hosts"
                ],
                "summary": "Show mail host",
                "operationId": "896a9e07cee118c1ec1126bb31af9de6"
            },
            "delete": {
                "tags": [
                    "Admin - Mail Hosts"
                ],
                "summary": "Delete mail host",
                "operationId": "1106ed2e786e3262ab67118a49062a27"
            },
            "patch": {
                "tags": [
                    "Admin - Mail Hosts"
                ],
                "summary": "Update mail host",
                "operationId": "8f92bd6b5210ba26b7a9ce62dcd60e02"
            }
        },
        "/api/admin/mail-hosts/ensure-node/{webNodeId}": {
            "post": {
                "tags": [
                    "Admin - Mail Hosts"
                ],
                "summary": "Ensure node mail host exists",
                "operationId": "3c6cc84fcdf3b535d1b20129680d1bc7"
            }
        },
        "/api/admin/mail-templates": {
            "get": {
                "tags": [
                    "Admin - Mail Templates"
                ],
                "summary": "Get all mail templates",
                "description": "Retrieve a paginated list of all mail templates with optional search functionality and soft-deleted template inclusion.",
                "operationId": "10072378f26d60e89fb9a3ba4f13b0bc",
                "parameters": [
                    {
                        "name": "page",
                        "in": "query",
                        "description": "Page number for pagination",
                        "required": false,
                        "schema": {
                            "type": "integer",
                            "default": 1,
                            "minimum": 1
                        }
                    },
                    {
                        "name": "limit",
                        "in": "query",
                        "description": "Number of records per page",
                        "required": false,
                        "schema": {
                            "type": "integer",
                            "default": 10,
                            "maximum": 100,
                            "minimum": 1
                        }
                    },
                    {
                        "name": "search",
                        "in": "query",
                        "description": "Search term to filter templates by name or subject",
                        "required": false,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "include_deleted",
                        "in": "query",
                        "description": "Include soft-deleted templates in results",
                        "required": false,
                        "schema": {
                            "type": "boolean",
                            "default": false
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Mail templates retrieved successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "templates": {
                                            "type": "array",
                                            "items": {
                                                "$ref": "#/components/schemas/MailTemplate"
                                            }
                                        },
                                        "pagination": {
                                            "$ref": "#/components/schemas/MailTemplatePagination"
                                        },
                                        "search": {
                                            "properties": {
                                                "query": {
                                                    "type": "string"
                                                },
                                                "has_results": {
                                                    "type": "boolean"
                                                }
                                            },
                                            "type": "object"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "401": {
                        "description": "Unauthorized"
                    },
                    "403": {
                        "description": "Forbidden - Insufficient permissions"
                    }
                }
            },
            "post": {
                "tags": [
                    "Admin - Mail Templates"
                ],
                "summary": "Create new mail template",
                "description": "Create a new mail template with name, subject, and body. Validates field lengths and ensures template name uniqueness.",
                "operationId": "42fe34d538900d28c8711a53e6f4b519",
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/MailTemplateCreate"
                            }
                        }
                    }
                },
                "responses": {
                    "201": {
                        "description": "Mail template created successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "template_id": {
                                            "description": "ID of the created template",
                                            "type": "integer"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request - Missing required fields, invalid data types, or validation errors"
                    },
                    "401": {
                        "description": "Unauthorized"
                    },
                    "403": {
                        "description": "Forbidden - Insufficient permissions"
                    },
                    "409": {
                        "description": "Conflict - Template name already exists"
                    },
                    "500": {
                        "description": "Internal server error - Failed to create template"
                    }
                }
            }
        },
        "/api/admin/mail-templates/{id}": {
            "get": {
                "tags": [
                    "Admin - Mail Templates"
                ],
                "summary": "Get mail template by ID",
                "description": "Retrieve a specific mail template by its ID.",
                "operationId": "8d4798ec7507de756a5cbc16d91174e5",
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "description": "Mail template ID",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Mail template retrieved successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "template": {
                                            "$ref": "#/components/schemas/MailTemplate"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request - Invalid template ID"
                    },
                    "401": {
                        "description": "Unauthorized"
                    },
                    "403": {
                        "description": "Forbidden - Insufficient permissions"
                    },
                    "404": {
                        "description": "Mail template not found"
                    }
                }
            },
            "delete": {
                "tags": [
                    "Admin - Mail Templates"
                ],
                "summary": "Soft delete mail template",
                "description": "Soft delete a mail template (marks as deleted but preserves data). System templates (ID 1-10) cannot be deleted.",
                "operationId": "03f1d5322f85f4db1352fac7eecf1950",
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "description": "Mail template ID",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Mail template deleted successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "message": {
                                            "description": "Success message",
                                            "type": "string"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request - Invalid template ID or system template deletion attempted"
                    },
                    "401": {
                        "description": "Unauthorized"
                    },
                    "403": {
                        "description": "Forbidden - Insufficient permissions"
                    },
                    "404": {
                        "description": "Mail template not found"
                    },
                    "500": {
                        "description": "Internal server error - Failed to delete template"
                    }
                }
            },
            "patch": {
                "tags": [
                    "Admin - Mail Templates"
                ],
                "summary": "Update mail template",
                "description": "Update an existing mail template. Only provided fields will be updated. Validates field lengths and ensures template name uniqueness.",
                "operationId": "91d0568eeb2e0f30fcfa01c6bc5cb919",
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "description": "Mail template ID",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/MailTemplateUpdate"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Mail template updated successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "message": {
                                            "description": "Success message",
                                            "type": "string"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request - No data provided, invalid data types, or validation errors"
                    },
                    "401": {
                        "description": "Unauthorized"
                    },
                    "403": {
                        "description": "Forbidden - Insufficient permissions"
                    },
                    "404": {
                        "description": "Mail template not found"
                    },
                    "409": {
                        "description": "Conflict - Template name already exists"
                    },
                    "500": {
                        "description": "Internal server error - Failed to update template"
                    }
                }
            }
        },
        "/api/admin/mail-templates/{id}/restore": {
            "post": {
                "tags": [
                    "Admin - Mail Templates"
                ],
                "summary": "Restore soft deleted mail template",
                "description": "Restore a soft-deleted mail template by marking it as active again.",
                "operationId": "b1447dc7dd912745a3f706f1542c9a10",
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "description": "Mail template ID",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Mail template restored successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "message": {
                                            "description": "Success message",
                                            "type": "string"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request - Invalid template ID"
                    },
                    "401": {
                        "description": "Unauthorized"
                    },
                    "403": {
                        "description": "Forbidden - Insufficient permissions"
                    },
                    "404": {
                        "description": "Mail template not found"
                    },
                    "500": {
                        "description": "Internal server error - Failed to restore template"
                    }
                }
            }
        },
        "/api/admin/mail-templates/{id}/hard-delete": {
            "delete": {
                "tags": [
                    "Admin - Mail Templates"
                ],
                "summary": "Permanently delete mail template",
                "description": "Permanently delete a mail template from the database. This action cannot be undone.",
                "operationId": "c73a5eec4eb57a3325f8113374e78a73",
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "description": "Mail template ID",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Mail template permanently deleted successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "message": {
                                            "description": "Success message",
                                            "type": "string"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request - Invalid template ID"
                    },
                    "401": {
                        "description": "Unauthorized"
                    },
                    "403": {
                        "description": "Forbidden - Insufficient permissions"
                    },
                    "404": {
                        "description": "Mail template not found"
                    },
                    "500": {
                        "description": "Internal server error - Failed to permanently delete template"
                    }
                }
            }
        },
        "/api/admin/mail-templates/mass-email": {
            "post": {
                "tags": [
                    "Admin - Mail Templates"
                ],
                "summary": "Send mass email to all users",
                "description": "Send a mass email to all active users with valid email addresses. Emails are queued for delivery and processed by the mail sender cron job.",
                "operationId": "4a015bcc4160ef3e9a05b622f53635ff",
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/MassEmail"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Mass email queued successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/MassEmailResult"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request - Missing required fields, invalid data types, validation errors, or no valid users found"
                    },
                    "401": {
                        "description": "Unauthorized"
                    },
                    "403": {
                        "description": "Forbidden - Insufficient permissions"
                    },
                    "500": {
                        "description": "Internal server error - Failed to queue mass email"
                    }
                }
            }
        },
        "/api/admin/mail-templates/test-email": {
            "post": {
                "tags": [
                    "Admin - Mail Templates"
                ],
                "summary": "Send test email",
                "description": "Send a test email to a specified email address to verify mail configuration and template rendering.",
                "operationId": "ac146ccac5c4bef932220680eb9ea613",
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "required": [
                                    "email",
                                    "subject",
                                    "body"
                                ],
                                "properties": {
                                    "email": {
                                        "description": "Recipient email address",
                                        "type": "string",
                                        "format": "email"
                                    },
                                    "subject": {
                                        "description": "Email subject",
                                        "type": "string",
                                        "maxLength": 255,
                                        "minLength": 1
                                    },
                                    "body": {
                                        "description": "Email body content",
                                        "type": "string",
                                        "maxLength": 65535,
                                        "minLength": 1
                                    }
                                },
                                "type": "object"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Test email queued successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "message": {
                                            "description": "Success message",
                                            "type": "string"
                                        },
                                        "queue_id": {
                                            "description": "Mail queue ID",
                                            "type": "integer"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request - Missing required fields, invalid email format, or validation errors"
                    },
                    "401": {
                        "description": "Unauthorized"
                    },
                    "403": {
                        "description": "Forbidden - Insufficient permissions"
                    },
                    "500": {
                        "description": "Internal server error - Failed to queue test email"
                    }
                }
            }
        },
        "/api/admin/mounts": {
            "get": {
                "tags": [
                    "Admin - Mounts"
                ],
                "summary": "List mounts",
                "operationId": "b841698bd2b6d21eadc7e92d6d58fce7"
            },
            "put": {
                "tags": [
                    "Admin - Mounts"
                ],
                "summary": "Create mount",
                "operationId": "460025b07c86645d73cac0709d57be16"
            }
        },
        "/api/admin/mounts/{id}": {
            "get": {
                "tags": [
                    "Admin - Mounts"
                ],
                "summary": "Get mount",
                "operationId": "33a328572816f6320042ea25dc4c8ab1"
            },
            "delete": {
                "tags": [
                    "Admin - Mounts"
                ],
                "summary": "Delete mount",
                "operationId": "130ad02e1ef63223cbbf8561c4f10418"
            },
            "patch": {
                "tags": [
                    "Admin - Mounts"
                ],
                "summary": "Update mount",
                "operationId": "04db5e5850daeb112cf6649d84855b29"
            }
        },
        "/api/admin/servers/{id}/mounts/assignable": {
            "get": {
                "tags": [
                    "Admin - Mounts"
                ],
                "summary": "Mounts that can be toggled for this server",
                "operationId": "fe3af80e8b1de6f33f43501d3d2087bc"
            }
        },
        "/api/admin/cloud/translations/projects": {
            "get": {
                "tags": [
                    "Admin - FeatherCloud Translations"
                ],
                "summary": "List Mythic translation projects",
                "operationId": "af1a220109546fb54aa28e74d9688c10"
            }
        },
        "/api/admin/cloud/translations/projects/{slug}": {
            "get": {
                "tags": [
                    "Admin - FeatherCloud Translations"
                ],
                "summary": "Get Mythic translation project",
                "operationId": "0a0d82e049b5b14a687b1a08545b0f5c"
            }
        },
        "/api/admin/cloud/translations/projects/{slug}/locales": {
            "get": {
                "tags": [
                    "Admin - FeatherCloud Translations"
                ],
                "summary": "List project locales",
                "operationId": "86ac5be07368c6ae6e7a10b9c6ca5d84"
            }
        },
        "/api/admin/cloud/translations/projects/{slug}/locales/{locale}": {
            "get": {
                "tags": [
                    "Admin - FeatherCloud Translations"
                ],
                "summary": "Preview locale JSON",
                "operationId": "e6707d09f35ef1336aa2c6561802116d"
            }
        },
        "/api/admin/cloud/translations/projects/{slug}/locales/{locale}/download": {
            "get": {
                "tags": [
                    "Admin - FeatherCloud Translations"
                ],
                "summary": "Download locale JSON file stream",
                "operationId": "039c28127939cc638a491e6e21470747"
            }
        },
        "/api/admin/cloud/translations/projects/{slug}/locales/{locale}/install": {
            "post": {
                "tags": [
                    "Admin - FeatherCloud Translations"
                ],
                "summary": "Download Mythic locale and install into panel translations",
                "operationId": "69ff56b64dc288f65a68a29d141670ee"
            }
        },
        "/api/admin/cloud/translations/settings": {
            "get": {
                "tags": [
                    "Admin - FeatherCloud Translations"
                ],
                "summary": "Get Mythic translations client settings",
                "operationId": "e80e1e075b78e9f822c5d2d407358082"
            }
        },
        "/api/admin/nodes/status/global": {
            "get": {
                "tags": [
                    "Admin - Nodes"
                ],
                "summary": "Get global node status and utilization",
                "description": "Retrieve aggregated utilization and status information from all nodes including CPU, memory, disk usage, and health status.",
                "operationId": "4b57314b7597bd16f7cd08c74783045e",
                "responses": {
                    "200": {
                        "description": "Global node status retrieved successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "global": {
                                            "properties": {
                                                "total_nodes": {
                                                    "description": "Total number of nodes",
                                                    "type": "integer"
                                                },
                                                "healthy_nodes": {
                                                    "description": "Number of healthy nodes",
                                                    "type": "integer"
                                                },
                                                "unhealthy_nodes": {
                                                    "description": "Number of unhealthy nodes",
                                                    "type": "integer"
                                                },
                                                "total_memory": {
                                                    "description": "Total memory across all nodes (bytes)",
                                                    "type": "integer"
                                                },
                                                "used_memory": {
                                                    "description": "Used memory across all nodes (bytes)",
                                                    "type": "integer"
                                                },
                                                "total_disk": {
                                                    "description": "Total disk across all nodes (bytes)",
                                                    "type": "integer"
                                                },
                                                "used_disk": {
                                                    "description": "Used disk across all nodes (bytes)",
                                                    "type": "integer"
                                                },
                                                "avg_cpu_percent": {
                                                    "description": "Average CPU usage across all nodes (%)",
                                                    "type": "number"
                                                }
                                            },
                                            "type": "object"
                                        },
                                        "nodes": {
                                            "type": "array",
                                            "items": {
                                                "properties": {
                                                    "id": {
                                                        "type": "integer"
                                                    },
                                                    "name": {
                                                        "type": "string"
                                                    },
                                                    "fqdn": {
                                                        "type": "string"
                                                    },
                                                    "status": {
                                                        "type": "string",
                                                        "enum": [
                                                            "healthy",
                                                            "unhealthy"
                                                        ]
                                                    },
                                                    "server_count": {
                                                        "description": "Number of servers on this node",
                                                        "type": "integer"
                                                    },
                                                    "total_players": {
                                                        "description": "Total connected players across servers on this node",
                                                        "type": "integer"
                                                    },
                                                    "utilization": {
                                                        "type": "object",
                                                        "nullable": true
                                                    }
                                                },
                                                "type": "object"
                                            }
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "401": {
                        "description": "Unauthorized"
                    },
                    "403": {
                        "description": "Forbidden - Insufficient permissions"
                    }
                }
            }
        },
        "/api/admin/nodes": {
            "get": {
                "tags": [
                    "Admin - Nodes"
                ],
                "summary": "Get all nodes",
                "description": "Retrieve a paginated list of all nodes with optional search functionality.",
                "operationId": "f2ed7f91cf9c64634c5a0fc12ef596cb",
                "parameters": [
                    {
                        "name": "page",
                        "in": "query",
                        "description": "Page number for pagination",
                        "required": false,
                        "schema": {
                            "type": "integer",
                            "default": 1,
                            "minimum": 1
                        }
                    },
                    {
                        "name": "limit",
                        "in": "query",
                        "description": "Number of records per page",
                        "required": false,
                        "schema": {
                            "type": "integer",
                            "default": 10,
                            "maximum": 100,
                            "minimum": 1
                        }
                    },
                    {
                        "name": "search",
                        "in": "query",
                        "description": "Search term to filter nodes by name or FQDN",
                        "required": false,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "location_id",
                        "in": "query",
                        "description": "Location ID to filter nodes by",
                        "required": false,
                        "schema": {
                            "type": "integer"
                        }
                    },
                    {
                        "name": "exclude_node_id",
                        "in": "query",
                        "description": "Node ID to exclude from results (useful for transfer destinations)",
                        "required": false,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Nodes retrieved successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "nodes": {
                                            "type": "array",
                                            "items": {
                                                "$ref": "#/components/schemas/Node"
                                            }
                                        },
                                        "pagination": {
                                            "$ref": "#/components/schemas/NodePagination"
                                        },
                                        "search": {
                                            "properties": {
                                                "query": {
                                                    "type": "string"
                                                },
                                                "has_results": {
                                                    "type": "boolean"
                                                }
                                            },
                                            "type": "object"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "401": {
                        "description": "Unauthorized"
                    },
                    "403": {
                        "description": "Forbidden - Insufficient permissions"
                    }
                }
            },
            "put": {
                "tags": [
                    "Admin - Nodes"
                ],
                "summary": "Create new node",
                "description": "Create a new node with name, FQDN, and location. Automatically generates UUID and daemon tokens. Validates location existence and ensures UUID uniqueness.",
                "operationId": "bee3aade0277bf849e99e1923c4e38b0",
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/NodeCreate"
                            }
                        }
                    }
                },
                "responses": {
                    "201": {
                        "description": "Node created successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "node": {
                                            "$ref": "#/components/schemas/Node"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request - Invalid JSON, validation errors, location not found, or UUID already exists"
                    },
                    "401": {
                        "description": "Unauthorized"
                    },
                    "403": {
                        "description": "Forbidden - Insufficient permissions"
                    },
                    "500": {
                        "description": "Internal server error - Failed to create node"
                    }
                }
            }
        },
        "/api/admin/nodes/{id}": {
            "get": {
                "tags": [
                    "Admin - Nodes"
                ],
                "summary": "Get node by ID",
                "description": "Retrieve a specific node by its ID.",
                "operationId": "7ebad3b79a1158c4639e6f96bb13ad96",
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "description": "Node ID",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Node retrieved successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "node": {
                                            "$ref": "#/components/schemas/Node"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request - Invalid node ID"
                    },
                    "401": {
                        "description": "Unauthorized"
                    },
                    "403": {
                        "description": "Forbidden - Insufficient permissions"
                    },
                    "404": {
                        "description": "Node not found"
                    }
                }
            },
            "delete": {
                "tags": [
                    "Admin - Nodes"
                ],
                "summary": "Delete node",
                "description": "Permanently delete a node from the database. This action cannot be undone.",
                "operationId": "84a3ecfbb8e3b61c8a3a48459e644911",
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "description": "Node ID",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Node deleted successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "message": {
                                            "description": "Success message",
                                            "type": "string"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request - Invalid node ID"
                    },
                    "401": {
                        "description": "Unauthorized"
                    },
                    "403": {
                        "description": "Forbidden - Insufficient permissions"
                    },
                    "404": {
                        "description": "Node not found"
                    },
                    "500": {
                        "description": "Internal server error - Failed to delete node"
                    }
                }
            },
            "patch": {
                "tags": [
                    "Admin - Nodes"
                ],
                "summary": "Update node",
                "description": "Update an existing node. Only provided fields will be updated. Validates location existence and UUID format.",
                "operationId": "144f693d539a497179f754d4a5d3ef39",
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "description": "Node ID",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/NodeUpdate"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Node updated successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "node": {
                                            "$ref": "#/components/schemas/Node"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request - Invalid JSON, no data provided, validation errors, location not found, or invalid UUID format"
                    },
                    "401": {
                        "description": "Unauthorized"
                    },
                    "403": {
                        "description": "Forbidden - Insufficient permissions"
                    },
                    "404": {
                        "description": "Node not found"
                    },
                    "500": {
                        "description": "Internal server error - Failed to update node"
                    }
                }
            }
        },
        "/api/admin/nodes/{id}/diagnostics": {
            "get": {
                "tags": [
                    "Admin - Nodes"
                ],
                "summary": "Generate node diagnostics bundle",
                "description": "Fetches diagnostics output from the Wings daemon. Returns plain-text content by default or an uploaded report URL when format=url.",
                "operationId": "2de93ffb0be4b071e17b0005953b856c",
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "description": "Node ID",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    },
                    {
                        "name": "include_endpoints",
                        "in": "query",
                        "description": "Include HTTP endpoint metadata",
                        "required": false,
                        "schema": {
                            "type": "boolean"
                        }
                    },
                    {
                        "name": "include_logs",
                        "in": "query",
                        "description": "Include daemon logs in the report",
                        "required": false,
                        "schema": {
                            "type": "boolean"
                        }
                    },
                    {
                        "name": "log_lines",
                        "in": "query",
                        "description": "Number of log lines to include (1-500)",
                        "required": false,
                        "schema": {
                            "type": "integer",
                            "maximum": 500,
                            "minimum": 1
                        }
                    },
                    {
                        "name": "format",
                        "in": "query",
                        "description": "Response format: raw text or uploaded URL",
                        "required": false,
                        "schema": {
                            "type": "string",
                            "enum": [
                                "text",
                                "url"
                            ]
                        }
                    },
                    {
                        "name": "upload_api_url",
                        "in": "query",
                        "description": "Override upload endpoint when requesting format=url",
                        "required": false,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Diagnostics generated successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "diagnostics": {
                                            "properties": {
                                                "format": {
                                                    "type": "string",
                                                    "enum": [
                                                        "text",
                                                        "url"
                                                    ]
                                                },
                                                "content": {
                                                    "description": "Plain-text diagnostics content when format=text",
                                                    "type": "string",
                                                    "nullable": true
                                                },
                                                "url": {
                                                    "description": "Diagnostics report URL when format=url",
                                                    "type": "string",
                                                    "nullable": true
                                                },
                                                "include_endpoints": {
                                                    "type": "boolean"
                                                },
                                                "include_logs": {
                                                    "type": "boolean"
                                                },
                                                "log_lines": {
                                                    "type": "integer",
                                                    "nullable": true
                                                }
                                            },
                                            "type": "object"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request - Invalid query parameters"
                    },
                    "401": {
                        "description": "Unauthorized"
                    },
                    "403": {
                        "description": "Forbidden - Insufficient permissions"
                    },
                    "404": {
                        "description": "Node not found"
                    },
                    "500": {
                        "description": "Internal server error - Failed to generate diagnostics"
                    }
                }
            }
        },
        "/api/admin/nodes/{id}/system-logs": {
            "get": {
                "tags": [
                    "Admin - Nodes"
                ],
                "summary": "List node system log files",
                "description": "Lists daemon log files via Calagopus GET /api/system/logs.",
                "operationId": "2a384cc75b22bc379b19bad7fc14c694",
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "description": "Node ID",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "System logs listed successfully"
                    },
                    "404": {
                        "description": "Node not found"
                    },
                    "501": {
                        "description": "Daemon feature unsupported"
                    },
                    "500": {
                        "description": "Failed to list system logs"
                    }
                }
            }
        },
        "/api/admin/nodes/{id}/system-logs/{file}": {
            "get": {
                "tags": [
                    "Admin - Nodes"
                ],
                "summary": "Read a node system log file",
                "description": "Reads a daemon log file via Calagopus GET /api/system/logs/{file}.",
                "operationId": "ee02895046bbcff38013a0eb6274b6f8",
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "description": "Node ID",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    },
                    {
                        "name": "file",
                        "in": "path",
                        "description": "Log file name",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "System log file retrieved successfully"
                    },
                    "400": {
                        "description": "Invalid log file name"
                    },
                    "404": {
                        "description": "Node not found"
                    },
                    "501": {
                        "description": "Daemon feature unsupported"
                    },
                    "500": {
                        "description": "Failed to read system log"
                    }
                }
            }
        },
        "/api/admin/nodes/{id}/self-update": {
            "post": {
                "tags": [
                    "Admin - Nodes"
                ],
                "summary": "Trigger Wings self-update",
                "description": "Initiate a self-update on the Wings daemon either via GitHub release channel or a custom download URL.",
                "operationId": "13099f6a215dd7a1bc01b40f54a9c315",
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "description": "Node ID",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "properties": {
                                    "source": {
                                        "description": "Update source (e.g. github, url)",
                                        "type": "string"
                                    },
                                    "version": {
                                        "description": "Specific Wings version to install",
                                        "type": "string"
                                    },
                                    "url": {
                                        "description": "Direct download URL for installing Wings",
                                        "type": "string"
                                    },
                                    "repo_owner": {
                                        "description": "GitHub repository owner (when source=github)",
                                        "type": "string"
                                    },
                                    "repo_name": {
                                        "description": "GitHub repository name (when source=github)",
                                        "type": "string"
                                    },
                                    "sha256": {
                                        "description": "SHA256 checksum for validating download",
                                        "type": "string"
                                    },
                                    "force": {
                                        "description": "Force reinstall even if Wings is up-to-date",
                                        "type": "boolean"
                                    },
                                    "disable_checksum": {
                                        "description": "Skip checksum validation of the downloaded artifact",
                                        "type": "boolean"
                                    }
                                },
                                "type": "object",
                                "additionalProperties": false
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Self-update already applied or not required",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "202": {
                        "description": "Self-update accepted and queued",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request - Invalid payload or updates disabled"
                    },
                    "401": {
                        "description": "Unauthorized"
                    },
                    "403": {
                        "description": "Forbidden - Insufficient permissions or API updates disabled"
                    },
                    "404": {
                        "description": "Node not found"
                    },
                    "500": {
                        "description": "Failed to trigger self-update"
                    }
                }
            }
        },
        "/api/admin/nodes/{id}/reset-key": {
            "post": {
                "tags": [
                    "Admin - Nodes"
                ],
                "summary": "Reset node daemon tokens",
                "description": "Generate new daemon token ID and daemon token for a node. This invalidates the current tokens and requires the node to be reconfigured with the new tokens.",
                "operationId": "cf46fb275b1de54f4ad22fb6d91b5962",
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "description": "Node ID",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Node daemon tokens reset successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "node": {
                                            "$ref": "#/components/schemas/Node"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request - Invalid node ID"
                    },
                    "401": {
                        "description": "Unauthorized"
                    },
                    "403": {
                        "description": "Forbidden - Insufficient permissions"
                    },
                    "404": {
                        "description": "Node not found"
                    },
                    "500": {
                        "description": "Internal server error - Failed to reset node tokens"
                    }
                }
            }
        },
        "/api/admin/nodes/{id}/setup-command": {
            "get": {
                "tags": [
                    "Admin - Nodes"
                ],
                "summary": "Get node setup command",
                "description": "Returns install command (step 1) and setup command (step 2) to configure the node. Step 1 installs FeatherWings only; step 2 runs the interactive featherwings configure wizard.",
                "operationId": "035786e5d4b284b3cf754c5c21e39dc5",
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "description": "Node ID",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Setup commands (install + config)",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "panel_url": {
                                            "description": "Panel base URL",
                                            "type": "string"
                                        },
                                        "config_url": {
                                            "description": "Full URL to fetch config (GET with Wings Bearer token)",
                                            "type": "string"
                                        },
                                        "install_command": {
                                            "description": "Step 1: Install FeatherWings on the node (binary + Docker, no SSL)",
                                            "type": "string"
                                        },
                                        "setup_command": {
                                            "description": "Step 2: Run featherwings configure (handles node join, SSL, and systemd)",
                                            "type": "string"
                                        },
                                        "config_path_hint": {
                                            "description": "Suggested config path on the node (e.g. /etc/featherpanel/config.yml)",
                                            "type": "string"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "401": {
                        "description": "Unauthorized"
                    },
                    "403": {
                        "description": "Forbidden"
                    },
                    "404": {
                        "description": "Node not found"
                    }
                }
            }
        },
        "/api/admin/nodes/{id}/terminal/exec": {
            "post": {
                "tags": [
                    "Admin - Nodes"
                ],
                "summary": "Execute command on node host",
                "description": "Execute a command on the node host system via Wings terminal API. Requires system.host_terminal.enabled=true in Wings config.",
                "operationId": "c89f3d9c9bc670bd4cded867589b6cf5",
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "description": "Node ID",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "required": [
                                    "command"
                                ],
                                "properties": {
                                    "command": {
                                        "description": "Command to execute on the host",
                                        "type": "string"
                                    },
                                    "timeout_seconds": {
                                        "description": "Timeout in seconds (default: 60)",
                                        "type": "integer",
                                        "maximum": 300,
                                        "minimum": 1
                                    },
                                    "working_directory": {
                                        "description": "Working directory for command execution",
                                        "type": "string"
                                    },
                                    "environment": {
                                        "description": "Environment variables for the command",
                                        "type": "object",
                                        "additionalProperties": true
                                    }
                                },
                                "type": "object"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Command executed successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "exit_code": {
                                            "description": "Command exit code",
                                            "type": "integer"
                                        },
                                        "stdout": {
                                            "description": "Standard output",
                                            "type": "string"
                                        },
                                        "stderr": {
                                            "description": "Standard error",
                                            "type": "string"
                                        },
                                        "timed_out": {
                                            "description": "Whether command timed out",
                                            "type": "boolean"
                                        },
                                        "duration_ms": {
                                            "description": "Execution duration in milliseconds",
                                            "type": "integer"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request - Invalid payload or missing command"
                    },
                    "401": {
                        "description": "Unauthorized"
                    },
                    "403": {
                        "description": "Forbidden - Insufficient permissions or host terminal disabled"
                    },
                    "404": {
                        "description": "Node not found"
                    },
                    "504": {
                        "description": "Gateway Timeout - Command execution timed out"
                    },
                    "500": {
                        "description": "Internal server error - Failed to execute command"
                    }
                }
            }
        },
        "/api/admin/nodes/{id}/config": {
            "get": {
                "tags": [
                    "Admin - Nodes"
                ],
                "summary": "Get Wings configuration",
                "description": "Retrieve the complete Wings configuration file as raw YAML with all comments preserved.",
                "operationId": "83cd1f8a4d3f53efd8c8e483cda6a4ac",
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "description": "Node ID",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Wings configuration retrieved successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "config": {
                                            "description": "Raw YAML configuration content",
                                            "type": "string"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "401": {
                        "description": "Unauthorized"
                    },
                    "403": {
                        "description": "Forbidden - Insufficient permissions"
                    },
                    "404": {
                        "description": "Node not found"
                    },
                    "500": {
                        "description": "Internal server error - Failed to retrieve configuration"
                    }
                }
            },
            "put": {
                "tags": [
                    "Admin - Nodes"
                ],
                "summary": "Replace Wings configuration",
                "description": "Replace the entire Wings configuration file with new YAML content. All comments and formatting are preserved. Optionally restart Wings after update.",
                "operationId": "e1a15b7ca59edfb8b3ef81a4a2d1a731",
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "description": "Node ID",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "required": [
                                    "config"
                                ],
                                "properties": {
                                    "config": {
                                        "description": "Complete YAML configuration content",
                                        "type": "string"
                                    },
                                    "restart": {
                                        "description": "Whether to restart Wings after update",
                                        "type": "boolean",
                                        "default": false
                                    }
                                },
                                "type": "object"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Configuration updated successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "config": {
                                            "description": "Updated YAML configuration content",
                                            "type": "string"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request - Invalid JSON or missing config"
                    },
                    "401": {
                        "description": "Unauthorized"
                    },
                    "403": {
                        "description": "Forbidden - Insufficient permissions"
                    },
                    "404": {
                        "description": "Node not found"
                    },
                    "500": {
                        "description": "Internal server error - Failed to update configuration"
                    }
                }
            }
        },
        "/api/admin/nodes/{id}/config/patch": {
            "patch": {
                "tags": [
                    "Admin - Nodes"
                ],
                "summary": "Patch Wings configuration values",
                "description": "Update specific configuration values using dot notation (e.g., \"api.port\", \"system.root_directory\"). Preserves comments and other values.",
                "operationId": "114b6a72dd3a1d974bd225642eb721ec",
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "description": "Node ID",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "required": [
                                    "values"
                                ],
                                "properties": {
                                    "values": {
                                        "description": "Configuration values to update using dot notation (e.g., {\"api.port\": 8443, \"system.root_directory\": \"/var/lib/featherpanel\"})",
                                        "type": "object",
                                        "additionalProperties": true
                                    },
                                    "restart": {
                                        "description": "Whether to restart Wings after update",
                                        "type": "boolean",
                                        "default": false
                                    }
                                },
                                "type": "object"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Configuration patched successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "result": {
                                            "description": "Patch operation result",
                                            "type": "object"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request - Invalid JSON or missing values"
                    },
                    "401": {
                        "description": "Unauthorized"
                    },
                    "403": {
                        "description": "Forbidden - Insufficient permissions"
                    },
                    "404": {
                        "description": "Node not found"
                    },
                    "500": {
                        "description": "Internal server error - Failed to patch configuration"
                    }
                }
            }
        },
        "/api/admin/nodes/{id}/config/schema": {
            "get": {
                "tags": [
                    "Admin - Nodes"
                ],
                "summary": "Get Wings configuration schema",
                "description": "Retrieve a schema describing all configurable fields in the Wings configuration, useful for building GUIs.",
                "operationId": "0f3f30aef76ff0692ded5745af6ef503",
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "description": "Node ID",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Configuration schema retrieved successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "schema": {
                                            "description": "Configuration schema",
                                            "type": "object"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "401": {
                        "description": "Unauthorized"
                    },
                    "403": {
                        "description": "Forbidden - Insufficient permissions"
                    },
                    "404": {
                        "description": "Node not found"
                    },
                    "500": {
                        "description": "Internal server error - Failed to retrieve schema"
                    }
                }
            }
        },
        "/api/admin/nodes/{id}/version-status": {
            "get": {
                "tags": [
                    "Admin - Nodes"
                ],
                "summary": "Check FeatherWings version status",
                "description": "Check if the node's FeatherWings version matches the latest version available on GitHub. Compares the installed version with the latest release from mythicalltd/featherwings repository.",
                "operationId": "907019ac13ed1392cf719a19886921f2",
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "description": "Node ID",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Version status retrieved successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "current_version": {
                                            "description": "Currently installed FeatherWings version",
                                            "type": "string"
                                        },
                                        "latest_version": {
                                            "description": "Latest available version from GitHub",
                                            "type": "string",
                                            "nullable": true
                                        },
                                        "is_up_to_date": {
                                            "description": "Whether the installed version matches the latest",
                                            "type": "boolean"
                                        },
                                        "update_available": {
                                            "description": "Whether an update is available",
                                            "type": "boolean"
                                        },
                                        "github_error": {
                                            "description": "Error message if GitHub check failed",
                                            "type": "string",
                                            "nullable": true
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "401": {
                        "description": "Unauthorized"
                    },
                    "403": {
                        "description": "Forbidden - Insufficient permissions"
                    },
                    "404": {
                        "description": "Node not found"
                    },
                    "500": {
                        "description": "Internal server error - Failed to check version status"
                    }
                }
            }
        },
        "/api/admin/nodes/{id}/mass-transfer/preview": {
            "get": {
                "tags": [
                    "Admin - Nodes"
                ],
                "summary": "Preview mass server transfer from a node",
                "description": "Lists transferable servers on the source node and free allocation capacity on a destination node.",
                "operationId": "374ee8a4f29a37a8a75acb2873e2e3b8",
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "description": "Source node ID",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    },
                    {
                        "name": "destination_node_id",
                        "in": "query",
                        "description": "Destination node ID",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Preview retrieved successfully"
                    },
                    "400": {
                        "description": "Bad request"
                    },
                    "404": {
                        "description": "Node not found"
                    }
                }
            }
        },
        "/api/admin/nodes/{id}/mass-transfer": {
            "post": {
                "tags": [
                    "Admin - Nodes"
                ],
                "summary": "Mass transfer servers from a node",
                "description": "Transfer selected servers (or all transferable servers) from this node to another. Free allocations on the destination node are assigned automatically.",
                "operationId": "4136bd870e9c9dabd2e50f286be388d6",
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "description": "Source node ID",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "required": [
                                    "destination_node_id"
                                ],
                                "properties": {
                                    "destination_node_id": {
                                        "type": "integer",
                                        "minimum": 1
                                    },
                                    "server_ids": {
                                        "description": "Server IDs to move (ignored when move_all is true)",
                                        "type": "array",
                                        "items": {
                                            "type": "integer"
                                        }
                                    },
                                    "move_all": {
                                        "description": "Move every transferable server on this node",
                                        "type": "boolean"
                                    }
                                },
                                "type": "object"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Mass transfer processed"
                    },
                    "400": {
                        "description": "Bad request"
                    },
                    "404": {
                        "description": "Node not found"
                    }
                }
            }
        },
        "/api/admin/notifications": {
            "get": {
                "tags": [
                    "Admin - Notifications"
                ],
                "summary": "Get all notifications",
                "description": "Retrieve a paginated list of all notifications with optional search and filtering.",
                "operationId": "bffefacbefb1f0c9eca7fcbd7e5a4377",
                "parameters": [
                    {
                        "name": "page",
                        "in": "query",
                        "description": "Page number for pagination",
                        "required": false,
                        "schema": {
                            "type": "integer",
                            "default": 1,
                            "minimum": 1
                        }
                    },
                    {
                        "name": "limit",
                        "in": "query",
                        "description": "Number of records per page",
                        "required": false,
                        "schema": {
                            "type": "integer",
                            "default": 10,
                            "maximum": 100,
                            "minimum": 1
                        }
                    },
                    {
                        "name": "search",
                        "in": "query",
                        "description": "Search term to filter notifications by title or message",
                        "required": false,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "type",
                        "in": "query",
                        "description": "Filter by notification type",
                        "required": false,
                        "schema": {
                            "type": "string",
                            "enum": [
                                "info",
                                "warning",
                                "danger",
                                "success",
                                "error"
                            ]
                        }
                    },
                    {
                        "name": "user_id",
                        "in": "query",
                        "description": "Filter by target user ID",
                        "required": false,
                        "schema": {
                            "type": "integer"
                        }
                    },
                    {
                        "name": "server_id",
                        "in": "query",
                        "description": "Filter by target server ID",
                        "required": false,
                        "schema": {
                            "type": "integer"
                        }
                    },
                    {
                        "name": "global_only",
                        "in": "query",
                        "description": "When true, only return global (all-users) notifications",
                        "required": false,
                        "schema": {
                            "type": "boolean"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Notifications retrieved successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "notifications": {
                                            "type": "array",
                                            "items": {
                                                "$ref": "#/components/schemas/Notification"
                                            }
                                        },
                                        "pagination": {
                                            "$ref": "#/components/schemas/NotificationPagination"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "401": {
                        "description": "Unauthorized"
                    },
                    "403": {
                        "description": "Forbidden - Insufficient permissions"
                    }
                }
            },
            "put": {
                "tags": [
                    "Admin - Notifications"
                ],
                "summary": "Create new notification",
                "description": "Create a new notification with comprehensive validation.",
                "operationId": "b6771fd320da9e97f3dd2af9d722bbdb",
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/NotificationCreate"
                            }
                        }
                    }
                },
                "responses": {
                    "201": {
                        "description": "Notification created successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "notification_id": {
                                            "description": "Created notification ID",
                                            "type": "integer"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request - Validation errors"
                    },
                    "401": {
                        "description": "Unauthorized"
                    },
                    "403": {
                        "description": "Forbidden - Insufficient permissions"
                    },
                    "500": {
                        "description": "Internal server error"
                    }
                }
            }
        },
        "/api/admin/notifications/{id}": {
            "get": {
                "tags": [
                    "Admin - Notifications"
                ],
                "summary": "Get notification by ID",
                "description": "Retrieve a specific notification by its ID with comprehensive information.",
                "operationId": "53635ca6778c031934a40074d9c90897",
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "description": "Notification ID",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Notification retrieved successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "notification": {
                                            "$ref": "#/components/schemas/Notification"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request - Invalid ID"
                    },
                    "401": {
                        "description": "Unauthorized"
                    },
                    "403": {
                        "description": "Forbidden - Insufficient permissions"
                    },
                    "404": {
                        "description": "Notification not found"
                    }
                }
            },
            "delete": {
                "tags": [
                    "Admin - Notifications"
                ],
                "summary": "Delete notification",
                "description": "Permanently delete a notification.",
                "operationId": "fa528957cd9c306e87f3e2ce6e74bdae",
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "description": "Notification ID",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Notification deleted successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "message": {
                                            "description": "Success message",
                                            "type": "string"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request - Invalid ID"
                    },
                    "401": {
                        "description": "Unauthorized"
                    },
                    "403": {
                        "description": "Forbidden - Insufficient permissions"
                    },
                    "404": {
                        "description": "Notification not found"
                    },
                    "500": {
                        "description": "Internal server error"
                    }
                }
            },
            "patch": {
                "tags": [
                    "Admin - Notifications"
                ],
                "summary": "Update notification",
                "description": "Update an existing notification with comprehensive validation.",
                "operationId": "c22bb5be7d97ddf2c93633a5c068580f",
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "description": "Notification ID",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/NotificationUpdate"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Notification updated successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "message": {
                                            "description": "Success message",
                                            "type": "string"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request - Validation errors"
                    },
                    "401": {
                        "description": "Unauthorized"
                    },
                    "403": {
                        "description": "Forbidden - Insufficient permissions"
                    },
                    "404": {
                        "description": "Notification not found"
                    },
                    "500": {
                        "description": "Internal server error"
                    }
                }
            }
        },
        "/api/admin/oidc/providers": {
            "get": {
                "tags": [
                    "Admin - OIDC"
                ],
                "summary": "List OIDC providers",
                "operationId": "91b54c2424a08bbd9d5c6db66e63aa7d",
                "responses": {
                    "200": {
                        "description": "Providers retrieved successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "providers": {
                                            "type": "array",
                                            "items": {
                                                "$ref": "#/components/schemas/OidcProvider"
                                            }
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    }
                }
            },
            "put": {
                "tags": [
                    "Admin - OIDC"
                ],
                "summary": "Create OIDC provider",
                "operationId": "0acbc937f5f6090d7cb43ceb560a0fd2",
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/OidcProvider"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Provider created successfully"
                    },
                    "400": {
                        "description": "Bad request"
                    }
                }
            }
        },
        "/api/admin/oidc/providers/{uuid}": {
            "delete": {
                "tags": [
                    "Admin - OIDC"
                ],
                "summary": "Delete OIDC provider",
                "operationId": "93e59bdb7e93f137411f00b8a5ddfa59",
                "parameters": [
                    {
                        "name": "uuid",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Provider deleted successfully"
                    },
                    "404": {
                        "description": "Provider not found"
                    }
                }
            },
            "patch": {
                "tags": [
                    "Admin - OIDC"
                ],
                "summary": "Update OIDC provider",
                "operationId": "a0262f9fb785f2cf0aae95a4806f0de2",
                "parameters": [
                    {
                        "name": "uuid",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/OidcProvider"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Provider updated successfully"
                    },
                    "404": {
                        "description": "Provider not found"
                    }
                }
            }
        },
        "/api/admin/permissions": {
            "get": {
                "tags": [
                    "Admin - Permissions"
                ],
                "summary": "Get all permissions",
                "description": "Retrieve a paginated list of all permissions with optional search functionality and role filtering.",
                "operationId": "d4ca8b69fbaf32c1384637db7d2f9d7f",
                "parameters": [
                    {
                        "name": "page",
                        "in": "query",
                        "description": "Page number for pagination",
                        "required": false,
                        "schema": {
                            "type": "integer",
                            "default": 1,
                            "minimum": 1
                        }
                    },
                    {
                        "name": "limit",
                        "in": "query",
                        "description": "Number of records per page",
                        "required": false,
                        "schema": {
                            "type": "integer",
                            "default": 10,
                            "maximum": 100,
                            "minimum": 1
                        }
                    },
                    {
                        "name": "search",
                        "in": "query",
                        "description": "Search term to filter permissions by permission name",
                        "required": false,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "role_id",
                        "in": "query",
                        "description": "Filter permissions by specific role ID",
                        "required": false,
                        "schema": {
                            "type": "integer",
                            "minimum": 1
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Permissions retrieved successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "permissions": {
                                            "type": "array",
                                            "items": {
                                                "$ref": "#/components/schemas/Permission"
                                            }
                                        },
                                        "pagination": {
                                            "$ref": "#/components/schemas/PermissionPagination"
                                        },
                                        "search": {
                                            "properties": {
                                                "query": {
                                                    "type": "string"
                                                },
                                                "has_results": {
                                                    "type": "boolean"
                                                }
                                            },
                                            "type": "object"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "401": {
                        "description": "Unauthorized"
                    },
                    "403": {
                        "description": "Forbidden - Insufficient permissions"
                    }
                }
            },
            "put": {
                "tags": [
                    "Admin - Permissions"
                ],
                "summary": "Create new permission",
                "description": "Create a new permission for a specific role. Validates role ID and permission name format.",
                "operationId": "7b2fd88ed257797563bfe103e718f641",
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/PermissionCreate"
                            }
                        }
                    }
                },
                "responses": {
                    "201": {
                        "description": "Permission created successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "permission": {
                                            "$ref": "#/components/schemas/Permission"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request - Invalid JSON, missing required fields, invalid data types, or validation errors"
                    },
                    "401": {
                        "description": "Unauthorized"
                    },
                    "403": {
                        "description": "Forbidden - Insufficient permissions"
                    },
                    "500": {
                        "description": "Internal server error - Failed to create permission"
                    }
                }
            }
        },
        "/api/admin/permissions/{id}": {
            "get": {
                "tags": [
                    "Admin - Permissions"
                ],
                "summary": "Get permission by ID",
                "description": "Retrieve a specific permission by its ID.",
                "operationId": "d624f4bea9ef90421706a61cdbdc40db",
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "description": "Permission ID",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Permission retrieved successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "permission": {
                                            "$ref": "#/components/schemas/Permission"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request - Invalid permission ID"
                    },
                    "401": {
                        "description": "Unauthorized"
                    },
                    "403": {
                        "description": "Forbidden - Insufficient permissions"
                    },
                    "404": {
                        "description": "Permission not found"
                    }
                }
            },
            "delete": {
                "tags": [
                    "Admin - Permissions"
                ],
                "summary": "Delete permission",
                "description": "Permanently delete a permission from the database. This action cannot be undone.",
                "operationId": "429ae2501f193304c5aaadae8251308d",
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "description": "Permission ID",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Permission deleted successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "message": {
                                            "description": "Success message",
                                            "type": "string"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request - Invalid permission ID"
                    },
                    "401": {
                        "description": "Unauthorized"
                    },
                    "403": {
                        "description": "Forbidden - Insufficient permissions"
                    },
                    "404": {
                        "description": "Permission not found"
                    },
                    "500": {
                        "description": "Internal server error - Failed to delete permission"
                    }
                }
            },
            "patch": {
                "tags": [
                    "Admin - Permissions"
                ],
                "summary": "Update permission",
                "description": "Update an existing permission. Only provided fields will be updated. Validates role ID and permission name format.",
                "operationId": "9d86cdccc9531044c3950c8e0415102d",
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "description": "Permission ID",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/PermissionUpdate"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Permission updated successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "permission": {
                                            "$ref": "#/components/schemas/Permission"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request - Invalid JSON, no data provided, invalid data types, or validation errors"
                    },
                    "401": {
                        "description": "Unauthorized"
                    },
                    "403": {
                        "description": "Forbidden - Insufficient permissions"
                    },
                    "404": {
                        "description": "Permission not found"
                    },
                    "500": {
                        "description": "Internal server error - Failed to update permission"
                    }
                }
            }
        },
        "/api/admin/plugin-manager": {
            "get": {
                "tags": [
                    "Admin - Plugin Manager"
                ],
                "summary": "Get all plugins",
                "description": "Retrieve a list of all installed plugins with their configuration, status, dependencies, and file information. Only available in developer mode.",
                "operationId": "d8b7d5d01d0d9fed2dd61b25b61fb0c0",
                "responses": {
                    "200": {
                        "description": "Plugins retrieved successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "array",
                                    "items": {
                                        "$ref": "#/components/schemas/Plugin"
                                    }
                                }
                            }
                        }
                    },
                    "401": {
                        "description": "Unauthorized"
                    },
                    "403": {
                        "description": "Forbidden - Developer mode not enabled or insufficient permissions"
                    },
                    "500": {
                        "description": "Internal server error - Failed to fetch plugins"
                    }
                }
            },
            "post": {
                "tags": [
                    "Admin - Plugin Manager"
                ],
                "summary": "Create new plugin",
                "description": "Create a new plugin with complete directory structure, configuration files, and example code. Only available in developer mode.",
                "operationId": "cab41bcd2c75e85d8fe9d74b6b287caa",
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/PluginCreate"
                            }
                        }
                    }
                },
                "responses": {
                    "201": {
                        "description": "Plugin created successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "identifier": {
                                            "description": "Plugin identifier",
                                            "type": "string"
                                        },
                                        "path": {
                                            "description": "Plugin directory path",
                                            "type": "string"
                                        },
                                        "files_created": {
                                            "type": "array",
                                            "items": {
                                                "properties": {
                                                    "name": {
                                                        "type": "string"
                                                    },
                                                    "path": {
                                                        "type": "string"
                                                    },
                                                    "size": {
                                                        "type": "integer"
                                                    },
                                                    "modified": {
                                                        "type": "string",
                                                        "format": "date-time"
                                                    },
                                                    "type": {
                                                        "type": "string"
                                                    }
                                                },
                                                "type": "object"
                                            }
                                        },
                                        "migration_result": {
                                            "properties": {
                                                "executed": {
                                                    "type": "integer"
                                                },
                                                "skipped": {
                                                    "type": "integer"
                                                },
                                                "failed": {
                                                    "type": "integer"
                                                },
                                                "lines": {
                                                    "type": "array",
                                                    "items": {
                                                        "type": "string"
                                                    }
                                                }
                                            },
                                            "type": "object"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request - Missing required fields, invalid identifier, or validation errors"
                    },
                    "401": {
                        "description": "Unauthorized"
                    },
                    "403": {
                        "description": "Forbidden - Developer mode not enabled or insufficient permissions"
                    },
                    "409": {
                        "description": "Conflict - Plugin already exists"
                    },
                    "500": {
                        "description": "Internal server error - Failed to create plugin"
                    }
                }
            }
        },
        "/api/admin/plugin-manager/{identifier}": {
            "get": {
                "tags": [
                    "Admin - Plugin Manager"
                ],
                "summary": "Get plugin details",
                "description": "Retrieve detailed information about a specific plugin including configuration, status, dependencies, settings, and files. Only available in developer mode.",
                "operationId": "7eff82d5b632ac296dba8bebbcf2abe5",
                "parameters": [
                    {
                        "name": "identifier",
                        "in": "path",
                        "description": "Plugin identifier",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Plugin details retrieved successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Plugin"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request - Invalid plugin identifier"
                    },
                    "401": {
                        "description": "Unauthorized"
                    },
                    "403": {
                        "description": "Forbidden - Developer mode not enabled or insufficient permissions"
                    },
                    "404": {
                        "description": "Plugin not found"
                    },
                    "500": {
                        "description": "Internal server error - Failed to fetch plugin details"
                    }
                }
            },
            "put": {
                "tags": [
                    "Admin - Plugin Manager"
                ],
                "summary": "Update plugin configuration",
                "description": "Update an existing plugin's configuration including metadata, dependencies, and configuration schema. Only available in developer mode.",
                "operationId": "0b0279bb756da204bdf96cd75350342e",
                "parameters": [
                    {
                        "name": "identifier",
                        "in": "path",
                        "description": "Plugin identifier",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/PluginUpdate"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Plugin updated successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "identifier": {
                                            "description": "Plugin identifier",
                                            "type": "string"
                                        },
                                        "config": {
                                            "$ref": "#/components/schemas/Plugin"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request - Invalid plugin identifier, invalid configuration, or validation errors"
                    },
                    "401": {
                        "description": "Unauthorized"
                    },
                    "403": {
                        "description": "Forbidden - Developer mode not enabled or insufficient permissions"
                    },
                    "404": {
                        "description": "Plugin not found"
                    },
                    "500": {
                        "description": "Internal server error - Failed to update plugin"
                    }
                }
            }
        },
        "/api/admin/plugin-manager/{identifier}/settings": {
            "patch": {
                "tags": [
                    "Admin - Plugin Manager"
                ],
                "summary": "Update plugin settings",
                "description": "Update plugin-specific settings by providing key-value pairs. Only available in developer mode.",
                "operationId": "3d5c6a8f7c395bbc96f0f2cee5a142a7",
                "parameters": [
                    {
                        "name": "identifier",
                        "in": "path",
                        "description": "Plugin identifier",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/PluginSettingsUpdate"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Plugin settings updated successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "identifier": {
                                            "description": "Plugin identifier",
                                            "type": "string"
                                        },
                                        "updated_settings": {
                                            "description": "List of updated setting keys",
                                            "type": "array",
                                            "items": {
                                                "type": "string"
                                            }
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request - Invalid plugin identifier or missing settings data"
                    },
                    "401": {
                        "description": "Unauthorized"
                    },
                    "403": {
                        "description": "Forbidden - Developer mode not enabled or insufficient permissions"
                    },
                    "500": {
                        "description": "Internal server error - Failed to update plugin settings"
                    }
                }
            }
        },
        "/api/admin/plugin-manager/flags": {
            "get": {
                "tags": [
                    "Admin - Plugin Manager"
                ],
                "summary": "Get available plugin flags",
                "description": "Retrieve a list of all available plugin flags that can be used when creating or updating plugins.",
                "operationId": "7d95eece63d32eff14b49e29df1c34a7",
                "responses": {
                    "200": {
                        "description": "Available flags retrieved successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "array",
                                    "items": {
                                        "type": "string"
                                    }
                                }
                            }
                        }
                    },
                    "401": {
                        "description": "Unauthorized"
                    },
                    "403": {
                        "description": "Forbidden - Insufficient permissions"
                    },
                    "500": {
                        "description": "Internal server error - Failed to fetch flags"
                    }
                }
            }
        },
        "/api/admin/plugin-manager/{identifier}/validate": {
            "get": {
                "tags": [
                    "Admin - Plugin Manager"
                ],
                "summary": "Validate plugin",
                "description": "Validate a plugin's configuration, dependencies, required configs, identifier, flags, and file structure. Only available in developer mode.",
                "operationId": "b3ac007b10002a3a76fdcb7d1ae97023",
                "parameters": [
                    {
                        "name": "identifier",
                        "in": "path",
                        "description": "Plugin identifier",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Plugin validation completed",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/PluginValidation"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request - Invalid plugin identifier"
                    },
                    "401": {
                        "description": "Unauthorized"
                    },
                    "403": {
                        "description": "Forbidden - Developer mode not enabled or insufficient permissions"
                    },
                    "404": {
                        "description": "Plugin not found"
                    },
                    "500": {
                        "description": "Internal server error - Failed to validate plugin"
                    }
                }
            }
        },
        "/api/admin/plugin-tools/create-file": {
            "post": {
                "tags": [
                    "Admin - Plugin Manager - Dev Tools"
                ],
                "summary": "Create plugin file",
                "description": "Create various types of plugin files including migrations, cron jobs, CLI commands, or upload public files. Only available in developer mode.",
                "operationId": "335609bcd4753115b8a1f69a1172acbe",
                "requestBody": {
                    "required": true,
                    "content": {
                        "multipart/form-data": {
                            "schema": {
                                "$ref": "#/components/schemas/PluginFileCreate"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Plugin file created successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "success": {
                                            "description": "Whether the operation was successful",
                                            "type": "boolean"
                                        },
                                        "filename": {
                                            "description": "Created file name",
                                            "type": "string"
                                        },
                                        "filepath": {
                                            "description": "Full file path",
                                            "type": "string"
                                        },
                                        "type": {
                                            "description": "File type created",
                                            "type": "string"
                                        },
                                        "original_name": {
                                            "description": "Original file name (for uploads)",
                                            "type": "string"
                                        },
                                        "size": {
                                            "description": "File size in bytes",
                                            "type": "integer"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request - Missing required fields, invalid file type, or validation errors"
                    },
                    "401": {
                        "description": "Unauthorized"
                    },
                    "403": {
                        "description": "Forbidden - Developer mode not enabled or insufficient permissions"
                    },
                    "404": {
                        "description": "Plugin not found"
                    },
                    "500": {
                        "description": "Internal server error - Failed to create plugin file"
                    }
                }
            }
        },
        "/api/admin/plugin-tools/creation-options": {
            "get": {
                "tags": [
                    "Admin - Plugin Manager - Dev Tools"
                ],
                "summary": "Get plugin creation options",
                "description": "Retrieve available options for creating different types of plugin files including field definitions and validation rules. Only available in developer mode.",
                "operationId": "cd30a5606f38086703b63f8459ced177",
                "responses": {
                    "200": {
                        "description": "Plugin creation options retrieved successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/PluginCreationOptions"
                                }
                            }
                        }
                    },
                    "401": {
                        "description": "Unauthorized"
                    },
                    "403": {
                        "description": "Forbidden - Developer mode not enabled or insufficient permissions"
                    },
                    "500": {
                        "description": "Internal server error - Failed to get creation options"
                    }
                }
            }
        },
        "/api/admin/plugin-manager/{identifier}/widgets": {
            "get": {
                "tags": [
                    "Admin - Plugin Manager"
                ],
                "summary": "Get plugin widgets",
                "description": "Retrieve all widgets configured for a specific plugin. Only available in developer mode.",
                "operationId": "eb1568c9a775b2c3196068e0c39ae85f",
                "parameters": [
                    {
                        "name": "identifier",
                        "in": "path",
                        "description": "Plugin identifier",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Widgets retrieved successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "array",
                                    "items": {
                                        "$ref": "#/components/schemas/PluginWidgetConfig"
                                    }
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request - Invalid plugin identifier"
                    },
                    "401": {
                        "description": "Unauthorized"
                    },
                    "403": {
                        "description": "Forbidden - Developer mode not enabled or insufficient permissions"
                    },
                    "404": {
                        "description": "Plugin not found"
                    },
                    "500": {
                        "description": "Internal server error - Failed to fetch widgets"
                    }
                }
            },
            "put": {
                "tags": [
                    "Admin - Plugin Manager"
                ],
                "summary": "Update plugin widgets",
                "description": "Update the widgets configuration for a plugin. Replaces the entire widgets.json file. Only available in developer mode.",
                "operationId": "7cec617d0007c874ac3b3b03704de90e",
                "parameters": [
                    {
                        "name": "identifier",
                        "in": "path",
                        "description": "Plugin identifier",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "type": "array",
                                "items": {
                                    "$ref": "#/components/schemas/PluginWidgetConfig"
                                }
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Widgets updated successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "identifier": {
                                            "description": "Plugin identifier",
                                            "type": "string"
                                        },
                                        "widgets": {
                                            "description": "Updated widgets",
                                            "type": "array",
                                            "items": {
                                                "$ref": "#/components/schemas/PluginWidgetConfig"
                                            }
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request - Invalid widget configuration"
                    },
                    "401": {
                        "description": "Unauthorized"
                    },
                    "403": {
                        "description": "Forbidden - Developer mode not enabled or insufficient permissions"
                    },
                    "404": {
                        "description": "Plugin not found"
                    },
                    "500": {
                        "description": "Internal server error - Failed to update widgets"
                    }
                }
            }
        },
        "/api/admin/plugin-manager/{identifier}/widgets/{widget_id}": {
            "delete": {
                "tags": [
                    "Admin - Plugin Manager"
                ],
                "summary": "Delete plugin widget",
                "description": "Delete a specific widget from a plugin. Removes the widget from widgets.json and optionally deletes the component file. Only available in developer mode.",
                "operationId": "b6371e7dc4a194beb080c6be4b523531",
                "parameters": [
                    {
                        "name": "identifier",
                        "in": "path",
                        "description": "Plugin identifier",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "widget_id",
                        "in": "path",
                        "description": "Widget identifier",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Widget deleted successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "identifier": {
                                            "description": "Plugin identifier",
                                            "type": "string"
                                        },
                                        "widget_id": {
                                            "description": "Deleted widget ID",
                                            "type": "string"
                                        },
                                        "component_deleted": {
                                            "description": "Whether component file was deleted",
                                            "type": "boolean"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request - Invalid widget identifier"
                    },
                    "401": {
                        "description": "Unauthorized"
                    },
                    "403": {
                        "description": "Forbidden - Developer mode not enabled or insufficient permissions"
                    },
                    "404": {
                        "description": "Plugin or widget not found"
                    },
                    "500": {
                        "description": "Internal server error - Failed to delete widget"
                    }
                }
            }
        },
        "/api/admin/plugins": {
            "get": {
                "tags": [
                    "Admin - Plugins"
                ],
                "summary": "Get all installed plugins",
                "description": "Retrieve a list of all installed plugins with their configuration, status, dependencies, and missing configurations.",
                "operationId": "42a92b906c82924d03ee90959febb3f7",
                "responses": {
                    "200": {
                        "description": "Plugins retrieved successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "plugins": {
                                            "type": "object",
                                            "additionalProperties": {
                                                "$ref": "#/components/schemas/PluginInfo"
                                            }
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "401": {
                        "description": "Unauthorized"
                    },
                    "403": {
                        "description": "Forbidden - Insufficient permissions"
                    },
                    "500": {
                        "description": "Internal server error - Failed to fetch plugins"
                    }
                }
            }
        },
        "/api/admin/plugins/{identifier}/config": {
            "get": {
                "tags": [
                    "Admin - Plugins"
                ],
                "summary": "Get plugin configuration",
                "description": "Retrieve detailed configuration information for a specific plugin including settings and configuration schema.",
                "operationId": "1ea0903d189a5312487e8d0b6b3c508d",
                "parameters": [
                    {
                        "name": "identifier",
                        "in": "path",
                        "description": "Plugin identifier",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Plugin configuration retrieved successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "config": {
                                            "$ref": "#/components/schemas/PluginInfo"
                                        },
                                        "plugin": {
                                            "$ref": "#/components/schemas/PluginInfo"
                                        },
                                        "settings": {
                                            "description": "Plugin settings key-value pairs",
                                            "type": "object",
                                            "additionalProperties": {
                                                "type": "string"
                                            }
                                        },
                                        "configSchema": {
                                            "description": "Plugin configuration schema",
                                            "type": "array",
                                            "items": {
                                                "type": "object"
                                            }
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request - Invalid plugin identifier"
                    },
                    "401": {
                        "description": "Unauthorized"
                    },
                    "403": {
                        "description": "Forbidden - Insufficient permissions"
                    },
                    "404": {
                        "description": "Plugin not found"
                    },
                    "500": {
                        "description": "Internal server error - Failed to fetch plugin configuration"
                    }
                }
            }
        },
        "/api/admin/plugins/{identifier}/visibility": {
            "get": {
                "tags": [
                    "Admin - Plugins"
                ],
                "summary": "Get plugin frontend visibility controls",
                "description": "List widgets, sidebar routes, public pages, and UI-pack entries that admins can hide for a plugin.",
                "operationId": "1bba920cc9c904bc938f5548d7418d3a",
                "parameters": [
                    {
                        "name": "identifier",
                        "in": "path",
                        "description": "Plugin identifier",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Plugin visibility controls retrieved successfully"
                    },
                    "404": {
                        "description": "Plugin not found"
                    }
                }
            }
        },
        "/api/admin/plugins/{identifier}/settings/set": {
            "post": {
                "tags": [
                    "Admin - Plugins"
                ],
                "summary": "Set plugin setting",
                "description": "Set a specific setting value for a plugin. Logs the activity and emits events for tracking.",
                "operationId": "e06dae624c49faba78d6b9f49b9d57b1",
                "parameters": [
                    {
                        "name": "identifier",
                        "in": "path",
                        "description": "Plugin identifier",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/PluginSettingUpdate"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Plugin setting updated successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "identifier": {
                                            "description": "Plugin identifier",
                                            "type": "string"
                                        },
                                        "key": {
                                            "description": "Setting key",
                                            "type": "string"
                                        },
                                        "value": {
                                            "description": "Setting value",
                                            "type": "string"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request - Invalid JSON, missing key/value, or invalid plugin identifier"
                    },
                    "401": {
                        "description": "Unauthorized"
                    },
                    "403": {
                        "description": "Forbidden - Insufficient permissions"
                    },
                    "404": {
                        "description": "Plugin not found"
                    },
                    "500": {
                        "description": "Internal server error - Failed to update setting"
                    }
                }
            }
        },
        "/api/admin/plugins/{identifier}/settings/remove": {
            "post": {
                "tags": [
                    "Admin - Plugins"
                ],
                "summary": "Remove plugin setting",
                "description": "Remove a specific setting from a plugin. Logs the activity and emits events for tracking.",
                "operationId": "18e62cad1ba1cbde81898fa901be679c",
                "parameters": [
                    {
                        "name": "identifier",
                        "in": "path",
                        "description": "Plugin identifier",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/PluginSettingRemove"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Plugin setting removed successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "identifier": {
                                            "description": "Plugin identifier",
                                            "type": "string"
                                        },
                                        "key": {
                                            "description": "Removed setting key",
                                            "type": "string"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request - Invalid JSON, missing key, or invalid plugin identifier"
                    },
                    "401": {
                        "description": "Unauthorized"
                    },
                    "403": {
                        "description": "Forbidden - Insufficient permissions"
                    },
                    "404": {
                        "description": "Plugin not found"
                    },
                    "500": {
                        "description": "Internal server error - Failed to remove setting"
                    }
                }
            }
        },
        "/api/admin/plugins/{identifier}/spell-restrictions": {
            "post": {
                "tags": [
                    "Admin - Plugins"
                ],
                "summary": "Set plugin spell restrictions for server sidebar",
                "description": "Configure which server spells (server types) a plugin's sidebar items should be shown on. If empty, plugin shows on all server types. If set, plugin only shows on specified spell IDs.",
                "operationId": "40ba2a5ea6a85ac4b7225163e167a88e",
                "parameters": [
                    {
                        "name": "identifier",
                        "in": "path",
                        "description": "Plugin identifier",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "properties": {
                                    "allowedOnlyOnSpells": {
                                        "description": "Array of spell IDs where this plugin should be shown. Empty array means show on all spells.",
                                        "type": "array",
                                        "items": {
                                            "type": "integer"
                                        }
                                    }
                                },
                                "type": "object"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Spell restrictions updated successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "identifier": {
                                            "description": "Plugin identifier",
                                            "type": "string"
                                        },
                                        "allowedOnlyOnSpells": {
                                            "description": "Updated spell IDs",
                                            "type": "array",
                                            "items": {
                                                "type": "integer"
                                            }
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request - Invalid JSON or invalid plugin identifier"
                    },
                    "401": {
                        "description": "Unauthorized"
                    },
                    "403": {
                        "description": "Forbidden - Insufficient permissions"
                    },
                    "404": {
                        "description": "Plugin not found"
                    },
                    "500": {
                        "description": "Internal server error - Failed to update spell restrictions"
                    }
                }
            }
        },
        "/api/admin/plugins/{identifier}/uninstall": {
            "post": {
                "tags": [
                    "Admin - Plugins"
                ],
                "summary": "Uninstall addon",
                "description": "Completely remove an addon from the system including its files, public assets, and database migrations. Calls the plugin uninstall hook if available.",
                "operationId": "47fb3c6e686a531c121dbb976e3a383e",
                "parameters": [
                    {
                        "name": "identifier",
                        "in": "path",
                        "description": "Addon identifier to uninstall",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Addon uninstalled successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "message": {
                                            "description": "Success message",
                                            "type": "string"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request - Invalid addon identifier"
                    },
                    "401": {
                        "description": "Unauthorized"
                    },
                    "403": {
                        "description": "Forbidden - Insufficient permissions"
                    },
                    "404": {
                        "description": "Addon not found"
                    },
                    "500": {
                        "description": "Internal server error - Failed to uninstall addon"
                    }
                }
            }
        },
        "/api/admin/plugins/upload/install": {
            "post": {
                "tags": [
                    "Admin - Plugins"
                ],
                "summary": "Install addon from uploaded file",
                "description": "Upload and install an addon from a .fpa file. Extracts the password-protected archive and installs the addon.",
                "operationId": "18525f20b0f02424d4f069666a9088ec",
                "requestBody": {
                    "required": true,
                    "content": {
                        "multipart/form-data": {
                            "schema": {
                                "required": [
                                    "file"
                                ],
                                "properties": {
                                    "file": {
                                        "description": "Addon .fpa file to upload",
                                        "type": "string",
                                        "format": "binary"
                                    }
                                },
                                "type": "object"
                            }
                        }
                    }
                },
                "responses": {
                    "201": {
                        "description": "Addon installed successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "identifier": {
                                            "description": "Installed addon identifier",
                                            "type": "string"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request - No file uploaded, file upload error, or invalid file type"
                    },
                    "401": {
                        "description": "Unauthorized"
                    },
                    "403": {
                        "description": "Forbidden - Insufficient permissions"
                    },
                    "409": {
                        "description": "Conflict - Addon already installed"
                    },
                    "422": {
                        "description": "Unprocessable Entity - Failed to extract addon package or migrations failed"
                    },
                    "500": {
                        "description": "Internal server error - Failed to install addon"
                    }
                }
            }
        },
        "/api/admin/plugins/upload/install-url": {
            "post": {
                "tags": [
                    "Admin - Plugins"
                ],
                "summary": "Install addon from URL",
                "description": "Download and install an addon from a remote URL. Downloads the file and extracts the password-protected archive.",
                "operationId": "97f283f25b964a193a0c2d1c628e984a",
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/UrlInstall"
                            }
                        }
                    }
                },
                "responses": {
                    "201": {
                        "description": "Addon installed successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "identifier": {
                                            "description": "Installed addon identifier",
                                            "type": "string"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request - Invalid URL format"
                    },
                    "401": {
                        "description": "Unauthorized"
                    },
                    "403": {
                        "description": "Forbidden - Insufficient permissions"
                    },
                    "409": {
                        "description": "Conflict - Addon already installed"
                    },
                    "422": {
                        "description": "Unprocessable Entity - Failed to extract addon package or migrations failed"
                    },
                    "500": {
                        "description": "Internal server error - Failed to install addon or download file from URL"
                    }
                }
            }
        },
        "/api/admin/plugins/{identifier}/resync-symlinks": {
            "post": {
                "tags": [
                    "Admin - Plugins"
                ],
                "summary": "Resync plugin symlinks",
                "description": "Recreate symlinks for plugin public assets and frontend components without reinstalling the plugin. Useful when symlinks are broken or missing.",
                "operationId": "dbe7dc4670f0fe834bea2438d028a151",
                "parameters": [
                    {
                        "name": "identifier",
                        "in": "path",
                        "description": "Plugin identifier to resync symlinks for",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Symlinks resynced successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "identifier": {
                                            "description": "Plugin identifier",
                                            "type": "string"
                                        },
                                        "public_assets": {
                                            "description": "Whether public assets symlink was created",
                                            "type": "boolean"
                                        },
                                        "frontend_components": {
                                            "description": "Whether frontend components symlink was created",
                                            "type": "boolean"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request - Invalid plugin identifier"
                    },
                    "401": {
                        "description": "Unauthorized"
                    },
                    "403": {
                        "description": "Forbidden - Insufficient permissions"
                    },
                    "404": {
                        "description": "Plugin not found"
                    },
                    "500": {
                        "description": "Internal server error - Failed to resync symlinks"
                    }
                }
            }
        },
        "/api/admin/plugins/{identifier}/export": {
            "get": {
                "tags": [
                    "Admin - Plugins"
                ],
                "summary": "Export addon",
                "description": "Export an installed addon as a password-protected .fpa file for backup or distribution purposes.",
                "operationId": "8f3184b97b475ef8b6d92815bc090cf4",
                "parameters": [
                    {
                        "name": "identifier",
                        "in": "path",
                        "description": "Addon identifier to export",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Addon exported successfully",
                        "headers": {
                            "Content-Disposition": {
                                "description": "Attachment filename",
                                "schema": {
                                    "type": "string",
                                    "example": "attachment; filename=\"addon-name.fpa\""
                                }
                            }
                        },
                        "content": {
                            "application/zip": {
                                "schema": {
                                    "type": "string",
                                    "format": "binary"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request - Invalid addon identifier"
                    },
                    "401": {
                        "description": "Unauthorized"
                    },
                    "403": {
                        "description": "Forbidden - Insufficient permissions"
                    },
                    "404": {
                        "description": "Addon not found"
                    },
                    "500": {
                        "description": "Internal server error - Failed to export addon"
                    }
                }
            }
        },
        "/api/admin/pterodactyl-importer/prerequisites": {
            "get": {
                "tags": [
                    "Admin - Pterodactyl Importer"
                ],
                "summary": "Check prerequisites for Pterodactyl import",
                "description": "Verify that the panel meets the requirements for importing Pterodactyl data. Checks user count (must be <= 1), nodes (must be 0), locations (must be 0), realms (must be 0), spells (must be 0), servers (must be 0), databases (must be 0), and allocations (must be 0).",
                "operationId": "95f4e2bd0dd62ec5f7fd61e0051c62f4",
                "responses": {
                    "200": {
                        "description": "Prerequisites check completed successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "users_count": {
                                            "description": "Current number of users",
                                            "type": "integer",
                                            "example": 1
                                        },
                                        "nodes_count": {
                                            "description": "Current number of nodes",
                                            "type": "integer",
                                            "example": 0
                                        },
                                        "locations_count": {
                                            "description": "Current number of locations",
                                            "type": "integer",
                                            "example": 0
                                        },
                                        "realms_count": {
                                            "description": "Current number of realms",
                                            "type": "integer",
                                            "example": 0
                                        },
                                        "spells_count": {
                                            "description": "Current number of spells",
                                            "type": "integer",
                                            "example": 0
                                        },
                                        "servers_count": {
                                            "description": "Current number of servers",
                                            "type": "integer",
                                            "example": 0
                                        },
                                        "databases_count": {
                                            "description": "Current number of databases",
                                            "type": "integer",
                                            "example": 0
                                        },
                                        "allocations_count": {
                                            "description": "Current number of allocations",
                                            "type": "integer",
                                            "example": 0
                                        },
                                        "panel_clean": {
                                            "description": "Whether all prerequisites are met",
                                            "type": "boolean",
                                            "example": true
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "401": {
                        "description": "Unauthorized"
                    },
                    "403": {
                        "description": "Forbidden - Insufficient permissions"
                    },
                    "500": {
                        "description": "Internal server error"
                    }
                }
            }
        },
        "/api/admin/pterodactyl-importer/import": {
            "post": {
                "tags": [
                    "Admin - Pterodactyl Importer"
                ],
                "summary": "Import Pterodactyl data (deprecated)",
                "description": "Deprecated: Direct HTTP import is no longer supported. Use the external Pterodactyl Migration Agent instead.",
                "operationId": "99ae0969ad04214d2492e46eb650876c",
                "responses": {
                    "410": {
                        "description": "Deprecated - Import must be performed via the Pterodactyl Migration Agent"
                    },
                    "401": {
                        "description": "Unauthorized"
                    },
                    "403": {
                        "description": "Forbidden - Insufficient permissions"
                    },
                    "500": {
                        "description": "Internal server error"
                    }
                }
            }
        },
        "/api/admin/pterodactyl-importer/import-egg": {
            "post": {
                "tags": [
                    "Admin - Pterodactyl Importer"
                ],
                "summary": "Import Pterodactyl egg as spell",
                "description": "Import a Pterodactyl egg (with variables) as a FeatherPanel spell. Maps nest_id to realm_id and converts egg_variables to spell_variables.",
                "operationId": "3fe85b6393a477ab8c15ee88f98d8b71",
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "required": [
                                    "egg"
                                ],
                                "properties": {
                                    "egg": {
                                        "description": "Pterodactyl egg data",
                                        "properties": {
                                            "id": {
                                                "description": "Egg ID",
                                                "type": "integer"
                                            },
                                            "uuid": {
                                                "description": "Egg UUID",
                                                "type": "string"
                                            },
                                            "nest_id": {
                                                "description": "Nest ID (will be mapped to realm_id)",
                                                "type": "integer"
                                            },
                                            "author": {
                                                "description": "Egg author",
                                                "type": "string"
                                            },
                                            "name": {
                                                "description": "Egg name",
                                                "type": "string"
                                            },
                                            "description": {
                                                "description": "Egg description",
                                                "type": "string",
                                                "nullable": true
                                            },
                                            "features": {
                                                "description": "Features JSON",
                                                "type": "string",
                                                "nullable": true
                                            },
                                            "docker_images": {
                                                "description": "Docker images JSON",
                                                "type": "string",
                                                "nullable": true
                                            },
                                            "file_denylist": {
                                                "description": "File denylist JSON",
                                                "type": "string",
                                                "nullable": true
                                            },
                                            "update_url": {
                                                "description": "Update URL",
                                                "type": "string",
                                                "nullable": true
                                            },
                                            "config_files": {
                                                "description": "Config files",
                                                "type": "string",
                                                "nullable": true
                                            },
                                            "config_startup": {
                                                "description": "Config startup",
                                                "type": "string",
                                                "nullable": true
                                            },
                                            "config_logs": {
                                                "description": "Config logs",
                                                "type": "string",
                                                "nullable": true
                                            },
                                            "config_stop": {
                                                "description": "Config stop",
                                                "type": "string",
                                                "nullable": true
                                            },
                                            "startup": {
                                                "description": "Startup command",
                                                "type": "string",
                                                "nullable": true
                                            },
                                            "script_container": {
                                                "description": "Script container",
                                                "type": "string",
                                                "nullable": true
                                            },
                                            "script_entry": {
                                                "description": "Script entry point",
                                                "type": "string",
                                                "nullable": true
                                            },
                                            "script_is_privileged": {
                                                "description": "Script is privileged",
                                                "type": "boolean"
                                            },
                                            "script_install": {
                                                "description": "Installation script",
                                                "type": "string",
                                                "nullable": true
                                            },
                                            "force_outgoing_ip": {
                                                "description": "Force outgoing IP",
                                                "type": "boolean"
                                            },
                                            "config_from": {
                                                "description": "Config from egg ID",
                                                "type": "integer",
                                                "nullable": true
                                            },
                                            "copy_script_from": {
                                                "description": "Copy script from egg ID",
                                                "type": "integer",
                                                "nullable": true
                                            }
                                        },
                                        "type": "object"
                                    },
                                    "variables": {
                                        "description": "Egg variables to import",
                                        "type": "array",
                                        "items": {
                                            "properties": {
                                                "id": {
                                                    "description": "Variable ID",
                                                    "type": "integer"
                                                },
                                                "name": {
                                                    "description": "Variable name",
                                                    "type": "string"
                                                },
                                                "description": {
                                                    "description": "Variable description",
                                                    "type": "string"
                                                },
                                                "env_variable": {
                                                    "description": "Environment variable name",
                                                    "type": "string"
                                                },
                                                "default_value": {
                                                    "description": "Default value",
                                                    "type": "string"
                                                },
                                                "user_viewable": {
                                                    "description": "User viewable flag",
                                                    "type": "boolean"
                                                },
                                                "user_editable": {
                                                    "description": "User editable flag",
                                                    "type": "boolean"
                                                },
                                                "rules": {
                                                    "description": "Validation rules",
                                                    "type": "string",
                                                    "nullable": true
                                                }
                                            },
                                            "type": "object"
                                        }
                                    },
                                    "nest_to_realm_mapping": {
                                        "description": "Mapping of Pterodactyl nest_id to FeatherPanel realm_id. If not provided, will use realm_id from egg data or default to realm_id=1.",
                                        "type": "object",
                                        "additionalProperties": {
                                            "type": "integer"
                                        }
                                    }
                                },
                                "type": "object"
                            }
                        }
                    }
                },
                "responses": {
                    "201": {
                        "description": "Egg imported successfully as spell",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "spell": {
                                            "$ref": "#/components/schemas/Spell"
                                        },
                                        "variables_imported": {
                                            "description": "Number of variables imported",
                                            "type": "integer"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request - Invalid data, missing required fields, invalid realm, or UUID already exists"
                    },
                    "401": {
                        "description": "Unauthorized"
                    },
                    "403": {
                        "description": "Forbidden - Insufficient permissions"
                    },
                    "404": {
                        "description": "Realm not found"
                    },
                    "500": {
                        "description": "Internal server error"
                    }
                }
            }
        },
        "/api/admin/pterodactyl-importer/import-node": {
            "post": {
                "tags": [
                    "Admin - Pterodactyl Importer"
                ],
                "summary": "Import Pterodactyl node",
                "description": "Import a Pterodactyl node as a FeatherPanel node. Maps location_id and generates new daemon tokens.",
                "operationId": "d4cfa6f001cfb34b959d94de87c5d201",
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "required": [
                                    "node"
                                ],
                                "properties": {
                                    "node": {
                                        "description": "Pterodactyl node data",
                                        "properties": {
                                            "id": {
                                                "description": "Node ID",
                                                "type": "integer"
                                            },
                                            "uuid": {
                                                "description": "Node UUID",
                                                "type": "string"
                                            },
                                            "public": {
                                                "description": "Public node flag",
                                                "type": "boolean"
                                            },
                                            "name": {
                                                "description": "Node name",
                                                "type": "string"
                                            },
                                            "description": {
                                                "description": "Node description",
                                                "type": "string",
                                                "nullable": true
                                            },
                                            "location_id": {
                                                "description": "Location ID (will be mapped if mapping provided)",
                                                "type": "integer"
                                            },
                                            "fqdn": {
                                                "description": "Fully qualified domain name",
                                                "type": "string"
                                            },
                                            "scheme": {
                                                "description": "URL scheme (http/https)",
                                                "type": "string"
                                            },
                                            "behind_proxy": {
                                                "description": "Behind proxy flag",
                                                "type": "boolean"
                                            },
                                            "maintenance_mode": {
                                                "description": "Maintenance mode flag",
                                                "type": "boolean"
                                            },
                                            "memory": {
                                                "description": "Memory limit in MB",
                                                "type": "integer"
                                            },
                                            "memory_overallocate": {
                                                "description": "Memory overallocation percentage",
                                                "type": "integer"
                                            },
                                            "disk": {
                                                "description": "Disk limit in MB",
                                                "type": "integer"
                                            },
                                            "disk_overallocate": {
                                                "description": "Disk overallocation percentage",
                                                "type": "integer"
                                            },
                                            "upload_size": {
                                                "description": "Upload size limit in MB",
                                                "type": "integer"
                                            },
                                            "daemonListen": {
                                                "description": "Daemon listen port",
                                                "type": "integer"
                                            },
                                            "daemonSFTP": {
                                                "description": "Daemon SFTP port",
                                                "type": "integer"
                                            },
                                            "daemonBase": {
                                                "description": "Daemon base directory",
                                                "type": "string"
                                            }
                                        },
                                        "type": "object"
                                    },
                                    "location_to_location_mapping": {
                                        "description": "Mapping of Pterodactyl location_id to FeatherPanel location_id. If not provided, will use location_id from node data.",
                                        "type": "object",
                                        "additionalProperties": {
                                            "type": "integer"
                                        }
                                    },
                                    "generate_new_tokens": {
                                        "description": "Whether to generate new daemon tokens (default: true). Set to false to preserve original tokens (not recommended).",
                                        "type": "boolean",
                                        "default": true
                                    }
                                },
                                "type": "object"
                            }
                        }
                    }
                },
                "responses": {
                    "201": {
                        "description": "Node imported successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "node": {
                                            "$ref": "#/components/schemas/Node"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request - Invalid data, missing required fields, invalid location, or UUID already exists"
                    },
                    "401": {
                        "description": "Unauthorized"
                    },
                    "403": {
                        "description": "Forbidden - Insufficient permissions"
                    },
                    "404": {
                        "description": "Location not found"
                    },
                    "500": {
                        "description": "Internal server error"
                    }
                }
            }
        },
        "/api/admin/pterodactyl-importer/import-allocation": {
            "post": {
                "tags": [
                    "Admin - Pterodactyl Importer"
                ],
                "summary": "Import Pterodactyl allocation",
                "description": "Import a Pterodactyl allocation as a FeatherPanel allocation. Maps node_id and allows unknown/non-existent server_id (will be set to null).",
                "operationId": "aa97e4216a05d80a9318b5265aad635d",
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "required": [
                                    "allocation"
                                ],
                                "properties": {
                                    "allocation": {
                                        "description": "Pterodactyl allocation data",
                                        "properties": {
                                            "id": {
                                                "description": "Allocation ID (optional, for migrations)",
                                                "type": "integer",
                                                "nullable": true
                                            },
                                            "node_id": {
                                                "description": "Node ID (will be mapped if mapping provided)",
                                                "type": "integer"
                                            },
                                            "ip": {
                                                "description": "IP address",
                                                "type": "string"
                                            },
                                            "ip_alias": {
                                                "description": "IP alias",
                                                "type": "string",
                                                "nullable": true
                                            },
                                            "port": {
                                                "description": "Port number",
                                                "type": "integer",
                                                "maximum": 65535,
                                                "minimum": 1
                                            },
                                            "server_id": {
                                                "description": "Server ID (optional, will be set to null if unknown/non-existent)",
                                                "type": "integer",
                                                "nullable": true
                                            },
                                            "notes": {
                                                "description": "Notes",
                                                "type": "string",
                                                "nullable": true
                                            }
                                        },
                                        "type": "object"
                                    },
                                    "node_to_node_mapping": {
                                        "description": "Mapping of Pterodactyl node_id to FeatherPanel node_id. If not provided, will use node_id from allocation data.",
                                        "type": "object",
                                        "additionalProperties": {
                                            "type": "integer"
                                        }
                                    },
                                    "server_to_server_mapping": {
                                        "description": "Mapping of Pterodactyl server_id to FeatherPanel server_id. If not provided, server_id will be used as-is (no existence checks).",
                                        "type": "object",
                                        "additionalProperties": {
                                            "type": "integer"
                                        }
                                    }
                                },
                                "type": "object"
                            }
                        }
                    }
                },
                "responses": {
                    "201": {
                        "description": "Allocation imported successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "allocation": {
                                            "description": "Created allocation data",
                                            "type": "object"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request - Invalid data, missing required fields, invalid node, or IP/port already exists"
                    },
                    "401": {
                        "description": "Unauthorized"
                    },
                    "403": {
                        "description": "Forbidden - Insufficient permissions"
                    },
                    "404": {
                        "description": "Node not found"
                    },
                    "500": {
                        "description": "Internal server error"
                    }
                }
            }
        },
        "/api/admin/pterodactyl-importer/import-user": {
            "post": {
                "tags": [
                    "Admin - Pterodactyl Importer"
                ],
                "summary": "Import Pterodactyl user",
                "description": "Import a Pterodactyl user as a FeatherPanel user. Maps fields and preserves bcrypt passwords. ID 1 is reserved for the main user and will be skipped.",
                "operationId": "56042845c8e4b09781a8e26cb47bc2f2",
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "required": [
                                    "user"
                                ],
                                "properties": {
                                    "user": {
                                        "description": "Pterodactyl user data",
                                        "properties": {
                                            "id": {
                                                "description": "User ID (optional, for migrations). ID 1 is reserved and will be skipped.",
                                                "type": "integer",
                                                "nullable": true
                                            },
                                            "uuid": {
                                                "description": "User UUID",
                                                "type": "string"
                                            },
                                            "username": {
                                                "description": "Username",
                                                "type": "string"
                                            },
                                            "email": {
                                                "description": "Email address",
                                                "type": "string",
                                                "format": "email"
                                            },
                                            "name_first": {
                                                "description": "First name (Pterodactyl field)",
                                                "type": "string",
                                                "nullable": true
                                            },
                                            "name_last": {
                                                "description": "Last name (Pterodactyl field)",
                                                "type": "string",
                                                "nullable": true
                                            },
                                            "password": {
                                                "description": "Bcrypt hashed password (compatible with FeatherPanel)",
                                                "type": "string"
                                            },
                                            "remember_token": {
                                                "description": "Remember token",
                                                "type": "string",
                                                "nullable": true
                                            },
                                            "external_id": {
                                                "description": "External ID",
                                                "type": "string",
                                                "nullable": true
                                            },
                                            "root_admin": {
                                                "description": "Root admin flag",
                                                "type": "boolean"
                                            },
                                            "use_totp": {
                                                "description": "TOTP enabled flag",
                                                "type": "boolean"
                                            },
                                            "totp_secret": {
                                                "description": "TOTP secret",
                                                "type": "string",
                                                "nullable": true
                                            },
                                            "language": {
                                                "description": "Language code",
                                                "type": "string",
                                                "default": "en",
                                                "nullable": true
                                            }
                                        },
                                        "type": "object"
                                    }
                                },
                                "type": "object"
                            }
                        }
                    }
                },
                "responses": {
                    "201": {
                        "description": "User imported successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "user": {
                                            "description": "Created user data",
                                            "type": "object"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request - Invalid data, missing required fields, duplicate email/username, or ID 1 provided"
                    },
                    "401": {
                        "description": "Unauthorized"
                    },
                    "403": {
                        "description": "Forbidden - Insufficient permissions"
                    },
                    "409": {
                        "description": "Conflict - User with email/username/ID already exists"
                    },
                    "500": {
                        "description": "Internal server error"
                    }
                }
            }
        },
        "/api/admin/pterodactyl-importer/import-ssh-key": {
            "post": {
                "tags": [
                    "Admin - Pterodactyl Importer"
                ],
                "summary": "Import Pterodactyl SSH key",
                "description": "Import a Pterodactyl SSH key as a FeatherPanel SSH key. Maps user_id and preserves fingerprint.",
                "operationId": "a0abdfa679dca7c654447cadc0339462",
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "required": [
                                    "ssh_key"
                                ],
                                "properties": {
                                    "ssh_key": {
                                        "description": "Pterodactyl SSH key data",
                                        "properties": {
                                            "id": {
                                                "description": "SSH key ID (optional, for migrations)",
                                                "type": "integer",
                                                "example": 1,
                                                "nullable": true
                                            },
                                            "user_id": {
                                                "description": "User ID (will be mapped if mapping provided)",
                                                "type": "integer"
                                            },
                                            "name": {
                                                "description": "SSH key name",
                                                "type": "string"
                                            },
                                            "public_key": {
                                                "description": "SSH public key",
                                                "type": "string"
                                            },
                                            "fingerprint": {
                                                "description": "SSH key fingerprint (will be generated if not provided)",
                                                "type": "string",
                                                "nullable": true
                                            }
                                        },
                                        "type": "object"
                                    },
                                    "user_to_user_mapping": {
                                        "description": "Mapping of Pterodactyl user_id to FeatherPanel user_id. If not provided, will use user_id from SSH key data.",
                                        "type": "object",
                                        "additionalProperties": {
                                            "type": "integer"
                                        }
                                    }
                                },
                                "type": "object"
                            }
                        }
                    }
                },
                "responses": {
                    "201": {
                        "description": "SSH key imported successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "ssh_key": {
                                            "description": "Created SSH key data",
                                            "type": "object"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request - Invalid data, missing required fields, invalid user, duplicate fingerprint, or invalid SSH key format"
                    },
                    "401": {
                        "description": "Unauthorized"
                    },
                    "403": {
                        "description": "Forbidden - Insufficient permissions"
                    },
                    "404": {
                        "description": "User not found"
                    },
                    "409": {
                        "description": "Conflict - SSH key with fingerprint already exists"
                    },
                    "500": {
                        "description": "Internal server error"
                    }
                }
            }
        },
        "/api/admin/pterodactyl-importer/import-server": {
            "post": {
                "tags": [
                    "Admin - Pterodactyl Importer"
                ],
                "summary": "Import Pterodactyl server",
                "description": "Import a Pterodactyl server as a FeatherPanel server. Maps nest_id to realms_id, egg_id to spell_id, and preserves server variables. Skips Wings API calls.",
                "operationId": "4e58d3a1d665b84ada668ce381ecd7f4",
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "required": [
                                    "server"
                                ],
                                "properties": {
                                    "server": {
                                        "description": "Pterodactyl server data",
                                        "properties": {
                                            "id": {
                                                "description": "Server ID (optional, for migrations)",
                                                "type": "integer",
                                                "example": 2,
                                                "nullable": true
                                            },
                                            "uuid": {
                                                "description": "Server UUID",
                                                "type": "string"
                                            },
                                            "uuidShort": {
                                                "description": "Short server UUID",
                                                "type": "string"
                                            },
                                            "node_id": {
                                                "description": "Node ID (will be mapped)",
                                                "type": "integer"
                                            },
                                            "name": {
                                                "description": "Server name",
                                                "type": "string"
                                            },
                                            "description": {
                                                "description": "Server description",
                                                "type": "string",
                                                "nullable": true
                                            },
                                            "status": {
                                                "description": "Server status",
                                                "type": "string",
                                                "nullable": true
                                            },
                                            "skip_scripts": {
                                                "description": "Skip scripts flag",
                                                "type": "boolean"
                                            },
                                            "owner_id": {
                                                "description": "Owner user ID (will be mapped)",
                                                "type": "integer"
                                            },
                                            "memory": {
                                                "description": "Memory limit in MB",
                                                "type": "integer"
                                            },
                                            "swap": {
                                                "description": "Swap limit in MB",
                                                "type": "integer"
                                            },
                                            "disk": {
                                                "description": "Disk limit in MB",
                                                "type": "integer"
                                            },
                                            "io": {
                                                "description": "IO limit",
                                                "type": "integer"
                                            },
                                            "cpu": {
                                                "description": "CPU limit percentage",
                                                "type": "integer"
                                            },
                                            "threads": {
                                                "description": "CPU threads",
                                                "type": "string",
                                                "nullable": true
                                            },
                                            "oom_disabled": {
                                                "description": "OOM disabled flag (maps to oom_killer)",
                                                "type": "boolean"
                                            },
                                            "allocation_id": {
                                                "description": "Allocation ID (will be mapped)",
                                                "type": "integer"
                                            },
                                            "nest_id": {
                                                "description": "Nest ID (will be mapped to realms_id)",
                                                "type": "integer"
                                            },
                                            "egg_id": {
                                                "description": "Egg ID (will be mapped to spell_id)",
                                                "type": "integer"
                                            },
                                            "startup": {
                                                "description": "Server startup command",
                                                "type": "string"
                                            },
                                            "image": {
                                                "description": "Server Docker image",
                                                "type": "string"
                                            },
                                            "allocation_limit": {
                                                "description": "Allocation limit",
                                                "type": "integer",
                                                "nullable": true
                                            },
                                            "database_limit": {
                                                "description": "Database limit",
                                                "type": "integer"
                                            },
                                            "backup_limit": {
                                                "description": "Backup limit",
                                                "type": "integer"
                                            },
                                            "parent_id": {
                                                "description": "Parent server ID",
                                                "type": "integer",
                                                "nullable": true
                                            },
                                            "external_id": {
                                                "description": "External ID",
                                                "type": "string",
                                                "nullable": true
                                            },
                                            "installed_at": {
                                                "description": "Installation timestamp",
                                                "type": "string",
                                                "format": "date-time",
                                                "nullable": true
                                            }
                                        },
                                        "type": "object"
                                    },
                                    "server_variables": {
                                        "description": "Server variables array",
                                        "type": "array",
                                        "items": {
                                            "properties": {
                                                "id": {
                                                    "description": "Variable ID (optional)",
                                                    "type": "integer",
                                                    "nullable": true
                                                },
                                                "variable_id": {
                                                    "description": "Egg variable ID (will be mapped to spell variable ID)",
                                                    "type": "integer"
                                                },
                                                "variable_value": {
                                                    "description": "Variable value",
                                                    "type": "string"
                                                }
                                            },
                                            "type": "object"
                                        }
                                    },
                                    "nest_to_realm_mapping": {
                                        "description": "Mapping of Pterodactyl nest_id to FeatherPanel realm_id",
                                        "type": "object",
                                        "additionalProperties": {
                                            "type": "integer"
                                        }
                                    },
                                    "egg_to_spell_mapping": {
                                        "description": "Mapping of Pterodactyl egg_id to FeatherPanel spell_id",
                                        "type": "object",
                                        "additionalProperties": {
                                            "type": "integer"
                                        }
                                    },
                                    "node_to_node_mapping": {
                                        "description": "Mapping of Pterodactyl node_id to FeatherPanel node_id",
                                        "type": "object",
                                        "additionalProperties": {
                                            "type": "integer"
                                        }
                                    },
                                    "user_to_user_mapping": {
                                        "description": "Mapping of Pterodactyl user_id to FeatherPanel user_id",
                                        "type": "object",
                                        "additionalProperties": {
                                            "type": "integer"
                                        }
                                    },
                                    "allocation_to_allocation_mapping": {
                                        "description": "Mapping of Pterodactyl allocation_id to FeatherPanel allocation_id",
                                        "type": "object",
                                        "additionalProperties": {
                                            "type": "integer"
                                        }
                                    },
                                    "variable_to_variable_mapping": {
                                        "description": "Mapping of Pterodactyl egg_variable_id to FeatherPanel spell_variable_id",
                                        "type": "object",
                                        "additionalProperties": {
                                            "type": "integer"
                                        }
                                    },
                                    "server_to_server_mapping": {
                                        "description": "Mapping of Pterodactyl server_id to FeatherPanel server_id (for parent_id)",
                                        "type": "object",
                                        "additionalProperties": {
                                            "type": "integer"
                                        }
                                    }
                                },
                                "type": "object"
                            }
                        }
                    }
                },
                "responses": {
                    "201": {
                        "description": "Server imported successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "server": {
                                            "description": "Created server data",
                                            "type": "object"
                                        },
                                        "variables_imported": {
                                            "description": "Number of server variables imported",
                                            "type": "integer"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request - Invalid data, missing required fields, or invalid mappings"
                    },
                    "401": {
                        "description": "Unauthorized"
                    },
                    "403": {
                        "description": "Forbidden - Insufficient permissions"
                    },
                    "404": {
                        "description": "Node, user, allocation, realm, or spell not found"
                    },
                    "409": {
                        "description": "Conflict - Server with UUID or ID already exists"
                    },
                    "500": {
                        "description": "Internal server error"
                    }
                }
            }
        },
        "/api/admin/pterodactyl-importer/import-server-database": {
            "post": {
                "tags": [
                    "Admin - Pterodactyl Importer"
                ],
                "summary": "Import Pterodactyl server database",
                "description": "Import a Pterodactyl server database as a FeatherPanel server database. Maps server_id and database_host_id.",
                "operationId": "bc2f94744bc6e7e760f771fdd2a476ca",
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "required": [
                                    "database"
                                ],
                                "properties": {
                                    "database": {
                                        "description": "Pterodactyl server database data",
                                        "properties": {
                                            "id": {
                                                "description": "Database ID (optional, for migrations)",
                                                "type": "integer",
                                                "example": 10,
                                                "nullable": true
                                            },
                                            "server_id": {
                                                "description": "Server ID (will be mapped)",
                                                "type": "integer"
                                            },
                                            "database_host_id": {
                                                "description": "Database host ID (will be mapped)",
                                                "type": "integer"
                                            },
                                            "database": {
                                                "description": "Database name",
                                                "type": "string"
                                            },
                                            "username": {
                                                "description": "Database username",
                                                "type": "string"
                                            },
                                            "remote": {
                                                "description": "Remote access (default: %)",
                                                "type": "string",
                                                "nullable": true
                                            },
                                            "password": {
                                                "description": "Encrypted password",
                                                "type": "string"
                                            },
                                            "max_connections": {
                                                "description": "Max connections (default: 0)",
                                                "type": "integer",
                                                "nullable": true
                                            },
                                            "created_at": {
                                                "description": "Creation timestamp",
                                                "type": "string",
                                                "format": "date-time",
                                                "nullable": true
                                            },
                                            "updated_at": {
                                                "description": "Update timestamp",
                                                "type": "string",
                                                "format": "date-time",
                                                "nullable": true
                                            }
                                        },
                                        "type": "object"
                                    },
                                    "server_to_server_mapping": {
                                        "description": "Mapping of Pterodactyl server_id to FeatherPanel server_id",
                                        "type": "object",
                                        "additionalProperties": {
                                            "type": "integer"
                                        }
                                    },
                                    "database_host_to_database_host_mapping": {
                                        "description": "Mapping of Pterodactyl database_host_id to FeatherPanel database_host_id",
                                        "type": "object",
                                        "additionalProperties": {
                                            "type": "integer"
                                        }
                                    }
                                },
                                "type": "object"
                            }
                        }
                    }
                },
                "responses": {
                    "201": {
                        "description": "Server database imported successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "database": {
                                            "description": "Created server database data",
                                            "type": "object"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request - Invalid data, missing required fields, or invalid mappings"
                    },
                    "401": {
                        "description": "Unauthorized"
                    },
                    "403": {
                        "description": "Forbidden - Insufficient permissions"
                    },
                    "404": {
                        "description": "Server or database host not found"
                    },
                    "409": {
                        "description": "Conflict - Database already exists for this server"
                    },
                    "500": {
                        "description": "Internal server error"
                    }
                }
            }
        },
        "/api/admin/pterodactyl-importer/import-backup": {
            "post": {
                "tags": [
                    "Admin - Pterodactyl Importer"
                ],
                "summary": "Import Pterodactyl backup",
                "description": "Import a backup from Pterodactyl to FeatherPanel. Maps server_id using provided mapping and preserves original backup ID, UUID, and metadata.",
                "operationId": "c7120e7a22a0ec3759f45becc893bd20",
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "required": [
                                    "backup",
                                    "server_to_server_mapping"
                                ],
                                "properties": {
                                    "backup": {
                                        "description": "Pterodactyl backup data",
                                        "type": "object"
                                    },
                                    "server_to_server_mapping": {
                                        "description": "Mapping of Pterodactyl server IDs to FeatherPanel server IDs",
                                        "type": "object"
                                    }
                                },
                                "type": "object"
                            }
                        }
                    }
                },
                "responses": {
                    "201": {
                        "description": "Backup imported successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "backup": {
                                            "description": "Imported backup data",
                                            "type": "object"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request - Invalid JSON, missing required fields, or validation errors"
                    },
                    "401": {
                        "description": "Unauthorized"
                    },
                    "403": {
                        "description": "Forbidden - Insufficient permissions"
                    },
                    "404": {
                        "description": "Server not found"
                    },
                    "409": {
                        "description": "Conflict - Backup with UUID or ID already exists"
                    },
                    "500": {
                        "description": "Internal server error - Failed to import backup"
                    }
                }
            }
        },
        "/api/admin/pterodactyl-importer/import-subuser": {
            "post": {
                "tags": [
                    "Admin - Pterodactyl Importer"
                ],
                "summary": "Import Pterodactyl subuser",
                "description": "Import a subuser from Pterodactyl to FeatherPanel. Maps user_id and server_id using provided mappings and preserves original subuser ID and permissions.",
                "operationId": "e3ca1b0a70417885e92b605c64d37e07",
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "required": [
                                    "subuser",
                                    "user_to_user_mapping",
                                    "server_to_server_mapping"
                                ],
                                "properties": {
                                    "subuser": {
                                        "description": "Pterodactyl subuser data",
                                        "type": "object"
                                    },
                                    "user_to_user_mapping": {
                                        "description": "Mapping of Pterodactyl user IDs to FeatherPanel user IDs",
                                        "type": "object"
                                    },
                                    "server_to_server_mapping": {
                                        "description": "Mapping of Pterodactyl server IDs to FeatherPanel server IDs",
                                        "type": "object"
                                    }
                                },
                                "type": "object"
                            }
                        }
                    }
                },
                "responses": {
                    "201": {
                        "description": "Subuser imported successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "subuser": {
                                            "description": "Imported subuser data",
                                            "type": "object"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request - Validation errors"
                    },
                    "401": {
                        "description": "Unauthorized"
                    },
                    "403": {
                        "description": "Forbidden - Insufficient permissions"
                    },
                    "409": {
                        "description": "Conflict - Subuser already exists"
                    },
                    "500": {
                        "description": "Internal server error"
                    }
                }
            }
        },
        "/api/admin/pterodactyl-importer/import-schedule": {
            "post": {
                "tags": [
                    "Admin - Pterodactyl Importer"
                ],
                "summary": "Import Pterodactyl schedule",
                "description": "Import a schedule from Pterodactyl to FeatherPanel. Maps server_id using provided mapping and preserves original schedule ID, cron settings, and timestamps. Calculates next_run_at if not provided.",
                "operationId": "f887751311fc8a073fbbea65b504b047",
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "required": [
                                    "schedule",
                                    "server_to_server_mapping"
                                ],
                                "properties": {
                                    "schedule": {
                                        "description": "Pterodactyl schedule data",
                                        "type": "object"
                                    },
                                    "server_to_server_mapping": {
                                        "description": "Mapping of Pterodactyl server IDs to FeatherPanel server IDs",
                                        "type": "object"
                                    }
                                },
                                "type": "object"
                            }
                        }
                    }
                },
                "responses": {
                    "201": {
                        "description": "Schedule imported successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "schedule": {
                                            "description": "Imported schedule data",
                                            "type": "object"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request - Invalid JSON, missing required fields, or validation errors"
                    },
                    "401": {
                        "description": "Unauthorized"
                    },
                    "403": {
                        "description": "Forbidden - Insufficient permissions"
                    },
                    "404": {
                        "description": "Server not found"
                    },
                    "409": {
                        "description": "Conflict - Schedule with ID already exists"
                    },
                    "500": {
                        "description": "Internal server error - Failed to import schedule"
                    }
                }
            }
        },
        "/api/admin/pterodactyl-importer/import-task": {
            "post": {
                "tags": [
                    "Admin - Pterodactyl Importer"
                ],
                "summary": "Import Pterodactyl task",
                "description": "Import a task from Pterodactyl to FeatherPanel. Maps schedule_id using provided mapping and preserves original task ID, sequence, action, payload, and other settings.",
                "operationId": "5306624c056532a6fbfb3956c219f6ce",
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "required": [
                                    "task",
                                    "schedule_to_schedule_mapping"
                                ],
                                "properties": {
                                    "task": {
                                        "description": "Pterodactyl task data",
                                        "type": "object"
                                    },
                                    "schedule_to_schedule_mapping": {
                                        "description": "Mapping of Pterodactyl schedule IDs to FeatherPanel schedule IDs",
                                        "type": "object"
                                    }
                                },
                                "type": "object"
                            }
                        }
                    }
                },
                "responses": {
                    "201": {
                        "description": "Task imported successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "task": {
                                            "description": "Imported task data",
                                            "type": "object"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request - Invalid JSON, missing required fields, or validation errors"
                    },
                    "401": {
                        "description": "Unauthorized"
                    },
                    "403": {
                        "description": "Forbidden - Insufficient permissions"
                    },
                    "404": {
                        "description": "Schedule not found"
                    },
                    "409": {
                        "description": "Conflict - Task with ID already exists"
                    },
                    "500": {
                        "description": "Internal server error - Failed to import task"
                    }
                }
            }
        },
        "/api/admin/rate-limits": {
            "get": {
                "tags": [
                    "Admin - Rate Limits"
                ],
                "summary": "Get all rate limit configurations",
                "description": "Retrieve all rate limit configurations for routes",
                "operationId": "70a8e64a4d24e5f777714339009c43de",
                "responses": {
                    "200": {
                        "description": "Rate limit configurations retrieved successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "_enabled": {
                                            "description": "Global rate limiting enabled flag",
                                            "type": "boolean"
                                        },
                                        "routes": {
                                            "description": "Rate limit configurations by route name",
                                            "type": "object",
                                            "additionalProperties": {
                                                "$ref": "#/components/schemas/RateLimitRoute"
                                            }
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/api/admin/rate-limits/global": {
            "patch": {
                "tags": [
                    "Admin - Rate Limits"
                ],
                "summary": "Update global rate limiting enabled state",
                "description": "Enable or disable rate limiting globally for all routes",
                "operationId": "0dd2f09c5001fd3a5a482eb130c3dfcf",
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "properties": {
                                    "_enabled": {
                                        "description": "Enable or disable rate limiting globally",
                                        "type": "boolean"
                                    }
                                },
                                "type": "object"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Global rate limiting state updated successfully"
                    },
                    "400": {
                        "description": "Invalid request data"
                    }
                }
            }
        },
        "/api/admin/rate-limits/{routeName}": {
            "get": {
                "tags": [
                    "Admin - Rate Limits"
                ],
                "summary": "Get rate limit configuration for a route",
                "description": "Retrieve rate limit configuration for a specific route",
                "operationId": "92949fe16294c8fb59469a0372e6a593",
                "parameters": [
                    {
                        "name": "routeName",
                        "in": "path",
                        "description": "The route name",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Rate limit configuration retrieved successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/RateLimitRoute"
                                }
                            }
                        }
                    },
                    "404": {
                        "description": "Route not found"
                    }
                }
            },
            "put": {
                "tags": [
                    "Admin - Rate Limits"
                ],
                "summary": "Update rate limit configuration for a route",
                "description": "Update rate limit configuration for a specific route",
                "operationId": "5df357bbbd9c0f77af7b3a48cb18db30",
                "parameters": [
                    {
                        "name": "routeName",
                        "in": "path",
                        "description": "The route name",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "properties": {
                                    "_enabled": {
                                        "description": "Enable or disable rate limiting for this route",
                                        "type": "boolean",
                                        "nullable": true
                                    },
                                    "per_second": {
                                        "type": "integer",
                                        "nullable": true
                                    },
                                    "per_minute": {
                                        "type": "integer",
                                        "nullable": true
                                    },
                                    "per_hour": {
                                        "type": "integer",
                                        "nullable": true
                                    },
                                    "per_day": {
                                        "type": "integer",
                                        "nullable": true
                                    },
                                    "namespace": {
                                        "type": "string",
                                        "nullable": true
                                    }
                                },
                                "type": "object"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Rate limit configuration updated successfully"
                    },
                    "400": {
                        "description": "Invalid request data"
                    },
                    "500": {
                        "description": "Failed to update configuration"
                    }
                }
            },
            "delete": {
                "tags": [
                    "Admin - Rate Limits"
                ],
                "summary": "Delete rate limit configuration for a route",
                "description": "Delete (reset) rate limit configuration for a specific route, reverting to developer defaults",
                "operationId": "db3181f31f53d927b9f4a318a75b9dd2",
                "parameters": [
                    {
                        "name": "routeName",
                        "in": "path",
                        "description": "The route name",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Rate limit configuration deleted successfully"
                    },
                    "404": {
                        "description": "Route not found"
                    }
                }
            }
        },
        "/api/admin/rate-limits/bulk": {
            "patch": {
                "tags": [
                    "Admin - Rate Limits"
                ],
                "summary": "Bulk update rate limit configurations",
                "description": "Update multiple rate limit configurations at once",
                "operationId": "1135c56fddc2994cc32a368b70ab402f",
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "properties": {
                                    "routes": {
                                        "type": "object",
                                        "additionalProperties": {
                                            "properties": {
                                                "per_second": {
                                                    "type": "integer",
                                                    "nullable": true
                                                },
                                                "per_minute": {
                                                    "type": "integer",
                                                    "nullable": true
                                                },
                                                "per_hour": {
                                                    "type": "integer",
                                                    "nullable": true
                                                },
                                                "per_day": {
                                                    "type": "integer",
                                                    "nullable": true
                                                },
                                                "namespace": {
                                                    "type": "string",
                                                    "nullable": true
                                                }
                                            },
                                            "type": "object"
                                        }
                                    }
                                },
                                "type": "object"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Rate limit configurations updated successfully"
                    },
                    "400": {
                        "description": "Invalid request data"
                    }
                }
            }
        },
        "/api/admin/realms": {
            "get": {
                "tags": [
                    "Admin - Realms"
                ],
                "summary": "Get all realms",
                "description": "Retrieve a paginated list of all realms with optional search functionality.",
                "operationId": "2f551211e245163a057f7b58beee0b7c",
                "parameters": [
                    {
                        "name": "page",
                        "in": "query",
                        "description": "Page number for pagination",
                        "required": false,
                        "schema": {
                            "type": "integer",
                            "default": 1,
                            "minimum": 1
                        }
                    },
                    {
                        "name": "limit",
                        "in": "query",
                        "description": "Number of records per page",
                        "required": false,
                        "schema": {
                            "type": "integer",
                            "default": 10,
                            "maximum": 100,
                            "minimum": 1
                        }
                    },
                    {
                        "name": "search",
                        "in": "query",
                        "description": "Search term to filter realms by name or description",
                        "required": false,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Realms retrieved successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "realms": {
                                            "type": "array",
                                            "items": {
                                                "$ref": "#/components/schemas/Realm"
                                            }
                                        },
                                        "pagination": {
                                            "$ref": "#/components/schemas/RealmPagination"
                                        },
                                        "search": {
                                            "properties": {
                                                "query": {
                                                    "type": "string"
                                                },
                                                "has_results": {
                                                    "type": "boolean"
                                                }
                                            },
                                            "type": "object"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "401": {
                        "description": "Unauthorized"
                    },
                    "403": {
                        "description": "Forbidden - Insufficient permissions"
                    }
                }
            },
            "put": {
                "tags": [
                    "Admin - Realms"
                ],
                "summary": "Create new realm",
                "description": "Create a new realm with name and optional description. Validates field lengths and data types.",
                "operationId": "67c9e89c6d6dc3a1b26835706c1bb1e5",
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/RealmCreate"
                            }
                        }
                    }
                },
                "responses": {
                    "201": {
                        "description": "Realm created successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "realm": {
                                            "$ref": "#/components/schemas/Realm"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request - Invalid JSON, missing required fields, invalid data types, or validation errors"
                    },
                    "401": {
                        "description": "Unauthorized"
                    },
                    "403": {
                        "description": "Forbidden - Insufficient permissions"
                    },
                    "500": {
                        "description": "Internal server error - Failed to create realm"
                    }
                }
            }
        },
        "/api/admin/realms/{id}": {
            "get": {
                "tags": [
                    "Admin - Realms"
                ],
                "summary": "Get realm by ID",
                "description": "Retrieve a specific realm by its ID.",
                "operationId": "8be55209c9c70b968f90174bcb49ad2a",
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "description": "Realm ID",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Realm retrieved successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "realm": {
                                            "$ref": "#/components/schemas/Realm"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request - Invalid realm ID"
                    },
                    "401": {
                        "description": "Unauthorized"
                    },
                    "403": {
                        "description": "Forbidden - Insufficient permissions"
                    },
                    "404": {
                        "description": "Realm not found"
                    }
                }
            },
            "delete": {
                "tags": [
                    "Admin - Realms"
                ],
                "summary": "Delete realm",
                "description": "Permanently delete a realm from the database. This action cannot be undone.",
                "operationId": "d98c4ad99d2d7b425550ecbbd9be142b",
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "description": "Realm ID",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Realm deleted successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "message": {
                                            "description": "Success message",
                                            "type": "string"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request - Invalid realm ID or realm has spells assigned"
                    },
                    "401": {
                        "description": "Unauthorized"
                    },
                    "403": {
                        "description": "Forbidden - Insufficient permissions"
                    },
                    "404": {
                        "description": "Realm not found"
                    },
                    "500": {
                        "description": "Internal server error - Failed to delete realm"
                    }
                }
            },
            "patch": {
                "tags": [
                    "Admin - Realms"
                ],
                "summary": "Update realm",
                "description": "Update an existing realm. Only provided fields will be updated. Validates field lengths and data types.",
                "operationId": "eb7d4b38b44da8a1c7692fe3f0b1c1e8",
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "description": "Realm ID",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/RealmUpdate"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Realm updated successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "realm": {
                                            "$ref": "#/components/schemas/Realm"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request - Invalid JSON, no data provided, invalid data types, or validation errors"
                    },
                    "401": {
                        "description": "Unauthorized"
                    },
                    "403": {
                        "description": "Forbidden - Insufficient permissions"
                    },
                    "404": {
                        "description": "Realm not found"
                    },
                    "500": {
                        "description": "Internal server error - Failed to update realm"
                    }
                }
            }
        },
        "/api/admin/roles": {
            "get": {
                "tags": [
                    "Admin - Roles"
                ],
                "summary": "Get all roles",
                "description": "Retrieve a paginated list of all roles with optional search functionality.",
                "operationId": "31674390abdf927b640e53161ac1e3c4",
                "parameters": [
                    {
                        "name": "page",
                        "in": "query",
                        "description": "Page number for pagination",
                        "required": false,
                        "schema": {
                            "type": "integer",
                            "default": 1,
                            "minimum": 1
                        }
                    },
                    {
                        "name": "limit",
                        "in": "query",
                        "description": "Number of records per page",
                        "required": false,
                        "schema": {
                            "type": "integer",
                            "default": 10,
                            "maximum": 100,
                            "minimum": 1
                        }
                    },
                    {
                        "name": "search",
                        "in": "query",
                        "description": "Search term to filter roles by name or display name",
                        "required": false,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Roles retrieved successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "roles": {
                                            "type": "array",
                                            "items": {
                                                "$ref": "#/components/schemas/Role"
                                            }
                                        },
                                        "pagination": {
                                            "$ref": "#/components/schemas/RolePagination"
                                        },
                                        "search": {
                                            "properties": {
                                                "query": {
                                                    "type": "string"
                                                },
                                                "has_results": {
                                                    "type": "boolean"
                                                }
                                            },
                                            "type": "object"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "401": {
                        "description": "Unauthorized"
                    },
                    "403": {
                        "description": "Forbidden - Insufficient permissions"
                    }
                }
            },
            "put": {
                "tags": [
                    "Admin - Roles"
                ],
                "summary": "Create new role",
                "description": "Create a new role with name, display name, and color. Validates field lengths and data types.",
                "operationId": "50a6d2ec5fa7018ce23c8abaaf50c70b",
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/RoleCreate"
                            }
                        }
                    }
                },
                "responses": {
                    "201": {
                        "description": "Role created successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "role": {
                                            "$ref": "#/components/schemas/Role"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request - Invalid JSON, missing required fields, invalid data types, or validation errors"
                    },
                    "401": {
                        "description": "Unauthorized"
                    },
                    "403": {
                        "description": "Forbidden - Insufficient permissions"
                    },
                    "500": {
                        "description": "Internal server error - Failed to create role"
                    }
                }
            }
        },
        "/api/admin/roles/{id}": {
            "get": {
                "tags": [
                    "Admin - Roles"
                ],
                "summary": "Get role by ID",
                "description": "Retrieve a specific role by its ID.",
                "operationId": "85f0b8defd9f3e02a481c112508a8eb3",
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "description": "Role ID",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Role retrieved successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "role": {
                                            "$ref": "#/components/schemas/Role"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request - Invalid role ID"
                    },
                    "401": {
                        "description": "Unauthorized"
                    },
                    "403": {
                        "description": "Forbidden - Insufficient permissions"
                    },
                    "404": {
                        "description": "Role not found"
                    }
                }
            },
            "delete": {
                "tags": [
                    "Admin - Roles"
                ],
                "summary": "Delete role",
                "description": "Permanently delete a role from the database. Default roles (Admin, Moderator, User, Banned) cannot be deleted. This action cannot be undone.",
                "operationId": "7bd2578869c3dc3d7a1cd6a6e1d6665f",
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "description": "Role ID",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Role deleted successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "message": {
                                            "description": "Success message",
                                            "type": "string"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request - Invalid role ID or cannot delete default role"
                    },
                    "401": {
                        "description": "Unauthorized"
                    },
                    "403": {
                        "description": "Forbidden - Insufficient permissions"
                    },
                    "404": {
                        "description": "Role not found"
                    },
                    "500": {
                        "description": "Internal server error - Failed to delete role"
                    }
                }
            },
            "patch": {
                "tags": [
                    "Admin - Roles"
                ],
                "summary": "Update role",
                "description": "Update an existing role. Only provided fields will be updated. Validates field lengths and data types.",
                "operationId": "bd80cb2fa48a8ff57b402c44cbbb11da",
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "description": "Role ID",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/RoleUpdate"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Role updated successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "role": {
                                            "$ref": "#/components/schemas/Role"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request - Invalid JSON, no data provided, invalid data types, or validation errors"
                    },
                    "401": {
                        "description": "Unauthorized"
                    },
                    "403": {
                        "description": "Forbidden - Insufficient permissions"
                    },
                    "404": {
                        "description": "Role not found"
                    },
                    "500": {
                        "description": "Internal server error - Failed to update role"
                    }
                }
            }
        },
        "/api/admin/roles/upload-badge-icon": {
            "post": {
                "tags": [
                    "Admin - Roles"
                ],
                "summary": "Upload role badge icon",
                "description": "Upload an image to use as a custom icon on role badges.",
                "operationId": "733c4d4e7df9c5ba8fe7f7a82b8b6703",
                "requestBody": {
                    "required": true,
                    "content": {
                        "multipart/form-data": {
                            "schema": {
                                "required": [
                                    "icon"
                                ],
                                "properties": {
                                    "icon": {
                                        "description": "Badge icon image file",
                                        "type": "string",
                                        "format": "binary"
                                    }
                                },
                                "type": "object"
                            }
                        }
                    }
                },
                "responses": {
                    "201": {
                        "description": "Icon uploaded successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "url": {
                                            "description": "Public URL of the uploaded icon",
                                            "type": "string"
                                        },
                                        "filename": {
                                            "description": "Filename of the uploaded icon",
                                            "type": "string"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request - No file provided, invalid file type, or file too large"
                    },
                    "401": {
                        "description": "Unauthorized"
                    },
                    "403": {
                        "description": "Forbidden - Insufficient permissions"
                    },
                    "500": {
                        "description": "Internal server error - Failed to save file"
                    }
                }
            }
        },
        "/api/admin/server-activities": {
            "get": {
                "tags": [
                    "Admin - Server Activities"
                ],
                "summary": "Get all server activities",
                "description": "Retrieve a paginated list of all server activities with optional filtering by server, node, user, and search functionality.",
                "operationId": "585a997c0136d63eb740f717ae68146c",
                "parameters": [
                    {
                        "name": "page",
                        "in": "query",
                        "description": "Page number for pagination",
                        "required": false,
                        "schema": {
                            "type": "integer",
                            "default": 1,
                            "minimum": 1
                        }
                    },
                    {
                        "name": "limit",
                        "in": "query",
                        "description": "Number of records per page",
                        "required": false,
                        "schema": {
                            "type": "integer",
                            "default": 10,
                            "maximum": 100,
                            "minimum": 1
                        }
                    },
                    {
                        "name": "search",
                        "in": "query",
                        "description": "Search term to filter activities by description or type",
                        "required": false,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "server_id",
                        "in": "query",
                        "description": "Filter activities by server ID",
                        "required": false,
                        "schema": {
                            "type": "integer"
                        }
                    },
                    {
                        "name": "node_id",
                        "in": "query",
                        "description": "Filter activities by node ID",
                        "required": false,
                        "schema": {
                            "type": "integer"
                        }
                    },
                    {
                        "name": "user_id",
                        "in": "query",
                        "description": "Filter activities by user ID",
                        "required": false,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Server activities retrieved successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "activities": {
                                            "type": "array",
                                            "items": {
                                                "$ref": "#/components/schemas/ServerActivity"
                                            }
                                        },
                                        "pagination": {
                                            "$ref": "#/components/schemas/ServerActivityPagination"
                                        },
                                        "search": {
                                            "properties": {
                                                "query": {
                                                    "type": "string"
                                                },
                                                "has_results": {
                                                    "type": "boolean"
                                                }
                                            },
                                            "type": "object"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "401": {
                        "description": "Unauthorized"
                    },
                    "403": {
                        "description": "Forbidden - Insufficient permissions"
                    }
                }
            }
        },
        "/api/admin/servers/{id}/activities": {
            "get": {
                "tags": [
                    "Admin - Server Activities"
                ],
                "summary": "Get server activities by server ID",
                "description": "Retrieve a paginated list of activities for a specific server with optional search functionality.",
                "operationId": "3d08d17dd829042b28af148162c96c13",
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "description": "Server ID",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    },
                    {
                        "name": "page",
                        "in": "query",
                        "description": "Page number for pagination",
                        "required": false,
                        "schema": {
                            "type": "integer",
                            "default": 1,
                            "minimum": 1
                        }
                    },
                    {
                        "name": "limit",
                        "in": "query",
                        "description": "Number of records per page",
                        "required": false,
                        "schema": {
                            "type": "integer",
                            "default": 10,
                            "maximum": 100,
                            "minimum": 1
                        }
                    },
                    {
                        "name": "search",
                        "in": "query",
                        "description": "Search term to filter activities by description or type",
                        "required": false,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Server activities retrieved successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "activities": {
                                            "type": "array",
                                            "items": {
                                                "$ref": "#/components/schemas/ServerActivity"
                                            }
                                        },
                                        "pagination": {
                                            "$ref": "#/components/schemas/ServerActivityPagination"
                                        },
                                        "search": {
                                            "properties": {
                                                "query": {
                                                    "type": "string"
                                                },
                                                "has_results": {
                                                    "type": "boolean"
                                                }
                                            },
                                            "type": "object"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request - Invalid server ID"
                    },
                    "401": {
                        "description": "Unauthorized"
                    },
                    "403": {
                        "description": "Forbidden - Insufficient permissions"
                    },
                    "404": {
                        "description": "Server not found"
                    }
                }
            }
        },
        "/api/admin/servers/{serverId}/allocations": {
            "get": {
                "tags": [
                    "Admin - Server Allocations"
                ],
                "summary": "Get server allocations (Admin)",
                "description": "Retrieve all allocations assigned to a specific server.",
                "operationId": "a9e89d2809de942021bd4d37b579c6c6",
                "parameters": [
                    {
                        "name": "serverId",
                        "in": "path",
                        "description": "Server ID",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Server allocations retrieved successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "success": {
                                            "type": "boolean"
                                        },
                                        "data": {
                                            "properties": {
                                                "server": {
                                                    "type": "object"
                                                },
                                                "allocations": {
                                                    "type": "array",
                                                    "items": {
                                                        "type": "object"
                                                    }
                                                }
                                            },
                                            "type": "object"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "404": {
                        "description": "Server not found"
                    },
                    "500": {
                        "description": "Internal server error"
                    }
                }
            },
            "post": {
                "tags": [
                    "Admin - Server Allocations"
                ],
                "summary": "Assign allocation to server (Admin)",
                "description": "Assign a specific allocation to a server.",
                "operationId": "53fcf2eaabf03941a048b178f2d49102",
                "parameters": [
                    {
                        "name": "serverId",
                        "in": "path",
                        "description": "Server ID",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "properties": {
                                    "allocation_id": {
                                        "description": "Allocation ID to assign",
                                        "type": "integer"
                                    }
                                },
                                "type": "object"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Allocation assigned successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "success": {
                                            "type": "boolean"
                                        },
                                        "message": {
                                            "type": "string"
                                        },
                                        "data": {
                                            "type": "object"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request"
                    },
                    "404": {
                        "description": "Server or allocation not found"
                    },
                    "500": {
                        "description": "Internal server error"
                    }
                }
            }
        },
        "/api/admin/servers/{serverId}/allocations/{allocationId}": {
            "delete": {
                "tags": [
                    "Admin - Server Allocations"
                ],
                "summary": "Delete server allocation (Admin)",
                "description": "Remove an allocation from a server. Cannot delete the primary allocation.",
                "operationId": "7a1208b4b509a10a91476808e5e8525f",
                "parameters": [
                    {
                        "name": "serverId",
                        "in": "path",
                        "description": "Server ID",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    },
                    {
                        "name": "allocationId",
                        "in": "path",
                        "description": "Allocation ID to delete",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Allocation deleted successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "success": {
                                            "type": "boolean"
                                        },
                                        "message": {
                                            "type": "string"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Cannot delete primary allocation"
                    },
                    "404": {
                        "description": "Server or allocation not found"
                    },
                    "500": {
                        "description": "Internal server error"
                    }
                }
            }
        },
        "/api/admin/servers/{serverId}/allocations/{allocationId}/primary": {
            "post": {
                "tags": [
                    "Admin - Server Allocations"
                ],
                "summary": "Set primary allocation (Admin)",
                "description": "Set a specific allocation as the primary allocation for the server.",
                "operationId": "353b4986954340ef20eb99e2141ac624",
                "parameters": [
                    {
                        "name": "serverId",
                        "in": "path",
                        "description": "Server ID",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    },
                    {
                        "name": "allocationId",
                        "in": "path",
                        "description": "Allocation ID to set as primary",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Primary allocation updated successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "success": {
                                            "type": "boolean"
                                        },
                                        "message": {
                                            "type": "string"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request"
                    },
                    "404": {
                        "description": "Server or allocation not found"
                    },
                    "500": {
                        "description": "Internal server error"
                    }
                }
            }
        },
        "/api/admin/servers": {
            "get": {
                "tags": [
                    "Admin - Servers"
                ],
                "summary": "Get all servers",
                "description": "Retrieve a paginated list of all servers with optional filtering by owner, node, realm, spell, and search functionality.",
                "operationId": "648c30ffa5b866522a894de681e6ad27",
                "parameters": [
                    {
                        "name": "page",
                        "in": "query",
                        "description": "Page number for pagination",
                        "required": false,
                        "schema": {
                            "type": "integer",
                            "default": 1,
                            "minimum": 1
                        }
                    },
                    {
                        "name": "limit",
                        "in": "query",
                        "description": "Number of records per page",
                        "required": false,
                        "schema": {
                            "type": "integer",
                            "default": 10,
                            "maximum": 100,
                            "minimum": 1
                        }
                    },
                    {
                        "name": "search",
                        "in": "query",
                        "description": "Search term to filter servers by name or description",
                        "required": false,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "owner_id",
                        "in": "query",
                        "description": "Filter servers by owner ID",
                        "required": false,
                        "schema": {
                            "type": "integer"
                        }
                    },
                    {
                        "name": "node_id",
                        "in": "query",
                        "description": "Filter servers by node ID",
                        "required": false,
                        "schema": {
                            "type": "integer"
                        }
                    },
                    {
                        "name": "realm_id",
                        "in": "query",
                        "description": "Filter servers by realm ID",
                        "required": false,
                        "schema": {
                            "type": "integer"
                        }
                    },
                    {
                        "name": "spell_id",
                        "in": "query",
                        "description": "Filter servers by spell ID",
                        "required": false,
                        "schema": {
                            "type": "integer"
                        }
                    },
                    {
                        "name": "location_id",
                        "in": "query",
                        "description": "Filter servers by location ID (through their node)",
                        "required": false,
                        "schema": {
                            "type": "integer"
                        }
                    },
                    {
                        "name": "server_id",
                        "in": "query",
                        "description": "Filter servers by server ID",
                        "required": false,
                        "schema": {
                            "type": "integer"
                        }
                    },
                    {
                        "name": "uuid",
                        "in": "query",
                        "description": "Filter servers by UUID",
                        "required": false,
                        "schema": {
                            "type": "string",
                            "format": "uuid"
                        }
                    },
                    {
                        "name": "uuid_short",
                        "in": "query",
                        "description": "Filter servers by short UUID",
                        "required": false,
                        "schema": {
                            "type": "string",
                            "maxLength": 8
                        }
                    },
                    {
                        "name": "external_id",
                        "in": "query",
                        "description": "Filter servers by external ID",
                        "required": false,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "sort_by",
                        "in": "query",
                        "description": "Field to sort servers by (id, name, created_at, updated_at)",
                        "required": false,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "sort_order",
                        "in": "query",
                        "description": "Sort order (ASC or DESC)",
                        "required": false,
                        "schema": {
                            "type": "string",
                            "enum": [
                                "ASC",
                                "DESC"
                            ]
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Servers retrieved successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "servers": {
                                            "type": "array",
                                            "items": {
                                                "$ref": "#/components/schemas/Server"
                                            }
                                        },
                                        "pagination": {
                                            "$ref": "#/components/schemas/ServerPagination"
                                        },
                                        "search": {
                                            "properties": {
                                                "query": {
                                                    "type": "string"
                                                },
                                                "has_results": {
                                                    "type": "boolean"
                                                }
                                            },
                                            "type": "object"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "401": {
                        "description": "Unauthorized"
                    },
                    "403": {
                        "description": "Forbidden - Insufficient permissions"
                    }
                }
            },
            "put": {
                "tags": [
                    "Admin - Servers"
                ],
                "summary": "Create new server",
                "description": "Create a new server with comprehensive validation, Wings integration, variable handling, and email notifications.",
                "operationId": "00f9e22ce07fe9c268d7e091b16f42f2",
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/ServerCreate"
                            }
                        }
                    }
                },
                "responses": {
                    "201": {
                        "description": "Server created successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "server_id": {
                                            "description": "ID of the created server",
                                            "type": "integer"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request - Invalid JSON, missing required fields, invalid data types, validation errors, invalid foreign keys, or allocation in use"
                    },
                    "401": {
                        "description": "Unauthorized"
                    },
                    "403": {
                        "description": "Forbidden - Insufficient permissions"
                    },
                    "404": {
                        "description": "User, node, allocation, realm, or spell not found"
                    },
                    "422": {
                        "description": "Unprocessable Entity - Missing required spell variables or Wings validation failed"
                    },
                    "500": {
                        "description": "Internal server error - Failed to create server, Wings error, or email sending failed"
                    }
                }
            }
        },
        "/api/admin/servers/{id}": {
            "get": {
                "tags": [
                    "Admin - Servers"
                ],
                "summary": "Get server by ID",
                "description": "Retrieve a specific server by its ID with complete details including related data, variables, SFTP information, and recent activity.",
                "operationId": "e0fc08f04d250844492bb0851a574ddf",
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "description": "Server ID",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Server retrieved successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "id": {
                                            "description": "Server ID",
                                            "type": "integer"
                                        },
                                        "uuid": {
                                            "description": "Server UUID",
                                            "type": "string"
                                        },
                                        "uuidShort": {
                                            "description": "Short server UUID",
                                            "type": "string"
                                        },
                                        "name": {
                                            "description": "Server name",
                                            "type": "string"
                                        },
                                        "description": {
                                            "description": "Server description",
                                            "type": "string"
                                        },
                                        "startup": {
                                            "description": "Server startup command",
                                            "type": "string"
                                        },
                                        "image": {
                                            "description": "Server Docker image",
                                            "type": "string"
                                        },
                                        "status": {
                                            "description": "Server status",
                                            "type": "string"
                                        },
                                        "owner": {
                                            "description": "Server owner information",
                                            "type": "object"
                                        },
                                        "node": {
                                            "description": "Node information",
                                            "type": "object"
                                        },
                                        "realm": {
                                            "description": "Realm information",
                                            "type": "object"
                                        },
                                        "spell": {
                                            "description": "Spell information",
                                            "type": "object"
                                        },
                                        "allocation": {
                                            "description": "Allocation information",
                                            "type": "object"
                                        },
                                        "variables": {
                                            "description": "Server variables",
                                            "type": "array",
                                            "items": {
                                                "$ref": "#/components/schemas/ServerVariable"
                                            }
                                        },
                                        "mounts": {
                                            "description": "Full mount rows attached to this server",
                                            "type": "array",
                                            "items": {
                                                "type": "object"
                                            }
                                        },
                                        "mount_ids": {
                                            "description": "IDs of mounts attached to this server",
                                            "type": "array",
                                            "items": {
                                                "type": "integer"
                                            }
                                        },
                                        "sftp": {
                                            "$ref": "#/components/schemas/ServerSFTP"
                                        },
                                        "activity": {
                                            "description": "Recent server activity",
                                            "type": "array",
                                            "items": {
                                                "type": "object"
                                            }
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request - Invalid server ID"
                    },
                    "401": {
                        "description": "Unauthorized"
                    },
                    "403": {
                        "description": "Forbidden - Insufficient permissions"
                    },
                    "404": {
                        "description": "Server not found"
                    }
                }
            },
            "delete": {
                "tags": [
                    "Admin - Servers"
                ],
                "summary": "Delete server",
                "description": "Permanently delete a server from the database and Wings daemon. Unclaims allocation and sends notification email to the server owner.",
                "operationId": "51f651fe8c2d7bb10b133ef5b3648c11",
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "description": "Server ID",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Server deleted successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "message": {
                                            "description": "Success message",
                                            "type": "string"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request - Invalid server configuration"
                    },
                    "401": {
                        "description": "Unauthorized"
                    },
                    "403": {
                        "description": "Forbidden - Insufficient permissions"
                    },
                    "404": {
                        "description": "Server not found"
                    },
                    "422": {
                        "description": "Unprocessable Entity - Invalid server data"
                    },
                    "500": {
                        "description": "Internal server error - Failed to delete server or Wings error"
                    }
                }
            },
            "patch": {
                "tags": [
                    "Admin - Servers"
                ],
                "summary": "Update server",
                "description": "Update an existing server with comprehensive validation, Wings synchronization, variable handling, and allocation management.",
                "operationId": "ba83d892e64bb71d5faeda9b5fd21f92",
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "description": "Server ID",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/ServerUpdate"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Server updated successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "server": {
                                            "properties": {
                                                "id": {
                                                    "description": "Server ID",
                                                    "type": "integer"
                                                },
                                                "uuid": {
                                                    "description": "Server UUID",
                                                    "type": "string"
                                                },
                                                "uuidShort": {
                                                    "description": "Short server UUID",
                                                    "type": "string"
                                                },
                                                "name": {
                                                    "description": "Server name",
                                                    "type": "string"
                                                },
                                                "description": {
                                                    "description": "Server description",
                                                    "type": "string"
                                                },
                                                "startup": {
                                                    "description": "Server startup command",
                                                    "type": "string"
                                                },
                                                "image": {
                                                    "description": "Server Docker image",
                                                    "type": "string"
                                                },
                                                "status": {
                                                    "description": "Server status",
                                                    "type": "string"
                                                },
                                                "updated_at": {
                                                    "description": "Last update timestamp",
                                                    "type": "string",
                                                    "format": "date-time"
                                                }
                                            },
                                            "type": "object"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request - Invalid JSON, invalid data types, validation errors, invalid foreign keys, or allocation in use"
                    },
                    "401": {
                        "description": "Unauthorized"
                    },
                    "403": {
                        "description": "Forbidden - Insufficient permissions"
                    },
                    "404": {
                        "description": "Server not found"
                    },
                    "500": {
                        "description": "Internal server error - Failed to update server, Wings sync error, or variables update failed"
                    }
                }
            }
        },
        "/api/admin/servers/external/{externalId}": {
            "get": {
                "tags": [
                    "Admin - Servers"
                ],
                "summary": "Get server by external ID",
                "description": "Retrieve a specific server by its external ID with complete details including related data, variables, SFTP information, and recent activity.",
                "operationId": "0db6a4bfa6d790d098979fd6972f3604",
                "parameters": [
                    {
                        "name": "externalId",
                        "in": "path",
                        "description": "Server external ID",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Server retrieved successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "id": {
                                            "description": "Server ID",
                                            "type": "integer"
                                        },
                                        "uuid": {
                                            "description": "Server UUID",
                                            "type": "string"
                                        },
                                        "uuidShort": {
                                            "description": "Short server UUID",
                                            "type": "string"
                                        },
                                        "name": {
                                            "description": "Server name",
                                            "type": "string"
                                        },
                                        "description": {
                                            "description": "Server description",
                                            "type": "string"
                                        },
                                        "startup": {
                                            "description": "Server startup command",
                                            "type": "string"
                                        },
                                        "image": {
                                            "description": "Server Docker image",
                                            "type": "string"
                                        },
                                        "status": {
                                            "description": "Server status",
                                            "type": "string"
                                        },
                                        "owner": {
                                            "description": "Server owner information",
                                            "type": "object"
                                        },
                                        "node": {
                                            "description": "Node information",
                                            "type": "object"
                                        },
                                        "realm": {
                                            "description": "Realm information",
                                            "type": "object"
                                        },
                                        "spell": {
                                            "description": "Spell information",
                                            "type": "object"
                                        },
                                        "allocation": {
                                            "description": "Allocation information",
                                            "type": "object"
                                        },
                                        "variables": {
                                            "description": "Server variables",
                                            "type": "array",
                                            "items": {
                                                "$ref": "#/components/schemas/ServerVariable"
                                            }
                                        },
                                        "mounts": {
                                            "description": "Full mount rows attached to this server",
                                            "type": "array",
                                            "items": {
                                                "type": "object"
                                            }
                                        },
                                        "mount_ids": {
                                            "description": "IDs of mounts attached to this server",
                                            "type": "array",
                                            "items": {
                                                "type": "integer"
                                            }
                                        },
                                        "sftp": {
                                            "$ref": "#/components/schemas/ServerSFTP"
                                        },
                                        "activity": {
                                            "description": "Recent server activity",
                                            "type": "array",
                                            "items": {
                                                "type": "object"
                                            }
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request - Invalid external ID"
                    },
                    "401": {
                        "description": "Unauthorized"
                    },
                    "403": {
                        "description": "Forbidden - Insufficient permissions"
                    },
                    "404": {
                        "description": "Server not found"
                    }
                }
            }
        },
        "/api/admin/servers/{id}/hard": {
            "delete": {
                "tags": [
                    "Admin - Servers"
                ],
                "summary": "Hard delete server",
                "description": "Force delete a server from the database only, without contacting Wings. Use this only when Wings is unreachable or the node is dead. This will NOT remove server files from Wings.",
                "operationId": "40f9a13c0fca85566572b7efacb41a4b",
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "description": "Server ID",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Server hard deleted successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "message": {
                                            "description": "Success message",
                                            "type": "string"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "401": {
                        "description": "Unauthorized"
                    },
                    "403": {
                        "description": "Forbidden - Insufficient permissions"
                    },
                    "404": {
                        "description": "Server not found"
                    },
                    "500": {
                        "description": "Internal server error - Failed to delete server from database"
                    }
                }
            }
        },
        "/api/admin/servers/owner/{ownerId}": {
            "get": {
                "tags": [
                    "Admin - Servers"
                ],
                "summary": "Get servers by owner",
                "description": "Retrieve all servers owned by a specific user.",
                "operationId": "16514abf13969dd1e1fc71faf510eb62",
                "parameters": [
                    {
                        "name": "ownerId",
                        "in": "path",
                        "description": "Owner user ID",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Servers retrieved successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "servers": {
                                            "type": "array",
                                            "items": {
                                                "$ref": "#/components/schemas/Server"
                                            }
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request - Invalid owner ID"
                    },
                    "401": {
                        "description": "Unauthorized"
                    },
                    "403": {
                        "description": "Forbidden - Insufficient permissions"
                    }
                }
            }
        },
        "/api/admin/servers/node/{nodeId}": {
            "get": {
                "tags": [
                    "Admin - Servers"
                ],
                "summary": "Get servers by node",
                "description": "Retrieve all servers running on a specific node.",
                "operationId": "c4b24eda8c598df49fce95bcab6e00c2",
                "parameters": [
                    {
                        "name": "nodeId",
                        "in": "path",
                        "description": "Node ID",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Servers retrieved successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "servers": {
                                            "type": "array",
                                            "items": {
                                                "$ref": "#/components/schemas/Server"
                                            }
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request - Invalid node ID"
                    },
                    "401": {
                        "description": "Unauthorized"
                    },
                    "403": {
                        "description": "Forbidden - Insufficient permissions"
                    }
                }
            }
        },
        "/api/admin/servers/realm/{realmId}": {
            "get": {
                "tags": [
                    "Admin - Servers"
                ],
                "summary": "Get servers by realm",
                "description": "Retrieve all servers belonging to a specific realm.",
                "operationId": "22eab73283bece387f885f6f63f15450",
                "parameters": [
                    {
                        "name": "realmId",
                        "in": "path",
                        "description": "Realm ID",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Servers retrieved successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "servers": {
                                            "type": "array",
                                            "items": {
                                                "$ref": "#/components/schemas/Server"
                                            }
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request - Invalid realm ID"
                    },
                    "401": {
                        "description": "Unauthorized"
                    },
                    "403": {
                        "description": "Forbidden - Insufficient permissions"
                    }
                }
            }
        },
        "/api/admin/servers/spell/{spellId}": {
            "get": {
                "tags": [
                    "Admin - Servers"
                ],
                "summary": "Get servers by spell",
                "description": "Retrieve all servers using a specific spell.",
                "operationId": "9975db55182ab4157c97f993a686e2f7",
                "parameters": [
                    {
                        "name": "spellId",
                        "in": "path",
                        "description": "Spell ID",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Servers retrieved successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "servers": {
                                            "type": "array",
                                            "items": {
                                                "$ref": "#/components/schemas/Server"
                                            }
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request - Invalid spell ID"
                    },
                    "401": {
                        "description": "Unauthorized"
                    },
                    "403": {
                        "description": "Forbidden - Insufficient permissions"
                    }
                }
            }
        },
        "/api/admin/servers/{id}/with-relations": {
            "get": {
                "tags": [
                    "Admin - Servers"
                ],
                "summary": "Get server with relations",
                "description": "Retrieve a specific server with all its related data including owner, node, realm, spell, and allocation information.",
                "operationId": "0c171832354798ba1ffdc9d0eec3d666",
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "description": "Server ID",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Server with relations retrieved successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "server": {
                                            "$ref": "#/components/schemas/Server"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request - Invalid server ID"
                    },
                    "401": {
                        "description": "Unauthorized"
                    },
                    "403": {
                        "description": "Forbidden - Insufficient permissions"
                    },
                    "404": {
                        "description": "Server not found"
                    }
                }
            }
        },
        "/api/admin/servers/with-relations": {
            "get": {
                "tags": [
                    "Admin - Servers"
                ],
                "summary": "Get all servers with relations",
                "description": "Retrieve all servers with their related data including owner, node, realm, spell, and allocation information.",
                "operationId": "e98596323c68808fe5482024dc7c13e2",
                "responses": {
                    "200": {
                        "description": "Servers with relations retrieved successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "servers": {
                                            "type": "array",
                                            "items": {
                                                "$ref": "#/components/schemas/Server"
                                            }
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "401": {
                        "description": "Unauthorized"
                    },
                    "403": {
                        "description": "Forbidden - Insufficient permissions"
                    }
                }
            }
        },
        "/api/admin/servers/{id}/variables": {
            "get": {
                "tags": [
                    "Admin - Servers"
                ],
                "summary": "Get server variables",
                "description": "Retrieve all variables for a specific server with their spell variable definitions and metadata.",
                "operationId": "862dc850e2af88e9bb569798ee2eee8a",
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "description": "Server ID",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Server variables retrieved successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "variables": {
                                            "type": "array",
                                            "items": {
                                                "$ref": "#/components/schemas/ServerVariable"
                                            }
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request - Invalid server ID"
                    },
                    "401": {
                        "description": "Unauthorized"
                    },
                    "403": {
                        "description": "Forbidden - Insufficient permissions"
                    },
                    "404": {
                        "description": "Server not found"
                    }
                }
            }
        },
        "/api/admin/servers/{id}/suspend": {
            "post": {
                "tags": [
                    "Admin - Servers"
                ],
                "summary": "Suspend server",
                "description": "Suspend a server by killing it in Wings and updating the suspended status. Sends notification email to the server owner.",
                "operationId": "dff790dea998b4989d7dcb342f4b630b",
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "description": "Server ID",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Server suspended successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "message": {
                                            "description": "Success message",
                                            "type": "string"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request - Invalid server configuration"
                    },
                    "401": {
                        "description": "Unauthorized"
                    },
                    "403": {
                        "description": "Forbidden - Insufficient permissions"
                    },
                    "404": {
                        "description": "Server not found"
                    },
                    "422": {
                        "description": "Unprocessable Entity - Invalid server data"
                    },
                    "500": {
                        "description": "Internal server error - Failed to suspend server or Wings error"
                    }
                }
            }
        },
        "/api/admin/servers/{id}/warn": {
            "post": {
                "tags": [
                    "Admin - Servers"
                ],
                "summary": "Send warning to server owner",
                "description": "Create an in-panel warning for the server owner (optionally emailed), e.g. high CPU stop notices.",
                "operationId": "7bc4d6efbb2776b0b057d67b43530ef9",
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "description": "Server ID",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "required": [
                                    "title",
                                    "message"
                                ],
                                "properties": {
                                    "title": {
                                        "description": "Warning title",
                                        "type": "string",
                                        "maxLength": 255,
                                        "minLength": 1
                                    },
                                    "message": {
                                        "description": "Warning message (markdown supported)",
                                        "type": "string",
                                        "minLength": 1
                                    },
                                    "type": {
                                        "description": "Notification type (default: warning)",
                                        "type": "string",
                                        "enum": [
                                            "info",
                                            "warning",
                                            "danger",
                                            "success",
                                            "error"
                                        ]
                                    },
                                    "send_email": {
                                        "description": "Also email the server owner (default: true)",
                                        "type": "boolean"
                                    },
                                    "is_dismissible": {
                                        "description": "Whether the warning can be dismissed (default: true)",
                                        "type": "boolean"
                                    },
                                    "is_sticky": {
                                        "description": "Whether the warning stays until closed (default: false)",
                                        "type": "boolean"
                                    }
                                },
                                "type": "object"
                            }
                        }
                    }
                },
                "responses": {
                    "201": {
                        "description": "Warning sent successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "notification_id": {
                                            "type": "integer"
                                        },
                                        "emailed": {
                                            "type": "boolean"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request"
                    },
                    "401": {
                        "description": "Unauthorized"
                    },
                    "403": {
                        "description": "Forbidden"
                    },
                    "404": {
                        "description": "Server not found"
                    },
                    "500": {
                        "description": "Internal server error"
                    }
                }
            }
        },
        "/api/admin/servers/{id}/unsuspend": {
            "post": {
                "tags": [
                    "Admin - Servers"
                ],
                "summary": "Unsuspend server",
                "description": "Unsuspend a server by updating the suspended status. Sends notification email to the server owner.",
                "operationId": "6755115c9484749589b557eae9281caf",
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "description": "Server ID",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Server unsuspended successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "message": {
                                            "description": "Success message",
                                            "type": "string"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request - Invalid server ID"
                    },
                    "401": {
                        "description": "Unauthorized"
                    },
                    "403": {
                        "description": "Forbidden - Insufficient permissions"
                    },
                    "404": {
                        "description": "Server not found"
                    },
                    "500": {
                        "description": "Internal server error - Failed to unsuspend server"
                    }
                }
            }
        },
        "/api/admin/servers/{id}/transfer": {
            "get": {
                "tags": [
                    "Admin - Servers"
                ],
                "summary": "Get server transfer status",
                "description": "Retrieve the current status of a server transfer including progress, start time, and any error messages.",
                "operationId": "36d355351951dab2c19ccc534c16f592",
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "description": "Server ID",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Transfer status retrieved successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "status": {
                                            "description": "Transfer status",
                                            "type": "string"
                                        },
                                        "progress": {
                                            "description": "Transfer progress percentage",
                                            "type": "number",
                                            "format": "float"
                                        },
                                        "started_at": {
                                            "description": "Transfer start time",
                                            "type": "string"
                                        },
                                        "completed_at": {
                                            "description": "Transfer completion time",
                                            "type": "string"
                                        },
                                        "error": {
                                            "description": "Error message if transfer failed",
                                            "type": "string"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request - Server is not being transferred"
                    },
                    "401": {
                        "description": "Unauthorized"
                    },
                    "403": {
                        "description": "Forbidden - Insufficient permissions"
                    },
                    "404": {
                        "description": "Server not found"
                    },
                    "500": {
                        "description": "Internal server error - Failed to get transfer status"
                    }
                }
            },
            "post": {
                "tags": [
                    "Admin - Servers"
                ],
                "summary": "Initiate server transfer",
                "description": "Start a transfer of a server from its current node to a destination node. Generates a transfer JWT token and instructs the source node to begin the transfer process.",
                "operationId": "e328bdba867f2aa84dae573b5cd6dfe7",
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "description": "Server ID",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "required": [
                                    "destination_node_id"
                                ],
                                "properties": {
                                    "destination_node_id": {
                                        "description": "Destination node ID",
                                        "type": "integer",
                                        "minimum": 1
                                    },
                                    "destination_allocation_id": {
                                        "description": "Destination allocation ID (optional)",
                                        "type": "integer",
                                        "minimum": 1
                                    },
                                    "backups": {
                                        "description": "Optional backup UUIDs to transfer (Calagopus)",
                                        "type": "array",
                                        "items": {
                                            "type": "string",
                                            "format": "uuid"
                                        }
                                    },
                                    "include_all_backups": {
                                        "description": "Include all successful server backups when no explicit backups are supplied",
                                        "type": "boolean"
                                    },
                                    "delete_backups": {
                                        "description": "Delete transferred backups on the source node (Calagopus)",
                                        "type": "boolean"
                                    }
                                },
                                "type": "object"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Server transfer initiated successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "message": {
                                            "description": "Success message",
                                            "type": "string"
                                        },
                                        "transfer_token": {
                                            "description": "Transfer JWT token",
                                            "type": "string"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request - Invalid destination node, server already transferring, or same source and destination"
                    },
                    "401": {
                        "description": "Unauthorized"
                    },
                    "403": {
                        "description": "Forbidden - Insufficient permissions"
                    },
                    "404": {
                        "description": "Server not found or destination node not found"
                    },
                    "500": {
                        "description": "Internal server error - Failed to initiate transfer or Wings error"
                    }
                }
            },
            "delete": {
                "tags": [
                    "Admin - Servers"
                ],
                "summary": "Cancel server transfer",
                "description": "Cancel an in-progress server transfer. This will revert the server to its original node and release any allocated resources on the destination node.",
                "operationId": "5d1875b955773ba06dda5b1994a43ab9",
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "description": "Server ID",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Transfer cancelled successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "message": {
                                            "description": "Success message",
                                            "type": "string"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request - Server is not being transferred"
                    },
                    "401": {
                        "description": "Unauthorized"
                    },
                    "403": {
                        "description": "Forbidden - Insufficient permissions"
                    },
                    "404": {
                        "description": "Server not found"
                    },
                    "500": {
                        "description": "Internal server error - Failed to cancel transfer"
                    }
                }
            }
        },
        "/api/admin/servers/{id}/reconcile": {
            "post": {
                "tags": [
                    "Admin - Servers"
                ],
                "summary": "Force runtime reconcile",
                "description": "Asks Wings to recover a server stuck in starting/stopping or desynchronized from Docker/containerd.",
                "operationId": "9223d0d5141d67a0f2290ff9c836f77e",
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Reconciliation completed"
                    },
                    "404": {
                        "description": "Server or node not found"
                    },
                    "409": {
                        "description": "Server is busy (install/transfer/restore)"
                    },
                    "500": {
                        "description": "Wings reconciliation failed"
                    }
                }
            }
        },
        "/api/admin/servers/{id}/runtime": {
            "get": {
                "tags": [
                    "Admin - Servers"
                ],
                "summary": "Get Wings runtime health",
                "description": "Returns the live Wings process state and runtime health (Docker desync detection).",
                "operationId": "720f8a4b5a295340b700e28e11b1ce90",
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Runtime health"
                    },
                    "404": {
                        "description": "Server or node not found"
                    },
                    "500": {
                        "description": "Failed to query Wings"
                    }
                }
            }
        },
        "/api/admin/settings": {
            "get": {
                "tags": [
                    "Admin - Settings"
                ],
                "summary": "Get all settings",
                "description": "Retrieve all application settings organized by category. Can optionally filter by category using query parameter.",
                "operationId": "8d4e1a5d511e6ea607bc3eba1be1422d",
                "parameters": [
                    {
                        "name": "category",
                        "in": "query",
                        "description": "Filter settings by category",
                        "required": false,
                        "schema": {
                            "type": "string",
                            "enum": [
                                "app",
                                "security",
                                "email",
                                "other"
                            ]
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Settings retrieved successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "settings": {
                                            "description": "All settings",
                                            "type": "object",
                                            "additionalProperties": {
                                                "$ref": "#/components/schemas/Setting"
                                            }
                                        },
                                        "categories": {
                                            "description": "Settings categories",
                                            "type": "object",
                                            "additionalProperties": {
                                                "type": "object"
                                            }
                                        },
                                        "organized_settings": {
                                            "$ref": "#/components/schemas/OrganizedSettings"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "401": {
                        "description": "Unauthorized"
                    },
                    "403": {
                        "description": "Forbidden - Insufficient permissions"
                    }
                }
            },
            "patch": {
                "tags": [
                    "Admin - Settings"
                ],
                "summary": "Update settings",
                "description": "Update multiple application settings with validation and activity logging.",
                "operationId": "0d966a787819770b4d7db1edc023f358",
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/SettingsUpdate"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Settings updated successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "message": {
                                            "description": "Success message",
                                            "type": "string"
                                        },
                                        "updated_settings": {
                                            "description": "List of updated setting names",
                                            "type": "array",
                                            "items": {
                                                "type": "string"
                                            }
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request - Invalid setting name, required field empty, or value too long"
                    },
                    "401": {
                        "description": "Unauthorized"
                    },
                    "403": {
                        "description": "Forbidden - Insufficient permissions"
                    },
                    "500": {
                        "description": "Internal server error - Failed to update setting"
                    }
                }
            }
        },
        "/api/admin/settings/categories": {
            "get": {
                "tags": [
                    "Admin - Settings"
                ],
                "summary": "Get settings categories",
                "description": "Retrieve all available settings categories with their metadata.",
                "operationId": "078b70e70943127692b4e5b11cd93aef",
                "responses": {
                    "200": {
                        "description": "Categories retrieved successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "categories": {
                                            "description": "Settings categories",
                                            "type": "object",
                                            "additionalProperties": {
                                                "$ref": "#/components/schemas/SettingCategory"
                                            }
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "401": {
                        "description": "Unauthorized"
                    },
                    "403": {
                        "description": "Forbidden - Insufficient permissions"
                    }
                }
            }
        },
        "/api/admin/settings/category/{category}": {
            "get": {
                "tags": [
                    "Admin - Settings"
                ],
                "summary": "Get settings by category",
                "description": "Retrieve all settings belonging to a specific category.",
                "operationId": "de5774b726d6e1be34c62d5a83100627",
                "parameters": [
                    {
                        "name": "category",
                        "in": "path",
                        "description": "Category name",
                        "required": true,
                        "schema": {
                            "type": "string",
                            "enum": [
                                "app",
                                "security",
                                "email",
                                "other"
                            ]
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Category settings retrieved successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "category": {
                                            "description": "Category information",
                                            "type": "object"
                                        },
                                        "settings": {
                                            "description": "Settings in this category",
                                            "type": "object",
                                            "additionalProperties": {
                                                "$ref": "#/components/schemas/Setting"
                                            }
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "401": {
                        "description": "Unauthorized"
                    },
                    "403": {
                        "description": "Forbidden - Insufficient permissions"
                    },
                    "404": {
                        "description": "Category not found"
                    }
                }
            }
        },
        "/api/admin/settings/{setting}": {
            "get": {
                "tags": [
                    "Admin - Settings"
                ],
                "summary": "Get specific setting",
                "description": "Retrieve a specific setting by its name/key.",
                "operationId": "973066d7fb0f4d0773e5a94c700f7b46",
                "parameters": [
                    {
                        "name": "setting",
                        "in": "path",
                        "description": "Setting name/key",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Setting retrieved successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "setting": {
                                            "$ref": "#/components/schemas/Setting"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "401": {
                        "description": "Unauthorized"
                    },
                    "403": {
                        "description": "Forbidden - Insufficient permissions"
                    },
                    "404": {
                        "description": "Setting not found"
                    }
                }
            }
        },
        "/api/admin/settings/chatbot/system-prompt": {
            "get": {
                "tags": [
                    "Admin - Settings"
                ],
                "summary": "Get AI system prompt",
                "description": "Retrieve the AI system prompt from the system-prompt.txt file.",
                "operationId": "801694af6140f6bbb1fd895bff95e3e8",
                "responses": {
                    "200": {
                        "description": "System prompt retrieved successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "system_prompt": {
                                            "description": "The system prompt content",
                                            "type": "string"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "401": {
                        "description": "Unauthorized - User not authenticated"
                    },
                    "403": {
                        "description": "Forbidden - Admin access required"
                    },
                    "404": {
                        "description": "Not found - System prompt file not found"
                    },
                    "500": {
                        "description": "Internal server error - Failed to read system prompt"
                    }
                }
            }
        },
        "/api/admin/settings/upload-image": {
            "post": {
                "tags": [
                    "Admin - Settings"
                ],
                "summary": "Upload an image attachment for settings fields",
                "description": "Upload a JPG/PNG/GIF/WebP image (max 5MB) into /attachments/settings and return its public URL.",
                "operationId": "b25c6853df57ac3721ba8b03195db8cf",
                "requestBody": {
                    "required": true,
                    "content": {
                        "multipart/form-data": {
                            "schema": {
                                "required": [
                                    "image"
                                ],
                                "properties": {
                                    "image": {
                                        "type": "string",
                                        "format": "binary"
                                    }
                                },
                                "type": "object"
                            }
                        }
                    }
                },
                "responses": {
                    "201": {
                        "description": "Image uploaded successfully"
                    },
                    "400": {
                        "description": "Bad request"
                    },
                    "401": {
                        "description": "Unauthorized"
                    },
                    "403": {
                        "description": "Forbidden"
                    },
                    "500": {
                        "description": "Failed to save file"
                    }
                }
            }
        },
        "/api/admin/settings/email/test": {
            "post": {
                "tags": [
                    "Admin - Settings"
                ],
                "summary": "Send test email to current user",
                "description": "Send a test email to the currently authenticated user to verify SMTP configuration. This is useful for testing email settings, especially with providers like SendGrid that require email verification.",
                "operationId": "07ae533fc920837f95d5b64026b25cab",
                "responses": {
                    "200": {
                        "description": "Test email queued successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "message": {
                                            "description": "Success message",
                                            "type": "string"
                                        },
                                        "queue_id": {
                                            "description": "Mail queue ID",
                                            "type": "integer"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request - SMTP not enabled or user has no email"
                    },
                    "401": {
                        "description": "Unauthorized"
                    },
                    "403": {
                        "description": "Forbidden - Insufficient permissions"
                    },
                    "500": {
                        "description": "Internal server error - Failed to queue test email"
                    }
                }
            }
        },
        "/api/admin/settings/docker/update": {
            "post": {
                "tags": [
                    "Admin - Settings"
                ],
                "summary": "Trigger Docker panel update",
                "description": "Docker-only action that asks the local updater service to pull latest images and recreate containers.",
                "operationId": "d1d236160c70ffc5eee1d10c3337a6b5",
                "responses": {
                    "200": {
                        "description": "Docker update started successfully"
                    },
                    "400": {
                        "description": "Bad request - not a Docker deployment"
                    },
                    "401": {
                        "description": "Unauthorized"
                    },
                    "403": {
                        "description": "Forbidden - Insufficient permissions"
                    },
                    "500": {
                        "description": "Internal server error - updater service unavailable or misconfigured"
                    }
                }
            }
        },
        "/api/admin/spells": {
            "get": {
                "tags": [
                    "Admin - Spells"
                ],
                "summary": "Get all spells",
                "description": "Retrieve a paginated list of all spells with optional filtering by realm and search functionality.",
                "operationId": "d5c4a698b600b29afa8c417fbbb0b97c",
                "parameters": [
                    {
                        "name": "page",
                        "in": "query",
                        "description": "Page number for pagination",
                        "required": false,
                        "schema": {
                            "type": "integer",
                            "default": 1,
                            "minimum": 1
                        }
                    },
                    {
                        "name": "limit",
                        "in": "query",
                        "description": "Number of records per page",
                        "required": false,
                        "schema": {
                            "type": "integer",
                            "default": 10,
                            "maximum": 100,
                            "minimum": 1
                        }
                    },
                    {
                        "name": "search",
                        "in": "query",
                        "description": "Search term to filter spells by name, author, or description",
                        "required": false,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "realm_id",
                        "in": "query",
                        "description": "Filter spells by realm ID",
                        "required": false,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Spells retrieved successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "spells": {
                                            "type": "array",
                                            "items": {
                                                "$ref": "#/components/schemas/Spell"
                                            }
                                        },
                                        "pagination": {
                                            "$ref": "#/components/schemas/SpellPagination"
                                        },
                                        "search": {
                                            "properties": {
                                                "query": {
                                                    "type": "string"
                                                },
                                                "has_results": {
                                                    "type": "boolean"
                                                }
                                            },
                                            "type": "object"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "401": {
                        "description": "Unauthorized"
                    },
                    "403": {
                        "description": "Forbidden - Insufficient permissions"
                    }
                }
            },
            "put": {
                "tags": [
                    "Admin - Spells"
                ],
                "summary": "Create new spell",
                "description": "Create a new spell with comprehensive validation including JSON field validation, UUID generation, and activity logging.",
                "operationId": "1ac189b11b507f0ae440f588d1fa388e",
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/SpellCreate"
                            }
                        }
                    }
                },
                "responses": {
                    "201": {
                        "description": "Spell created successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "spell": {
                                            "$ref": "#/components/schemas/Spell"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request - Invalid JSON, missing required fields, invalid data types, validation errors, invalid realm, invalid UUID format, or UUID already exists"
                    },
                    "401": {
                        "description": "Unauthorized"
                    },
                    "403": {
                        "description": "Forbidden - Insufficient permissions"
                    },
                    "404": {
                        "description": "Realm not found"
                    }
                }
            }
        },
        "/api/admin/spells/{id}": {
            "get": {
                "tags": [
                    "Admin - Spells"
                ],
                "summary": "Get spell by ID",
                "description": "Retrieve a specific spell by its ID with realm information.",
                "operationId": "04d3c24bf4c92cda59e449d60d90905c",
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "description": "Spell ID",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Spell retrieved successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "spell": {
                                            "$ref": "#/components/schemas/Spell"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request - Invalid spell ID"
                    },
                    "401": {
                        "description": "Unauthorized"
                    },
                    "403": {
                        "description": "Forbidden - Insufficient permissions"
                    },
                    "404": {
                        "description": "Spell not found"
                    }
                }
            },
            "delete": {
                "tags": [
                    "Admin - Spells"
                ],
                "summary": "Delete spell",
                "description": "Permanently delete a spell. Checks for references from other spells before deletion.",
                "operationId": "564d497fc44258f9446a195e32d5e155",
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "description": "Spell ID",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Spell deleted successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "message": {
                                            "description": "Success message",
                                            "type": "string"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request - Spell is referenced by other spells or failed to delete"
                    },
                    "401": {
                        "description": "Unauthorized"
                    },
                    "403": {
                        "description": "Forbidden - Insufficient permissions"
                    },
                    "404": {
                        "description": "Spell not found"
                    }
                }
            },
            "patch": {
                "tags": [
                    "Admin - Spells"
                ],
                "summary": "Update spell",
                "description": "Update an existing spell with comprehensive validation including JSON field validation, UUID validation, and activity logging.",
                "operationId": "138dfa3d60004c7bf10c20251cb8c1a0",
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "description": "Spell ID",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/SpellUpdate"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Spell updated successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "spell": {
                                            "$ref": "#/components/schemas/Spell"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request - Invalid JSON, no data provided, invalid data types, validation errors, invalid realm, invalid UUID format, or UUID already exists"
                    },
                    "401": {
                        "description": "Unauthorized"
                    },
                    "403": {
                        "description": "Forbidden - Insufficient permissions"
                    },
                    "404": {
                        "description": "Spell or realm not found"
                    }
                }
            }
        },
        "/api/admin/spells/realm/{realmId}": {
            "get": {
                "tags": [
                    "Admin - Spells"
                ],
                "summary": "Get spells by realm",
                "description": "Retrieve all spells belonging to a specific realm with pagination and search functionality.",
                "operationId": "8afc353e81aed07372a01b9a22f315c0",
                "parameters": [
                    {
                        "name": "realmId",
                        "in": "path",
                        "description": "Realm ID",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    },
                    {
                        "name": "page",
                        "in": "query",
                        "description": "Page number for pagination",
                        "required": false,
                        "schema": {
                            "type": "integer",
                            "default": 1,
                            "minimum": 1
                        }
                    },
                    {
                        "name": "limit",
                        "in": "query",
                        "description": "Number of records per page",
                        "required": false,
                        "schema": {
                            "type": "integer",
                            "default": 10,
                            "maximum": 100,
                            "minimum": 1
                        }
                    },
                    {
                        "name": "search",
                        "in": "query",
                        "description": "Search term to filter spells",
                        "required": false,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Spells for realm retrieved successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "spells": {
                                            "type": "array",
                                            "items": {
                                                "$ref": "#/components/schemas/Spell"
                                            }
                                        },
                                        "realm": {
                                            "description": "Realm information",
                                            "type": "object"
                                        },
                                        "pagination": {
                                            "properties": {
                                                "page": {
                                                    "type": "integer"
                                                },
                                                "limit": {
                                                    "type": "integer"
                                                },
                                                "total": {
                                                    "type": "integer"
                                                }
                                            },
                                            "type": "object"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request - Invalid realm ID"
                    },
                    "401": {
                        "description": "Unauthorized"
                    },
                    "403": {
                        "description": "Forbidden - Insufficient permissions"
                    },
                    "404": {
                        "description": "Realm not found"
                    }
                }
            }
        },
        "/api/admin/spells/reorder": {
            "post": {
                "tags": [
                    "Admin - Spells"
                ],
                "summary": "Reorder spells within a realm",
                "description": "Update the display sort order of spells in a realm (e.g. Node.js first, then Python, then Java).",
                "operationId": "b992aed8977812e8ca2f895642a00320",
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "required": [
                                    "realm_id",
                                    "spells"
                                ],
                                "properties": {
                                    "realm_id": {
                                        "type": "integer",
                                        "minimum": 1
                                    },
                                    "spells": {
                                        "type": "array",
                                        "items": {
                                            "properties": {
                                                "id": {
                                                    "type": "integer"
                                                },
                                                "sort_order": {
                                                    "type": "integer"
                                                }
                                            },
                                            "type": "object"
                                        }
                                    }
                                },
                                "type": "object"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Spells reordered successfully"
                    },
                    "400": {
                        "description": "Bad request"
                    },
                    "404": {
                        "description": "Realm not found"
                    },
                    "500": {
                        "description": "Internal server error"
                    }
                }
            }
        },
        "/api/admin/spells/import": {
            "post": {
                "tags": [
                    "Admin - Spells"
                ],
                "summary": "Import spell from file",
                "description": "Import a spell from a JSON file with comprehensive validation, variable import, and metadata preservation.",
                "operationId": "e134d947dc5efdc6fcfd5e110f33e113",
                "requestBody": {
                    "required": true,
                    "content": {
                        "multipart/form-data": {
                            "schema": {
                                "$ref": "#/components/schemas/SpellImport"
                            }
                        }
                    }
                },
                "responses": {
                    "201": {
                        "description": "Spell imported successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "spell": {
                                            "$ref": "#/components/schemas/Spell"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request - Invalid realm ID, no file uploaded, file upload error, file read error, invalid JSON format, or failed to create spell"
                    },
                    "401": {
                        "description": "Unauthorized"
                    },
                    "403": {
                        "description": "Forbidden - Insufficient permissions"
                    },
                    "404": {
                        "description": "Realm not found"
                    }
                }
            }
        },
        "/api/admin/spells/{id}/export": {
            "get": {
                "tags": [
                    "Admin - Spells"
                ],
                "summary": "Export spell to file",
                "description": "Export a spell to a JSON file with complete metadata, variables, and FeatherPanel-specific information.",
                "operationId": "18dcffea48924c7397ffa045257aeee4",
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "description": "Spell ID",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Spell exported successfully",
                        "headers": {
                            "Content-Disposition": {
                                "description": "Attachment filename",
                                "schema": {
                                    "type": "string"
                                }
                            }
                        },
                        "content": {
                            "application/json": {
                                "schema": {
                                    "description": "Complete spell export data with metadata and variables",
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request - Invalid spell ID"
                    },
                    "401": {
                        "description": "Unauthorized"
                    },
                    "403": {
                        "description": "Forbidden - Insufficient permissions"
                    },
                    "404": {
                        "description": "Spell not found"
                    }
                }
            }
        },
        "/api/admin/spells/{spellId}/variables": {
            "get": {
                "tags": [
                    "Admin - Spells"
                ],
                "summary": "List spell variables",
                "description": "Retrieve all variables for a specific spell.",
                "operationId": "8b19a7fd5041ebfaa5897cc7cfb6f791",
                "parameters": [
                    {
                        "name": "spellId",
                        "in": "path",
                        "description": "Spell ID",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Variables retrieved successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "variables": {
                                            "type": "array",
                                            "items": {
                                                "$ref": "#/components/schemas/SpellVariable"
                                            }
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request - Invalid spell ID"
                    },
                    "401": {
                        "description": "Unauthorized"
                    },
                    "403": {
                        "description": "Forbidden - Insufficient permissions"
                    },
                    "404": {
                        "description": "Spell not found"
                    }
                }
            },
            "post": {
                "tags": [
                    "Admin - Spells"
                ],
                "summary": "Create spell variable",
                "description": "Create a new variable for a specific spell with validation.",
                "operationId": "4dff1b0d1f9c6dad1c04602c938e6d70",
                "parameters": [
                    {
                        "name": "spellId",
                        "in": "path",
                        "description": "Spell ID",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/SpellVariableCreate"
                            }
                        }
                    }
                },
                "responses": {
                    "201": {
                        "description": "Variable created successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "variable": {
                                            "$ref": "#/components/schemas/SpellVariable"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request - Invalid JSON, missing required fields, or failed to create variable"
                    },
                    "401": {
                        "description": "Unauthorized"
                    },
                    "403": {
                        "description": "Forbidden - Insufficient permissions"
                    },
                    "404": {
                        "description": "Spell not found"
                    }
                }
            }
        },
        "/api/admin/spell-variables/{id}": {
            "delete": {
                "tags": [
                    "Admin - Spells"
                ],
                "summary": "Delete spell variable",
                "description": "Delete an existing spell variable.",
                "operationId": "6ede5b000f2da9567fb5f341eb2ae8db",
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "description": "Variable ID",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Variable deleted successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "message": {
                                            "description": "Success message",
                                            "type": "string"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request - Failed to delete variable"
                    },
                    "401": {
                        "description": "Unauthorized"
                    },
                    "403": {
                        "description": "Forbidden - Insufficient permissions"
                    },
                    "404": {
                        "description": "Variable not found"
                    }
                }
            },
            "patch": {
                "tags": [
                    "Admin - Spells"
                ],
                "summary": "Update spell variable",
                "description": "Update an existing spell variable.",
                "operationId": "7df68a7883400de2dd5ad25de92c32c5",
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "description": "Variable ID",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/SpellVariableUpdate"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Variable updated successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "variable": {
                                            "$ref": "#/components/schemas/SpellVariable"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request - Invalid JSON or failed to update variable"
                    },
                    "401": {
                        "description": "Unauthorized"
                    },
                    "403": {
                        "description": "Forbidden - Insufficient permissions"
                    },
                    "404": {
                        "description": "Variable not found"
                    }
                }
            }
        },
        "/api/admin/spells/online/list": {
            "get": {
                "tags": [
                    "Admin - Spells"
                ],
                "summary": "List online spells",
                "description": "Retrieve spells from the online FeatherPanel spell registry with search and pagination.",
                "operationId": "d96ef4214ab36579533ddbeaa0d23741",
                "parameters": [
                    {
                        "name": "q",
                        "in": "query",
                        "description": "Search query",
                        "required": false,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "page",
                        "in": "query",
                        "description": "Page number for pagination",
                        "required": false,
                        "schema": {
                            "type": "integer",
                            "default": 1,
                            "minimum": 1
                        }
                    },
                    {
                        "name": "per_page",
                        "in": "query",
                        "description": "Number of records per page",
                        "required": false,
                        "schema": {
                            "type": "integer",
                            "default": 20,
                            "minimum": 1
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Online spells retrieved successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "spells": {
                                            "type": "array",
                                            "items": {
                                                "$ref": "#/components/schemas/OnlineSpell"
                                            }
                                        },
                                        "pagination": {
                                            "description": "Pagination information",
                                            "type": "object"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "401": {
                        "description": "Unauthorized"
                    },
                    "403": {
                        "description": "Forbidden - Insufficient permissions"
                    },
                    "500": {
                        "description": "Failed to fetch online spell list or invalid response"
                    }
                }
            }
        },
        "/api/admin/spells/online/install": {
            "post": {
                "tags": [
                    "Admin - Spells"
                ],
                "summary": "Install spell from online registry",
                "description": "Install a spell from the online FeatherPanel spell registry with comprehensive validation, variable import, and metadata preservation.",
                "operationId": "d7d21637b9025e235764b45870ccc16f",
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/OnlineSpellInstall"
                            }
                        }
                    }
                },
                "responses": {
                    "201": {
                        "description": "Spell installed successfully from online repository",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "spell": {
                                            "$ref": "#/components/schemas/Spell"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request - Invalid identifier, invalid realm ID, invalid JSON format, or failed to create spell"
                    },
                    "401": {
                        "description": "Unauthorized"
                    },
                    "403": {
                        "description": "Forbidden - Insufficient permissions"
                    },
                    "404": {
                        "description": "Realm not found or spell not found in registry"
                    },
                    "500": {
                        "description": "Failed to download spell JSON"
                    }
                }
            }
        },
        "/api/admin/storage-sense": {
            "get": {
                "tags": [
                    "Admin - Storage Sense"
                ],
                "summary": "Storage Sense summary",
                "description": "Row counts and how many rows would be removed for a retention period.",
                "operationId": "fddbc1eabbe8beeb1d33d4e6bf91c84a",
                "responses": {
                    "200": {
                        "description": "OK"
                    },
                    "400": {
                        "description": "Bad request"
                    }
                }
            }
        },
        "/api/admin/storage-sense/purge": {
            "post": {
                "tags": [
                    "Admin - Storage Sense"
                ],
                "summary": "Purge old rows",
                "operationId": "d022cca93df7cb65413d6e00780b48f4",
                "responses": {
                    "200": {
                        "description": "OK"
                    },
                    "400": {
                        "description": "Bad request"
                    }
                }
            }
        },
        "/api/admin/storage-sense/purge-batch": {
            "post": {
                "tags": [
                    "Admin - Storage Sense"
                ],
                "summary": "Purge multiple targets",
                "operationId": "38bdcd8577f585e75e822336b2b12a4d",
                "responses": {
                    "200": {
                        "description": "OK"
                    },
                    "400": {
                        "description": "Bad request"
                    }
                }
            }
        },
        "/api/admin/subdomains": {
            "get": {
                "tags": [
                    "Admin - Subdomains"
                ],
                "summary": "List subdomain manager domains",
                "description": "Retrieve paginated list of subdomain manager domains with spell mappings.",
                "operationId": "ab50abad4ee76c57cc0bc7ff08d677b0",
                "parameters": [
                    {
                        "name": "page",
                        "in": "query",
                        "schema": {
                            "type": "integer",
                            "default": 1,
                            "minimum": 1
                        }
                    },
                    {
                        "name": "limit",
                        "in": "query",
                        "schema": {
                            "type": "integer",
                            "default": 25,
                            "maximum": 100,
                            "minimum": 1
                        }
                    },
                    {
                        "name": "search",
                        "in": "query",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "includeInactive",
                        "in": "query",
                        "schema": {
                            "type": "boolean",
                            "default": true
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Domains retrieved successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "domains": {
                                            "type": "array",
                                            "items": {
                                                "$ref": "#/components/schemas/SubdomainManagerDomain"
                                            }
                                        },
                                        "pagination": {
                                            "properties": {
                                                "current_page": {
                                                    "type": "integer"
                                                },
                                                "per_page": {
                                                    "type": "integer"
                                                },
                                                "total_records": {
                                                    "type": "integer"
                                                },
                                                "total_pages": {
                                                    "type": "integer"
                                                }
                                            },
                                            "type": "object"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "403": {
                        "description": "Forbidden"
                    }
                }
            },
            "put": {
                "tags": [
                    "Admin - Subdomains"
                ],
                "summary": "Create subdomain manager domain",
                "operationId": "00b1dfd7b5afd2e3c5bb47e4730ba9bc",
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "required": [
                                    "domain"
                                ],
                                "properties": {
                                    "domain": {
                                        "type": "string"
                                    },
                                    "description": {
                                        "type": "string",
                                        "nullable": true
                                    },
                                    "is_active": {
                                        "type": "boolean"
                                    },
                                    "cloudflare_zone_id": {
                                        "type": "string",
                                        "nullable": true
                                    },
                                    "cloudflare_account_id": {
                                        "type": "string"
                                    },
                                    "spells": {
                                        "type": "array",
                                        "items": {
                                            "properties": {
                                                "spell_id": {
                                                    "type": "integer"
                                                },
                                                "protocol_service": {
                                                    "type": "string",
                                                    "nullable": true
                                                },
                                                "protocol_type": {
                                                    "type": "string",
                                                    "enum": [
                                                        "tcp",
                                                        "udp",
                                                        "tls"
                                                    ]
                                                },
                                                "priority": {
                                                    "type": "integer"
                                                },
                                                "weight": {
                                                    "type": "integer"
                                                },
                                                "ttl": {
                                                    "type": "integer"
                                                }
                                            },
                                            "type": "object"
                                        }
                                    }
                                },
                                "type": "object"
                            }
                        }
                    }
                },
                "responses": {
                    "201": {
                        "description": "Domain created successfully"
                    },
                    "400": {
                        "description": "Validation failed"
                    }
                }
            }
        },
        "/api/admin/subdomains/{uuid}": {
            "get": {
                "tags": [
                    "Admin - Subdomains"
                ],
                "summary": "Get subdomain manager domain",
                "description": "Retrieve information about a subdomain manager domain including subdomains.",
                "operationId": "359389c05eda0138cee2986ead9f27f5",
                "parameters": [
                    {
                        "name": "uuid",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Domain retrieved successfully"
                    },
                    "404": {
                        "description": "Domain not found"
                    }
                }
            },
            "delete": {
                "tags": [
                    "Admin - Subdomains"
                ],
                "summary": "Delete subdomain manager domain",
                "operationId": "d8300b7514deae2df8d0fcdc872d3dcd",
                "parameters": [
                    {
                        "name": "uuid",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Domain deleted successfully"
                    },
                    "400": {
                        "description": "Domain still has subdomains"
                    },
                    "404": {
                        "description": "Domain not found"
                    }
                }
            },
            "patch": {
                "tags": [
                    "Admin - Subdomains"
                ],
                "summary": "Update subdomain manager domain",
                "operationId": "b3c824dbcec51a40e069e1bacf444a51",
                "parameters": [
                    {
                        "name": "uuid",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "type": "object"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Domain updated successfully"
                    },
                    "404": {
                        "description": "Domain not found"
                    }
                }
            }
        },
        "/api/admin/subdomains/settings": {
            "get": {
                "tags": [
                    "Admin - Subdomains"
                ],
                "summary": "Get subdomain manager settings",
                "operationId": "a7606f97701a1e1e7ffac3398af50d1a",
                "responses": {
                    "200": {
                        "description": "Settings retrieved successfully"
                    }
                }
            }
        },
        "/api/admin/subdomains/spells": {
            "get": {
                "tags": [
                    "Admin - Subdomains"
                ],
                "summary": "List spells available for subdomain manager",
                "operationId": "90471b8753f97232b89520c7e9c5b745",
                "responses": {
                    "200": {
                        "description": "Spells retrieved successfully"
                    }
                }
            }
        },
        "/api/admin/subdomains/{uuid}/subdomains": {
            "get": {
                "tags": [
                    "Admin - Subdomains"
                ],
                "summary": "List subdomains attached to a domain",
                "operationId": "9d2f6ee1c3ad08cc8bce64b1dce3bf73",
                "parameters": [
                    {
                        "name": "uuid",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Subdomains retrieved successfully"
                    },
                    "404": {
                        "description": "Domain not found"
                    }
                }
            }
        },
        "/api/admin/tickets/{uuid}/attachments": {
            "get": {
                "tags": [
                    "Admin - Ticket Attachments"
                ],
                "summary": "Get attachments for ticket",
                "description": "Retrieve all attachments associated with a ticket.",
                "operationId": "ddeeaf6fe46b0636addd5f3ded43db92",
                "parameters": [
                    {
                        "name": "uuid",
                        "in": "path",
                        "description": "Ticket UUID",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Attachments retrieved successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "attachments": {
                                            "type": "array",
                                            "items": {
                                                "$ref": "#/components/schemas/TicketAttachment"
                                            }
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request - Invalid UUID"
                    },
                    "401": {
                        "description": "Unauthorized"
                    },
                    "403": {
                        "description": "Forbidden"
                    },
                    "404": {
                        "description": "Ticket not found"
                    }
                }
            },
            "post": {
                "tags": [
                    "Admin - Ticket Attachments"
                ],
                "summary": "Upload attachment for ticket",
                "description": "Upload an attachment file for a ticket. Supports various file types with a maximum size of 50MB. Files are stored under /attachments using the pattern <ticketUuid>_tk_<name>.<extension>.",
                "operationId": "363c234ec643f77aabea90050936aa43",
                "parameters": [
                    {
                        "name": "uuid",
                        "in": "path",
                        "description": "Ticket UUID",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "multipart/form-data": {
                            "schema": {
                                "required": [
                                    "file"
                                ],
                                "properties": {
                                    "file": {
                                        "description": "Attachment file (max 50MB)",
                                        "type": "string",
                                        "format": "binary"
                                    }
                                },
                                "type": "object"
                            }
                        }
                    }
                },
                "responses": {
                    "201": {
                        "description": "Attachment uploaded successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "attachment_id": {
                                            "description": "Attachment ID",
                                            "type": "integer"
                                        },
                                        "url": {
                                            "description": "Public URL of the attachment",
                                            "type": "string"
                                        },
                                        "filename": {
                                            "description": "Stored filename",
                                            "type": "string"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request - No file provided or invalid file"
                    },
                    "401": {
                        "description": "Unauthorized"
                    },
                    "403": {
                        "description": "Forbidden - Attachments disabled"
                    },
                    "404": {
                        "description": "Ticket not found"
                    },
                    "500": {
                        "description": "Internal server error - Failed to save file"
                    }
                }
            }
        },
        "/api/admin/tickets/{uuid}/attachments/{attachmentId}": {
            "delete": {
                "tags": [
                    "Admin - Ticket Attachments"
                ],
                "summary": "Delete ticket attachment",
                "description": "Delete a specific attachment associated with a ticket.",
                "operationId": "6880c0cfb8771a0e2eb176bd819b4e37",
                "parameters": [
                    {
                        "name": "uuid",
                        "in": "path",
                        "description": "Ticket UUID",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "attachmentId",
                        "in": "path",
                        "description": "Attachment ID",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Attachment deleted successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "message": {
                                            "description": "Success message",
                                            "type": "string"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request - Invalid parameters"
                    },
                    "401": {
                        "description": "Unauthorized"
                    },
                    "403": {
                        "description": "Forbidden"
                    },
                    "404": {
                        "description": "Ticket or attachment not found"
                    },
                    "500": {
                        "description": "Internal server error"
                    }
                }
            }
        },
        "/api/admin/tickets/categories": {
            "get": {
                "tags": [
                    "Admin - Ticket Categories"
                ],
                "summary": "Get all ticket categories",
                "description": "Retrieve a paginated list of all ticket categories with optional search functionality.",
                "operationId": "34372faee0fcec41a6d87d8c8b3f319b",
                "parameters": [
                    {
                        "name": "page",
                        "in": "query",
                        "description": "Page number for pagination",
                        "required": false,
                        "schema": {
                            "type": "integer",
                            "default": 1,
                            "minimum": 1
                        }
                    },
                    {
                        "name": "limit",
                        "in": "query",
                        "description": "Number of records per page",
                        "required": false,
                        "schema": {
                            "type": "integer",
                            "default": 10,
                            "maximum": 100,
                            "minimum": 1
                        }
                    },
                    {
                        "name": "search",
                        "in": "query",
                        "description": "Search term to filter categories",
                        "required": false,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Categories retrieved successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "categories": {
                                            "type": "array",
                                            "items": {
                                                "$ref": "#/components/schemas/TicketCategory"
                                            }
                                        },
                                        "pagination": {
                                            "$ref": "#/components/schemas/TicketCategoryPagination"
                                        },
                                        "search": {
                                            "properties": {
                                                "query": {
                                                    "type": "string"
                                                },
                                                "has_results": {
                                                    "type": "boolean"
                                                }
                                            },
                                            "type": "object"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "401": {
                        "description": "Unauthorized"
                    },
                    "403": {
                        "description": "Forbidden - Insufficient permissions"
                    }
                }
            },
            "put": {
                "tags": [
                    "Admin - Ticket Categories"
                ],
                "summary": "Create new ticket category",
                "description": "Create a new ticket category with comprehensive validation.",
                "operationId": "82b57ec02bfaaa93caf7b620e314d7e1",
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/TicketCategoryCreate"
                            }
                        }
                    }
                },
                "responses": {
                    "201": {
                        "description": "Category created successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "category_id": {
                                            "description": "Created category ID",
                                            "type": "integer"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request - Validation errors"
                    },
                    "401": {
                        "description": "Unauthorized"
                    },
                    "403": {
                        "description": "Forbidden - Insufficient permissions"
                    },
                    "500": {
                        "description": "Internal server error"
                    }
                }
            }
        },
        "/api/admin/tickets/categories/{id}": {
            "get": {
                "tags": [
                    "Admin - Ticket Categories"
                ],
                "summary": "Get ticket category by ID",
                "description": "Retrieve a specific ticket category by its ID.",
                "operationId": "b0efbf5fcb2e2d47471e6149e8383162",
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "description": "Category ID",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Category retrieved successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "category": {
                                            "$ref": "#/components/schemas/TicketCategory"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request - Invalid ID"
                    },
                    "401": {
                        "description": "Unauthorized"
                    },
                    "403": {
                        "description": "Forbidden - Insufficient permissions"
                    },
                    "404": {
                        "description": "Category not found"
                    }
                }
            },
            "delete": {
                "tags": [
                    "Admin - Ticket Categories"
                ],
                "summary": "Delete ticket category",
                "description": "Permanently delete a ticket category.",
                "operationId": "37bc3938f80af89bd6a88178f1743c1c",
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "description": "Category ID",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Category deleted successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "message": {
                                            "description": "Success message",
                                            "type": "string"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request - Invalid ID"
                    },
                    "401": {
                        "description": "Unauthorized"
                    },
                    "403": {
                        "description": "Forbidden - Insufficient permissions"
                    },
                    "404": {
                        "description": "Category not found"
                    },
                    "409": {
                        "description": "Conflict - Cannot delete (tickets exist)"
                    },
                    "500": {
                        "description": "Internal server error"
                    }
                }
            },
            "patch": {
                "tags": [
                    "Admin - Ticket Categories"
                ],
                "summary": "Update ticket category",
                "description": "Update an existing ticket category with comprehensive validation.",
                "operationId": "06fd1d78f814eaaaaf1f738bc5871ec0",
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "description": "Category ID",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/TicketCategoryUpdate"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Category updated successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "message": {
                                            "description": "Success message",
                                            "type": "string"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request - Validation errors"
                    },
                    "401": {
                        "description": "Unauthorized"
                    },
                    "403": {
                        "description": "Forbidden - Insufficient permissions"
                    },
                    "404": {
                        "description": "Category not found"
                    },
                    "500": {
                        "description": "Internal server error"
                    }
                }
            }
        },
        "/api/admin/tickets/categories/upload-icon": {
            "post": {
                "tags": [
                    "Admin - Ticket Categories"
                ],
                "summary": "Upload icon for ticket category",
                "description": "Upload an icon image file for ticket categories. Supports JPG, PNG, GIF, and WebP formats with a maximum size of 5MB.",
                "operationId": "10e6351ae3b22fa92bcd4e9f1d508425",
                "requestBody": {
                    "required": true,
                    "content": {
                        "multipart/form-data": {
                            "schema": {
                                "required": [
                                    "icon"
                                ],
                                "properties": {
                                    "icon": {
                                        "description": "Icon image file (JPG, PNG, GIF, WebP, max 5MB)",
                                        "type": "string",
                                        "format": "binary"
                                    }
                                },
                                "type": "object"
                            }
                        }
                    }
                },
                "responses": {
                    "201": {
                        "description": "Icon uploaded successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "url": {
                                            "description": "Public URL of the uploaded icon",
                                            "type": "string"
                                        },
                                        "filename": {
                                            "description": "Filename of the uploaded icon",
                                            "type": "string"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request - No file provided, invalid file type, or file too large"
                    },
                    "401": {
                        "description": "Unauthorized"
                    },
                    "403": {
                        "description": "Forbidden - Insufficient permissions"
                    },
                    "500": {
                        "description": "Internal server error - Failed to save file"
                    }
                }
            }
        },
        "/api/admin/tickets/{uuid}/messages": {
            "get": {
                "tags": [
                    "Admin - Ticket Messages"
                ],
                "summary": "Get all messages for a ticket",
                "description": "Retrieve all messages for a specific ticket by UUID.",
                "operationId": "7563832f7c80e9d32e70fc6ab3e788b0",
                "parameters": [
                    {
                        "name": "uuid",
                        "in": "path",
                        "description": "Ticket UUID",
                        "required": true,
                        "schema": {
                            "type": "string",
                            "format": "uuid"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Messages retrieved successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "messages": {
                                            "type": "array",
                                            "items": {
                                                "$ref": "#/components/schemas/TicketMessage"
                                            }
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request - Invalid UUID"
                    },
                    "401": {
                        "description": "Unauthorized"
                    },
                    "403": {
                        "description": "Forbidden - Insufficient permissions"
                    },
                    "404": {
                        "description": "Ticket not found"
                    }
                }
            },
            "post": {
                "tags": [
                    "Admin - Ticket Messages"
                ],
                "summary": "Create new message for ticket",
                "description": "Add a new message/reply to a ticket. Support staff can add internal notes.",
                "operationId": "422dcf7a19a967aacd7a84a5f3093640",
                "parameters": [
                    {
                        "name": "uuid",
                        "in": "path",
                        "description": "Ticket UUID",
                        "required": true,
                        "schema": {
                            "type": "string",
                            "format": "uuid"
                        }
                    }
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/TicketMessageCreate"
                            }
                        }
                    }
                },
                "responses": {
                    "201": {
                        "description": "Message created successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "message_id": {
                                            "description": "Created message ID",
                                            "type": "integer"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request - Validation errors"
                    },
                    "401": {
                        "description": "Unauthorized"
                    },
                    "403": {
                        "description": "Forbidden - Insufficient permissions"
                    },
                    "404": {
                        "description": "Ticket not found"
                    },
                    "500": {
                        "description": "Internal server error"
                    }
                }
            }
        },
        "/api/admin/tickets/{uuid}/messages/{id}": {
            "get": {
                "tags": [
                    "Admin - Ticket Messages"
                ],
                "summary": "Get ticket message by ID",
                "description": "Retrieve a specific message from a ticket.",
                "operationId": "1d855c46778c2ea29628b289af2c9541",
                "parameters": [
                    {
                        "name": "uuid",
                        "in": "path",
                        "description": "Ticket UUID",
                        "required": true,
                        "schema": {
                            "type": "string",
                            "format": "uuid"
                        }
                    },
                    {
                        "name": "id",
                        "in": "path",
                        "description": "Message ID",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Message retrieved successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "message": {
                                            "$ref": "#/components/schemas/TicketMessage"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request - Invalid UUID or ID"
                    },
                    "401": {
                        "description": "Unauthorized"
                    },
                    "403": {
                        "description": "Forbidden - Insufficient permissions"
                    },
                    "404": {
                        "description": "Ticket or message not found"
                    }
                }
            },
            "delete": {
                "tags": [
                    "Admin - Ticket Messages"
                ],
                "summary": "Delete ticket message",
                "description": "Permanently delete a message from a ticket.",
                "operationId": "48c425abd589ee77a4697949a9c463aa",
                "parameters": [
                    {
                        "name": "uuid",
                        "in": "path",
                        "description": "Ticket UUID",
                        "required": true,
                        "schema": {
                            "type": "string",
                            "format": "uuid"
                        }
                    },
                    {
                        "name": "id",
                        "in": "path",
                        "description": "Message ID",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Message deleted successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "message": {
                                            "description": "Success message",
                                            "type": "string"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request - Invalid UUID or ID"
                    },
                    "401": {
                        "description": "Unauthorized"
                    },
                    "403": {
                        "description": "Forbidden - Insufficient permissions"
                    },
                    "404": {
                        "description": "Ticket or message not found"
                    },
                    "500": {
                        "description": "Internal server error"
                    }
                }
            },
            "patch": {
                "tags": [
                    "Admin - Ticket Messages"
                ],
                "summary": "Update ticket message",
                "description": "Update an existing message in a ticket.",
                "operationId": "36737207f1740b71a1525ee8770b92ab",
                "parameters": [
                    {
                        "name": "uuid",
                        "in": "path",
                        "description": "Ticket UUID",
                        "required": true,
                        "schema": {
                            "type": "string",
                            "format": "uuid"
                        }
                    },
                    {
                        "name": "id",
                        "in": "path",
                        "description": "Message ID",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/TicketMessageUpdate"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Message updated successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "message": {
                                            "description": "Success message",
                                            "type": "string"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request - Validation errors"
                    },
                    "401": {
                        "description": "Unauthorized"
                    },
                    "403": {
                        "description": "Forbidden - Insufficient permissions"
                    },
                    "404": {
                        "description": "Ticket or message not found"
                    },
                    "500": {
                        "description": "Internal server error"
                    }
                }
            }
        },
        "/api/admin/tickets/priorities": {
            "get": {
                "tags": [
                    "Admin - Ticket Priorities"
                ],
                "summary": "Get all ticket priorities",
                "description": "Retrieve a paginated list of all ticket priorities with optional search functionality.",
                "operationId": "5bbf8ac2ac1545c2749c24f34692b4dd",
                "parameters": [
                    {
                        "name": "page",
                        "in": "query",
                        "description": "Page number for pagination",
                        "required": false,
                        "schema": {
                            "type": "integer",
                            "default": 1,
                            "minimum": 1
                        }
                    },
                    {
                        "name": "limit",
                        "in": "query",
                        "description": "Number of records per page",
                        "required": false,
                        "schema": {
                            "type": "integer",
                            "default": 10,
                            "maximum": 100,
                            "minimum": 1
                        }
                    },
                    {
                        "name": "search",
                        "in": "query",
                        "description": "Search term to filter priorities",
                        "required": false,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Priorities retrieved successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "priorities": {
                                            "type": "array",
                                            "items": {
                                                "$ref": "#/components/schemas/TicketPriority"
                                            }
                                        },
                                        "pagination": {
                                            "$ref": "#/components/schemas/TicketPriorityPagination"
                                        },
                                        "search": {
                                            "properties": {
                                                "query": {
                                                    "type": "string"
                                                },
                                                "has_results": {
                                                    "type": "boolean"
                                                }
                                            },
                                            "type": "object"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "401": {
                        "description": "Unauthorized"
                    },
                    "403": {
                        "description": "Forbidden - Insufficient permissions"
                    }
                }
            },
            "put": {
                "tags": [
                    "Admin - Ticket Priorities"
                ],
                "summary": "Create new ticket priority",
                "description": "Create a new ticket priority.",
                "operationId": "676895a50f4a7792a1d35c5572dd5f81",
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/TicketPriorityCreate"
                            }
                        }
                    }
                },
                "responses": {
                    "201": {
                        "description": "Priority created successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "priority_id": {
                                            "description": "Created priority ID",
                                            "type": "integer"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request - Validation errors"
                    },
                    "401": {
                        "description": "Unauthorized"
                    },
                    "403": {
                        "description": "Forbidden - Insufficient permissions"
                    },
                    "500": {
                        "description": "Internal server error"
                    }
                }
            }
        },
        "/api/admin/tickets/priorities/{id}": {
            "get": {
                "tags": [
                    "Admin - Ticket Priorities"
                ],
                "summary": "Get ticket priority by ID",
                "description": "Retrieve a specific ticket priority by its ID.",
                "operationId": "355c89346d780d4fa7831efedd5f3ef2",
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "description": "Priority ID",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Priority retrieved successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "priority": {
                                            "$ref": "#/components/schemas/TicketPriority"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request - Invalid ID"
                    },
                    "401": {
                        "description": "Unauthorized"
                    },
                    "403": {
                        "description": "Forbidden - Insufficient permissions"
                    },
                    "404": {
                        "description": "Priority not found"
                    }
                }
            },
            "delete": {
                "tags": [
                    "Admin - Ticket Priorities"
                ],
                "summary": "Delete ticket priority",
                "description": "Permanently delete a ticket priority.",
                "operationId": "d80f2f1a29d51d63c0d649b8eb7a768f",
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "description": "Priority ID",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Priority deleted successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "message": {
                                            "description": "Success message",
                                            "type": "string"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request - Invalid ID"
                    },
                    "401": {
                        "description": "Unauthorized"
                    },
                    "403": {
                        "description": "Forbidden - Insufficient permissions"
                    },
                    "404": {
                        "description": "Priority not found"
                    },
                    "500": {
                        "description": "Internal server error"
                    }
                }
            },
            "patch": {
                "tags": [
                    "Admin - Ticket Priorities"
                ],
                "summary": "Update ticket priority",
                "description": "Update an existing ticket priority.",
                "operationId": "565048d912e98fd9b15a1fe37440652e",
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "description": "Priority ID",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/TicketPriorityUpdate"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Priority updated successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "message": {
                                            "description": "Success message",
                                            "type": "string"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request - Validation errors"
                    },
                    "401": {
                        "description": "Unauthorized"
                    },
                    "403": {
                        "description": "Forbidden - Insufficient permissions"
                    },
                    "404": {
                        "description": "Priority not found"
                    },
                    "500": {
                        "description": "Internal server error"
                    }
                }
            }
        },
        "/api/admin/tickets/statuses": {
            "get": {
                "tags": [
                    "Admin - Ticket Statuses"
                ],
                "summary": "Get all ticket statuses",
                "description": "Retrieve a paginated list of all ticket statuses with optional search functionality.",
                "operationId": "6641db57c0dc5f1b0fdbf60851fd36da",
                "parameters": [
                    {
                        "name": "page",
                        "in": "query",
                        "description": "Page number for pagination",
                        "required": false,
                        "schema": {
                            "type": "integer",
                            "default": 1,
                            "minimum": 1
                        }
                    },
                    {
                        "name": "limit",
                        "in": "query",
                        "description": "Number of records per page",
                        "required": false,
                        "schema": {
                            "type": "integer",
                            "default": 10,
                            "maximum": 100,
                            "minimum": 1
                        }
                    },
                    {
                        "name": "search",
                        "in": "query",
                        "description": "Search term to filter statuses",
                        "required": false,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Statuses retrieved successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "statuses": {
                                            "type": "array",
                                            "items": {
                                                "$ref": "#/components/schemas/TicketStatus"
                                            }
                                        },
                                        "pagination": {
                                            "$ref": "#/components/schemas/TicketStatusPagination"
                                        },
                                        "search": {
                                            "properties": {
                                                "query": {
                                                    "type": "string"
                                                },
                                                "has_results": {
                                                    "type": "boolean"
                                                }
                                            },
                                            "type": "object"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "401": {
                        "description": "Unauthorized"
                    },
                    "403": {
                        "description": "Forbidden - Insufficient permissions"
                    }
                }
            },
            "put": {
                "tags": [
                    "Admin - Ticket Statuses"
                ],
                "summary": "Create new ticket status",
                "description": "Create a new ticket status.",
                "operationId": "5c98628d03bdba8f2fcfee4ce1112e61",
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/TicketStatusCreate"
                            }
                        }
                    }
                },
                "responses": {
                    "201": {
                        "description": "Status created successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "status_id": {
                                            "description": "Created status ID",
                                            "type": "integer"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request - Validation errors"
                    },
                    "401": {
                        "description": "Unauthorized"
                    },
                    "403": {
                        "description": "Forbidden - Insufficient permissions"
                    },
                    "500": {
                        "description": "Internal server error"
                    }
                }
            }
        },
        "/api/admin/tickets/statuses/{id}": {
            "get": {
                "tags": [
                    "Admin - Ticket Statuses"
                ],
                "summary": "Get ticket status by ID",
                "description": "Retrieve a specific ticket status by its ID.",
                "operationId": "80b240819e504917f379a6d5946a1c59",
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "description": "Status ID",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Status retrieved successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "status": {
                                            "$ref": "#/components/schemas/TicketStatus"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request - Invalid ID"
                    },
                    "401": {
                        "description": "Unauthorized"
                    },
                    "403": {
                        "description": "Forbidden - Insufficient permissions"
                    },
                    "404": {
                        "description": "Status not found"
                    }
                }
            },
            "delete": {
                "tags": [
                    "Admin - Ticket Statuses"
                ],
                "summary": "Delete ticket status",
                "description": "Permanently delete a ticket status.",
                "operationId": "9809e2725bbf2c946d3bd20fb616da38",
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "description": "Status ID",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Status deleted successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "message": {
                                            "description": "Success message",
                                            "type": "string"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request - Invalid ID"
                    },
                    "401": {
                        "description": "Unauthorized"
                    },
                    "403": {
                        "description": "Forbidden - Insufficient permissions"
                    },
                    "404": {
                        "description": "Status not found"
                    },
                    "500": {
                        "description": "Internal server error"
                    }
                }
            },
            "patch": {
                "tags": [
                    "Admin - Ticket Statuses"
                ],
                "summary": "Update ticket status",
                "description": "Update an existing ticket status.",
                "operationId": "c851e5078885ed73d0069938bee3c5bb",
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "description": "Status ID",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/TicketStatusUpdate"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Status updated successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "message": {
                                            "description": "Success message",
                                            "type": "string"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request - Validation errors"
                    },
                    "401": {
                        "description": "Unauthorized"
                    },
                    "403": {
                        "description": "Forbidden - Insufficient permissions"
                    },
                    "404": {
                        "description": "Status not found"
                    },
                    "500": {
                        "description": "Internal server error"
                    }
                }
            }
        },
        "/api/admin/tickets": {
            "get": {
                "tags": [
                    "Admin - Tickets"
                ],
                "summary": "Get all tickets",
                "description": "Retrieve a paginated list of all tickets with optional filters and search functionality.",
                "operationId": "160c9b1030b117eed8e3f08ed86b10fc",
                "parameters": [
                    {
                        "name": "page",
                        "in": "query",
                        "description": "Page number for pagination",
                        "required": false,
                        "schema": {
                            "type": "integer",
                            "default": 1,
                            "minimum": 1
                        }
                    },
                    {
                        "name": "limit",
                        "in": "query",
                        "description": "Number of records per page",
                        "required": false,
                        "schema": {
                            "type": "integer",
                            "default": 10,
                            "maximum": 100,
                            "minimum": 1
                        }
                    },
                    {
                        "name": "search",
                        "in": "query",
                        "description": "Search term to filter tickets by title or description",
                        "required": false,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "user_uuid",
                        "in": "query",
                        "description": "Filter by user UUID",
                        "required": false,
                        "schema": {
                            "type": "string",
                            "format": "uuid"
                        }
                    },
                    {
                        "name": "server_id",
                        "in": "query",
                        "description": "Filter by server ID",
                        "required": false,
                        "schema": {
                            "type": "integer"
                        }
                    },
                    {
                        "name": "category_id",
                        "in": "query",
                        "description": "Filter by category ID",
                        "required": false,
                        "schema": {
                            "type": "integer"
                        }
                    },
                    {
                        "name": "status_id",
                        "in": "query",
                        "description": "Filter by status ID",
                        "required": false,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Tickets retrieved successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "tickets": {
                                            "type": "array",
                                            "items": {
                                                "$ref": "#/components/schemas/Ticket"
                                            }
                                        },
                                        "pagination": {
                                            "$ref": "#/components/schemas/TicketPagination"
                                        },
                                        "search": {
                                            "properties": {
                                                "query": {
                                                    "type": "string"
                                                },
                                                "has_results": {
                                                    "type": "boolean"
                                                }
                                            },
                                            "type": "object"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "401": {
                        "description": "Unauthorized"
                    },
                    "403": {
                        "description": "Forbidden - Insufficient permissions"
                    }
                }
            },
            "put": {
                "tags": [
                    "Admin - Tickets"
                ],
                "summary": "Create new ticket",
                "description": "Create a new ticket. Admins can create tickets on behalf of users.",
                "operationId": "f71189f8d194967ba55f39f369a1d83e",
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/TicketCreate"
                            }
                        }
                    }
                },
                "responses": {
                    "201": {
                        "description": "Ticket created successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "ticket_id": {
                                            "description": "Created ticket ID",
                                            "type": "integer"
                                        },
                                        "ticket_uuid": {
                                            "description": "Created ticket UUID",
                                            "type": "string",
                                            "format": "uuid"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request - Validation errors"
                    },
                    "401": {
                        "description": "Unauthorized"
                    },
                    "403": {
                        "description": "Forbidden - Insufficient permissions"
                    },
                    "500": {
                        "description": "Internal server error"
                    }
                }
            }
        },
        "/api/admin/tickets/{uuid}": {
            "get": {
                "tags": [
                    "Admin - Tickets"
                ],
                "summary": "Get ticket by UUID",
                "description": "Retrieve a specific ticket by its UUID with all messages and attachments.",
                "operationId": "102910509ccbf0ac4253445859343c3e",
                "parameters": [
                    {
                        "name": "uuid",
                        "in": "path",
                        "description": "Ticket UUID",
                        "required": true,
                        "schema": {
                            "type": "string",
                            "format": "uuid"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Ticket retrieved successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "ticket": {
                                            "$ref": "#/components/schemas/Ticket"
                                        },
                                        "messages": {
                                            "description": "Ticket messages",
                                            "type": "array",
                                            "items": {
                                                "type": "object"
                                            }
                                        },
                                        "attachments": {
                                            "description": "Ticket attachments",
                                            "type": "array",
                                            "items": {
                                                "type": "object"
                                            }
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request - Invalid UUID"
                    },
                    "401": {
                        "description": "Unauthorized"
                    },
                    "403": {
                        "description": "Forbidden - Insufficient permissions"
                    },
                    "404": {
                        "description": "Ticket not found"
                    }
                }
            },
            "delete": {
                "tags": [
                    "Admin - Tickets"
                ],
                "summary": "Delete ticket",
                "description": "Permanently delete a ticket. This will also delete all messages and attachments.",
                "operationId": "2504c0ab949909a272caedcc84f7571e",
                "parameters": [
                    {
                        "name": "uuid",
                        "in": "path",
                        "description": "Ticket UUID",
                        "required": true,
                        "schema": {
                            "type": "string",
                            "format": "uuid"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Ticket deleted successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "message": {
                                            "description": "Success message",
                                            "type": "string"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request - Invalid UUID"
                    },
                    "401": {
                        "description": "Unauthorized"
                    },
                    "403": {
                        "description": "Forbidden - Insufficient permissions"
                    },
                    "404": {
                        "description": "Ticket not found"
                    },
                    "500": {
                        "description": "Internal server error"
                    }
                }
            },
            "patch": {
                "tags": [
                    "Admin - Tickets"
                ],
                "summary": "Update ticket",
                "description": "Update an existing ticket (status, priority, category, etc.).",
                "operationId": "f163bda930c6b8c12c88972df393945e",
                "parameters": [
                    {
                        "name": "uuid",
                        "in": "path",
                        "description": "Ticket UUID",
                        "required": true,
                        "schema": {
                            "type": "string",
                            "format": "uuid"
                        }
                    }
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/TicketUpdate"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Ticket updated successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "message": {
                                            "description": "Success message",
                                            "type": "string"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request - Validation errors"
                    },
                    "401": {
                        "description": "Unauthorized"
                    },
                    "403": {
                        "description": "Forbidden - Insufficient permissions"
                    },
                    "404": {
                        "description": "Ticket not found"
                    },
                    "500": {
                        "description": "Internal server error"
                    }
                }
            }
        },
        "/api/admin/tickets/{uuid}/close": {
            "post": {
                "tags": [
                    "Admin - Tickets"
                ],
                "summary": "Close ticket",
                "description": "Mark a ticket as closed by setting its status to the \"closed\" status and updating closed_at.",
                "operationId": "6d2875a99c12a473f7f122df22b2d91c",
                "parameters": [
                    {
                        "name": "uuid",
                        "in": "path",
                        "description": "Ticket UUID",
                        "required": true,
                        "schema": {
                            "type": "string",
                            "format": "uuid"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Ticket closed successfully"
                    },
                    "400": {
                        "description": "Bad request - Invalid UUID"
                    },
                    "401": {
                        "description": "Unauthorized"
                    },
                    "403": {
                        "description": "Forbidden - Insufficient permissions"
                    },
                    "404": {
                        "description": "Ticket or status not found"
                    },
                    "500": {
                        "description": "Internal server error"
                    }
                }
            }
        },
        "/api/admin/tickets/{uuid}/reopen": {
            "post": {
                "tags": [
                    "Admin - Tickets"
                ],
                "summary": "Reopen ticket",
                "description": "Reopen a previously closed ticket by setting its status to the \"open\" status and clearing closed_at.",
                "operationId": "e624ee5f767388c5e053d8bf3c61696f",
                "parameters": [
                    {
                        "name": "uuid",
                        "in": "path",
                        "description": "Ticket UUID",
                        "required": true,
                        "schema": {
                            "type": "string",
                            "format": "uuid"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Ticket reopened successfully"
                    },
                    "400": {
                        "description": "Bad request - Invalid UUID"
                    },
                    "401": {
                        "description": "Unauthorized"
                    },
                    "403": {
                        "description": "Forbidden - Insufficient permissions"
                    },
                    "404": {
                        "description": "Ticket or status not found"
                    },
                    "500": {
                        "description": "Internal server error"
                    }
                }
            }
        },
        "/api/admin/tickets/{uuid}/reply": {
            "post": {
                "tags": [
                    "Admin - Tickets"
                ],
                "summary": "Reply to ticket",
                "description": "Add a reply/message to a ticket. Support staff can add internal notes.",
                "operationId": "d25bb34ae803e9bb0993b41882bde83f",
                "parameters": [
                    {
                        "name": "uuid",
                        "in": "path",
                        "description": "Ticket UUID",
                        "required": true,
                        "schema": {
                            "type": "string",
                            "format": "uuid"
                        }
                    }
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/TicketReply"
                            }
                        }
                    }
                },
                "responses": {
                    "201": {
                        "description": "Reply added successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "message_id": {
                                            "description": "Created message ID",
                                            "type": "integer"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request - Validation errors"
                    },
                    "401": {
                        "description": "Unauthorized"
                    },
                    "403": {
                        "description": "Forbidden - Insufficient permissions"
                    },
                    "404": {
                        "description": "Ticket not found"
                    },
                    "500": {
                        "description": "Internal server error"
                    }
                }
            }
        },
        "/api/admin/translations/{lang}": {
            "get": {
                "tags": [
                    "Admin - Translations"
                ],
                "summary": "Get translation file",
                "description": "Get the content of a specific translation file",
                "operationId": "131c83d31d97b00f3d8a4473808979a0",
                "parameters": [
                    {
                        "name": "lang",
                        "in": "path",
                        "description": "Language code",
                        "required": true,
                        "schema": {
                            "type": "string",
                            "example": "en"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Translation file retrieved successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Translations"
                                }
                            }
                        }
                    },
                    "404": {
                        "description": "Translation file not found"
                    }
                }
            },
            "put": {
                "tags": [
                    "Admin - Translations"
                ],
                "summary": "Update translation file",
                "description": "Update the content of a translation file",
                "operationId": "c26c4b6c5b08f1a3f726cb1cb368fcaf",
                "parameters": [
                    {
                        "name": "lang",
                        "in": "path",
                        "description": "Language code",
                        "required": true,
                        "schema": {
                            "type": "string",
                            "example": "en"
                        }
                    }
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "description": "Translation key-value pairs",
                                "type": "object"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Translation file updated successfully"
                    },
                    "400": {
                        "description": "Invalid request"
                    },
                    "500": {
                        "description": "Failed to save translation file"
                    }
                }
            },
            "post": {
                "tags": [
                    "Admin - Translations"
                ],
                "summary": "Create translation file",
                "description": "Create a new translation file. If no content is provided, copies English translations as a base.",
                "operationId": "4290f32d03224198f58ca74408b20371",
                "parameters": [
                    {
                        "name": "lang",
                        "in": "path",
                        "description": "Language code",
                        "required": true,
                        "schema": {
                            "type": "string",
                            "example": "de"
                        }
                    }
                ],
                "requestBody": {
                    "required": false,
                    "content": {
                        "application/json": {
                            "schema": {
                                "description": "Translation key-value pairs (optional, defaults to copying English translations)",
                                "type": "object"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Translation file created successfully"
                    },
                    "400": {
                        "description": "Invalid request"
                    },
                    "409": {
                        "description": "Translation file already exists"
                    }
                }
            },
            "delete": {
                "tags": [
                    "Admin - Translations"
                ],
                "summary": "Delete translation file",
                "description": "Delete a translation file",
                "operationId": "73ca85ca0e42d3c0a8f692f74e0c6345",
                "parameters": [
                    {
                        "name": "lang",
                        "in": "path",
                        "description": "Language code",
                        "required": true,
                        "schema": {
                            "type": "string",
                            "example": "de"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Translation file deleted successfully"
                    },
                    "404": {
                        "description": "Translation file not found"
                    }
                }
            }
        },
        "/api/admin/translations/{lang}/download": {
            "get": {
                "tags": [
                    "Admin - Translations"
                ],
                "summary": "Download translation file",
                "description": "Download a translation file as JSON",
                "operationId": "73ddd341e830eec0f277285f59fd49a6",
                "parameters": [
                    {
                        "name": "lang",
                        "in": "path",
                        "description": "Language code",
                        "required": true,
                        "schema": {
                            "type": "string",
                            "example": "en"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Translation file downloaded",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Translations"
                                }
                            }
                        }
                    },
                    "404": {
                        "description": "Translation file not found"
                    }
                }
            }
        },
        "/api/admin/translations/upload": {
            "post": {
                "tags": [
                    "Admin - Translations"
                ],
                "summary": "Upload translation file",
                "description": "Upload a JSON translation file. The language code will be extracted from the filename.",
                "operationId": "b4f546f5b4d74432b08ace9a77148314",
                "requestBody": {
                    "required": true,
                    "content": {
                        "multipart/form-data": {
                            "schema": {
                                "required": [
                                    "file"
                                ],
                                "properties": {
                                    "file": {
                                        "description": "Translation JSON file (e.g., de.json)",
                                        "type": "string",
                                        "format": "binary"
                                    }
                                },
                                "type": "object"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Translation file uploaded successfully"
                    },
                    "400": {
                        "description": "Invalid file or request"
                    },
                    "500": {
                        "description": "Failed to save translation file"
                    }
                }
            }
        },
        "/api/admin/translations/enabled": {
            "get": {
                "tags": [
                    "Admin - Translations"
                ],
                "summary": "Get enabled languages",
                "description": "Get the list of enabled language codes",
                "operationId": "1683208b67711ac5d1d826e0e5b973df",
                "responses": {
                    "200": {
                        "description": "Enabled languages retrieved successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "enabled": {
                                            "type": "array",
                                            "items": {
                                                "type": "string"
                                            },
                                            "example": [
                                                "en",
                                                "de",
                                                "fr"
                                            ]
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    }
                }
            },
            "put": {
                "tags": [
                    "Admin - Translations"
                ],
                "summary": "Set enabled languages",
                "description": "Set which languages are enabled. Empty array means all languages are enabled.",
                "operationId": "7adea90d8a5554a349a9a7440d123d62",
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "properties": {
                                    "enabled": {
                                        "type": "array",
                                        "items": {
                                            "type": "string"
                                        },
                                        "example": [
                                            "en",
                                            "de",
                                            "fr"
                                        ]
                                    }
                                },
                                "type": "object"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Enabled languages updated successfully"
                    },
                    "400": {
                        "description": "Invalid request"
                    }
                }
            }
        },
        "/api/admin/translations/{lang}/enable": {
            "post": {
                "tags": [
                    "Admin - Translations"
                ],
                "summary": "Enable language",
                "description": "Enable a specific language",
                "operationId": "0e390b17c7ccad09d092e0870a5b8ea9",
                "parameters": [
                    {
                        "name": "lang",
                        "in": "path",
                        "description": "Language code",
                        "required": true,
                        "schema": {
                            "type": "string",
                            "example": "de"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Language enabled successfully"
                    },
                    "400": {
                        "description": "Invalid language code"
                    }
                }
            }
        },
        "/api/admin/translations/{lang}/disable": {
            "post": {
                "tags": [
                    "Admin - Translations"
                ],
                "summary": "Disable language",
                "description": "Disable a specific language. English cannot be disabled.",
                "operationId": "83835c9a450d64b259dc7575758e6b0e",
                "parameters": [
                    {
                        "name": "lang",
                        "in": "path",
                        "description": "Language code",
                        "required": true,
                        "schema": {
                            "type": "string",
                            "example": "de"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Language disabled successfully"
                    },
                    "400": {
                        "description": "Invalid language code or cannot disable English"
                    }
                }
            }
        },
        "/api/admin/translations": {
            "get": {
                "tags": [
                    "Admin - Translations"
                ],
                "summary": "List translation files",
                "description": "Get a list of all available translation files",
                "operationId": "531eb2d95a7c9edae73e395d0650d6ef",
                "responses": {
                    "200": {
                        "description": "Translation files retrieved successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "array",
                                    "items": {
                                        "$ref": "#/components/schemas/TranslationFile"
                                    }
                                }
                            }
                        }
                    }
                }
            }
        },
        "/api/admin/users": {
            "get": {
                "tags": [
                    "Admin - Users"
                ],
                "summary": "Get all users",
                "description": "Retrieve a paginated list of all users with role information, search functionality, and comprehensive user data.",
                "operationId": "05a5a3e255fdc5e9db38a91e7a93399c",
                "parameters": [
                    {
                        "name": "page",
                        "in": "query",
                        "description": "Page number for pagination",
                        "required": false,
                        "schema": {
                            "type": "integer",
                            "default": 1,
                            "minimum": 1
                        }
                    },
                    {
                        "name": "limit",
                        "in": "query",
                        "description": "Number of records per page",
                        "required": false,
                        "schema": {
                            "type": "integer",
                            "default": 10,
                            "maximum": 100,
                            "minimum": 1
                        }
                    },
                    {
                        "name": "search",
                        "in": "query",
                        "description": "Search term to filter users by username, email, or name",
                        "required": false,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "role",
                        "in": "query",
                        "description": "Filter users by role ID",
                        "required": false,
                        "schema": {
                            "type": "integer"
                        }
                    },
                    {
                        "name": "banned",
                        "in": "query",
                        "description": "Filter users by banned status (true/false)",
                        "required": false,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "user_id",
                        "in": "query",
                        "description": "Filter users by numeric ID",
                        "required": false,
                        "schema": {
                            "type": "integer"
                        }
                    },
                    {
                        "name": "uuid",
                        "in": "query",
                        "description": "Filter users by UUID",
                        "required": false,
                        "schema": {
                            "type": "string",
                            "format": "uuid"
                        }
                    },
                    {
                        "name": "external_id",
                        "in": "query",
                        "description": "Filter users by external ID",
                        "required": false,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "ip",
                        "in": "query",
                        "description": "Filter users by first or last IP address (partial match)",
                        "required": false,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "email_verified",
                        "in": "query",
                        "description": "Filter users by email verification status (true/false)",
                        "required": false,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "sort_by",
                        "in": "query",
                        "description": "Field to sort users by (id, username, email, last_seen, created_at)",
                        "required": false,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "sort_order",
                        "in": "query",
                        "description": "Sort order (ASC or DESC)",
                        "required": false,
                        "schema": {
                            "type": "string",
                            "enum": [
                                "ASC",
                                "DESC"
                            ]
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Users retrieved successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "users": {
                                            "type": "array",
                                            "items": {
                                                "$ref": "#/components/schemas/User"
                                            }
                                        },
                                        "pagination": {
                                            "$ref": "#/components/schemas/UserPagination"
                                        },
                                        "search": {
                                            "properties": {
                                                "query": {
                                                    "type": "string"
                                                },
                                                "has_results": {
                                                    "type": "boolean"
                                                }
                                            },
                                            "type": "object"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "401": {
                        "description": "Unauthorized"
                    },
                    "403": {
                        "description": "Forbidden - Insufficient permissions"
                    }
                }
            },
            "put": {
                "tags": [
                    "Admin - Users"
                ],
                "summary": "Create new user",
                "description": "Create a new user with comprehensive validation, password hashing, UUID generation, welcome email, and activity logging.",
                "operationId": "ab75cfa5ebe516079db0656e7a20d743",
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/UserCreate"
                            }
                        }
                    }
                },
                "responses": {
                    "201": {
                        "description": "User created successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "user_id": {
                                            "description": "Created user ID",
                                            "type": "integer"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request - Missing required fields, invalid data types, invalid data length, or invalid email format"
                    },
                    "401": {
                        "description": "Unauthorized"
                    },
                    "403": {
                        "description": "Forbidden - Insufficient permissions"
                    },
                    "409": {
                        "description": "Conflict - Email or username already exists"
                    },
                    "500": {
                        "description": "Internal server error - Failed to create user"
                    }
                }
            }
        },
        "/api/admin/users/{uuid}": {
            "get": {
                "tags": [
                    "Admin - Users"
                ],
                "summary": "Get user by UUID",
                "description": "Retrieve a specific user by UUID with comprehensive information including role details, activity history, and mail history.",
                "operationId": "119edd4dc3e0dcbb127f31350591160d",
                "parameters": [
                    {
                        "name": "uuid",
                        "in": "path",
                        "description": "User UUID",
                        "required": true,
                        "schema": {
                            "type": "string",
                            "format": "uuid"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "User retrieved successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "user": {
                                            "$ref": "#/components/schemas/User"
                                        },
                                        "roles": {
                                            "description": "Available roles mapping",
                                            "type": "object"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request - Invalid UUID format"
                    },
                    "401": {
                        "description": "Unauthorized"
                    },
                    "403": {
                        "description": "Forbidden - Insufficient permissions"
                    },
                    "404": {
                        "description": "User not found"
                    }
                }
            },
            "delete": {
                "tags": [
                    "Admin - Users"
                ],
                "summary": "Delete user",
                "description": "Permanently delete a user with activity logging, event emission, and account deletion email notification.",
                "operationId": "1067b40b89cef5068fda1d4ec3e8d00e",
                "parameters": [
                    {
                        "name": "uuid",
                        "in": "path",
                        "description": "User UUID",
                        "required": true,
                        "schema": {
                            "type": "string",
                            "format": "uuid"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "User deleted successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "message": {
                                            "description": "Success message",
                                            "type": "string"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request - Invalid UUID format"
                    },
                    "401": {
                        "description": "Unauthorized"
                    },
                    "403": {
                        "description": "Forbidden - Insufficient permissions"
                    },
                    "404": {
                        "description": "User not found"
                    },
                    "409": {
                        "description": "Conflict - User has active servers or VDS instances and cannot be deleted"
                    },
                    "500": {
                        "description": "Internal server error - Failed to delete user or send account deleted email"
                    }
                }
            },
            "patch": {
                "tags": [
                    "Admin - Users"
                ],
                "summary": "Update user",
                "description": "Update an existing user with comprehensive validation, password hashing, email notifications for ban/unban, and activity logging.",
                "operationId": "de3401e0cd9d496531deda01be9054df",
                "parameters": [
                    {
                        "name": "uuid",
                        "in": "path",
                        "description": "User UUID",
                        "required": true,
                        "schema": {
                            "type": "string",
                            "format": "uuid"
                        }
                    }
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/UserUpdate"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "User updated successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "message": {
                                            "description": "Success message",
                                            "type": "string"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request - No data provided, invalid data types, invalid data length, or invalid email format"
                    },
                    "401": {
                        "description": "Unauthorized"
                    },
                    "403": {
                        "description": "Forbidden - Insufficient permissions"
                    },
                    "404": {
                        "description": "User not found"
                    },
                    "409": {
                        "description": "Conflict - Email or username already exists"
                    },
                    "500": {
                        "description": "Internal server error - Failed to update user"
                    }
                }
            }
        },
        "/api/admin/users/external/{externalId}": {
            "get": {
                "tags": [
                    "Admin - Users"
                ],
                "summary": "Get user by external ID",
                "description": "Retrieve a specific user by its external ID with comprehensive information including role details, activity history, and mail history.",
                "operationId": "4b3a7a4e246a64010be50139daf52805",
                "parameters": [
                    {
                        "name": "externalId",
                        "in": "path",
                        "description": "User external ID",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "User retrieved successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "user": {
                                            "$ref": "#/components/schemas/User"
                                        },
                                        "roles": {
                                            "description": "Available roles mapping",
                                            "type": "object"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request - Invalid external ID"
                    },
                    "401": {
                        "description": "Unauthorized"
                    },
                    "403": {
                        "description": "Forbidden - Insufficient permissions"
                    },
                    "404": {
                        "description": "User not found"
                    }
                }
            }
        },
        "/api/admin/users/{uuid}/servers": {
            "get": {
                "tags": [
                    "Admin - Users"
                ],
                "summary": "Get user owned servers",
                "description": "Retrieve all servers owned by a specific user with basic server information.",
                "operationId": "a5cdfbc27b47768f8a24d731102ffac5",
                "parameters": [
                    {
                        "name": "uuid",
                        "in": "path",
                        "description": "User UUID",
                        "required": true,
                        "schema": {
                            "type": "string",
                            "format": "uuid"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Owned servers retrieved successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "servers": {
                                            "type": "array",
                                            "items": {
                                                "$ref": "#/components/schemas/AdminUserServer"
                                            }
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request - Invalid UUID format"
                    },
                    "401": {
                        "description": "Unauthorized"
                    },
                    "403": {
                        "description": "Forbidden - Insufficient permissions"
                    },
                    "404": {
                        "description": "User not found"
                    }
                }
            }
        },
        "/api/admin/users/{uuid}/vm-instances": {
            "get": {
                "tags": [
                    "Admin - Users"
                ],
                "summary": "Get user owned VM instances",
                "description": "Retrieve VM instances owned by a specific user with pagination and search.",
                "operationId": "52df43a36029e0d8067844670e6b6600",
                "parameters": [
                    {
                        "name": "uuid",
                        "in": "path",
                        "description": "User UUID",
                        "required": true,
                        "schema": {
                            "type": "string",
                            "format": "uuid"
                        }
                    },
                    {
                        "name": "page",
                        "in": "query",
                        "required": false,
                        "schema": {
                            "type": "integer",
                            "default": 1
                        }
                    },
                    {
                        "name": "limit",
                        "in": "query",
                        "required": false,
                        "schema": {
                            "type": "integer",
                            "default": 25
                        }
                    },
                    {
                        "name": "search",
                        "in": "query",
                        "required": false,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Owned VM instances retrieved successfully"
                    },
                    "400": {
                        "description": "Bad request - Invalid UUID format"
                    },
                    "401": {
                        "description": "Unauthorized"
                    },
                    "403": {
                        "description": "Forbidden - Insufficient permissions"
                    },
                    "404": {
                        "description": "User not found"
                    }
                }
            }
        },
        "/api/admin/users/{uuid}/potential-alts": {
            "get": {
                "tags": [
                    "Admin - Users"
                ],
                "summary": "Find potential alt accounts by IP",
                "description": "Find other users who may be alternate accounts by comparing IP addresses from activity logs and first/last IP fields.",
                "operationId": "5e5c14f201b5a035adbdb6883a37784a",
                "parameters": [
                    {
                        "name": "uuid",
                        "in": "path",
                        "description": "User UUID",
                        "required": true,
                        "schema": {
                            "type": "string",
                            "format": "uuid"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Potential alt accounts retrieved successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "potential_alts": {
                                            "type": "array",
                                            "items": {
                                                "type": "object"
                                            }
                                        },
                                        "source_ips": {
                                            "type": "array",
                                            "items": {
                                                "type": "string"
                                            }
                                        },
                                        "total": {
                                            "type": "integer"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "401": {
                        "description": "Unauthorized"
                    },
                    "403": {
                        "description": "Forbidden - Insufficient permissions"
                    },
                    "404": {
                        "description": "User not found"
                    }
                }
            }
        },
        "/api/admin/users/{uuid}/devices": {
            "delete": {
                "tags": [
                    "Admin - Users"
                ],
                "summary": "Clear device fingerprints for a user",
                "description": "Remove all browser/device sync records associated with a user. Useful when clearing false positives or after support review.",
                "operationId": "f65d80c3b41fcc5da8685a0c0973566c",
                "parameters": [
                    {
                        "name": "uuid",
                        "in": "path",
                        "description": "User UUID",
                        "required": true,
                        "schema": {
                            "type": "string",
                            "format": "uuid"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Device records cleared successfully"
                    },
                    "404": {
                        "description": "User not found"
                    }
                }
            }
        },
        "/api/admin/devices": {
            "delete": {
                "tags": [
                    "Admin - Users"
                ],
                "summary": "Clear all device fingerprints globally",
                "description": "Remove every browser/device sync record in the panel. Use after policy changes or to reset alt detection data.",
                "operationId": "1510da23e232d241a6d05b4687d135b7",
                "responses": {
                    "200": {
                        "description": "All device records cleared successfully"
                    }
                }
            }
        },
        "/api/admin/users/serverRequest/{id}": {
            "get": {
                "tags": [
                    "Admin - Users"
                ],
                "summary": "Get server request by id (INTERNAL USE ONLY) - DO NOT USE THIS ENDPOINT IN YOUR CODE!",
                "description": "Retrieve a server request by its ID (INTERNAL USE ONLY) - DO NOT USE THIS ENDPOINT IN YOUR CODE!",
                "operationId": "c54f42f2c8a8d810feeb6662a0c88a84",
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "description": "User ID",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "User retrieved successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "user": {
                                            "$ref": "#/components/schemas/User"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "401": {
                        "description": "Unauthorized"
                    },
                    "403": {
                        "description": "Forbidden - Insufficient permissions"
                    },
                    "404": {
                        "description": "User not found"
                    }
                }
            }
        },
        "/api/admin/users/{uuid}/sso-token": {
            "post": {
                "tags": [
                    "Admin - Users"
                ],
                "summary": "Create SSO login token for user",
                "description": "Generate a short-lived single sign-on (SSO) token that can be used to log the user in via the public login endpoint.",
                "operationId": "b9447507dd104552b7731e9de053f45e",
                "parameters": [
                    {
                        "name": "uuid",
                        "in": "path",
                        "description": "User UUID",
                        "required": true,
                        "schema": {
                            "type": "string",
                            "format": "uuid"
                        }
                    }
                ],
                "requestBody": {
                    "required": false,
                    "content": {
                        "application/json": {
                            "schema": {
                                "properties": {
                                    "expires_in": {
                                        "description": "Token lifetime in minutes (overrides the admin default when provided)",
                                        "type": "integer",
                                        "maximum": 1440,
                                        "minimum": 1
                                    }
                                },
                                "type": "object"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "SSO token created successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "token": {
                                            "description": "SSO login token",
                                            "type": "string"
                                        },
                                        "expires_in": {
                                            "description": "Token expiration time in minutes",
                                            "type": "integer"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request - Invalid expires_in value"
                    },
                    "401": {
                        "description": "Unauthorized"
                    },
                    "403": {
                        "description": "Forbidden - Insufficient permissions"
                    },
                    "404": {
                        "description": "User not found"
                    }
                }
            }
        },
        "/api/admin/users/{uuid}/send-email": {
            "post": {
                "tags": [
                    "Admin - Users"
                ],
                "summary": "Send email to user",
                "description": "Queue a direct email to a specific user with subject and HTML body content.",
                "operationId": "e8efe3b0ff894ac0e8b0c2988fc06b20",
                "parameters": [
                    {
                        "name": "uuid",
                        "in": "path",
                        "description": "User UUID",
                        "required": true,
                        "schema": {
                            "type": "string",
                            "format": "uuid"
                        }
                    }
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "required": [
                                    "subject",
                                    "body"
                                ],
                                "properties": {
                                    "subject": {
                                        "type": "string",
                                        "maxLength": 255,
                                        "minLength": 1
                                    },
                                    "body": {
                                        "description": "HTML content is supported",
                                        "type": "string",
                                        "maxLength": 65535,
                                        "minLength": 1
                                    }
                                },
                                "type": "object"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Email queued successfully"
                    },
                    "400": {
                        "description": "Bad request"
                    },
                    "401": {
                        "description": "Unauthorized"
                    },
                    "403": {
                        "description": "Forbidden - Insufficient permissions"
                    },
                    "404": {
                        "description": "User not found"
                    },
                    "500": {
                        "description": "Internal server error - Failed to queue email"
                    }
                }
            }
        },
        "/api/admin/users/{uuid}/mails/{id}/resend": {
            "post": {
                "tags": [
                    "Admin - Users"
                ],
                "summary": "Resend a failed user email",
                "description": "Re-queue a failed system email for delivery to the specified user.",
                "operationId": "ccc37f51aef07c2fbe9b47ea5b41e499",
                "parameters": [
                    {
                        "name": "uuid",
                        "in": "path",
                        "description": "User UUID",
                        "required": true,
                        "schema": {
                            "type": "string",
                            "format": "uuid"
                        }
                    },
                    {
                        "name": "id",
                        "in": "path",
                        "description": "Mail list entry ID",
                        "required": true,
                        "schema": {
                            "type": "integer",
                            "minimum": 1
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Email queued for resend"
                    },
                    "400": {
                        "description": "Bad request - Mail cannot be resent or SMTP disabled"
                    },
                    "401": {
                        "description": "Unauthorized"
                    },
                    "403": {
                        "description": "Forbidden - Insufficient permissions"
                    },
                    "404": {
                        "description": "User or mail not found"
                    },
                    "500": {
                        "description": "Internal server error - Failed to resend mail"
                    }
                }
            }
        },
        "/api/admin/users/{uuid}/verify-email": {
            "post": {
                "tags": [
                    "Admin - Users"
                ],
                "summary": "Force verify user email",
                "description": "Mark a user email address as verified by clearing their pending email verification token.",
                "operationId": "5f7ad159e5cf94a484f948ffa08aaac6",
                "parameters": [
                    {
                        "name": "uuid",
                        "in": "path",
                        "description": "User UUID",
                        "required": true,
                        "schema": {
                            "type": "string",
                            "format": "uuid"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "User email verified successfully"
                    },
                    "400": {
                        "description": "Bad request - User is already verified or demo mode restriction"
                    },
                    "401": {
                        "description": "Unauthorized"
                    },
                    "403": {
                        "description": "Forbidden - Insufficient permissions"
                    },
                    "404": {
                        "description": "User not found"
                    },
                    "500": {
                        "description": "Internal server error - Failed to verify email"
                    }
                }
            }
        },
        "/api/admin/users/{uuid}/ban": {
            "post": {
                "tags": [
                    "Admin - Users"
                ],
                "summary": "Ban a user",
                "description": "Ban a user account. The user will be immediately blocked from all authenticated endpoints and receive a suspension email notification.",
                "operationId": "173ce0d264f8ca6cff634c5aa6ca0b0b",
                "parameters": [
                    {
                        "name": "uuid",
                        "in": "path",
                        "description": "User UUID",
                        "required": true,
                        "schema": {
                            "type": "string",
                            "format": "uuid"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "User banned successfully"
                    },
                    "400": {
                        "description": "Bad request - User is already banned or demo mode restriction"
                    },
                    "401": {
                        "description": "Unauthorized"
                    },
                    "403": {
                        "description": "Forbidden - Insufficient permissions"
                    },
                    "404": {
                        "description": "User not found"
                    },
                    "500": {
                        "description": "Internal server error - Failed to ban user"
                    }
                }
            }
        },
        "/api/admin/users/{uuid}/unban": {
            "post": {
                "tags": [
                    "Admin - Users"
                ],
                "summary": "Unban a user",
                "description": "Unban a user account. The user will regain access to all authenticated endpoints and receive an unsuspension email notification.",
                "operationId": "0e1564144de8ba08d221060bf7585032",
                "parameters": [
                    {
                        "name": "uuid",
                        "in": "path",
                        "description": "User UUID",
                        "required": true,
                        "schema": {
                            "type": "string",
                            "format": "uuid"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "User unbanned successfully"
                    },
                    "400": {
                        "description": "Bad request - User is not banned or demo mode restriction"
                    },
                    "401": {
                        "description": "Unauthorized"
                    },
                    "403": {
                        "description": "Forbidden - Insufficient permissions"
                    },
                    "404": {
                        "description": "User not found"
                    },
                    "500": {
                        "description": "Internal server error - Failed to unban user"
                    }
                }
            }
        },
        "/api/admin/vm-instances": {
            "get": {
                "tags": [
                    "Admin - VM Instances"
                ],
                "summary": "List VM instances",
                "description": "Get a paginated list of VM instances with optional search.",
                "operationId": "421bc4d7bf4e2083eabaac166a8b7811",
                "parameters": [
                    {
                        "name": "page",
                        "in": "query",
                        "description": "Page number",
                        "required": false,
                        "schema": {
                            "type": "integer",
                            "default": 1
                        }
                    },
                    {
                        "name": "limit",
                        "in": "query",
                        "description": "Records per page",
                        "required": false,
                        "schema": {
                            "type": "integer",
                            "default": 25
                        }
                    },
                    {
                        "name": "search",
                        "in": "query",
                        "description": "Search term",
                        "required": false,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "VM instances retrieved successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "instances": {
                                            "type": "array",
                                            "items": {
                                                "$ref": "#/components/schemas/VmInstance"
                                            }
                                        },
                                        "status_counts": {
                                            "type": "object"
                                        },
                                        "pagination": {
                                            "$ref": "#/components/schemas/VmInstancePagination"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "401": {
                        "description": "Unauthorized"
                    },
                    "403": {
                        "description": "Forbidden"
                    }
                }
            },
            "put": {
                "tags": [
                    "Admin - VM Instances"
                ],
                "summary": "Create new VM instance",
                "description": "Create a new VM instance (server) on a Proxmox node. Returns 202 with creation_id. Poll creation-status until active or failed.",
                "operationId": "172c4bda488bd2ef7b74d1cc0c249ba2",
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/VmInstanceCreate"
                            }
                        }
                    }
                },
                "responses": {
                    "202": {
                        "description": "VM creation started",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "creation_id": {
                                            "type": "string"
                                        },
                                        "message": {
                                            "type": "string"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request"
                    },
                    "401": {
                        "description": "Unauthorized"
                    },
                    "403": {
                        "description": "Forbidden"
                    },
                    "404": {
                        "description": "VM node or template not found"
                    },
                    "500": {
                        "description": "Internal server error"
                    }
                }
            }
        },
        "/api/admin/vm-instances/creation-status/{creationId}": {
            "get": {
                "tags": [
                    "Admin - VM Instances"
                ],
                "summary": "Poll VM creation status",
                "description": "Poll status of an async VM creation. Returns status cloning, active, or failed.",
                "operationId": "a1e9ac5e7c6e8398deabfe975f502b81",
                "parameters": [
                    {
                        "name": "creationId",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Creation status",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "status": {
                                            "type": "string",
                                            "enum": [
                                                "cloning",
                                                "active",
                                                "failed"
                                            ]
                                        },
                                        "message": {
                                            "type": "string",
                                            "nullable": true
                                        },
                                        "error": {
                                            "type": "string",
                                            "nullable": true
                                        },
                                        "instance": {
                                            "oneOf": [
                                                {
                                                    "$ref": "#/components/schemas/VmInstance"
                                                }
                                            ],
                                            "nullable": true
                                        },
                                        "ci_user": {
                                            "type": "string",
                                            "nullable": true
                                        },
                                        "ci_password": {
                                            "type": "string",
                                            "nullable": true
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Missing creation_id"
                    },
                    "401": {
                        "description": "Unauthorized"
                    },
                    "404": {
                        "description": "Creation not found or already completed"
                    },
                    "500": {
                        "description": "Internal server error"
                    }
                }
            }
        },
        "/api/admin/vm-instances/{id}": {
            "get": {
                "tags": [
                    "Admin - VM Instances"
                ],
                "summary": "Get VM instance",
                "description": "Get a single VM instance by ID.",
                "operationId": "9c5530ee255ad758248c54db95e9b1d2",
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "VM instance retrieved successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "instance": {
                                            "$ref": "#/components/schemas/VmInstance"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "401": {
                        "description": "Unauthorized"
                    },
                    "403": {
                        "description": "Forbidden"
                    },
                    "404": {
                        "description": "VM instance not found"
                    }
                }
            },
            "delete": {
                "tags": [
                    "Admin - VM Instances"
                ],
                "summary": "Delete VM instance",
                "description": "Delete VM instance: stop on Proxmox (if running), delete from Proxmox, then remove from DB.",
                "operationId": "43c34ba89589fc94e6aa8cffb274cdd3",
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "VM instance deleted successfully"
                    },
                    "401": {
                        "description": "Unauthorized"
                    },
                    "403": {
                        "description": "Forbidden"
                    },
                    "404": {
                        "description": "VM instance not found"
                    }
                }
            },
            "patch": {
                "tags": [
                    "Admin - VM Instances"
                ],
                "summary": "Update VM instance",
                "description": "Update instance: hostname, notes, user_uuid, vm_ip_id, memory, cpus, cores, on_boot, networks.",
                "operationId": "1e0afdfa595bd88cd1e149460cbc6371",
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/VmInstanceUpdate"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "VM instance updated successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "instance": {
                                            "$ref": "#/components/schemas/VmInstance"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request"
                    },
                    "401": {
                        "description": "Unauthorized"
                    },
                    "403": {
                        "description": "Forbidden"
                    },
                    "404": {
                        "description": "VM instance not found"
                    },
                    "500": {
                        "description": "Internal server error"
                    },
                    "503": {
                        "description": "Proxmox update failed"
                    }
                }
            }
        },
        "/api/admin/vm-instances/{id}/config": {
            "get": {
                "tags": [
                    "Admin - VM Instances"
                ],
                "summary": "Get VM instance config",
                "description": "GET Proxmox config for this instance.",
                "operationId": "3115486b0e601db22d98608b091e4bb1",
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Config fetched successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "config": {
                                            "type": "object"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "401": {
                        "description": "Unauthorized"
                    },
                    "403": {
                        "description": "Forbidden"
                    },
                    "404": {
                        "description": "VM instance not found"
                    },
                    "500": {
                        "description": "Internal server error"
                    },
                    "503": {
                        "description": "Proxmox error"
                    }
                }
            }
        },
        "/api/admin/vm-instances/{id}/status": {
            "get": {
                "tags": [
                    "Admin - VM Instances"
                ],
                "summary": "Get VM instance status",
                "description": "GET current VM/container status and resource usage from Proxmox.",
                "operationId": "2f192e2efdf998d3ca61e7a2b0978899",
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Status fetched successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "status": {
                                            "type": "object"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "401": {
                        "description": "Unauthorized"
                    },
                    "403": {
                        "description": "Forbidden"
                    },
                    "404": {
                        "description": "VM instance not found"
                    },
                    "500": {
                        "description": "Internal server error"
                    },
                    "503": {
                        "description": "Proxmox error"
                    }
                }
            }
        },
        "/api/admin/vm-instances/{id}/vnc-ticket": {
            "get": {
                "tags": [
                    "Admin - VM Instances"
                ],
                "summary": "Get VNC ticket",
                "description": "GET VNC console ticket for QEMU VMs and LXC containers.",
                "operationId": "57b1bd7feb86b8682f8c75284cffa7c3",
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "VNC ticket created",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "ticket": {
                                            "type": "string"
                                        },
                                        "port": {
                                            "type": "integer"
                                        },
                                        "node": {
                                            "type": "string"
                                        },
                                        "vmid": {
                                            "type": "integer"
                                        },
                                        "host": {
                                            "type": "string"
                                        },
                                        "port_api": {
                                            "type": "integer"
                                        },
                                        "wss_url": {
                                            "type": "string"
                                        },
                                        "pve_redirect_url": {
                                            "type": "string",
                                            "nullable": true
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "401": {
                        "description": "Unauthorized"
                    },
                    "403": {
                        "description": "Forbidden"
                    },
                    "404": {
                        "description": "VM instance not found"
                    },
                    "500": {
                        "description": "Internal server error"
                    },
                    "503": {
                        "description": "VNC proxy failed"
                    }
                }
            }
        },
        "/api/admin/vm-instances/{id}/activities": {
            "get": {
                "tags": [
                    "Admin - VM Instances"
                ],
                "summary": "Get VM instance activities",
                "description": "GET activity/task history for this VM instance.",
                "operationId": "667240c0c54f09f86f6913f4313af312",
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    },
                    {
                        "name": "limit",
                        "in": "query",
                        "required": false,
                        "schema": {
                            "type": "integer",
                            "default": 50
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Activities fetched successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "activities": {
                                            "type": "array",
                                            "items": {
                                                "type": "object"
                                            }
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "401": {
                        "description": "Unauthorized"
                    },
                    "403": {
                        "description": "Forbidden"
                    },
                    "404": {
                        "description": "VM instance not found"
                    }
                }
            }
        },
        "/api/admin/vm-instances/{id}/resize-disk": {
            "post": {
                "tags": [
                    "Admin - VM Instances"
                ],
                "summary": "Resize VM/container disk",
                "description": "Resize a disk on an LXC container or QEMU VM. Body must include \"disk\" and \"size\".",
                "operationId": "dbacfd90a5fca7cae95282c541976b49",
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "properties": {
                                    "disk": {
                                        "description": "Disk name e.g. rootfs or mp0",
                                        "type": "string"
                                    },
                                    "size": {
                                        "description": "Size to add or absolute e.g. +5G or 20G",
                                        "type": "string"
                                    }
                                },
                                "type": "object"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Disk resized successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "message": {
                                            "type": "string"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request"
                    },
                    "401": {
                        "description": "Unauthorized"
                    },
                    "403": {
                        "description": "Forbidden"
                    },
                    "404": {
                        "description": "VM instance not found"
                    },
                    "500": {
                        "description": "Internal server error"
                    },
                    "503": {
                        "description": "Resize failed"
                    }
                }
            }
        },
        "/api/admin/vm-instances/{id}/disks": {
            "post": {
                "tags": [
                    "Admin - VM Instances"
                ],
                "summary": "Create VM/container disk",
                "description": "Create an additional disk: LXC mount point or QEMU disk.",
                "operationId": "86c793afed3abee3736b29510f885618",
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "properties": {
                                    "storage": {
                                        "description": "Storage name e.g. local-lvm",
                                        "type": "string"
                                    },
                                    "size_gb": {
                                        "description": "Size in GB",
                                        "type": "integer"
                                    },
                                    "path": {
                                        "description": "Mount point path e.g. /mnt/data",
                                        "type": "string",
                                        "nullable": true
                                    }
                                },
                                "type": "object"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Disk added successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "disk": {
                                            "type": "string"
                                        },
                                        "config_key": {
                                            "type": "string"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request"
                    },
                    "401": {
                        "description": "Unauthorized"
                    },
                    "403": {
                        "description": "Forbidden"
                    },
                    "404": {
                        "description": "VM instance not found"
                    },
                    "500": {
                        "description": "Internal server error"
                    },
                    "503": {
                        "description": "Proxmox update failed"
                    }
                }
            }
        },
        "/api/admin/vm-instances/{id}/disks/{key}": {
            "delete": {
                "tags": [
                    "Admin - VM Instances"
                ],
                "summary": "Delete VM/container disk",
                "description": "DELETE LXC mount point or QEMU disk.",
                "operationId": "20af226d02cc55d339724a84b41e1e2a",
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    },
                    {
                        "name": "key",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "description": "Disk key e.g. mp1",
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Disk removed successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "deleted": {
                                            "type": "string"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request"
                    },
                    "401": {
                        "description": "Unauthorized"
                    },
                    "403": {
                        "description": "Forbidden"
                    },
                    "404": {
                        "description": "VM instance not found"
                    },
                    "500": {
                        "description": "Internal server error"
                    },
                    "503": {
                        "description": "Proxmox update failed"
                    }
                }
            }
        },
        "/api/admin/vm-instances/{id}/power": {
            "post": {
                "tags": [
                    "Admin - VM Instances"
                ],
                "summary": "Power action",
                "description": "Power action: start | stop | reboot.",
                "operationId": "97bcbf48a86492a558517a963c9be7e2",
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "properties": {
                                    "action": {
                                        "type": "string",
                                        "enum": [
                                            "start",
                                            "stop",
                                            "reboot"
                                        ]
                                    }
                                },
                                "type": "object"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Power action completed",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "instance": {
                                            "$ref": "#/components/schemas/VmInstance"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request"
                    },
                    "401": {
                        "description": "Unauthorized"
                    },
                    "403": {
                        "description": "Forbidden"
                    },
                    "404": {
                        "description": "VM instance not found"
                    },
                    "500": {
                        "description": "Internal server error / Power failed"
                    }
                }
            }
        },
        "/api/admin/vm-instances/{id}/reinstall": {
            "post": {
                "tags": [
                    "Admin - VM Instances"
                ],
                "summary": "Start async VM reinstall",
                "description": "Kicks off a full reinstall by cloning a fresh VM from the original template. Returns 202 with a reinstall_id immediately. Poll reinstall-status/{reinstallId} until status is active or failed.",
                "operationId": "187fdbad88a512b6a4960afc8d8b70ee",
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "202": {
                        "description": "Reinstall clone started",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "reinstall_id": {
                                            "type": "string"
                                        },
                                        "message": {
                                            "type": "string"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request"
                    },
                    "401": {
                        "description": "Unauthorized"
                    },
                    "403": {
                        "description": "Forbidden"
                    },
                    "404": {
                        "description": "VM instance or template not found"
                    },
                    "500": {
                        "description": "Internal server error"
                    }
                }
            }
        },
        "/api/admin/vm-instances/{id}/backups": {
            "get": {
                "tags": [
                    "Admin - VM Instances"
                ],
                "summary": "List VM backups",
                "description": "List vzdump backups for a specific VM or container on its Proxmox node.",
                "operationId": "57516825ddd07887054d63a24e6fce57",
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Backups listed",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "backups": {
                                            "type": "array",
                                            "items": {
                                                "type": "object"
                                            }
                                        },
                                        "backup_limit": {
                                            "type": "integer"
                                        },
                                        "storages": {
                                            "description": "Available backup storages from Proxmox",
                                            "type": "array",
                                            "items": {
                                                "type": "string"
                                            }
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request"
                    },
                    "401": {
                        "description": "Unauthorized"
                    },
                    "403": {
                        "description": "Forbidden"
                    },
                    "404": {
                        "description": "VM instance or node not found"
                    },
                    "500": {
                        "description": "Proxmox error"
                    }
                }
            },
            "post": {
                "tags": [
                    "Admin - VM Instances"
                ],
                "summary": "Create VM backup",
                "description": "Start an async vzdump backup for a VM or container. Returns 202 with backup_id; poll backup-status until done or failed.",
                "operationId": "45421e04a067d37d81d449c70fe316d5",
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "requestBody": {
                    "required": false,
                    "content": {
                        "application/json": {
                            "schema": {
                                "properties": {
                                    "storage": {
                                        "description": "Proxmox storage for the backup (optional, defaults to first backup-capable storage)",
                                        "type": "string",
                                        "nullable": true
                                    },
                                    "compress": {
                                        "description": "Compression method (zstd, lzo, gzip, 0)",
                                        "type": "string",
                                        "default": "zstd",
                                        "nullable": true
                                    },
                                    "mode": {
                                        "description": "Backup mode (snapshot, suspend, stop)",
                                        "type": "string",
                                        "default": "snapshot",
                                        "nullable": true
                                    }
                                },
                                "type": "object"
                            }
                        }
                    }
                },
                "responses": {
                    "202": {
                        "description": "Backup started",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "backup_id": {
                                            "type": "string"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request"
                    },
                    "401": {
                        "description": "Unauthorized"
                    },
                    "403": {
                        "description": "Forbidden"
                    },
                    "404": {
                        "description": "VM instance or node not found"
                    },
                    "422": {
                        "description": "Backup limit reached"
                    },
                    "500": {
                        "description": "Proxmox error"
                    }
                }
            },
            "delete": {
                "tags": [
                    "Admin - VM Instances"
                ],
                "summary": "Delete VM backup",
                "description": "Delete a single vzdump backup volume belonging to a VM or container.",
                "operationId": "47ecd47b6d67394a62e5be2003347ea0",
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "properties": {
                                    "volid": {
                                        "description": "Proxmox backup volume ID",
                                        "type": "string"
                                    },
                                    "storage": {
                                        "description": "Proxmox storage name",
                                        "type": "string"
                                    }
                                },
                                "type": "object"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Backup deleted"
                    },
                    "400": {
                        "description": "Missing volid or storage"
                    },
                    "401": {
                        "description": "Unauthorized"
                    },
                    "403": {
                        "description": "Backup does not belong to this VM"
                    },
                    "404": {
                        "description": "VM instance or node not found"
                    },
                    "500": {
                        "description": "Proxmox error"
                    }
                }
            }
        },
        "/api/admin/vm-instances/backup-status/{backupId}": {
            "get": {
                "tags": [
                    "Admin - VM Instances"
                ],
                "summary": "Poll VM backup status",
                "description": "Poll status of an async vzdump backup. Returns running, done, or failed.",
                "operationId": "70c1186424b444d247bfde23fbf817ad",
                "parameters": [
                    {
                        "name": "backupId",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Backup status",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "status": {
                                            "type": "string",
                                            "enum": [
                                                "running",
                                                "done",
                                                "failed"
                                            ]
                                        },
                                        "error": {
                                            "type": "string",
                                            "nullable": true
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Missing or invalid backupId"
                    },
                    "401": {
                        "description": "Unauthorized"
                    },
                    "404": {
                        "description": "Backup task or instance not found"
                    },
                    "500": {
                        "description": "Internal server error"
                    }
                }
            }
        },
        "/api/admin/vm-instances/{id}/backups/restore": {
            "post": {
                "tags": [
                    "Admin - VM Instances"
                ],
                "summary": "Restore VM from backup",
                "description": "Start an async restore of a VM or container from a vzdump backup. Returns 202 with restore_id; poll restore-status until active or failed.",
                "operationId": "c37e1f9b9e5485d65635fe841341752d",
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "properties": {
                                    "volid": {
                                        "description": "Proxmox backup volume ID",
                                        "type": "string"
                                    },
                                    "storage": {
                                        "description": "Proxmox storage name",
                                        "type": "string"
                                    }
                                },
                                "type": "object"
                            }
                        }
                    }
                },
                "responses": {
                    "202": {
                        "description": "Restore started",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "restore_id": {
                                            "type": "string"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Missing volid or storage"
                    },
                    "401": {
                        "description": "Unauthorized"
                    },
                    "403": {
                        "description": "Forbidden"
                    },
                    "404": {
                        "description": "VM instance or node not found"
                    },
                    "500": {
                        "description": "Proxmox error"
                    }
                }
            }
        },
        "/api/admin/vm-instances/restore-status/{restoreId}": {
            "get": {
                "tags": [
                    "Admin - VM Instances"
                ],
                "summary": "Poll VM restore status",
                "description": "Poll status of an async restore from backup. Returns restoring, active, or failed.",
                "operationId": "7c982f2185475792db4fd09937975130",
                "parameters": [
                    {
                        "name": "restoreId",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Restore status",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "status": {
                                            "type": "string",
                                            "enum": [
                                                "restoring",
                                                "active",
                                                "failed"
                                            ]
                                        },
                                        "instance": {
                                            "oneOf": [
                                                {
                                                    "$ref": "#/components/schemas/VmInstance"
                                                }
                                            ],
                                            "nullable": true
                                        },
                                        "error": {
                                            "type": "string",
                                            "nullable": true
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Missing or invalid restoreId"
                    },
                    "401": {
                        "description": "Unauthorized"
                    },
                    "404": {
                        "description": "Restore task or instance not found"
                    },
                    "500": {
                        "description": "Internal server error"
                    }
                }
            }
        },
        "/api/admin/vm-instances/{id}/backup-limit": {
            "patch": {
                "tags": [
                    "Admin - VM Instances"
                ],
                "summary": "Set VM backup limit",
                "description": "Update the maximum number of backups allowed for a VM instance.",
                "operationId": "924b6630d85d03c2387b361d17b53a6d",
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "properties": {
                                    "limit": {
                                        "description": "Maximum number of backups (0–100)",
                                        "type": "integer"
                                    }
                                },
                                "type": "object"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Backup limit updated",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "backup_limit": {
                                            "type": "integer"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Invalid limit"
                    },
                    "401": {
                        "description": "Unauthorized"
                    },
                    "404": {
                        "description": "VM instance not found"
                    },
                    "500": {
                        "description": "Internal server error"
                    }
                }
            }
        },
        "/api/admin/vm-instances/{id}/suspend": {
            "post": {
                "tags": [
                    "Admin - VM Instances"
                ],
                "summary": "Suspend VM instance",
                "description": "Suspend a VM instance by stopping it in Proxmox and updating the suspended status. Sends notification email to the VM owner.",
                "operationId": "a1109a8603bac3bb7943c5ef52993109",
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "description": "VM Instance ID",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "VM instance suspended successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "message": {
                                            "description": "Success message",
                                            "type": "string"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "401": {
                        "description": "Unauthorized"
                    },
                    "403": {
                        "description": "Forbidden - Insufficient permissions"
                    },
                    "404": {
                        "description": "VM instance not found"
                    },
                    "500": {
                        "description": "Internal server error - Failed to suspend VM"
                    }
                }
            }
        },
        "/api/admin/vm-instances/{id}/unsuspend": {
            "post": {
                "tags": [
                    "Admin - VM Instances"
                ],
                "summary": "Unsuspend VM instance",
                "description": "Unsuspend a VM instance by updating the suspended status. Sends notification email to the VM owner.",
                "operationId": "3e16e3c53f9447d99c169d558d0e17ec",
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "description": "VM Instance ID",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "VM instance unsuspended successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "message": {
                                            "description": "Success message",
                                            "type": "string"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "401": {
                        "description": "Unauthorized"
                    },
                    "403": {
                        "description": "Forbidden - Insufficient permissions"
                    },
                    "404": {
                        "description": "VM instance not found"
                    },
                    "500": {
                        "description": "Internal server error - Failed to unsuspend VM"
                    }
                }
            }
        },
        "/api/admin/vm-instances/{id}/hard": {
            "delete": {
                "tags": [
                    "Admin - VM Instances"
                ],
                "summary": "Hard delete VM instance",
                "description": "Remove the VM instance and panel records without contacting Proxmox. The VM and its files remain on the Proxmox host.",
                "operationId": "d04d54c9b8211b6fbf3772a2f5c5f9d6",
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "VM instance hard deleted successfully"
                    },
                    "404": {
                        "description": "VM instance not found"
                    }
                }
            }
        },
        "/api/admin/vm-nodes": {
            "get": {
                "tags": [
                    "Admin - VM Nodes"
                ],
                "summary": "Get all Proxmox VM nodes",
                "description": "Retrieve a paginated list of all VM nodes (Proxmox hypervisors) with optional search and VPS-location filtering.",
                "operationId": "64532e272fdbc7e4399d6f20f9a9684e",
                "parameters": [
                    {
                        "name": "page",
                        "in": "query",
                        "description": "Page number for pagination",
                        "required": false,
                        "schema": {
                            "type": "integer",
                            "default": 1,
                            "minimum": 1
                        }
                    },
                    {
                        "name": "limit",
                        "in": "query",
                        "description": "Number of records per page",
                        "required": false,
                        "schema": {
                            "type": "integer",
                            "default": 10,
                            "maximum": 100,
                            "minimum": 1
                        }
                    },
                    {
                        "name": "search",
                        "in": "query",
                        "description": "Search term to filter VM nodes by name or FQDN",
                        "required": false,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "location_id",
                        "in": "query",
                        "description": "Location ID to filter VM nodes by (must be type=vps)",
                        "required": false,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "VM nodes retrieved successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "vm_nodes": {
                                            "type": "array",
                                            "items": {
                                                "$ref": "#/components/schemas/VmNode"
                                            }
                                        },
                                        "pagination": {
                                            "$ref": "#/components/schemas/VmNodePagination"
                                        },
                                        "search": {
                                            "properties": {
                                                "query": {
                                                    "type": "string"
                                                },
                                                "has_results": {
                                                    "type": "boolean"
                                                }
                                            },
                                            "type": "object"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "401": {
                        "description": "Unauthorized"
                    },
                    "403": {
                        "description": "Forbidden - Insufficient permissions"
                    }
                }
            },
            "put": {
                "tags": [
                    "Admin - VM Nodes"
                ],
                "summary": "Create new VM node",
                "description": "Create a new VM node (Proxmox hypervisor) associated with a VPS/VDS location.",
                "operationId": "0d56a95f91995f54263e74cdd6ae1a89",
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/VmNodeCreate"
                            }
                        }
                    }
                },
                "responses": {
                    "201": {
                        "description": "VM node created successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "vm_node": {
                                            "$ref": "#/components/schemas/VmNode"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request - Invalid JSON, validation errors, location not found or not VPS"
                    },
                    "401": {
                        "description": "Unauthorized"
                    },
                    "403": {
                        "description": "Forbidden - Insufficient permissions"
                    }
                }
            }
        },
        "/api/admin/vm-nodes/{id}": {
            "get": {
                "tags": [
                    "Admin - VM Nodes"
                ],
                "summary": "Get VM node by ID",
                "description": "Retrieve a specific VM node by its ID.",
                "operationId": "3edea383bd515032ccb1a30fed5b8311",
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "description": "VM Node ID",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "VM node retrieved successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "vm_node": {
                                            "$ref": "#/components/schemas/VmNode"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request - Invalid VM node ID"
                    },
                    "401": {
                        "description": "Unauthorized"
                    },
                    "403": {
                        "description": "Forbidden - Insufficient permissions"
                    },
                    "404": {
                        "description": "VM node not found"
                    }
                }
            },
            "delete": {
                "tags": [
                    "Admin - VM Nodes"
                ],
                "summary": "Delete VM node",
                "description": "Permanently delete a VM node from the database. This does not touch the Proxmox host itself.",
                "operationId": "90fdbbf7f7d6fbdce12595b5dc9a5bb7",
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "description": "VM Node ID",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "VM node deleted successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "message": {
                                            "description": "Success message",
                                            "type": "string"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request - Invalid VM node ID"
                    },
                    "401": {
                        "description": "Unauthorized"
                    },
                    "403": {
                        "description": "Forbidden - Insufficient permissions"
                    },
                    "404": {
                        "description": "VM node not found"
                    }
                }
            },
            "patch": {
                "tags": [
                    "Admin - VM Nodes"
                ],
                "summary": "Update VM node",
                "description": "Update an existing VM node. Only provided fields will be updated. Validates location existence and type.",
                "operationId": "39261c295131b5d4cc710b317c943c14",
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "description": "VM Node ID",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/VmNodeUpdate"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "VM node updated successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "vm_node": {
                                            "$ref": "#/components/schemas/VmNode"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request - Invalid JSON, no data provided, validation errors, location not found, or invalid location type"
                    },
                    "401": {
                        "description": "Unauthorized"
                    },
                    "403": {
                        "description": "Forbidden - Insufficient permissions"
                    },
                    "404": {
                        "description": "VM node not found"
                    }
                }
            }
        },
        "/api/admin/vm-nodes/{id}/test-connection": {
            "get": {
                "tags": [
                    "Admin - VM Nodes"
                ],
                "summary": "Test connection to Proxmox VM node",
                "description": "Performs a lightweight connectivity check to Proxmox using the stored API token and returns basic status and discovered cluster nodes.",
                "operationId": "6226934730e56a907caa1e66e31eec7e",
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "description": "VM Node ID",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Connection successful",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "ok": {
                                            "type": "boolean"
                                        },
                                        "status_code": {
                                            "type": "integer",
                                            "nullable": true
                                        },
                                        "latency_ms": {
                                            "type": "integer",
                                            "nullable": true
                                        },
                                        "nodes": {
                                            "type": "array",
                                            "items": {
                                                "type": "object"
                                            }
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request - Invalid VM node ID"
                    },
                    "401": {
                        "description": "Unauthorized"
                    },
                    "403": {
                        "description": "Forbidden - Insufficient permissions"
                    },
                    "404": {
                        "description": "VM node not found"
                    },
                    "500": {
                        "description": "Connection failed"
                    }
                }
            }
        },
        "/api/admin/vm-nodes/{id}/ips": {
            "get": {
                "tags": [
                    "Admin - VM Nodes"
                ],
                "summary": "List IPs for a VM node",
                "description": "Retrieve all IP addresses configured for a specific VM node.",
                "operationId": "d20b491713596726bf7ab258bc1a17a4",
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "description": "VM Node ID",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    },
                    {
                        "name": "page",
                        "in": "query",
                        "description": "Page number for pagination",
                        "required": false,
                        "schema": {
                            "type": "integer",
                            "default": 1,
                            "minimum": 1
                        }
                    },
                    {
                        "name": "limit",
                        "in": "query",
                        "description": "Number of records per page",
                        "required": false,
                        "schema": {
                            "type": "integer",
                            "default": 50,
                            "maximum": 100,
                            "minimum": 1
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "VM node IPs retrieved successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "ips": {
                                            "type": "array",
                                            "items": {
                                                "type": "object"
                                            }
                                        },
                                        "pagination": {
                                            "type": "object"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Invalid VM node ID"
                    },
                    "404": {
                        "description": "VM node not found"
                    }
                }
            },
            "put": {
                "tags": [
                    "Admin - VM Nodes"
                ],
                "summary": "Create IP for VM node",
                "description": "Create a new IP address for a specific VM node.",
                "operationId": "71b9a434a2170ba3cbc7fcfc6a07b404",
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "description": "VM Node ID",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "required": [
                                    "ip"
                                ],
                                "properties": {
                                    "ip": {
                                        "description": "IP address",
                                        "type": "string"
                                    },
                                    "cidr": {
                                        "description": "CIDR prefix length",
                                        "type": "integer",
                                        "nullable": true
                                    },
                                    "gateway": {
                                        "description": "Gateway IP",
                                        "type": "string",
                                        "nullable": true
                                    },
                                    "is_primary": {
                                        "description": "Mark as primary IP",
                                        "type": "string",
                                        "enum": [
                                            "true",
                                            "false"
                                        ]
                                    },
                                    "notes": {
                                        "description": "Notes",
                                        "type": "string",
                                        "nullable": true
                                    }
                                },
                                "type": "object"
                            }
                        }
                    }
                },
                "responses": {
                    "201": {
                        "description": "IP created successfully"
                    },
                    "400": {
                        "description": "Invalid VM node ID or payload"
                    },
                    "404": {
                        "description": "VM node not found"
                    }
                }
            }
        },
        "/api/admin/vm-nodes/{id}/ips/{ipId}": {
            "delete": {
                "tags": [
                    "Admin - VM Nodes"
                ],
                "summary": "Delete IP from VM node",
                "description": "Delete an IP entry from a VM node.",
                "operationId": "3c245e540be839e182c313fe761ce815",
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "description": "VM Node ID",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    },
                    {
                        "name": "ipId",
                        "in": "path",
                        "description": "VM IP ID",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "IP deleted successfully"
                    },
                    "400": {
                        "description": "Invalid IDs"
                    },
                    "404": {
                        "description": "VM node or IP not found"
                    }
                }
            },
            "patch": {
                "tags": [
                    "Admin - VM Nodes"
                ],
                "summary": "Update IP for VM node",
                "description": "Update an existing IP entry for a VM node.",
                "operationId": "1ee74b93c58a7ba81f97c4be980440c1",
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "description": "VM Node ID",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    },
                    {
                        "name": "ipId",
                        "in": "path",
                        "description": "VM IP ID",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "properties": {
                                    "ip": {
                                        "description": "IP address",
                                        "type": "string"
                                    },
                                    "cidr": {
                                        "description": "CIDR prefix length",
                                        "type": "integer",
                                        "nullable": true
                                    },
                                    "gateway": {
                                        "description": "Gateway IP",
                                        "type": "string",
                                        "nullable": true
                                    },
                                    "is_primary": {
                                        "description": "Mark as primary IP",
                                        "type": "string",
                                        "enum": [
                                            "true",
                                            "false"
                                        ]
                                    },
                                    "notes": {
                                        "description": "Notes",
                                        "type": "string",
                                        "nullable": true
                                    }
                                },
                                "type": "object"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "IP updated successfully"
                    },
                    "400": {
                        "description": "Invalid IDs or payload"
                    },
                    "404": {
                        "description": "VM node or IP not found"
                    }
                }
            }
        },
        "/api/admin/vm-nodes/{id}/ips/{ipId}/primary": {
            "post": {
                "tags": [
                    "Admin - VM Nodes"
                ],
                "summary": "Set primary IP for VM node",
                "description": "Mark a specific IP as the primary IP for a VM node. Clears the primary flag on all other IPs for this node.",
                "operationId": "4888582bfeadb74279430efce1e8c3e7",
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "description": "VM Node ID",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    },
                    {
                        "name": "ipId",
                        "in": "path",
                        "description": "VM IP ID",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Primary IP set successfully"
                    },
                    "400": {
                        "description": "Invalid IDs"
                    },
                    "404": {
                        "description": "VM node or IP not found"
                    }
                }
            }
        },
        "/api/admin/web-nodes": {
            "get": {
                "tags": [
                    "Admin - Web Nodes"
                ],
                "summary": "Get all FeatherQuilld web nodes",
                "description": "Retrieve a paginated list of all web nodes (FeatherQuilld daemons) with optional search and web-location filtering.",
                "operationId": "dc349a03ff4b4fa6823e9569f396a922",
                "parameters": [
                    {
                        "name": "page",
                        "in": "query",
                        "description": "Page number for pagination",
                        "required": false,
                        "schema": {
                            "type": "integer",
                            "default": 1,
                            "minimum": 1
                        }
                    },
                    {
                        "name": "limit",
                        "in": "query",
                        "description": "Number of records per page",
                        "required": false,
                        "schema": {
                            "type": "integer",
                            "default": 10,
                            "maximum": 100,
                            "minimum": 1
                        }
                    },
                    {
                        "name": "search",
                        "in": "query",
                        "description": "Search term to filter web nodes by name or FQDN",
                        "required": false,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "location_id",
                        "in": "query",
                        "description": "Location ID to filter web nodes by (must be type=web)",
                        "required": false,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Web nodes retrieved successfully"
                    },
                    "401": {
                        "description": "Unauthorized"
                    },
                    "403": {
                        "description": "Forbidden - Insufficient permissions"
                    }
                }
            },
            "put": {
                "tags": [
                    "Admin - Web Nodes"
                ],
                "summary": "Create new web node",
                "description": "Create a new web node (FeatherQuilld daemon) associated with a web hosting location. Daemon tokens are auto-generated.",
                "operationId": "85b3fc9a2fa5015d05745d36db59891a",
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/WebNodeCreate"
                            }
                        }
                    }
                },
                "responses": {
                    "201": {
                        "description": "Web node created successfully"
                    },
                    "400": {
                        "description": "Bad request - Invalid JSON, validation errors, location not found or not web"
                    },
                    "401": {
                        "description": "Unauthorized"
                    },
                    "403": {
                        "description": "Forbidden - Insufficient permissions"
                    }
                }
            }
        },
        "/api/admin/web-nodes/{id}": {
            "get": {
                "tags": [
                    "Admin - Web Nodes"
                ],
                "summary": "Get web node by ID",
                "description": "Retrieve a specific web node by its ID.",
                "operationId": "7885008f270dc9fe972bc50f342a8f4b",
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "description": "Web Node ID",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Web node retrieved successfully"
                    },
                    "400": {
                        "description": "Bad request - Invalid web node ID"
                    },
                    "401": {
                        "description": "Unauthorized"
                    },
                    "403": {
                        "description": "Forbidden - Insufficient permissions"
                    },
                    "404": {
                        "description": "Web node not found"
                    }
                }
            },
            "delete": {
                "tags": [
                    "Admin - Web Nodes"
                ],
                "summary": "Delete web node",
                "description": "Permanently delete a web node from the database. This does not touch the FeatherQuilld daemon itself.",
                "operationId": "b27172393dcf51c38e774071ea4d036b",
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "description": "Web Node ID",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Web node deleted successfully"
                    },
                    "400": {
                        "description": "Bad request - Invalid web node ID"
                    },
                    "401": {
                        "description": "Unauthorized"
                    },
                    "403": {
                        "description": "Forbidden - Insufficient permissions"
                    },
                    "404": {
                        "description": "Web node not found"
                    }
                }
            },
            "patch": {
                "tags": [
                    "Admin - Web Nodes"
                ],
                "summary": "Update web node",
                "description": "Update an existing web node. Only provided fields will be updated. Validates location existence and type.",
                "operationId": "22dc3e7bd4065245ad58fde62f30c6db",
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "description": "Web Node ID",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/WebNodeUpdate"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Web node updated successfully"
                    },
                    "400": {
                        "description": "Bad request - Invalid JSON, no data provided, validation errors, location not found, or invalid location type"
                    },
                    "401": {
                        "description": "Unauthorized"
                    },
                    "403": {
                        "description": "Forbidden - Insufficient permissions"
                    },
                    "404": {
                        "description": "Web node not found"
                    }
                }
            }
        },
        "/api/admin/web-nodes/{id}/reset-token": {
            "post": {
                "tags": [
                    "Admin - Web Nodes"
                ],
                "summary": "Reset FeatherQuilld daemon token",
                "description": "Generate a new daemon token ID and secret for the web node. The FeatherQuilld daemon must be reconfigured with the new credentials.",
                "operationId": "e7733010df4c2adc2c10c8b0ef8fafa0",
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "description": "Web Node ID",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Daemon token reset successfully"
                    },
                    "401": {
                        "description": "Unauthorized"
                    },
                    "403": {
                        "description": "Forbidden - Insufficient permissions"
                    },
                    "404": {
                        "description": "Web node not found"
                    }
                }
            }
        },
        "/api/admin/web-nodes/{id}/setup-command": {
            "get": {
                "tags": [
                    "Admin - Web Nodes"
                ],
                "summary": "Get FeatherQuilld setup command",
                "description": "Returns install command (step 1) and setup command (step 2) to configure the web node. Step 2 embeds full panel-generated config via join-data (Calagopus-style) or fetches from the panel.",
                "operationId": "1492a039fc414c6a191976f331e1ef91",
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "description": "Web Node ID",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Setup commands (install + config)"
                    },
                    "401": {
                        "description": "Unauthorized"
                    },
                    "403": {
                        "description": "Forbidden"
                    },
                    "404": {
                        "description": "Web node not found"
                    }
                }
            }
        },
        "/api/admin/web-nodes/{id}/config": {
            "get": {
                "tags": [
                    "Admin - Web Nodes"
                ],
                "summary": "Get FeatherQuilld config YAML",
                "description": "Returns the full FeatherQuilld config.yml content for this web node (for manual copy or inspection).",
                "operationId": "8d0f669efec75ba42b29451d9b8e1318",
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "description": "Web Node ID",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "FeatherQuilld config YAML"
                    },
                    "401": {
                        "description": "Unauthorized"
                    },
                    "403": {
                        "description": "Forbidden"
                    },
                    "404": {
                        "description": "Web node not found"
                    }
                }
            }
        },
        "/api/admin/web-nodes/{id}/health": {
            "get": {
                "tags": [
                    "Admin - Web Nodes"
                ],
                "summary": "Probe FeatherQuilld daemon health",
                "description": "Calls GET /api/system/health on the web node daemon using its stored credentials.",
                "operationId": "713d5c3e7823c883cfb8cee6e9ec2044",
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "description": "Web Node ID",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Health probe result"
                    },
                    "401": {
                        "description": "Unauthorized"
                    },
                    "403": {
                        "description": "Forbidden"
                    },
                    "404": {
                        "description": "Web node not found"
                    }
                }
            }
        },
        "/api/admin/webplates": {
            "get": {
                "tags": [
                    "Admin - WebPlates"
                ],
                "summary": "List WebPlates",
                "operationId": "0c3ca884df87757bab60bea38596511c"
            },
            "put": {
                "tags": [
                    "Admin - WebPlates"
                ],
                "summary": "Create WebPlate",
                "operationId": "70126a827717ed19ceb5b0f998795263"
            }
        },
        "/api/admin/webplates/{id}": {
            "get": {
                "tags": [
                    "Admin - WebPlates"
                ],
                "summary": "Get WebPlate",
                "operationId": "ba3183ee341f7bbc4f49d7881bddbe9a"
            },
            "delete": {
                "tags": [
                    "Admin - WebPlates"
                ],
                "summary": "Delete WebPlate",
                "operationId": "333bd833065bfb0b48d34e4c7d6bbf4b"
            },
            "patch": {
                "tags": [
                    "Admin - WebPlates"
                ],
                "summary": "Update WebPlate",
                "operationId": "2e9d14638194d21b701d6ff0b20227be"
            }
        },
        "/api/admin/webspaces": {
            "get": {
                "tags": [
                    "Admin - WebSpaces"
                ],
                "summary": "List WebSpaces",
                "operationId": "a73b53281d4666b81e8762d85bd09803"
            },
            "put": {
                "tags": [
                    "Admin - WebSpaces"
                ],
                "summary": "Create WebSpace on panel + daemon",
                "operationId": "d31f3e0eaa1a6b21eeb6a2f1ac0195b8"
            }
        },
        "/api/admin/webspaces/infrastructure-readiness": {
            "get": {
                "tags": [
                    "Admin - WebSpaces"
                ],
                "summary": "WebSpace infrastructure readiness",
                "operationId": "e1cadeb86aa28b2e1874566356da1962"
            }
        },
        "/api/admin/webspaces/hosting-maturity": {
            "get": {
                "tags": [
                    "Admin - WebSpaces"
                ],
                "summary": "Web hosting platform maturity",
                "operationId": "89bb397f8da73463913ce50ffee536f2"
            }
        },
        "/api/admin/webspaces/hosting-setup/wizard": {
            "get": {
                "tags": [
                    "Admin - WebSpaces"
                ],
                "summary": "Admin first-node setup wizard steps",
                "operationId": "e8d17613f3a7cb8ccc42fa093734ce4a"
            }
        },
        "/api/admin/webspaces/{uuid}": {
            "get": {
                "tags": [
                    "Admin - WebSpaces"
                ],
                "summary": "Get WebSpace",
                "operationId": "b461786c0c24266d3aca74c59d5c90af"
            },
            "delete": {
                "tags": [
                    "Admin - WebSpaces"
                ],
                "summary": "Delete WebSpace",
                "operationId": "070b396084f1b762f84d959eaabee7e4"
            },
            "patch": {
                "tags": [
                    "Admin - WebSpaces"
                ],
                "summary": "Update WebSpace settings",
                "operationId": "4996a89aa5bddfd916d4ef7378964ea1"
            }
        },
        "/api/admin/webspaces/{uuid}/dns/provision": {
            "post": {
                "tags": [
                    "Admin - WebSpaces"
                ],
                "summary": "Provision DNS A records",
                "operationId": "17d7342639cc2b775995cdc7e8a067d2"
            }
        },
        "/api/admin/webspaces/{uuid}/ssl/custom": {
            "get": {
                "tags": [
                    "Admin - WebSpaces"
                ],
                "summary": "Custom SSL status",
                "operationId": "988565ce627dbea949f05f55a1b4fa08"
            }
        },
        "/api/admin/wings-backups/destinations": {
            "get": {
                "tags": [
                    "Admin - Wings Backups"
                ],
                "summary": "List Wings backup destinations",
                "operationId": "28648e1c09a6193c1e97cffc3d4ebaf0"
            },
            "put": {
                "tags": [
                    "Admin - Wings Backups"
                ],
                "summary": "Create Wings backup destination",
                "operationId": "445ca2fc83c4164f80c98dec877e3f4d"
            }
        },
        "/api/admin/wings-backups/destinations/{id}": {
            "delete": {
                "tags": [
                    "Admin - Wings Backups"
                ],
                "summary": "Delete Wings backup destination",
                "operationId": "7a7cb5ae8a6aadbaf6c864c2c1b46655"
            },
            "patch": {
                "tags": [
                    "Admin - Wings Backups"
                ],
                "summary": "Update Wings backup destination",
                "operationId": "935aa83d3645c40615861a6b1b1ba40a"
            }
        },
        "/api/admin/wings-backups/destinations/{id}/test": {
            "post": {
                "tags": [
                    "Admin - Wings Backups"
                ],
                "summary": "Test Wings backup destination",
                "operationId": "6d36d185a09960db16a70a37bd8c833a"
            }
        },
        "/api/admin/wings-backups/destinations/{id}/purge": {
            "post": {
                "tags": [
                    "Admin - Wings Backups"
                ],
                "summary": "Purge old objects on destination",
                "operationId": "e1391449276d4451f7c6ced562334fbb"
            }
        },
        "/api/admin/wings-backups/policies": {
            "get": {
                "tags": [
                    "Admin - Wings Backups"
                ],
                "summary": "List Wings backup policies",
                "operationId": "1876a1e3b170ed8021e26b950512feae"
            },
            "put": {
                "tags": [
                    "Admin - Wings Backups"
                ],
                "summary": "Create Wings backup policy",
                "operationId": "af4a027e08e67d69eaa1efb2e2bd08fe"
            }
        },
        "/api/admin/wings-backups/policies/{id}": {
            "get": {
                "tags": [
                    "Admin - Wings Backups"
                ],
                "summary": "Get Wings backup policy",
                "operationId": "0816f7527a74d0036757043fb6264501"
            },
            "delete": {
                "tags": [
                    "Admin - Wings Backups"
                ],
                "summary": "Delete Wings backup policy",
                "operationId": "ac4f5e34b772dfb5027760041343e575"
            },
            "patch": {
                "tags": [
                    "Admin - Wings Backups"
                ],
                "summary": "Update Wings backup policy",
                "operationId": "4d0e056f5002c76429f3839b98688d55"
            }
        },
        "/api/admin/wings-backups/policies/{id}/run": {
            "post": {
                "tags": [
                    "Admin - Wings Backups"
                ],
                "summary": "Run Wings backup policy now",
                "operationId": "36b5e37a121f06d6462f1e1301906726"
            }
        },
        "/api/admin/wings-backups/policies/{id}/runs": {
            "get": {
                "tags": [
                    "Admin - Wings Backups"
                ],
                "summary": "List Wings backup policy runs",
                "operationId": "c314bb10a85f2e5e6ad142115b61ad4f"
            }
        },
        "/api/admin/wings-backups/policies/{id}/runs/{runId}": {
            "get": {
                "tags": [
                    "Admin - Wings Backups"
                ],
                "summary": "Show Wings backup run",
                "operationId": "34b5d3af97692e802adb4f52b9cc20e2"
            }
        },
        "/api/openapi.json": {
            "get": {
                "tags": [
                    "System"
                ],
                "summary": "Get OpenAPI specification",
                "description": "Retrieve the complete OpenAPI 3.1 specification for the FeatherPanel API, including all documented endpoints, schemas, and metadata.",
                "operationId": "b15f4974a27acb28a31a021596f5ac8e",
                "responses": {
                    "200": {
                        "description": "OpenAPI specification retrieved successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "description": "Complete OpenAPI 3.1 specification with all endpoints, schemas, and metadata",
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "500": {
                        "description": "Internal server error - Failed to generate OpenAPI specification"
                    }
                }
            }
        },
        "/api/cloud/v1/status": {
            "get": {
                "tags": [
                    "System - Mythic Cloud"
                ],
                "summary": "Mythic Cloud link status",
                "operationId": "12fafb3e2d2e39323c604c5e59e10b6f",
                "security": [
                    {
                        "PanelAccess": []
                    }
                ]
            }
        },
        "/api/cloud/v1/sync": {
            "post": {
                "tags": [
                    "System - Mythic Cloud"
                ],
                "summary": "Pull Mythic summary + purchases into panel cache",
                "operationId": "837bc9b0aef8ec934746761a5a2c99c1",
                "security": [
                    {
                        "PanelAccess": []
                    }
                ]
            }
        },
        "/api/debug/ip": {
            "get": {
                "tags": [
                    "System - Debug"
                ],
                "summary": "Get IP detection debug information",
                "description": "Returns debug information about IP detection and all relevant headers. Use this to troubleshoot IP detection issues.",
                "operationId": "89dc39e8b04a10d99bda6d5ee047518a",
                "responses": {
                    "200": {
                        "description": "Debug information retrieved successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/DebugInfoResponse"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/api/system/country-codes": {
            "get": {
                "tags": [
                    "System"
                ],
                "summary": "Get all country codes",
                "description": "Retrieve all available country codes and names from FlagCDN. This endpoint is cached for 24 hours.",
                "operationId": "aaa372047aaefc38275870599d97f55d",
                "responses": {
                    "200": {
                        "description": "Country codes retrieved successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "country_codes": {
                                            "description": "Object mapping country codes to country names",
                                            "type": "object",
                                            "additionalProperties": {
                                                "type": "string"
                                            }
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "500": {
                        "description": "Internal server error - Failed to fetch country codes"
                    }
                }
            }
        },
        "/api/ldap/providers": {
            "get": {
                "tags": [
                    "System - LDAP"
                ],
                "summary": "List enabled LDAP providers (public)",
                "description": "Returns only enabled LDAP providers with minimal information for login page",
                "operationId": "efe51e79f3c346f0a1eb34780fea0518",
                "responses": {
                    "200": {
                        "description": "List of enabled LDAP providers",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "providers": {
                                            "type": "array",
                                            "items": {
                                                "properties": {
                                                    "uuid": {
                                                        "type": "string"
                                                    },
                                                    "name": {
                                                        "type": "string"
                                                    }
                                                },
                                                "type": "object"
                                            }
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/api/system/oidc/providers": {
            "get": {
                "tags": [
                    "System - OIDC"
                ],
                "summary": "List enabled OIDC providers (public)",
                "description": "Returns enabled OIDC providers with safe fields for rendering SSO buttons.",
                "operationId": "170eb687c18e8a08690a156bcae899c5",
                "responses": {
                    "200": {
                        "description": "Providers retrieved successfully"
                    }
                }
            }
        },
        "/api/system/plugin-css": {
            "get": {
                "tags": [
                    "System"
                ],
                "summary": "Get plugin CSS",
                "description": "Retrieve combined CSS from all installed plugins. This endpoint aggregates CSS files from all plugins and returns them as a single stylesheet.",
                "operationId": "39316dd7751761620e625322e8da1596",
                "responses": {
                    "200": {
                        "description": "Plugin CSS retrieved successfully",
                        "headers": {
                            "Cache-Control": {
                                "description": "Cache control header",
                                "schema": {
                                    "type": "string",
                                    "example": "public, max-age=60"
                                }
                            }
                        },
                        "content": {
                            "text/css": {
                                "schema": {
                                    "description": "Combined CSS from all plugins",
                                    "type": "string"
                                }
                            }
                        }
                    },
                    "500": {
                        "description": "Internal server error - Failed to retrieve plugin CSS"
                    }
                }
            }
        },
        "/api/system/plugin-js": {
            "get": {
                "tags": [
                    "System"
                ],
                "summary": "Get plugin JavaScript",
                "description": "Retrieve combined JavaScript from all installed plugins. This endpoint aggregates JS files from all plugins and returns them as a single script with proper scoping.",
                "operationId": "2707b1005307c0f0e3c2ec2be7303230",
                "responses": {
                    "200": {
                        "description": "Plugin JavaScript retrieved successfully",
                        "headers": {
                            "Cache-Control": {
                                "description": "Cache control header",
                                "schema": {
                                    "type": "string",
                                    "example": "public, max-age=60"
                                }
                            }
                        },
                        "content": {
                            "application/javascript": {
                                "schema": {
                                    "description": "Combined JavaScript from all plugins with proper scoping",
                                    "type": "string"
                                }
                            }
                        }
                    },
                    "500": {
                        "description": "Internal server error - Failed to retrieve plugin JavaScript"
                    }
                }
            }
        },
        "/api/system/plugin-overrides": {
            "get": {
                "tags": [
                    "System"
                ],
                "summary": "List plugin UI overrides",
                "description": "Aggregate Frontend/overrides.json from installed plugins (hide/replace/actions).",
                "operationId": "d580db9d16dfdb613d0e21a20d45a3d2",
                "responses": {
                    "200": {
                        "description": "Overrides retrieved successfully"
                    }
                }
            }
        },
        "/api/system/plugin-public-pages": {
            "get": {
                "tags": [
                    "System"
                ],
                "summary": "Get plugin public page registry",
                "description": "Aggregate public page declarations from addon Frontend/public.json files. Only enabled plugins and currently enabled pages are returned for auth allowlisting and public navigation.",
                "operationId": "cd5597d57dfdaf2e38148a32ca3c829a",
                "responses": {
                    "200": {
                        "description": "Plugin public pages retrieved successfully"
                    },
                    "500": {
                        "description": "Internal server error"
                    }
                }
            }
        },
        "/api/system/plugin-sidebar": {
            "get": {
                "tags": [
                    "System"
                ],
                "summary": "Get plugin sidebar configuration",
                "description": "Retrieve sidebar configuration from all installed plugins. This endpoint aggregates sidebar items from all plugins and organizes them by section (server, client, admin).",
                "operationId": "6246cf8e5a66b8f209d99335d3b1b2cb",
                "responses": {
                    "200": {
                        "description": "Plugin sidebar configuration retrieved successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/PluginSidebar"
                                }
                            }
                        }
                    },
                    "500": {
                        "description": "Internal server error - Failed to retrieve plugin sidebar configuration"
                    }
                }
            }
        },
        "/api/system/plugin-themes": {
            "get": {
                "tags": [
                    "System"
                ],
                "summary": "List plugin theme packs",
                "description": "Aggregate Frontend/theme.json declarations from installed plugins.",
                "operationId": "1131a2a87f265cc1ab895c4dfb724bd3",
                "responses": {
                    "200": {
                        "description": "Theme packs retrieved successfully"
                    },
                    "500": {
                        "description": "Internal server error"
                    }
                }
            }
        },
        "/api/system/plugin-theme-css": {
            "get": {
                "tags": [
                    "System"
                ],
                "summary": "Get active plugin theme CSS",
                "description": "Serve Frontend theme CSS for a specific pack id (plugin:packId).",
                "operationId": "a2ac3a4d273ef0670711b66b7fb860e3",
                "parameters": [
                    {
                        "name": "id",
                        "in": "query",
                        "description": "Theme pack id in the form pluginId:themeId",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Theme CSS"
                    },
                    "404": {
                        "description": "Theme CSS not found"
                    }
                }
            }
        },
        "/api/system/plugin-ui-packs": {
            "get": {
                "tags": [
                    "System"
                ],
                "summary": "List plugin UI packs",
                "description": "Aggregate Frontend/ui.json layout takeover packs from installed plugins.",
                "operationId": "4506248d7372a4c0d7b79fa174c05bea",
                "responses": {
                    "200": {
                        "description": "UI packs retrieved successfully"
                    }
                }
            }
        },
        "/api/system/plugin-widgets": {
            "get": {
                "tags": [
                    "System"
                ],
                "summary": "Get plugin widget configuration",
                "description": "Retrieve widget configuration from all installed plugins. Widgets are organized by page and location, sorted by priority.",
                "operationId": "74e30e552cfcd6e5a971572c4a28cfdf",
                "parameters": [
                    {
                        "name": "page",
                        "in": "query",
                        "description": "Filter widgets by page identifier (e.g., \"server-console\")",
                        "required": false,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Plugin widget configuration retrieved successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/PluginWidgetsResponse"
                                }
                            }
                        }
                    },
                    "500": {
                        "description": "Internal server error - Failed to retrieve plugin widget configuration"
                    }
                }
            }
        },
        "/api/selftest": {
            "get": {
                "tags": [
                    "System - Selftest"
                ],
                "summary": "Selftest",
                "description": "Runs a selftest to check if the system is working correctly. Response is cached for 1 hour.",
                "operationId": "cda10d3234370a4a370f348768d0caa2",
                "responses": {
                    "200": {
                        "description": "Selftest information retrieved successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/SelftestResponse"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/api/system/settings": {
            "get": {
                "tags": [
                    "System"
                ],
                "summary": "Get public settings",
                "description": "Retrieve public application settings with default values. These settings are safe to expose to frontend clients.",
                "operationId": "cc5893e0c536c551ef5d2920c11b7ac9",
                "responses": {
                    "200": {
                        "description": "Public settings retrieved successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/PublicSettings"
                                }
                            }
                        }
                    },
                    "500": {
                        "description": "Internal server error - Failed to retrieve settings"
                    }
                }
            }
        },
        "/api/system/translations/{lang}": {
            "get": {
                "tags": [
                    "System"
                ],
                "summary": "Get translations",
                "description": "Retrieve translation strings for a specific language. Falls back to English if language file not found.",
                "operationId": "49e5083f5b9889ac2020915d6d52e24a",
                "parameters": [
                    {
                        "name": "lang",
                        "in": "path",
                        "description": "Language code (e.g., en, de, fr)",
                        "required": true,
                        "schema": {
                            "type": "string",
                            "example": "en"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Translations retrieved successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Translations"
                                }
                            }
                        }
                    },
                    "404": {
                        "description": "Translation file not found"
                    }
                }
            }
        },
        "/api/system/translations/languages": {
            "get": {
                "tags": [
                    "System"
                ],
                "summary": "Get available languages",
                "description": "Retrieve list of available translation languages",
                "operationId": "8416e70c5ef01b13e6507c6cf35df13a",
                "responses": {
                    "200": {
                        "description": "Available languages retrieved successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "array",
                                    "items": {
                                        "properties": {
                                            "code": {
                                                "type": "string",
                                                "example": "en"
                                            },
                                            "name": {
                                                "type": "string",
                                                "example": "English"
                                            },
                                            "nativeName": {
                                                "type": "string",
                                                "example": "English"
                                            }
                                        },
                                        "type": "object"
                                    }
                                }
                            }
                        }
                    }
                }
            }
        },
        "/api/manifest.webmanifest": {
            "get": {
                "tags": [
                    "System"
                ],
                "summary": "Get webapp manifest",
                "description": "Retrieve webapp manifest for PWA functionality using panel branding settings.",
                "operationId": "37a143112f18e67db9dde838ccc6bdbe",
                "responses": {
                    "200": {
                        "description": "Manifest retrieved successfully"
                    },
                    "404": {
                        "description": "PWA disabled"
                    },
                    "500": {
                        "description": "Internal server error"
                    }
                }
            }
        },
        "/api/user/auth/logout": {
            "get": {
                "tags": [
                    "User - Authentication"
                ],
                "summary": "Logout user",
                "description": "Logout the authenticated user by clearing remember token cookie and updating user session. Blocks 2FA if enabled.",
                "operationId": "56c6a89bb79c58a9aafe27c53c1bfecf",
                "responses": {
                    "200": {
                        "description": "User logged out successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/LogoutResponse"
                                }
                            }
                        }
                    },
                    "500": {
                        "description": "Internal server error - Failed to logout user"
                    }
                }
            }
        },
        "/api/user/auth/email-login/request": {
            "post": {
                "tags": [
                    "User - Authentication"
                ],
                "summary": "Request email login code",
                "description": "Send a 6-digit login code to the user's email address for passwordless authentication.",
                "operationId": "bb14b3b65e181d68500bdb7db0a0b2c8",
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/EmailLoginRequest"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Login code sent successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/EmailLoginCodeSentResponse"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request - Missing email, invalid format, or Turnstile validation failed"
                    },
                    "401": {
                        "description": "Unauthorized - Email not found or user is banned"
                    },
                    "403": {
                        "description": "Forbidden - Email login is disabled"
                    },
                    "429": {
                        "description": "Too many requests - Rate limited"
                    }
                }
            }
        },
        "/api/user/auth/email-login/verify": {
            "post": {
                "tags": [
                    "User - Authentication"
                ],
                "summary": "Verify email login code",
                "description": "Verify the 6-digit login code and authenticate the user.",
                "operationId": "6364f55a8a72f09e01adf8d14c5fb4dd",
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/EmailLoginVerifyRequest"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "User logged in successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/LoginResponse"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request - Missing fields or invalid code format"
                    },
                    "401": {
                        "description": "Unauthorized - Invalid or expired code"
                    },
                    "403": {
                        "description": "Forbidden - Email login is disabled"
                    }
                }
            }
        },
        "/api/user/auth/forgot-password": {
            "put": {
                "tags": [
                    "User - Authentication"
                ],
                "summary": "Request password reset",
                "description": "Send a password reset email to the user. Includes CloudFlare Turnstile validation if enabled.",
                "operationId": "ddeb41d7a471c83884377145a31f6cce",
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/ForgotPasswordRequest"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Generic success whether or not the email belongs to an account, including when User::updateUser() fails (anti-enumeration). Reset email is queued asynchronously when an account exists.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ForgotPasswordResponse"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request - Missing required fields, invalid email format, Turnstile validation failed, or Turnstile keys not set"
                    }
                }
            }
        },
        "/api/user/auth/ldap/login": {
            "put": {
                "tags": [
                    "User - Authentication"
                ],
                "summary": "Login via LDAP",
                "description": "Authenticate user against LDAP directory. Supports auto-provisioning if enabled.",
                "operationId": "269d5cbcc9a84d49679dc6fc3ae04599",
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/LdapLoginRequest"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "User logged in successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/LoginResponse"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request - Missing required fields or invalid data"
                    },
                    "401": {
                        "description": "Unauthorized - Invalid credentials or LDAP authentication failed"
                    },
                    "403": {
                        "description": "Forbidden - Provider disabled or auto-provisioning disabled"
                    },
                    "404": {
                        "description": "Not found - Provider not found"
                    },
                    "500": {
                        "description": "Internal server error"
                    }
                }
            }
        },
        "/api/user/auth/login": {
            "put": {
                "tags": [
                    "User - Authentication"
                ],
                "summary": "Login user",
                "description": "Authenticate user with username or email and password. Includes CloudFlare Turnstile validation if enabled. Returns 2FA requirement if enabled.",
                "operationId": "559782c932bcad9461f1a80ea179984a",
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/LoginRequest"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "User logged in successfully or two-factor authentication required",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "oneOf": [
                                        {
                                            "$ref": "#/components/schemas/LoginResponse"
                                        },
                                        {
                                            "$ref": "#/components/schemas/TwoFactorRequiredResponse"
                                        }
                                    ]
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request - Missing required fields, invalid username or email format, Turnstile validation failed, or Turnstile keys not set"
                    },
                    "401": {
                        "description": "Unauthorized - Invalid credentials, user is banned, or authentication otherwise rejected"
                    },
                    "500": {
                        "description": "Internal server error - Remember token not set"
                    }
                }
            }
        },
        "/api/user/auth/oidc/login": {
            "get": {
                "tags": [
                    "User - Authentication"
                ],
                "summary": "Initiate OIDC login",
                "description": "Redirects the user to the configured OpenID Connect (OIDC) provider.",
                "operationId": "11cc6330dfbbc6be431a424ac151adfb"
            }
        },
        "/api/user/auth/oidc/callback": {
            "get": {
                "tags": [
                    "User - Authentication"
                ],
                "summary": "OIDC callback",
                "description": "Handles the OpenID Connect (OIDC) callback and logs the user in.",
                "operationId": "0dedc93b5da298db35e92088f20160a1"
            }
        },
        "/api/user/auth/qr/start": {
            "post": {
                "tags": [
                    "User - Authentication"
                ],
                "summary": "Start QR login challenge",
                "description": "Creates a short-lived QR login challenge for Discord-style sign-in from a phone that is already logged in.",
                "operationId": "951afef83a1e405d4e71605df5c2e208",
                "responses": {
                    "200": {
                        "description": "Challenge created"
                    },
                    "429": {
                        "description": "Rate limited"
                    }
                }
            }
        },
        "/api/user/auth/qr/poll": {
            "post": {
                "tags": [
                    "User - Authentication"
                ],
                "summary": "Poll QR login challenge",
                "description": "Desktop polls challenge status. When approved, returns a one-time exchange_token.",
                "operationId": "d9199023843d283b87e9d4800a0b3740",
                "responses": {
                    "200": {
                        "description": "Challenge status"
                    },
                    "400": {
                        "description": "Invalid challenge or secret"
                    },
                    "429": {
                        "description": "Polling too fast"
                    }
                }
            }
        },
        "/api/user/auth/qr/{challenge_id}": {
            "get": {
                "tags": [
                    "User - Authentication"
                ],
                "summary": "Get QR login challenge for approval",
                "description": "Authenticated phone loads challenge details and marks it as scanned.",
                "operationId": "ae57362cfd9363505a25f7a2cf9e1536",
                "responses": {
                    "200": {
                        "description": "Challenge details"
                    },
                    "400": {
                        "description": "Invalid or expired challenge"
                    },
                    "401": {
                        "description": "Unauthorized"
                    }
                }
            }
        },
        "/api/user/auth/qr/code/{user_code}": {
            "get": {
                "tags": [
                    "User - Authentication"
                ],
                "summary": "Look up QR login challenge by user code",
                "description": "Authenticated user enters the short code shown on another device to load and mark the challenge as scanned.",
                "operationId": "0c8ba3e1e18d06ce8ed9af9992b70de6",
                "responses": {
                    "200": {
                        "description": "Challenge details"
                    },
                    "400": {
                        "description": "Invalid or expired code"
                    },
                    "401": {
                        "description": "Unauthorized"
                    }
                }
            }
        },
        "/api/user/auth/qr/{challenge_id}/approve": {
            "post": {
                "tags": [
                    "User - Authentication"
                ],
                "summary": "Approve QR login challenge",
                "description": "Authenticated phone approves the desktop login. Does not set a cookie on the phone; mints an exchange token for the desktop.",
                "operationId": "31e41acac33ca16998cd137d58dc7dbf",
                "responses": {
                    "200": {
                        "description": "Approved"
                    },
                    "400": {
                        "description": "Invalid challenge"
                    },
                    "401": {
                        "description": "Unauthorized"
                    },
                    "403": {
                        "description": "User banned or deleted"
                    }
                }
            }
        },
        "/api/user/auth/qr/{challenge_id}/deny": {
            "post": {
                "tags": [
                    "User - Authentication"
                ],
                "summary": "Deny QR login challenge",
                "operationId": "afef30f5928a7f793e0cae5f42a4b9ff",
                "responses": {
                    "200": {
                        "description": "Denied"
                    },
                    "400": {
                        "description": "Invalid challenge"
                    },
                    "401": {
                        "description": "Unauthorized"
                    }
                }
            }
        },
        "/api/user/auth/qr/exchange": {
            "post": {
                "tags": [
                    "User - Authentication"
                ],
                "summary": "Exchange QR login token for session",
                "description": "Desktop redeems the one-time exchange_token and receives the remember_token cookie via completeLogin.",
                "operationId": "bbb84c6df4c2690a2b0687c9a4074efa",
                "responses": {
                    "200": {
                        "description": "Logged in"
                    },
                    "400": {
                        "description": "Invalid or expired token"
                    },
                    "403": {
                        "description": "User banned or deleted"
                    }
                }
            }
        },
        "/api/user/auth/register": {
            "put": {
                "tags": [
                    "User - Authentication"
                ],
                "summary": "Register new user",
                "description": "Create a new user account with email verification and welcome email. User is automatically logged in after successful registration. Includes CloudFlare Turnstile validation if enabled.",
                "operationId": "b0e1d9cf4f4375ca8642365bc7987068",
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/RegisterRequest"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "User registered successfully and automatically logged in",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/RegisterResponse"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request - Missing required fields, invalid data format, Turnstile validation failed, or Turnstile keys not set"
                    },
                    "409": {
                        "description": "Conflict - Username or email already exists"
                    },
                    "403": {
                        "description": "Forbidden - Registration is not enabled"
                    },
                    "500": {
                        "description": "Internal server error - Failed to create user"
                    }
                }
            }
        },
        "/api/user/auth/reset-password": {
            "get": {
                "tags": [
                    "User - Authentication"
                ],
                "summary": "Validate reset token",
                "description": "Validate a password reset token to check if it is valid before allowing password reset.",
                "operationId": "63565dd7e823d434a9debfa696364909",
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "description": "Password reset token from email",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Token is valid",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/TokenValidationResponse"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request - Missing token or invalid token"
                    },
                    "500": {
                        "description": "Internal server error - Failed to validate token"
                    }
                }
            },
            "put": {
                "tags": [
                    "User - Authentication"
                ],
                "summary": "Reset password",
                "description": "Reset user password using token from forgot password email. Includes CloudFlare Turnstile validation if enabled.",
                "operationId": "16d516b4cef40a813663f606e20f22c6",
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/ResetPasswordRequest"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Password reset successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ResetPasswordResponse"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request - Missing required fields, Turnstile validation failed, or Turnstile keys not set"
                    },
                    "404": {
                        "description": "Not found - Invalid token"
                    },
                    "500": {
                        "description": "Internal server error - Failed to reset password"
                    }
                }
            }
        },
        "/api/user/auth/two-factor": {
            "get": {
                "tags": [
                    "User - Authentication"
                ],
                "summary": "Get two-factor setup",
                "description": "Get QR code URL and secret key for setting up two-factor authentication with an authenticator app.",
                "operationId": "5c2d827b3e46a4620e88c63678d246b4",
                "responses": {
                    "200": {
                        "description": "Two-factor setup information retrieved successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/TwoFactorSetupResponse"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request - Two-factor authentication already enabled"
                    },
                    "401": {
                        "description": "Unauthorized - User not authenticated"
                    },
                    "500": {
                        "description": "Internal server error - Failed to generate setup information"
                    }
                }
            },
            "put": {
                "tags": [
                    "User - Authentication"
                ],
                "summary": "Enable two-factor authentication",
                "description": "Enable two-factor authentication for the authenticated user using TOTP code verification. Includes CloudFlare Turnstile validation if enabled.",
                "operationId": "6165887c556c2464139e1faa53cbffce",
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/TwoFactorEnableRequest"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Two-factor authentication enabled successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/TwoFactorEnableResponse"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request - Missing required fields, invalid code length, Turnstile validation failed, or Turnstile keys not set"
                    },
                    "401": {
                        "description": "Unauthorized - Invalid TOTP code or user is banned"
                    },
                    "500": {
                        "description": "Internal server error - Failed to enable 2FA"
                    }
                }
            },
            "post": {
                "tags": [
                    "User - Authentication"
                ],
                "summary": "Verify two-factor code",
                "description": "Verify two-factor authentication code during login process to complete authentication.",
                "operationId": "c0be72d04479272722301d9de8473dc6",
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/TwoFactorVerifyRequest"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Two-factor authentication verified successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/TwoFactorVerifyResponse"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request - Missing email, code, or challenge"
                    },
                    "401": {
                        "description": "Unauthorized - 2FA not enabled, invalid code, or missing/invalid challenge"
                    },
                    "429": {
                        "description": "Too many failed 2FA attempts for this account",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "error_code": {
                                            "type": "string",
                                            "example": "ACCOUNT_LOCKED"
                                        },
                                        "error_message": {
                                            "type": "string"
                                        },
                                        "data": {
                                            "properties": {
                                                "retry_after": {
                                                    "description": "Seconds until lockout expires",
                                                    "type": "integer"
                                                }
                                            },
                                            "type": "object"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "500": {
                        "description": "Internal server error - Failed to verify 2FA"
                    }
                }
            }
        },
        "/api/user/chatbot/chat": {
            "post": {
                "tags": [
                    "User - Chatbot"
                ],
                "summary": "Send a message to the AI chatbot",
                "description": "Send a message to the AI assistant and receive a response. Optionally include chat history for context.",
                "operationId": "8257a8d2cb6276a3286f74ec346549e3",
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/ChatbotRequest"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Chat response received successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "response": {
                                            "type": "string"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Invalid request"
                    },
                    "401": {
                        "description": "Unauthorized"
                    }
                }
            }
        },
        "/api/user/chatbot/conversations": {
            "get": {
                "tags": [
                    "User - Chatbot"
                ],
                "summary": "Get user conversations",
                "description": "Retrieve all conversations for the authenticated user.",
                "operationId": "62570f1226bee8ec93e69afda0d334f5",
                "responses": {
                    "200": {
                        "description": "Conversations retrieved successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "conversations": {
                                            "type": "array",
                                            "items": {
                                                "type": "object"
                                            }
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "401": {
                        "description": "Unauthorized"
                    }
                }
            }
        },
        "/api/user/chatbot/conversations/{id}": {
            "get": {
                "tags": [
                    "User - Chatbot"
                ],
                "summary": "Get conversation messages",
                "description": "Retrieve all messages for a specific conversation.",
                "operationId": "37e4258d1f48fc1692ad348a5c7df609",
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "description": "Conversation ID",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Messages retrieved successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "conversation": {
                                            "type": "object"
                                        },
                                        "messages": {
                                            "type": "array",
                                            "items": {
                                                "type": "object"
                                            }
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "401": {
                        "description": "Unauthorized"
                    },
                    "404": {
                        "description": "Conversation not found"
                    }
                }
            },
            "delete": {
                "tags": [
                    "User - Chatbot"
                ],
                "summary": "Delete conversation",
                "description": "Delete a conversation and all its messages.",
                "operationId": "9484f327341b2dbd2e4f88cd6e8bc803",
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "description": "Conversation ID",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Conversation deleted successfully"
                    },
                    "401": {
                        "description": "Unauthorized"
                    },
                    "404": {
                        "description": "Conversation not found"
                    }
                }
            }
        },
        "/api/user/chatbot/conversations/{id}/memory": {
            "patch": {
                "tags": [
                    "User - Chatbot"
                ],
                "summary": "Update conversation memory",
                "description": "Update the memory field for a conversation. This memory is included in the AI context for future messages.",
                "operationId": "a06cc8cf4ccce1ca69d673cb955e3f22",
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "description": "Conversation ID",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "properties": {
                                    "memory": {
                                        "description": "Memory content",
                                        "type": "string"
                                    }
                                },
                                "type": "object"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Memory updated successfully"
                    },
                    "401": {
                        "description": "Unauthorized"
                    },
                    "404": {
                        "description": "Conversation not found"
                    }
                }
            }
        },
        "/api/user/status": {
            "get": {
                "tags": [
                    "User - Status"
                ],
                "summary": "Get public status page data",
                "description": "Retrieve status information based on configured visibility settings. Only returns data that is enabled in settings.",
                "operationId": "c6c9d967a18e834d43f2ceefb7c3cdaa",
                "responses": {
                    "200": {
                        "description": "Status data retrieved successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "enabled": {
                                            "description": "Whether status page is enabled",
                                            "type": "boolean"
                                        },
                                        "data": {
                                            "description": "Status data based on settings",
                                            "type": "object"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "403": {
                        "description": "Status page is disabled"
                    }
                }
            }
        },
        "/api/user/notifications": {
            "get": {
                "tags": [
                    "User - Notifications"
                ],
                "summary": "Get user notifications",
                "description": "Retrieve global and user-targeted notifications for the authenticated user.",
                "operationId": "5ef44bd20d7d1916d37c2bce1b4e1f98",
                "responses": {
                    "200": {
                        "description": "Notifications retrieved successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "notifications": {
                                            "type": "array",
                                            "items": {
                                                "$ref": "#/components/schemas/UserNotification"
                                            }
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "401": {
                        "description": "Unauthorized"
                    }
                }
            }
        },
        "/api/user/notifications/{id}/dismiss": {
            "post": {
                "tags": [
                    "User - Notifications"
                ],
                "summary": "Dismiss notification",
                "description": "Dismiss a specific notification for the authenticated user.",
                "operationId": "7965261f45abd9b683b38ab691481f0c",
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "description": "Notification ID",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Notification dismissed successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "message": {
                                            "description": "Success message",
                                            "type": "string"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request - Invalid ID"
                    },
                    "401": {
                        "description": "Unauthorized"
                    },
                    "403": {
                        "description": "Forbidden - Cannot dismiss this notification"
                    },
                    "404": {
                        "description": "Notification not found"
                    },
                    "500": {
                        "description": "Internal server error"
                    }
                }
            }
        },
        "/api/user/servers/{uuidShort}/files": {
            "get": {
                "tags": [
                    "User - Server Files"
                ],
                "summary": "Get server files",
                "description": "Retrieve directory contents for a specific server path. Lists files and directories with their properties.",
                "operationId": "0dca4aa7c62b002e5112434ebdefbece",
                "parameters": [
                    {
                        "name": "uuidShort",
                        "in": "path",
                        "description": "Server short UUID",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "path",
                        "in": "query",
                        "description": "Directory path to list",
                        "required": false,
                        "schema": {
                            "type": "string",
                            "default": "/"
                        }
                    },
                    {
                        "name": "search",
                        "in": "query",
                        "description": "Case-insensitive filename substring filter applied before the list item limit",
                        "required": false,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Files retrieved successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "contents": {
                                            "type": "array",
                                            "items": {
                                                "$ref": "#/components/schemas/ServerFileItem"
                                            }
                                        },
                                        "limited": {
                                            "description": "True when more matching items exist beyond the returned limit",
                                            "type": "boolean"
                                        },
                                        "limit": {
                                            "description": "Maximum number of items returned",
                                            "type": "integer"
                                        },
                                        "total": {
                                            "description": "Number of matching items before applying the limit",
                                            "type": "integer"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request - Missing or invalid UUID short"
                    },
                    "401": {
                        "description": "Unauthorized - User not authenticated"
                    },
                    "403": {
                        "description": "Forbidden - Access denied to server"
                    },
                    "404": {
                        "description": "Not found - Server or node not found"
                    },
                    "500": {
                        "description": "Internal server error - Failed to fetch files"
                    }
                }
            }
        },
        "/api/user/servers/{uuidShort}/archive-list": {
            "get": {
                "tags": [
                    "User - Server Files"
                ],
                "summary": "List directory inside an archive",
                "description": "Browse supported archives (zip, tar, …) on the server without extracting them.",
                "operationId": "3b320932a0ddd852aa2ae49d332ebe52",
                "parameters": [
                    {
                        "name": "uuidShort",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "path",
                        "in": "query",
                        "required": false,
                        "schema": {
                            "type": "string",
                            "default": "/"
                        }
                    },
                    {
                        "name": "file",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "archive_path",
                        "in": "query",
                        "required": false,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Archive listing retrieved"
                    },
                    "400": {
                        "description": "Bad request"
                    },
                    "403": {
                        "description": "Forbidden"
                    },
                    "500": {
                        "description": "Internal server error"
                    }
                }
            }
        },
        "/api/user/servers/{uuidShort}/search-files": {
            "get": {
                "tags": [
                    "User - Server Files"
                ],
                "summary": "Search files with advanced filters",
                "description": "Search server files by path patterns, content text and size constraints.",
                "operationId": "198306667dd8f07cb40c1b19c2f2196c",
                "parameters": [
                    {
                        "name": "uuidShort",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "directory",
                        "in": "query",
                        "required": false,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "pattern",
                        "in": "query",
                        "required": false,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "include",
                        "in": "query",
                        "required": false,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "exclude",
                        "in": "query",
                        "required": false,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "case_insensitive",
                        "in": "query",
                        "required": false,
                        "schema": {
                            "type": "boolean"
                        }
                    },
                    {
                        "name": "content",
                        "in": "query",
                        "required": false,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "content_case_insensitive",
                        "in": "query",
                        "required": false,
                        "schema": {
                            "type": "boolean"
                        }
                    },
                    {
                        "name": "min_size",
                        "in": "query",
                        "required": false,
                        "schema": {
                            "type": "integer"
                        }
                    },
                    {
                        "name": "max_size",
                        "in": "query",
                        "required": false,
                        "schema": {
                            "type": "integer"
                        }
                    },
                    {
                        "name": "max_content_size",
                        "in": "query",
                        "required": false,
                        "schema": {
                            "type": "integer"
                        }
                    },
                    {
                        "name": "include_oversized",
                        "in": "query",
                        "required": false,
                        "schema": {
                            "type": "boolean"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Search completed successfully"
                    },
                    "400": {
                        "description": "Bad request"
                    },
                    "401": {
                        "description": "Unauthorized"
                    },
                    "403": {
                        "description": "Forbidden"
                    },
                    "500": {
                        "description": "Internal server error"
                    }
                }
            }
        },
        "/api/user/servers/{uuidShort}/file": {
            "get": {
                "tags": [
                    "User - Server Files"
                ],
                "summary": "Get file content",
                "description": "Retrieve the raw content of a specific file with appropriate MIME type headers.",
                "operationId": "dd11a6ff911c114ed444b11430cb7ec2",
                "parameters": [
                    {
                        "name": "uuidShort",
                        "in": "path",
                        "description": "Server short UUID",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "path",
                        "in": "query",
                        "description": "File path to read",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "File content retrieved successfully",
                        "headers": {
                            "Content-Type": {
                                "description": "MIME type of the file",
                                "schema": {
                                    "type": "string",
                                    "example": "text/plain"
                                }
                            }
                        },
                        "content": {
                            "application/octet-stream": {
                                "schema": {
                                    "type": "string",
                                    "format": "binary"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request - Missing or invalid UUID short"
                    },
                    "401": {
                        "description": "Unauthorized - User not authenticated"
                    },
                    "403": {
                        "description": "Forbidden - Access denied to server"
                    },
                    "404": {
                        "description": "Not found - Server, node, or file not found"
                    },
                    "500": {
                        "description": "Internal server error - Failed to fetch file"
                    }
                }
            }
        },
        "/api/user/servers/{uuidShort}/file-hash": {
            "get": {
                "tags": [
                    "User - Server Files"
                ],
                "summary": "Get file hashes",
                "description": "Calculate and return hashes for a file on the server.",
                "operationId": "fec75d60614417b14506b27ddbca4d15",
                "parameters": [
                    {
                        "name": "uuidShort",
                        "in": "path",
                        "description": "Server short UUID",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "path",
                        "in": "query",
                        "description": "File path to hash",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "File hashes calculated successfully"
                    },
                    "400": {
                        "description": "Bad request - Missing file path"
                    },
                    "401": {
                        "description": "Unauthorized - User not authenticated"
                    },
                    "403": {
                        "description": "Forbidden - Access denied to server"
                    },
                    "404": {
                        "description": "Not found - Server, node, or file not found"
                    },
                    "500": {
                        "description": "Internal server error - Failed to hash file"
                    }
                }
            }
        },
        "/api/user/servers/{uuidShort}/write-file": {
            "post": {
                "tags": [
                    "User - Server Files"
                ],
                "summary": "Write file content",
                "description": "Write raw content to a file on the server. Content-Type must not be application/json. Send empty body to clear file contents.",
                "operationId": "10b7e5192a4951fa71ba49f034a3fdc4",
                "parameters": [
                    {
                        "name": "uuidShort",
                        "in": "path",
                        "description": "Server short UUID",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "path",
                        "in": "query",
                        "description": "File path to write to",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/octet-stream": {
                            "schema": {
                                "description": "Raw file content",
                                "type": "string",
                                "format": "binary"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "File written successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "message": {
                                            "description": "Success message",
                                            "type": "string"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request - Missing UUID or invalid content type"
                    },
                    "401": {
                        "description": "Unauthorized - User not authenticated"
                    },
                    "403": {
                        "description": "Forbidden - Access denied to server"
                    },
                    "404": {
                        "description": "Not found - Server or node not found"
                    },
                    "415": {
                        "description": "Unsupported media type - JSON content type not allowed"
                    },
                    "500": {
                        "description": "Internal server error - Failed to write file"
                    }
                }
            }
        },
        "/api/user/servers/{uuidShort}/rename": {
            "put": {
                "tags": [
                    "User - Server Files"
                ],
                "summary": "Rename files or folders",
                "description": "Rename multiple files or folders on the server.",
                "operationId": "4f3b68f50a86bc2883f09f7eb22d5ad7",
                "parameters": [
                    {
                        "name": "uuidShort",
                        "in": "path",
                        "description": "Server short UUID",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/RenameRequest"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Files renamed successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "message": {
                                            "description": "Success message",
                                            "type": "string"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request - Missing UUID or invalid request body"
                    },
                    "401": {
                        "description": "Unauthorized - User not authenticated"
                    },
                    "403": {
                        "description": "Forbidden - Access denied to server"
                    },
                    "404": {
                        "description": "Not found - Server or node not found"
                    },
                    "500": {
                        "description": "Internal server error - Failed to rename files"
                    }
                }
            }
        },
        "/api/user/servers/{uuidShort}/delete-files": {
            "delete": {
                "tags": [
                    "User - Server Files"
                ],
                "summary": "Delete files",
                "description": "Delete multiple files or folders from the server. This action cannot be undone.",
                "operationId": "e99b5d7dc4eea92645d5f2d598fa05aa",
                "parameters": [
                    {
                        "name": "uuidShort",
                        "in": "path",
                        "description": "Server short UUID",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/FileOperationRequest"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Files deleted successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "message": {
                                            "description": "Success message",
                                            "type": "string"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request - Missing UUID or invalid request body"
                    },
                    "401": {
                        "description": "Unauthorized - User not authenticated"
                    },
                    "403": {
                        "description": "Forbidden - Access denied to server"
                    },
                    "404": {
                        "description": "Not found - Server or node not found"
                    },
                    "500": {
                        "description": "Internal server error - Failed to delete files"
                    }
                }
            }
        },
        "/api/user/servers/{uuidShort}/wipe-all-files": {
            "post": {
                "tags": [
                    "User - Server Files"
                ],
                "summary": "Wipe all server files",
                "description": "Delete all files and folders in the server root directory. This action cannot be undone.",
                "operationId": "ae39a5122a72521fd8f40c894245edcf",
                "parameters": [
                    {
                        "name": "uuidShort",
                        "in": "path",
                        "description": "Server short UUID",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "All files wiped successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "message": {
                                            "description": "Success message",
                                            "type": "string"
                                        },
                                        "deleted_count": {
                                            "description": "Number of files/folders deleted",
                                            "type": "integer"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request - Missing UUID"
                    },
                    "401": {
                        "description": "Unauthorized - User not authenticated"
                    },
                    "403": {
                        "description": "Forbidden - Access denied to server or missing file.delete permission"
                    },
                    "404": {
                        "description": "Not found - Server or node not found"
                    },
                    "500": {
                        "description": "Internal server error - Failed to wipe files"
                    }
                }
            }
        },
        "/api/user/servers/{uuidShort}/copy-files": {
            "post": {
                "tags": [
                    "User - Server Files"
                ],
                "summary": "Copy files",
                "description": "Copy multiple files or folders to a new location on the server.",
                "operationId": "3517a9290d52ac502c74f9e878a91589",
                "parameters": [
                    {
                        "name": "uuidShort",
                        "in": "path",
                        "description": "Server short UUID",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/CopyRequest"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Files copied successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "message": {
                                            "description": "Success message",
                                            "type": "string"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request - Missing UUID or invalid request body"
                    },
                    "401": {
                        "description": "Unauthorized - User not authenticated"
                    },
                    "403": {
                        "description": "Forbidden - Access denied to server"
                    },
                    "404": {
                        "description": "Not found - Server or node not found"
                    },
                    "500": {
                        "description": "Internal server error - Failed to copy files"
                    }
                }
            }
        },
        "/api/user/servers/{uuidShort}/create-directory": {
            "post": {
                "tags": [
                    "User - Server Files"
                ],
                "summary": "Create directory",
                "description": "Create a new directory on the server.",
                "operationId": "77c9acbf9c0ad04bc6789ae991e6d137",
                "parameters": [
                    {
                        "name": "uuidShort",
                        "in": "path",
                        "description": "Server short UUID",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/CreateDirectoryRequest"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Directory created successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "message": {
                                            "description": "Success message",
                                            "type": "string"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request - Missing UUID or invalid request body"
                    },
                    "401": {
                        "description": "Unauthorized - User not authenticated"
                    },
                    "403": {
                        "description": "Forbidden - Access denied to server"
                    },
                    "404": {
                        "description": "Not found - Server or node not found"
                    },
                    "500": {
                        "description": "Internal server error - Failed to create directory"
                    }
                }
            }
        },
        "/api/user/servers/{uuidShort}/compress-files": {
            "post": {
                "tags": [
                    "User - Server Files"
                ],
                "summary": "Compress files",
                "description": "Compress multiple files or folders into an archive.",
                "operationId": "731fec88953f795c8cafd886e510d78c",
                "parameters": [
                    {
                        "name": "uuidShort",
                        "in": "path",
                        "description": "Server short UUID",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/CompressRequest"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Files compressed successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "message": {
                                            "description": "Success message",
                                            "type": "string"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request - Missing UUID or invalid request body"
                    },
                    "401": {
                        "description": "Unauthorized - User not authenticated"
                    },
                    "403": {
                        "description": "Forbidden - Access denied to server"
                    },
                    "404": {
                        "description": "Not found - Server or node not found"
                    },
                    "500": {
                        "description": "Internal server error - Failed to compress files"
                    }
                }
            }
        },
        "/api/user/servers/{uuidShort}/decompress-archive": {
            "post": {
                "tags": [
                    "User - Server Files"
                ],
                "summary": "Decompress archive",
                "description": "Decompress an archive file on the server.",
                "operationId": "6ba26bf6a872af84c2a1756ecbf87690",
                "parameters": [
                    {
                        "name": "uuidShort",
                        "in": "path",
                        "description": "Server short UUID",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/DecompressRequest"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Archive decompressed successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "message": {
                                            "description": "Success message",
                                            "type": "string"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request - Missing UUID or invalid request body"
                    },
                    "401": {
                        "description": "Unauthorized - User not authenticated"
                    },
                    "403": {
                        "description": "Forbidden - Access denied to server"
                    },
                    "404": {
                        "description": "Not found - Server or node not found"
                    },
                    "500": {
                        "description": "Internal server error - Failed to decompress archive"
                    }
                }
            }
        },
        "/api/user/servers/{uuidShort}/extract-archive-selection": {
            "post": {
                "tags": [
                    "User - Server Files"
                ],
                "summary": "Extract selected paths from an archive",
                "description": "Extract specific files or directories from an on-disk archive into a destination folder without unpacking the whole archive.",
                "operationId": "2b8589e803938f6ebfac1ada5e608865",
                "parameters": [
                    {
                        "name": "uuidShort",
                        "in": "path",
                        "description": "Server short UUID",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "required": [
                                    "root",
                                    "file",
                                    "destination",
                                    "entries"
                                ],
                                "properties": {
                                    "root": {
                                        "description": "Directory on the server that contains the archive",
                                        "type": "string"
                                    },
                                    "file": {
                                        "description": "Archive file name relative to root",
                                        "type": "string"
                                    },
                                    "destination": {
                                        "description": "Destination directory relative to server root (use empty string for /)",
                                        "type": "string"
                                    },
                                    "entries": {
                                        "description": "Paths inside the archive to extract",
                                        "type": "array",
                                        "items": {
                                            "type": "string"
                                        }
                                    }
                                },
                                "type": "object"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Extraction started or completed successfully"
                    },
                    "400": {
                        "description": "Bad request"
                    },
                    "403": {
                        "description": "Forbidden"
                    },
                    "500": {
                        "description": "Internal server error"
                    }
                }
            }
        },
        "/api/user/servers/{uuidShort}/change-permissions": {
            "post": {
                "tags": [
                    "User - Server Files"
                ],
                "summary": "Change file permissions",
                "description": "Change permissions for multiple files or folders on the server.",
                "operationId": "0fb1e2c56386b8de79e9141cbf067f8a",
                "parameters": [
                    {
                        "name": "uuidShort",
                        "in": "path",
                        "description": "Server short UUID",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/FileOperationRequest"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "File permissions changed successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "message": {
                                            "description": "Success message",
                                            "type": "string"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request - Missing UUID or invalid request body"
                    },
                    "401": {
                        "description": "Unauthorized - User not authenticated"
                    },
                    "403": {
                        "description": "Forbidden - Access denied to server"
                    },
                    "404": {
                        "description": "Not found - Server or node not found"
                    },
                    "500": {
                        "description": "Internal server error - Failed to change permissions"
                    }
                }
            }
        },
        "/api/user/servers/{uuidShort}/pull-file": {
            "post": {
                "tags": [
                    "User - Server Files"
                ],
                "summary": "Pull file from URL",
                "description": "Download a file from a URL to the server. Can run in foreground or background.",
                "operationId": "670dcc7b0853d0eea7f68e15e414d663",
                "parameters": [
                    {
                        "name": "uuidShort",
                        "in": "path",
                        "description": "Server short UUID",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/PullFileRequest"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "File pull initiated successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "message": {
                                            "description": "Success message",
                                            "type": "string"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request - Missing UUID or invalid request body"
                    },
                    "401": {
                        "description": "Unauthorized - User not authenticated"
                    },
                    "403": {
                        "description": "Forbidden - Access denied to server"
                    },
                    "404": {
                        "description": "Not found - Server or node not found"
                    },
                    "500": {
                        "description": "Internal server error - Failed to pull file"
                    }
                }
            }
        },
        "/api/user/servers/{uuidShort}/downloads-list": {
            "get": {
                "tags": [
                    "User - Server Files"
                ],
                "summary": "Get downloads list",
                "description": "Retrieve the list of active download processes for the server.",
                "operationId": "34ae202b535ef1129a60f5145ad2a0d9",
                "parameters": [
                    {
                        "name": "uuidShort",
                        "in": "path",
                        "description": "Server short UUID",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Downloads list retrieved successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "array",
                                    "items": {
                                        "$ref": "#/components/schemas/DownloadProcess"
                                    }
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request - Missing or invalid UUID short"
                    },
                    "401": {
                        "description": "Unauthorized - User not authenticated"
                    },
                    "403": {
                        "description": "Forbidden - Access denied to server"
                    },
                    "404": {
                        "description": "Not found - Server or node not found"
                    },
                    "500": {
                        "description": "Internal server error - Failed to get downloads list"
                    }
                }
            }
        },
        "/api/user/servers/{uuidShort}/delete-pull-process/{pullId}": {
            "delete": {
                "tags": [
                    "User - Server Files"
                ],
                "summary": "Delete pull process",
                "description": "Cancel and delete an active download process.",
                "operationId": "dcb593cb1a8ca25725173fd6db43a7a6",
                "parameters": [
                    {
                        "name": "uuidShort",
                        "in": "path",
                        "description": "Server short UUID",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "pullId",
                        "in": "path",
                        "description": "Pull process ID",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Pull process deleted successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "message": {
                                            "description": "Success message",
                                            "type": "string"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request - Missing parameters"
                    },
                    "401": {
                        "description": "Unauthorized - User not authenticated"
                    },
                    "403": {
                        "description": "Forbidden - Access denied to server"
                    },
                    "404": {
                        "description": "Not found - Server, node, or pull process not found"
                    },
                    "500": {
                        "description": "Internal server error - Failed to delete pull process"
                    }
                }
            }
        },
        "/api/user/servers/{uuidShort}/share-file": {
            "post": {
                "tags": [
                    "User - Server Files"
                ],
                "summary": "Share a server file via temp uploads",
                "description": "Uploads a server file from Wings as a temp upload (multipart) and returns a public share URL and delete key. Large files may return a background job identifier; poll share-jobs until complete.",
                "operationId": "47528b8a0d1450ba63af7b8722d9e2e1",
                "parameters": [
                    {
                        "name": "uuidShort",
                        "in": "path",
                        "description": "Server short UUID",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "required": [
                                    "file",
                                    "ttl_days"
                                ],
                                "properties": {
                                    "file": {
                                        "description": "Path to the file on the server",
                                        "type": "string"
                                    },
                                    "ttl_days": {
                                        "description": "How long the share remains available",
                                        "type": "integer",
                                        "enum": [
                                            1,
                                            5
                                        ]
                                    },
                                    "password": {
                                        "description": "Optional download password (min 4 chars)",
                                        "type": "string",
                                        "nullable": true
                                    },
                                    "delete_key": {
                                        "description": "Optional custom delete key (min 8 chars)",
                                        "type": "string",
                                        "nullable": true
                                    },
                                    "background": {
                                        "description": "Force background upload even for small files",
                                        "type": "boolean",
                                        "nullable": true
                                    }
                                },
                                "type": "object"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "File shared successfully"
                    },
                    "202": {
                        "description": "Background share started"
                    },
                    "400": {
                        "description": "Bad request"
                    },
                    "401": {
                        "description": "Unauthorized"
                    },
                    "403": {
                        "description": "Forbidden"
                    },
                    "404": {
                        "description": "Not found"
                    },
                    "500": {
                        "description": "Internal server error"
                    }
                }
            }
        },
        "/api/user/servers/{uuidShort}/share-jobs": {
            "get": {
                "tags": [
                    "User - Server Files"
                ],
                "summary": "List temp upload share jobs",
                "description": "Retrieve active temp upload share jobs for the server.",
                "operationId": "28f43bdd998213165f4758b30c165e0a",
                "parameters": [
                    {
                        "name": "uuidShort",
                        "in": "path",
                        "description": "Server short UUID",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Share jobs retrieved successfully"
                    },
                    "401": {
                        "description": "Unauthorized"
                    },
                    "403": {
                        "description": "Forbidden"
                    },
                    "500": {
                        "description": "Internal server error"
                    }
                }
            }
        },
        "/api/user/servers/{uuidShort}/share-jobs/{shareId}": {
            "delete": {
                "tags": [
                    "User - Server Files"
                ],
                "summary": "Cancel a temp upload share job",
                "description": "Cancels an in-progress temp upload share job.",
                "operationId": "d76eb768a4264d4a869baef0ad881315",
                "parameters": [
                    {
                        "name": "uuidShort",
                        "in": "path",
                        "description": "Server short UUID",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "shareId",
                        "in": "path",
                        "description": "Share job identifier",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Share job cancelled"
                    },
                    "401": {
                        "description": "Unauthorized"
                    },
                    "403": {
                        "description": "Forbidden"
                    },
                    "500": {
                        "description": "Internal server error"
                    }
                }
            }
        },
        "/api/user/servers/{uuidShort}/upload-file": {
            "get": {
                "tags": [
                    "User - Server Files"
                ],
                "summary": "Get file upload URL",
                "description": "Generate a secure one-time Wings upload URL with JWT token authentication. The browser uploads directly to Wings (multipart), avoiding PHP body/memory limits and panel proxy timeouts.",
                "operationId": "802e03624d3b0511226e6a5d5174c572",
                "parameters": [
                    {
                        "name": "uuidShort",
                        "in": "path",
                        "description": "Server short UUID",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Upload URL generated successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "upload_url": {
                                            "description": "Signed Wings file upload URL",
                                            "type": "string"
                                        },
                                        "expires_in": {
                                            "description": "Token lifetime in seconds",
                                            "type": "integer",
                                            "example": 900
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request - Missing UUID"
                    },
                    "401": {
                        "description": "Unauthorized - User not authenticated"
                    },
                    "403": {
                        "description": "Forbidden - Access denied to server"
                    },
                    "404": {
                        "description": "Not found - Server or node not found"
                    },
                    "500": {
                        "description": "Internal server error - Failed to generate upload URL"
                    }
                }
            },
            "post": {
                "tags": [
                    "User - Server Files"
                ],
                "summary": "Upload file",
                "description": "Upload a file to the server. Content-Type must not be application/json.",
                "operationId": "4974745d1b884432e5d79f3714fa3714",
                "parameters": [
                    {
                        "name": "uuidShort",
                        "in": "path",
                        "description": "Server short UUID",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "path",
                        "in": "query",
                        "description": "Destination directory path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "filename",
                        "in": "query",
                        "description": "Filename for the uploaded file",
                        "required": false,
                        "schema": {
                            "type": "string",
                            "default": "uploaded_file"
                        }
                    }
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/octet-stream": {
                            "schema": {
                                "description": "Raw file content",
                                "type": "string",
                                "format": "binary"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "File uploaded successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "message": {
                                            "description": "Success message",
                                            "type": "string"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request - Missing UUID, empty content, or invalid content type"
                    },
                    "401": {
                        "description": "Unauthorized - User not authenticated"
                    },
                    "403": {
                        "description": "Forbidden - Access denied to server"
                    },
                    "404": {
                        "description": "Not found - Server or node not found"
                    },
                    "415": {
                        "description": "Unsupported media type - JSON content type not allowed"
                    },
                    "500": {
                        "description": "Internal server error - Failed to upload file"
                    }
                }
            }
        },
        "/api/user/servers/{uuidShort}/download-directory": {
            "get": {
                "tags": [
                    "User - Server Files"
                ],
                "summary": "Get directory download URL",
                "description": "Generate a secure Wings download URL that archives and streams a directory (Calagopus).",
                "operationId": "10ea1b4a0744a2e9e00bf036cbf625c0",
                "parameters": [
                    {
                        "name": "uuidShort",
                        "in": "path",
                        "description": "Server short UUID",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "path",
                        "in": "query",
                        "description": "Directory path to download",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Download URL generated successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "download_url": {
                                            "description": "Signed Wings directory download URL",
                                            "type": "string"
                                        },
                                        "expires_in": {
                                            "description": "Token lifetime in seconds",
                                            "type": "integer",
                                            "example": 300
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request - Missing UUID or directory path"
                    },
                    "401": {
                        "description": "Unauthorized - User not authenticated"
                    },
                    "403": {
                        "description": "Forbidden - Access denied to server"
                    },
                    "404": {
                        "description": "Not found - Server or node not found"
                    },
                    "501": {
                        "description": "Daemon feature unsupported"
                    },
                    "500": {
                        "description": "Internal server error - Failed to generate download URL"
                    }
                }
            }
        },
        "/api/user/servers/{uuidShort}/download-file": {
            "get": {
                "tags": [
                    "User - Server Files"
                ],
                "summary": "Get file download URL",
                "description": "Generate a secure one-time Wings download URL for a server file with JWT token authentication (same pattern as backup downloads).",
                "operationId": "2110350de19297e967fd558bc8785960",
                "parameters": [
                    {
                        "name": "uuidShort",
                        "in": "path",
                        "description": "Server short UUID",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "path",
                        "in": "query",
                        "description": "File path to download",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Download URL generated successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "download_url": {
                                            "description": "Signed Wings file download URL",
                                            "type": "string"
                                        },
                                        "expires_in": {
                                            "description": "Token lifetime in seconds",
                                            "type": "integer",
                                            "example": 300
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request - Missing UUID or file path"
                    },
                    "401": {
                        "description": "Unauthorized - User not authenticated"
                    },
                    "403": {
                        "description": "Forbidden - Access denied to server"
                    },
                    "404": {
                        "description": "Not found - Server, node, or file not found"
                    },
                    "500": {
                        "description": "Internal server error - Failed to generate download URL"
                    }
                }
            }
        },
        "/api/user/servers/{uuidShort}/logs": {
            "get": {
                "tags": [
                    "User - Server Logs"
                ],
                "summary": "Get server logs",
                "description": "Retrieve the current server logs from the Wings daemon. These logs contain real-time server output and events.",
                "operationId": "f48a3eea4423c33698af22f007b843cd",
                "parameters": [
                    {
                        "name": "uuidShort",
                        "in": "path",
                        "description": "Server short UUID",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Server logs retrieved successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ServerLogsResponse"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request - Invalid server configuration"
                    },
                    "401": {
                        "description": "Unauthorized - User not authenticated or Wings daemon unauthorized"
                    },
                    "403": {
                        "description": "Forbidden - Access denied to server or Wings daemon"
                    },
                    "404": {
                        "description": "Not found - Server or node not found"
                    },
                    "422": {
                        "description": "Unprocessable entity - Invalid server data"
                    },
                    "500": {
                        "description": "Internal server error - Failed to retrieve logs"
                    }
                }
            }
        },
        "/api/user/servers/{uuidShort}/install-logs": {
            "get": {
                "tags": [
                    "User - Server Logs"
                ],
                "summary": "Get server installation logs",
                "description": "Retrieve the installation logs from the Wings daemon. These logs contain the server installation process output and any errors that occurred during setup.",
                "operationId": "6b9f846fcd44b60b9795a9638ebc1302",
                "parameters": [
                    {
                        "name": "uuidShort",
                        "in": "path",
                        "description": "Server short UUID",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Installation logs retrieved successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/InstallLogsResponse"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request - Invalid server configuration"
                    },
                    "401": {
                        "description": "Unauthorized - User not authenticated or Wings daemon unauthorized"
                    },
                    "403": {
                        "description": "Forbidden - Access denied to server or Wings daemon"
                    },
                    "404": {
                        "description": "Not found - Server or node not found"
                    },
                    "422": {
                        "description": "Unprocessable entity - Invalid server data"
                    },
                    "500": {
                        "description": "Internal server error - Failed to retrieve installation logs"
                    }
                }
            }
        },
        "/api/user/servers/{uuidShort}/logs/upload": {
            "post": {
                "tags": [
                    "User - Server Logs"
                ],
                "summary": "Upload server logs to MythicalSystems Paste",
                "description": "Upload the current server logs to pastes.mythicalsystems.org and return the shareable URL.",
                "operationId": "a319d658d96378d4981ee8112445277b",
                "parameters": [
                    {
                        "name": "uuidShort",
                        "in": "path",
                        "description": "Server short UUID",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Logs uploaded successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "id": {
                                            "description": "Paste ID",
                                            "type": "string"
                                        },
                                        "url": {
                                            "description": "Viewer URL (paste.mythicalsystems.org)",
                                            "type": "string"
                                        },
                                        "raw": {
                                            "description": "Raw paste URL",
                                            "type": "string"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request - No logs to upload or upload failed"
                    },
                    "401": {
                        "description": "Unauthorized - User not authenticated"
                    },
                    "403": {
                        "description": "Forbidden - Access denied to server"
                    },
                    "404": {
                        "description": "Not found - Server not found"
                    },
                    "500": {
                        "description": "Internal server error - Failed to upload logs"
                    }
                }
            }
        },
        "/api/user/servers/{uuidShort}/install-logs/upload": {
            "post": {
                "tags": [
                    "User - Server Logs"
                ],
                "summary": "Upload server installation logs to MythicalSystems Paste",
                "description": "Upload the server installation logs to pastes.mythicalsystems.org and return the shareable URL.",
                "operationId": "6da98119d04cc543fa23bed251f605ef",
                "parameters": [
                    {
                        "name": "uuidShort",
                        "in": "path",
                        "description": "Server short UUID",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Installation logs uploaded successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "id": {
                                            "description": "Paste ID",
                                            "type": "string"
                                        },
                                        "url": {
                                            "description": "Viewer URL (paste.mythicalsystems.org)",
                                            "type": "string"
                                        },
                                        "raw": {
                                            "description": "Raw paste URL",
                                            "type": "string"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request - No logs to upload or upload failed"
                    },
                    "401": {
                        "description": "Unauthorized - User not authenticated"
                    },
                    "403": {
                        "description": "Forbidden - Access denied to server"
                    },
                    "404": {
                        "description": "Not found - Server not found"
                    },
                    "500": {
                        "description": "Internal server error - Failed to upload logs"
                    }
                }
            }
        },
        "/api/user/servers/{uuidShort}/power/{action}": {
            "post": {
                "tags": [
                    "User - Server Power"
                ],
                "summary": "Send power action to server",
                "description": "Send a power action (start, stop, restart, kill) to a server through the Wings daemon.",
                "operationId": "84fb01f2775539dc9336aeae487b2fa8",
                "parameters": [
                    {
                        "name": "uuidShort",
                        "in": "path",
                        "description": "Server short UUID",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "action",
                        "in": "path",
                        "description": "Power action to perform",
                        "required": true,
                        "schema": {
                            "description": "Power action: start, stop, restart, or kill",
                            "type": "string",
                            "enum": [
                                "start",
                                "stop",
                                "restart",
                                "kill"
                            ]
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Power action sent successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/PowerActionResponse"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request - Invalid server configuration or invalid power action"
                    },
                    "401": {
                        "description": "Unauthorized - User not authenticated or Wings daemon unauthorized"
                    },
                    "403": {
                        "description": "Forbidden - Access denied to server or Wings daemon"
                    },
                    "404": {
                        "description": "Not found - Server or node not found"
                    },
                    "422": {
                        "description": "Unprocessable entity - Invalid server data"
                    },
                    "500": {
                        "description": "Internal server error - Failed to send power action"
                    }
                }
            }
        },
        "/api/user/servers/{uuidShort}/activities": {
            "get": {
                "tags": [
                    "User - Server Activities"
                ],
                "summary": "Get server activities by UUID",
                "description": "Retrieve paginated activities for a specific server that the user owns or has subuser access to.",
                "operationId": "0d9dce1662682e4dc63bdaec05dafe98",
                "parameters": [
                    {
                        "name": "uuidShort",
                        "in": "path",
                        "description": "Server short UUID",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "page",
                        "in": "query",
                        "description": "Page number for pagination",
                        "required": false,
                        "schema": {
                            "type": "integer",
                            "default": 1,
                            "minimum": 1
                        }
                    },
                    {
                        "name": "per_page",
                        "in": "query",
                        "description": "Number of records per page",
                        "required": false,
                        "schema": {
                            "type": "integer",
                            "default": 50,
                            "maximum": 100,
                            "minimum": 1
                        }
                    },
                    {
                        "name": "search",
                        "in": "query",
                        "description": "Search term to filter activities by event or metadata",
                        "required": false,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Server activities retrieved successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "activities": {
                                            "type": "array",
                                            "items": {
                                                "$ref": "#/components/schemas/UserServerActivity"
                                            }
                                        },
                                        "pagination": {
                                            "$ref": "#/components/schemas/ActivityPagination"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request - Missing or invalid UUID short"
                    },
                    "401": {
                        "description": "Unauthorized - User not authenticated"
                    },
                    "403": {
                        "description": "Forbidden - Access denied to server"
                    },
                    "404": {
                        "description": "Not found - Server not found"
                    },
                    "500": {
                        "description": "Internal server error - Failed to retrieve activities"
                    }
                }
            }
        },
        "/api/user/servers/{uuidShort}/allocations": {
            "get": {
                "tags": [
                    "User - Server Allocations"
                ],
                "summary": "Get server allocations",
                "description": "Retrieve all allocations assigned to a specific server that the user owns or has subuser access to.",
                "operationId": "ab51d737320177609e3ed747d4b2fae6",
                "parameters": [
                    {
                        "name": "uuidShort",
                        "in": "path",
                        "description": "Server short UUID",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Server allocations retrieved successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/AllocationResponse"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request - Missing or invalid UUID short"
                    },
                    "401": {
                        "description": "Unauthorized - User not authenticated"
                    },
                    "403": {
                        "description": "Forbidden - Access denied to server"
                    },
                    "404": {
                        "description": "Not found - Server not found"
                    },
                    "500": {
                        "description": "Internal server error - Failed to retrieve allocations"
                    }
                }
            }
        },
        "/api/user/servers/{uuidShort}/allocations/{allocationId}": {
            "delete": {
                "tags": [
                    "User - Server Allocations"
                ],
                "summary": "Delete server allocation",
                "description": "Remove an allocation from a server. Cannot delete the primary allocation.",
                "operationId": "48c4cd6d2aa27ce23dc13855e9536d77",
                "parameters": [
                    {
                        "name": "uuidShort",
                        "in": "path",
                        "description": "Server short UUID",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "allocationId",
                        "in": "path",
                        "description": "Allocation ID to delete",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Allocation deleted successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/AllocationDeleteResponse"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request - Missing parameters, allocation mismatch, or primary allocation deletion attempt"
                    },
                    "401": {
                        "description": "Unauthorized - User not authenticated"
                    },
                    "403": {
                        "description": "Forbidden - Access denied to server"
                    },
                    "404": {
                        "description": "Not found - Server or allocation not found"
                    },
                    "500": {
                        "description": "Internal server error - Failed to delete allocation"
                    }
                }
            }
        },
        "/api/user/servers/{uuidShort}/allocations/{allocationId}/primary": {
            "post": {
                "tags": [
                    "User - Server Allocations"
                ],
                "summary": "Set primary allocation",
                "description": "Set a specific allocation as the primary allocation for the server.",
                "operationId": "bbfac15587a7c812b4e156eaca47805f",
                "parameters": [
                    {
                        "name": "uuidShort",
                        "in": "path",
                        "description": "Server short UUID",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "allocationId",
                        "in": "path",
                        "description": "Allocation ID to set as primary",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Primary allocation updated successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/PrimaryAllocationResponse"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request - Missing parameters or allocation mismatch"
                    },
                    "401": {
                        "description": "Unauthorized - User not authenticated"
                    },
                    "403": {
                        "description": "Forbidden - Access denied to server"
                    },
                    "404": {
                        "description": "Not found - Server or allocation not found"
                    },
                    "500": {
                        "description": "Internal server error - Failed to update primary allocation"
                    }
                }
            }
        },
        "/api/user/servers/{uuidShort}/allocations/available": {
            "get": {
                "tags": [
                    "User - Server Allocations"
                ],
                "summary": "Get available allocations",
                "description": "Retrieve all available (unassigned) allocations that can be assigned to the server. Supports pagination and search.",
                "operationId": "17e331ec8bfaf36adbd23500609adb32",
                "parameters": [
                    {
                        "name": "uuidShort",
                        "in": "path",
                        "description": "Server short UUID",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "page",
                        "in": "query",
                        "description": "Page number (default: 1)",
                        "required": false,
                        "schema": {
                            "type": "integer",
                            "minimum": 1
                        }
                    },
                    {
                        "name": "limit",
                        "in": "query",
                        "description": "Items per page (default: 20, max: 100)",
                        "required": false,
                        "schema": {
                            "type": "integer",
                            "maximum": 100,
                            "minimum": 1
                        }
                    },
                    {
                        "name": "search",
                        "in": "query",
                        "description": "Search query for IP address, port, alias, or notes",
                        "required": false,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Available allocations retrieved successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "allocations": {
                                            "type": "array",
                                            "items": {
                                                "$ref": "#/components/schemas/ServerAllocation"
                                            }
                                        },
                                        "pagination": {
                                            "type": "object"
                                        },
                                        "search": {
                                            "type": "object"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "401": {
                        "description": "Unauthorized - User not authenticated"
                    },
                    "403": {
                        "description": "Forbidden - Access denied to server"
                    },
                    "404": {
                        "description": "Not found - Server not found"
                    }
                }
            }
        },
        "/api/user/servers/{uuidShort}/allocations/auto": {
            "post": {
                "tags": [
                    "User - Server Allocations"
                ],
                "summary": "Auto-allocate allocation",
                "description": "Automatically assign a free allocation to the server. Only assigns one allocation at a time. Optionally accepts an allocation_id to assign a specific allocation.",
                "operationId": "a61e143076c8a09b549ff7cd72787d2e",
                "parameters": [
                    {
                        "name": "uuidShort",
                        "in": "path",
                        "description": "Server short UUID",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "requestBody": {
                    "description": "Optional allocation ID to assign",
                    "content": {
                        "application/json": {
                            "schema": {
                                "properties": {
                                    "allocation_id": {
                                        "description": "Specific allocation ID to assign. If not provided, a random allocation will be selected.",
                                        "type": "integer",
                                        "nullable": true
                                    }
                                },
                                "type": "object"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Allocation assigned successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/AutoAllocationResponse"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request - Missing UUID, allocation limit reached, no free allocations available, or invalid allocation ID"
                    },
                    "401": {
                        "description": "Unauthorized - User not authenticated"
                    },
                    "403": {
                        "description": "Forbidden - Access denied to server"
                    },
                    "404": {
                        "description": "Not found - Server or allocation not found"
                    },
                    "500": {
                        "description": "Internal server error - Failed to assign allocation"
                    }
                }
            }
        },
        "/api/user/servers/{uuidShort}/backups/{backupUuid}/recover": {
            "post": {
                "tags": [
                    "User - Server Backups"
                ],
                "summary": "Mark a stalled server backup as interrupted",
                "description": "Requires backup.delete permission and confirm_interrupted=true. Only pending backups at least 24 hours old are eligible. Does not cancel the node job or remove archive files.",
                "operationId": "0e851ab67214953af63fd0a1d0ee467b",
                "responses": {
                    "200": {
                        "description": "Backup marked failed and unlocked"
                    },
                    "403": {
                        "description": "Permission denied"
                    },
                    "409": {
                        "description": "Not stale or concurrently completed"
                    }
                }
            }
        },
        "/api/user/servers/{uuidShort}/backups": {
            "get": {
                "tags": [
                    "User - Server Backups"
                ],
                "summary": "Get server backups",
                "description": "Retrieve all backups for a specific server that the user owns or has subuser access to.",
                "operationId": "4b961f237f0ab086cc79b8ac0c9f2294",
                "parameters": [
                    {
                        "name": "uuidShort",
                        "in": "path",
                        "description": "Server short UUID",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "page",
                        "in": "query",
                        "description": "Page number for pagination",
                        "required": false,
                        "schema": {
                            "type": "integer",
                            "default": 1,
                            "minimum": 1
                        }
                    },
                    {
                        "name": "per_page",
                        "in": "query",
                        "description": "Number of records per page",
                        "required": false,
                        "schema": {
                            "type": "integer",
                            "default": 20,
                            "maximum": 100,
                            "minimum": 1
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Server backups retrieved successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "data": {
                                            "type": "array",
                                            "items": {
                                                "$ref": "#/components/schemas/Backup"
                                            }
                                        },
                                        "pagination": {
                                            "$ref": "#/components/schemas/BackupPagination"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request - Missing or invalid UUID short"
                    },
                    "401": {
                        "description": "Unauthorized - User not authenticated"
                    },
                    "403": {
                        "description": "Forbidden - Access denied to server"
                    },
                    "404": {
                        "description": "Not found - Server not found"
                    },
                    "500": {
                        "description": "Internal server error - Failed to retrieve backups"
                    }
                }
            },
            "post": {
                "tags": [
                    "User - Server Backups"
                ],
                "summary": "Create backup",
                "description": "Create a new backup for a server. Checks backup limits and initiates backup creation on Wings daemon.",
                "operationId": "ca30210312c977adcb0b1ddc1c75ee89",
                "parameters": [
                    {
                        "name": "uuidShort",
                        "in": "path",
                        "description": "Server short UUID",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/BackupCreateRequest"
                            }
                        }
                    }
                },
                "responses": {
                    "202": {
                        "description": "Backup creation initiated successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/BackupCreateResponse"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request - Missing UUID, backup limit reached, or invalid request body"
                    },
                    "401": {
                        "description": "Unauthorized - User not authenticated"
                    },
                    "403": {
                        "description": "Forbidden - Access denied to server"
                    },
                    "404": {
                        "description": "Not found - Server or node not found"
                    },
                    "500": {
                        "description": "Internal server error - Failed to create backup"
                    }
                }
            }
        },
        "/api/user/servers/{uuidShort}/backups/{backupUuid}": {
            "get": {
                "tags": [
                    "User - Server Backups"
                ],
                "summary": "Get specific backup",
                "description": "Retrieve details of a specific backup for a server that the user owns or has subuser access to.",
                "operationId": "4c0c5ebb9a233465a900f42ac2474615",
                "parameters": [
                    {
                        "name": "uuidShort",
                        "in": "path",
                        "description": "Server short UUID",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "backupUuid",
                        "in": "path",
                        "description": "Backup UUID",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Backup details retrieved successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Backup"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request - Missing or invalid parameters"
                    },
                    "401": {
                        "description": "Unauthorized - User not authenticated"
                    },
                    "403": {
                        "description": "Forbidden - Access denied to server"
                    },
                    "404": {
                        "description": "Not found - Server or backup not found"
                    },
                    "500": {
                        "description": "Internal server error - Failed to retrieve backup"
                    }
                }
            },
            "delete": {
                "tags": [
                    "User - Server Backups"
                ],
                "summary": "Delete backup",
                "description": "Delete a backup from the server. Cannot delete locked backups.",
                "operationId": "b8428c07aaac63d812c0f5b950730678",
                "parameters": [
                    {
                        "name": "uuidShort",
                        "in": "path",
                        "description": "Server short UUID",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "backupUuid",
                        "in": "path",
                        "description": "Backup UUID",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Backup deleted successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "message": {
                                            "description": "Success message",
                                            "type": "string"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request - Missing parameters"
                    },
                    "401": {
                        "description": "Unauthorized - User not authenticated"
                    },
                    "403": {
                        "description": "Forbidden - Access denied to server"
                    },
                    "404": {
                        "description": "Not found - Server, backup, or node not found"
                    },
                    "423": {
                        "description": "Locked - Backup is currently locked"
                    },
                    "500": {
                        "description": "Internal server error - Failed to delete backup"
                    }
                }
            }
        },
        "/api/user/servers/{uuidShort}/backups/databases": {
            "post": {
                "tags": [
                    "User - Server Backups"
                ],
                "summary": "Create database backup files",
                "description": "Export MySQL/MariaDB databases to SQL dumps on the server filesystem. Requires backup.create and database.view_password.",
                "operationId": "e8f7d85313abccd4a37d06b28c663887",
                "parameters": [
                    {
                        "name": "uuidShort",
                        "in": "path",
                        "description": "Server short UUID",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "properties": {
                                    "databases": {
                                        "description": "\"all\" or array of database IDs",
                                        "oneOf": [
                                            {
                                                "type": "string",
                                                "enum": [
                                                    "all"
                                                ]
                                            },
                                            {
                                                "type": "array",
                                                "items": {
                                                    "type": "integer"
                                                }
                                            }
                                        ]
                                    },
                                    "directory": {
                                        "description": "Dump directory on the server filesystem",
                                        "type": "string",
                                        "nullable": true
                                    }
                                },
                                "type": "object"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Database backups written successfully"
                    },
                    "400": {
                        "description": "Bad request"
                    },
                    "403": {
                        "description": "Forbidden"
                    },
                    "404": {
                        "description": "Server or node not found"
                    },
                    "500": {
                        "description": "Failed to create database backups"
                    }
                }
            }
        },
        "/api/user/servers/{uuidShort}/backups/{backupUuid}/restore": {
            "post": {
                "tags": [
                    "User - Server Backups"
                ],
                "summary": "Restore backup",
                "description": "Restore a backup to the server. Cannot restore locked backups.",
                "operationId": "5c5971abb6e570ae1f651638a777a89e",
                "parameters": [
                    {
                        "name": "uuidShort",
                        "in": "path",
                        "description": "Server short UUID",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "backupUuid",
                        "in": "path",
                        "description": "Backup UUID",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/BackupRestoreRequest"
                            }
                        }
                    }
                },
                "responses": {
                    "202": {
                        "description": "Backup restoration initiated successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "message": {
                                            "description": "Success message",
                                            "type": "string"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request - Missing parameters or invalid request body"
                    },
                    "401": {
                        "description": "Unauthorized - User not authenticated"
                    },
                    "403": {
                        "description": "Forbidden - Access denied to server"
                    },
                    "404": {
                        "description": "Not found - Server, backup, or node not found"
                    },
                    "423": {
                        "description": "Locked - Backup is currently locked"
                    },
                    "500": {
                        "description": "Internal server error - Failed to restore backup"
                    }
                }
            }
        },
        "/api/user/servers/{uuidShort}/backups/{backupUuid}/lock": {
            "post": {
                "tags": [
                    "User - Server Backups"
                ],
                "summary": "Lock backup",
                "description": "Lock a backup to prevent deletion and restoration.",
                "operationId": "042d444a5b5e27611ae5ee30c7ab795b",
                "parameters": [
                    {
                        "name": "uuidShort",
                        "in": "path",
                        "description": "Server short UUID",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "backupUuid",
                        "in": "path",
                        "description": "Backup UUID",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Backup locked successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "message": {
                                            "description": "Success message",
                                            "type": "string"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request - Missing parameters"
                    },
                    "401": {
                        "description": "Unauthorized - User not authenticated"
                    },
                    "403": {
                        "description": "Forbidden - Access denied to server"
                    },
                    "404": {
                        "description": "Not found - Server or backup not found"
                    },
                    "500": {
                        "description": "Internal server error - Failed to lock backup"
                    }
                }
            }
        },
        "/api/user/servers/{uuidShort}/backups/{backupUuid}/unlock": {
            "post": {
                "tags": [
                    "User - Server Backups"
                ],
                "summary": "Unlock backup",
                "description": "Unlock a backup to allow deletion and restoration.",
                "operationId": "93bc1b99199b728e5f7a5ba99090cfa2",
                "parameters": [
                    {
                        "name": "uuidShort",
                        "in": "path",
                        "description": "Server short UUID",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "backupUuid",
                        "in": "path",
                        "description": "Backup UUID",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Backup unlocked successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "message": {
                                            "description": "Success message",
                                            "type": "string"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request - Missing parameters"
                    },
                    "401": {
                        "description": "Unauthorized - User not authenticated"
                    },
                    "403": {
                        "description": "Forbidden - Access denied to server"
                    },
                    "404": {
                        "description": "Not found - Server or backup not found"
                    },
                    "500": {
                        "description": "Internal server error - Failed to unlock backup"
                    }
                }
            }
        },
        "/api/user/servers/{uuidShort}/backups/bulk-delete": {
            "delete": {
                "tags": [
                    "User - Server Backups"
                ],
                "summary": "Bulk delete server backups",
                "description": "Delete multiple backups at once. Pass an array of backup UUIDs, or set all=true to delete every unlocked backup. Locked backups are skipped.",
                "operationId": "6199680871a501586bb40d29d8f54ebf",
                "parameters": [
                    {
                        "name": "uuidShort",
                        "in": "path",
                        "description": "Server short UUID",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "properties": {
                                    "uuids": {
                                        "description": "Backup UUIDs to delete",
                                        "type": "array",
                                        "items": {
                                            "type": "string"
                                        }
                                    },
                                    "all": {
                                        "description": "When true, delete all unlocked backups for the server",
                                        "type": "boolean"
                                    }
                                },
                                "type": "object"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Bulk delete completed",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "deleted_count": {
                                            "type": "integer"
                                        },
                                        "skipped_count": {
                                            "type": "integer"
                                        },
                                        "failed_count": {
                                            "type": "integer"
                                        },
                                        "skipped_uuids": {
                                            "type": "array",
                                            "items": {
                                                "type": "string"
                                            }
                                        },
                                        "failed": {
                                            "type": "array",
                                            "items": {
                                                "type": "object"
                                            }
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request - Invalid or missing parameters"
                    },
                    "401": {
                        "description": "Unauthorized - User not authenticated"
                    },
                    "403": {
                        "description": "Forbidden - Access denied to server"
                    },
                    "404": {
                        "description": "Not found - Server or node not found"
                    },
                    "500": {
                        "description": "Internal server error"
                    }
                }
            }
        },
        "/api/user/servers/{uuidShort}/backups/{backupUuid}/download": {
            "get": {
                "tags": [
                    "User - Server Backups"
                ],
                "summary": "Get backup download URL",
                "description": "Generate a secure download URL for a backup with JWT token authentication.",
                "operationId": "fdf42d2f4cf190c94777d9ad6e9240e5",
                "parameters": [
                    {
                        "name": "uuidShort",
                        "in": "path",
                        "description": "Server short UUID",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "backupUuid",
                        "in": "path",
                        "description": "Backup UUID",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Download URL generated successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/BackupDownloadResponse"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request - Missing parameters"
                    },
                    "401": {
                        "description": "Unauthorized - User not authenticated"
                    },
                    "403": {
                        "description": "Forbidden - Access denied to server"
                    },
                    "404": {
                        "description": "Not found - Server, backup, or node not found"
                    },
                    "500": {
                        "description": "Internal server error - Failed to generate download URL"
                    }
                }
            }
        },
        "/api/user/servers/{uuidShort}/backups/destinations": {
            "get": {
                "tags": [
                    "User - Server Backups"
                ],
                "summary": "Get backup destinations",
                "description": "List backup adapters available on the server's node, including the default adapter.",
                "operationId": "e86966236fb35aa0fe05f53387f3375a",
                "parameters": [
                    {
                        "name": "uuidShort",
                        "in": "path",
                        "description": "Server short UUID",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Backup destinations retrieved",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "adapters": {
                                            "type": "array",
                                            "items": {
                                                "type": "string"
                                            }
                                        },
                                        "destinations": {
                                            "type": "array",
                                            "items": {
                                                "properties": {
                                                    "id": {
                                                        "type": "string"
                                                    },
                                                    "adapter": {
                                                        "type": "string"
                                                    },
                                                    "name": {
                                                        "type": "string"
                                                    }
                                                },
                                                "type": "object"
                                            }
                                        },
                                        "default_adapter": {
                                            "type": "string"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "401": {
                        "description": "Unauthorized"
                    },
                    "403": {
                        "description": "Forbidden"
                    },
                    "404": {
                        "description": "Server or node not found"
                    },
                    "500": {
                        "description": "Failed to list backup destinations"
                    }
                }
            }
        },
        "/api/user/servers/{uuidShort}/databases": {
            "get": {
                "tags": [
                    "User - Server Databases"
                ],
                "summary": "Get server databases",
                "description": "Retrieve all databases for a specific server that the user owns or has subuser access to, with pagination and search functionality.",
                "operationId": "81ddb191b13046102e73635acf4ed2fa",
                "parameters": [
                    {
                        "name": "uuidShort",
                        "in": "path",
                        "description": "Server short UUID",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "page",
                        "in": "query",
                        "description": "Page number for pagination",
                        "required": false,
                        "schema": {
                            "type": "integer",
                            "default": 1,
                            "minimum": 1
                        }
                    },
                    {
                        "name": "per_page",
                        "in": "query",
                        "description": "Number of records per page",
                        "required": false,
                        "schema": {
                            "type": "integer",
                            "default": 20,
                            "maximum": 100,
                            "minimum": 1
                        }
                    },
                    {
                        "name": "search",
                        "in": "query",
                        "description": "Search term to filter databases by name, username, or host",
                        "required": false,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Server databases retrieved successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "data": {
                                            "type": "array",
                                            "items": {
                                                "$ref": "#/components/schemas/ServerDatabase"
                                            }
                                        },
                                        "pagination": {
                                            "$ref": "#/components/schemas/DatabasePagination"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request - Missing or invalid UUID short"
                    },
                    "401": {
                        "description": "Unauthorized - User not authenticated"
                    },
                    "403": {
                        "description": "Forbidden - Access denied to server"
                    },
                    "404": {
                        "description": "Not found - Server not found"
                    },
                    "500": {
                        "description": "Internal server error - Failed to retrieve databases"
                    }
                }
            },
            "post": {
                "tags": [
                    "User - Server Databases"
                ],
                "summary": "Create database",
                "description": "Create a new database for a server. Checks database limits and creates database on the specified host.",
                "operationId": "cc776bd653018daac2743a79d0e3a3a0",
                "parameters": [
                    {
                        "name": "uuidShort",
                        "in": "path",
                        "description": "Server short UUID",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/DatabaseCreateRequest"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Database created successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/DatabaseCreateResponse"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request - Missing UUID, database limit reached, or invalid request body"
                    },
                    "401": {
                        "description": "Unauthorized - User not authenticated"
                    },
                    "403": {
                        "description": "Forbidden - Access denied to server"
                    },
                    "404": {
                        "description": "Not found - Server or database host not found"
                    },
                    "500": {
                        "description": "Internal server error - Failed to create database"
                    }
                }
            }
        },
        "/api/user/servers/{uuidShort}/databases/{databaseId}": {
            "get": {
                "tags": [
                    "User - Server Databases"
                ],
                "summary": "Get specific database",
                "description": "Retrieve details of a specific database for a server that the user owns or has subuser access to.",
                "operationId": "627c70d7f92eddb5ca65b14f3d166b49",
                "parameters": [
                    {
                        "name": "uuidShort",
                        "in": "path",
                        "description": "Server short UUID",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "databaseId",
                        "in": "path",
                        "description": "Database ID",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Database details retrieved successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ServerDatabase"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request - Missing or invalid parameters"
                    },
                    "401": {
                        "description": "Unauthorized - User not authenticated"
                    },
                    "403": {
                        "description": "Forbidden - Access denied to server"
                    },
                    "404": {
                        "description": "Not found - Server or database not found"
                    },
                    "500": {
                        "description": "Internal server error - Failed to retrieve database"
                    }
                }
            },
            "delete": {
                "tags": [
                    "User - Server Databases"
                ],
                "summary": "Delete database",
                "description": "Permanently delete a database from a server. This action cannot be undone.",
                "operationId": "74c1c9a218150007d97739306f889932",
                "parameters": [
                    {
                        "name": "uuidShort",
                        "in": "path",
                        "description": "Server short UUID",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "databaseId",
                        "in": "path",
                        "description": "Database ID",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Database deleted successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "message": {
                                            "description": "Success message",
                                            "type": "string"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request - Missing parameters"
                    },
                    "401": {
                        "description": "Unauthorized - User not authenticated"
                    },
                    "403": {
                        "description": "Forbidden - Access denied to server"
                    },
                    "404": {
                        "description": "Not found - Server, database, or database host not found"
                    },
                    "500": {
                        "description": "Internal server error - Failed to delete database"
                    }
                }
            },
            "patch": {
                "tags": [
                    "User - Server Databases"
                ],
                "summary": "Update database",
                "description": "Update database settings including remote access pattern and maximum connections.",
                "operationId": "e85d756a8ce1ea9654ced9e90d7eba75",
                "parameters": [
                    {
                        "name": "uuidShort",
                        "in": "path",
                        "description": "Server short UUID",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "databaseId",
                        "in": "path",
                        "description": "Database ID",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/DatabaseUpdateRequest"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Database updated successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "message": {
                                            "description": "Success message",
                                            "type": "string"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request - Missing parameters or invalid request body"
                    },
                    "401": {
                        "description": "Unauthorized - User not authenticated"
                    },
                    "403": {
                        "description": "Forbidden - Access denied to server"
                    },
                    "404": {
                        "description": "Not found - Server or database not found"
                    },
                    "500": {
                        "description": "Internal server error - Failed to update database"
                    }
                }
            }
        },
        "/api/user/servers/{uuidShort}/databases/bulk-delete": {
            "delete": {
                "tags": [
                    "User - Server Databases"
                ],
                "summary": "Bulk delete server databases",
                "description": "Delete multiple databases at once. Pass an array of database IDs, or set all=true to delete every database for the server.",
                "operationId": "2a42b1228a9b3c208b16f45ffdb60a62",
                "parameters": [
                    {
                        "name": "uuidShort",
                        "in": "path",
                        "description": "Server short UUID",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "properties": {
                                    "ids": {
                                        "description": "Database IDs to delete",
                                        "type": "array",
                                        "items": {
                                            "type": "integer"
                                        }
                                    },
                                    "all": {
                                        "description": "When true, delete all databases for the server",
                                        "type": "boolean"
                                    }
                                },
                                "type": "object"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Bulk delete completed",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "deleted_count": {
                                            "type": "integer"
                                        },
                                        "failed_count": {
                                            "type": "integer"
                                        },
                                        "failed": {
                                            "type": "array",
                                            "items": {
                                                "type": "object"
                                            }
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request - Invalid or missing parameters"
                    },
                    "401": {
                        "description": "Unauthorized - User not authenticated"
                    },
                    "403": {
                        "description": "Forbidden - Access denied to server"
                    },
                    "404": {
                        "description": "Not found - Server or node not found"
                    },
                    "500": {
                        "description": "Internal server error"
                    }
                }
            }
        },
        "/api/user/servers/{uuidShort}/databases/hosts": {
            "get": {
                "tags": [
                    "User - Server Databases"
                ],
                "summary": "Get available database hosts",
                "description": "Retrieve all available database hosts that can be used for creating databases.",
                "operationId": "a2cb0ae0726ec6f84b25d2edc0b8aa36",
                "parameters": [
                    {
                        "name": "uuidShort",
                        "in": "path",
                        "description": "Server short UUID",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Database hosts retrieved successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "array",
                                    "items": {
                                        "$ref": "#/components/schemas/DatabaseHost"
                                    }
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request - Missing or invalid UUID short"
                    },
                    "401": {
                        "description": "Unauthorized - User not authenticated"
                    },
                    "403": {
                        "description": "Forbidden - Access denied to server"
                    },
                    "404": {
                        "description": "Not found - Server not found"
                    },
                    "500": {
                        "description": "Internal server error - Failed to retrieve database hosts"
                    }
                }
            }
        },
        "/api/user/servers/{uuidShort}/databases/phpmyadmin/check": {
            "get": {
                "tags": [
                    "User - Server Databases"
                ],
                "summary": "Check phpMyAdmin installation",
                "description": "Check if phpMyAdmin module is installed and available.",
                "operationId": "dd2aef0d8f0c50726df9bbe9ba65592b",
                "parameters": [
                    {
                        "name": "uuidShort",
                        "in": "path",
                        "description": "Server short UUID",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "phpMyAdmin installation status",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "installed": {
                                            "description": "Whether phpMyAdmin is installed",
                                            "type": "boolean"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/api/user/servers/{uuidShort}/databases/{databaseId}/phpmyadmin/token": {
            "post": {
                "tags": [
                    "User - Server Databases"
                ],
                "summary": "Generate phpMyAdmin signon token",
                "description": "Mint a single-use phpMyAdmin signon token (credentials stay server-side; URL carries only the opaque token).",
                "operationId": "3b47817898d65b554780914b8b983da1",
                "parameters": [
                    {
                        "name": "uuidShort",
                        "in": "path",
                        "description": "Server short UUID",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "databaseId",
                        "in": "path",
                        "description": "Database ID",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Token generated successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "url": {
                                            "description": "phpMyAdmin URL with single-use token query param only",
                                            "type": "string"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request - Missing parameters"
                    },
                    "401": {
                        "description": "Unauthorized - User not authenticated"
                    },
                    "403": {
                        "description": "Forbidden - Access denied to server"
                    },
                    "404": {
                        "description": "Not found - Server, database, or phpMyAdmin not found"
                    }
                }
            }
        },
        "/api/user/servers/{uuidShort}/databases/hosts/{databaseHostId}/test": {
            "post": {
                "tags": [
                    "User - Server Databases"
                ],
                "summary": "Test database host connection",
                "description": "Test the connection to a specific database host to verify connectivity and performance.",
                "operationId": "9b75581d6388b55e4de2796807776f20",
                "parameters": [
                    {
                        "name": "uuidShort",
                        "in": "path",
                        "description": "Server short UUID",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "databaseHostId",
                        "in": "path",
                        "description": "Database host ID to test",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Connection test completed",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ConnectionTestResponse"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request - Missing or invalid parameters"
                    },
                    "401": {
                        "description": "Unauthorized - User not authenticated"
                    },
                    "404": {
                        "description": "Not found - Server or database host not found"
                    },
                    "500": {
                        "description": "Internal server error - Failed to test connection"
                    }
                }
            }
        },
        "/api/user/servers/{uuidShort}/databases/{databaseId}/export": {
            "get": {
                "tags": [
                    "User - Server Databases"
                ],
                "summary": "Export database as SQL dump",
                "description": "Generate a SQL dump of the database including CREATE TABLE statements and INSERT data. Requires database.view_password permission. Only supported for MySQL/MariaDB databases.",
                "operationId": "2f2c940269a182fc8b25104725fe9e3f",
                "parameters": [
                    {
                        "name": "uuidShort",
                        "in": "path",
                        "description": "Server short UUID",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "databaseId",
                        "in": "path",
                        "description": "Database ID",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "SQL dump generated successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "sql": {
                                            "description": "SQL dump content",
                                            "type": "string"
                                        },
                                        "filename": {
                                            "description": "Suggested filename",
                                            "type": "string"
                                        },
                                        "table_count": {
                                            "description": "Number of tables exported",
                                            "type": "integer"
                                        },
                                        "exported_at": {
                                            "description": "Export timestamp",
                                            "type": "string"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request - Unsupported database type"
                    },
                    "401": {
                        "description": "Unauthorized"
                    },
                    "403": {
                        "description": "Forbidden - Requires database.view_password permission"
                    },
                    "404": {
                        "description": "Server or database not found"
                    },
                    "500": {
                        "description": "Internal server error - Failed to generate dump"
                    }
                }
            }
        },
        "/api/user/servers/{uuidShort}/databases/{databaseId}/import": {
            "post": {
                "tags": [
                    "User - Server Databases"
                ],
                "summary": "Import SQL dump into database",
                "description": "Execute a SQL dump against the database. Requires database.view_password permission. Statements are executed sequentially; execution stops on the first error by default.",
                "operationId": "91aed483ff38c9beb4c7cb64a986bc70",
                "parameters": [
                    {
                        "name": "uuidShort",
                        "in": "path",
                        "description": "Server short UUID",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "databaseId",
                        "in": "path",
                        "description": "Database ID",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "properties": {
                                    "sql": {
                                        "description": "SQL content to import",
                                        "type": "string"
                                    },
                                    "ignore_errors": {
                                        "description": "Continue on errors (default: false)",
                                        "type": "boolean",
                                        "default": false,
                                        "nullable": true
                                    }
                                },
                                "type": "object"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "SQL import completed",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "executed_statements": {
                                            "description": "Number of statements executed",
                                            "type": "integer"
                                        },
                                        "errors": {
                                            "description": "List of errors encountered",
                                            "type": "array",
                                            "items": {
                                                "type": "string"
                                            }
                                        },
                                        "success": {
                                            "description": "Whether all statements succeeded",
                                            "type": "boolean"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request - Missing SQL or unsupported database type"
                    },
                    "401": {
                        "description": "Unauthorized"
                    },
                    "403": {
                        "description": "Forbidden - Requires database.view_password permission"
                    },
                    "404": {
                        "description": "Server or database not found"
                    },
                    "500": {
                        "description": "Internal server error"
                    }
                }
            }
        },
        "/api/user/servers/{uuidShort}/databases/{databaseId}/query": {
            "post": {
                "tags": [
                    "User - Server Databases"
                ],
                "summary": "Run a SQL query",
                "description": "Execute a SQL query against the database and return results. Requires database.view_password permission. SELECT queries return rows (max 500); DML queries return affected row count.",
                "operationId": "f1464493ea5c261db41a752990546464",
                "parameters": [
                    {
                        "name": "uuidShort",
                        "in": "path",
                        "description": "Server short UUID",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "databaseId",
                        "in": "path",
                        "description": "Database ID",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "properties": {
                                    "query": {
                                        "description": "SQL query to execute",
                                        "type": "string"
                                    }
                                },
                                "type": "object"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Query executed successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "type": {
                                            "description": "Query type",
                                            "type": "string",
                                            "enum": [
                                                "select",
                                                "dml"
                                            ]
                                        },
                                        "columns": {
                                            "description": "Column names (for SELECT)",
                                            "type": "array",
                                            "items": {
                                                "type": "string"
                                            },
                                            "nullable": true
                                        },
                                        "rows": {
                                            "description": "Result rows as arrays (for SELECT)",
                                            "type": "array",
                                            "items": {
                                                "type": "array"
                                            },
                                            "nullable": true
                                        },
                                        "row_count": {
                                            "description": "Number of rows returned (for SELECT)",
                                            "type": "integer",
                                            "nullable": true
                                        },
                                        "affected_rows": {
                                            "description": "Number of rows affected (for DML)",
                                            "type": "integer",
                                            "nullable": true
                                        },
                                        "truncated": {
                                            "description": "Whether the result was truncated to 500 rows",
                                            "type": "boolean"
                                        },
                                        "execution_time_ms": {
                                            "description": "Query execution time in milliseconds",
                                            "type": "number"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request - Missing or empty query"
                    },
                    "401": {
                        "description": "Unauthorized"
                    },
                    "403": {
                        "description": "Forbidden - Requires database.view_password permission"
                    },
                    "404": {
                        "description": "Server or database not found"
                    },
                    "422": {
                        "description": "Query execution error"
                    },
                    "500": {
                        "description": "Internal server error"
                    }
                }
            }
        },
        "/api/user/servers/{uuidShort}/fastdl": {
            "get": {
                "tags": [
                    "User - Server FastDL"
                ],
                "summary": "Get FastDL configuration",
                "description": "Get FastDL configuration for a server that the user owns or has subuser access to.",
                "operationId": "02bd41e6fc12a354e007e5aae8ec2a94",
                "parameters": [
                    {
                        "name": "uuidShort",
                        "in": "path",
                        "description": "Server short UUID",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "FastDL configuration retrieved successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "data": {
                                            "$ref": "#/components/schemas/FastDlConfig"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request"
                    },
                    "401": {
                        "description": "Unauthorized"
                    },
                    "403": {
                        "description": "Forbidden"
                    },
                    "404": {
                        "description": "Server or node not found"
                    },
                    "500": {
                        "description": "Internal server error"
                    }
                }
            },
            "put": {
                "tags": [
                    "User - Server FastDL"
                ],
                "summary": "Update FastDL configuration",
                "description": "Update FastDL configuration for a server that the user owns or has subuser access to.",
                "operationId": "9b001c8ff932c74e1daf9b9b2465b7d4",
                "parameters": [
                    {
                        "name": "uuidShort",
                        "in": "path",
                        "description": "Server short UUID",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/FastDlUpdateRequest"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "FastDL configuration updated successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "data": {
                                            "$ref": "#/components/schemas/FastDlConfig"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request"
                    },
                    "401": {
                        "description": "Unauthorized"
                    },
                    "403": {
                        "description": "Forbidden"
                    },
                    "404": {
                        "description": "Server or node not found"
                    },
                    "500": {
                        "description": "Internal server error"
                    }
                }
            }
        },
        "/api/user/servers/{uuidShort}/fastdl/enable": {
            "post": {
                "tags": [
                    "User - Server FastDL"
                ],
                "summary": "Enable FastDL",
                "description": "Enable FastDL for a server that the user owns or has subuser access to.",
                "operationId": "14a2afa600eb791723587d506b9121a5",
                "parameters": [
                    {
                        "name": "uuidShort",
                        "in": "path",
                        "description": "Server short UUID",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "requestBody": {
                    "required": false,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/FastDlEnableRequest"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "FastDL enabled successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "data": {
                                            "$ref": "#/components/schemas/FastDlConfig"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request"
                    },
                    "401": {
                        "description": "Unauthorized"
                    },
                    "403": {
                        "description": "Forbidden"
                    },
                    "404": {
                        "description": "Server or node not found"
                    },
                    "500": {
                        "description": "Internal server error"
                    }
                }
            }
        },
        "/api/user/servers/{uuidShort}/fastdl/disable": {
            "post": {
                "tags": [
                    "User - Server FastDL"
                ],
                "summary": "Disable FastDL",
                "description": "Disable FastDL for a server that the user owns or has subuser access to.",
                "operationId": "ab2b0d378433271ce1b63e048d0875ab",
                "parameters": [
                    {
                        "name": "uuidShort",
                        "in": "path",
                        "description": "Server short UUID",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "FastDL disabled successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "data": {
                                            "$ref": "#/components/schemas/FastDlConfig"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request"
                    },
                    "401": {
                        "description": "Unauthorized"
                    },
                    "403": {
                        "description": "Forbidden"
                    },
                    "404": {
                        "description": "Server or node not found"
                    },
                    "500": {
                        "description": "Internal server error"
                    }
                }
            }
        },
        "/api/user/servers/{uuidShort}/firewall": {
            "get": {
                "tags": [
                    "User - Server Firewall"
                ],
                "summary": "List firewall rules",
                "description": "Get all firewall rules for a server that the user owns or has subuser access to.",
                "operationId": "5813bd494ac2fb107d7378bb140651a8",
                "parameters": [
                    {
                        "name": "uuidShort",
                        "in": "path",
                        "description": "Server short UUID",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Firewall rules retrieved successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "data": {
                                            "type": "array",
                                            "items": {
                                                "$ref": "#/components/schemas/FirewallRule"
                                            }
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request"
                    },
                    "401": {
                        "description": "Unauthorized"
                    },
                    "403": {
                        "description": "Forbidden"
                    },
                    "404": {
                        "description": "Server not found"
                    },
                    "500": {
                        "description": "Internal server error"
                    }
                }
            },
            "post": {
                "tags": [
                    "User - Server Firewall"
                ],
                "summary": "Create firewall rule",
                "description": "Create a new firewall rule for a server that the user owns or has subuser access to.",
                "operationId": "a9f1cc5bc51c8c603c8ba03cdfe1c65b",
                "parameters": [
                    {
                        "name": "uuidShort",
                        "in": "path",
                        "description": "Server short UUID",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/FirewallRuleCreateRequest"
                            }
                        }
                    }
                },
                "responses": {
                    "201": {
                        "description": "Firewall rule created successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "data": {
                                            "$ref": "#/components/schemas/FirewallRule"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request"
                    },
                    "401": {
                        "description": "Unauthorized"
                    },
                    "403": {
                        "description": "Forbidden"
                    },
                    "404": {
                        "description": "Server or node not found"
                    },
                    "500": {
                        "description": "Internal server error"
                    }
                }
            }
        },
        "/api/user/servers/{uuidShort}/firewall/{ruleId}": {
            "put": {
                "tags": [
                    "User - Server Firewall"
                ],
                "summary": "Update firewall rule",
                "description": "Update an existing firewall rule for a server that the user owns or has subuser access to.",
                "operationId": "53cc64b53157b359338b350e0171de72",
                "parameters": [
                    {
                        "name": "uuidShort",
                        "in": "path",
                        "description": "Server short UUID",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "ruleId",
                        "in": "path",
                        "description": "Firewall rule ID",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/FirewallRuleUpdateRequest"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Firewall rule updated successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "data": {
                                            "$ref": "#/components/schemas/FirewallRule"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request"
                    },
                    "401": {
                        "description": "Unauthorized"
                    },
                    "403": {
                        "description": "Forbidden"
                    },
                    "404": {
                        "description": "Server or rule not found"
                    },
                    "500": {
                        "description": "Internal server error"
                    }
                }
            },
            "delete": {
                "tags": [
                    "User - Server Firewall"
                ],
                "summary": "Delete firewall rule",
                "description": "Delete a firewall rule for a server that the user owns or has subuser access to.",
                "operationId": "2fb1529d2ea19ec31403d955afdb1de6",
                "parameters": [
                    {
                        "name": "uuidShort",
                        "in": "path",
                        "description": "Server short UUID",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "ruleId",
                        "in": "path",
                        "description": "Firewall rule ID",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Firewall rule deleted successfully"
                    },
                    "400": {
                        "description": "Bad request"
                    },
                    "401": {
                        "description": "Unauthorized"
                    },
                    "403": {
                        "description": "Forbidden"
                    },
                    "404": {
                        "description": "Server or rule not found"
                    },
                    "500": {
                        "description": "Internal server error"
                    }
                }
            }
        },
        "/api/user/servers/{uuidShort}/firewall/port/{port}": {
            "get": {
                "tags": [
                    "User - Server Firewall"
                ],
                "summary": "Get firewall rules by port",
                "description": "Get all firewall rules for a specific port on a server that the user owns or has subuser access to.",
                "operationId": "61f527f6a097f0b5865d1d08a901751c",
                "parameters": [
                    {
                        "name": "uuidShort",
                        "in": "path",
                        "description": "Server short UUID",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "port",
                        "in": "path",
                        "description": "Server port",
                        "required": true,
                        "schema": {
                            "type": "integer",
                            "maximum": 65535,
                            "minimum": 1
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Firewall rules for port retrieved successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "data": {
                                            "type": "array",
                                            "items": {
                                                "$ref": "#/components/schemas/FirewallRule"
                                            }
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request"
                    },
                    "401": {
                        "description": "Unauthorized"
                    },
                    "403": {
                        "description": "Forbidden"
                    },
                    "404": {
                        "description": "Server not found"
                    },
                    "500": {
                        "description": "Internal server error"
                    }
                }
            }
        },
        "/api/user/servers/{uuidShort}/firewall/sync": {
            "post": {
                "tags": [
                    "User - Server Firewall"
                ],
                "summary": "Sync firewall rules",
                "description": "Manually sync firewall rules for a server to iptables.",
                "operationId": "3fb54b8139a2dcfebdf6a823f961750b",
                "parameters": [
                    {
                        "name": "uuidShort",
                        "in": "path",
                        "description": "Server short UUID",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Firewall rules synced successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "message": {
                                            "type": "string"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request"
                    },
                    "401": {
                        "description": "Unauthorized"
                    },
                    "403": {
                        "description": "Forbidden"
                    },
                    "404": {
                        "description": "Server or node not found"
                    },
                    "500": {
                        "description": "Internal server error"
                    }
                }
            }
        },
        "/api/user/servers/{uuidShort}/import": {
            "post": {
                "tags": [
                    "User - Server Import"
                ],
                "summary": "Import server files",
                "description": "Import server files from a remote SFTP or FTP server. The server must be offline for imports to work.",
                "operationId": "3d27a9285a4e040ac7e0204e5dcf8d40",
                "parameters": [
                    {
                        "name": "uuidShort",
                        "in": "path",
                        "description": "Server short UUID",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/ServerImportRequest"
                            }
                        }
                    }
                },
                "responses": {
                    "202": {
                        "description": "Import process started successfully"
                    },
                    "400": {
                        "description": "Bad request - Invalid data or server is online"
                    },
                    "401": {
                        "description": "Unauthorized"
                    },
                    "403": {
                        "description": "Forbidden - Feature disabled or insufficient permissions"
                    },
                    "404": {
                        "description": "Server or node not found"
                    },
                    "409": {
                        "description": "Conflict - Server is executing another power action"
                    },
                    "500": {
                        "description": "Internal server error"
                    }
                }
            }
        },
        "/api/user/servers/{uuidShort}/imports": {
            "get": {
                "tags": [
                    "User - Server Import"
                ],
                "summary": "List server imports",
                "description": "Get a list of all imports for a server with their statuses.",
                "operationId": "a6647651fedbe5b00f7abc00d4d0a73a",
                "parameters": [
                    {
                        "name": "uuidShort",
                        "in": "path",
                        "description": "Server short UUID",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "List of imports",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "success": {
                                            "type": "boolean"
                                        },
                                        "data": {
                                            "properties": {
                                                "imports": {
                                                    "type": "array",
                                                    "items": {
                                                        "properties": {
                                                            "id": {
                                                                "type": "integer"
                                                            },
                                                            "server_id": {
                                                                "type": "integer"
                                                            },
                                                            "user": {
                                                                "type": "string"
                                                            },
                                                            "host": {
                                                                "type": "string"
                                                            },
                                                            "port": {
                                                                "type": "integer"
                                                            },
                                                            "source_location": {
                                                                "type": "string"
                                                            },
                                                            "destination_location": {
                                                                "type": "string"
                                                            },
                                                            "type": {
                                                                "type": "string",
                                                                "enum": [
                                                                    "sftp",
                                                                    "ftp"
                                                                ]
                                                            },
                                                            "wipe": {
                                                                "type": "boolean"
                                                            },
                                                            "wipe_all_files": {
                                                                "type": "boolean"
                                                            },
                                                            "status": {
                                                                "type": "string",
                                                                "enum": [
                                                                    "pending",
                                                                    "importing",
                                                                    "completed",
                                                                    "failed"
                                                                ]
                                                            },
                                                            "error": {
                                                                "type": "string",
                                                                "nullable": true
                                                            },
                                                            "started_at": {
                                                                "type": "string",
                                                                "nullable": true
                                                            },
                                                            "completed_at": {
                                                                "type": "string",
                                                                "nullable": true
                                                            },
                                                            "created_at": {
                                                                "type": "string"
                                                            },
                                                            "updated_at": {
                                                                "type": "string"
                                                            }
                                                        },
                                                        "type": "object"
                                                    }
                                                }
                                            },
                                            "type": "object"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "401": {
                        "description": "Unauthorized"
                    },
                    "403": {
                        "description": "Forbidden"
                    },
                    "404": {
                        "description": "Server not found"
                    }
                }
            }
        },
        "/api/user/servers/{uuidShort}/proxy": {
            "get": {
                "tags": [
                    "User - Server Proxy"
                ],
                "summary": "List reverse proxies",
                "description": "Get a list of all reverse proxy configurations for a server.",
                "operationId": "811435d69be70e7f05dde068f2f35334",
                "parameters": [
                    {
                        "name": "uuidShort",
                        "in": "path",
                        "description": "Server short UUID",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "List of proxy configurations"
                    },
                    "401": {
                        "description": "Unauthorized"
                    },
                    "403": {
                        "description": "Forbidden"
                    },
                    "404": {
                        "description": "Server not found"
                    }
                }
            }
        },
        "/api/user/servers/{uuidShort}/proxy/create": {
            "post": {
                "tags": [
                    "User - Server Proxy"
                ],
                "summary": "Create reverse proxy",
                "description": "Create a new reverse proxy configuration for a server.",
                "operationId": "38701caa47d01576a6fc919e87cc827d",
                "parameters": [
                    {
                        "name": "uuidShort",
                        "in": "path",
                        "description": "Server short UUID",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/ProxyCreateRequest"
                            }
                        }
                    }
                },
                "responses": {
                    "202": {
                        "description": "Proxy configuration created successfully"
                    },
                    "400": {
                        "description": "Bad request"
                    },
                    "401": {
                        "description": "Unauthorized"
                    },
                    "403": {
                        "description": "Forbidden"
                    },
                    "404": {
                        "description": "Server not found"
                    },
                    "500": {
                        "description": "Internal server error"
                    },
                    "503": {
                        "description": "Service unavailable"
                    }
                }
            }
        },
        "/api/user/servers/{uuidShort}/proxy/delete": {
            "post": {
                "tags": [
                    "User - Server Proxy"
                ],
                "summary": "Delete reverse proxy",
                "description": "Delete an existing reverse proxy configuration for a server.",
                "operationId": "c183ea1be8117bd383b143a05bb13c25",
                "parameters": [
                    {
                        "name": "uuidShort",
                        "in": "path",
                        "description": "Server short UUID",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/ProxyDeleteRequest"
                            }
                        }
                    }
                },
                "responses": {
                    "202": {
                        "description": "Proxy configuration deleted successfully"
                    },
                    "400": {
                        "description": "Bad request"
                    },
                    "401": {
                        "description": "Unauthorized"
                    },
                    "403": {
                        "description": "Forbidden"
                    },
                    "404": {
                        "description": "Server not found"
                    },
                    "500": {
                        "description": "Internal server error"
                    },
                    "503": {
                        "description": "Service unavailable"
                    }
                }
            }
        },
        "/api/user/servers/{uuidShort}/proxy/verify-dns": {
            "post": {
                "tags": [
                    "User - Server Proxy"
                ],
                "summary": "Verify DNS records",
                "description": "Verify that DNS A record exists and points to the correct IP address.",
                "operationId": "cfe248156280fa6154cc00b37623c741",
                "parameters": [
                    {
                        "name": "uuidShort",
                        "in": "path",
                        "description": "Server short UUID",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "required": [
                                    "domain",
                                    "port"
                                ],
                                "properties": {
                                    "domain": {
                                        "description": "Domain name to verify",
                                        "type": "string"
                                    },
                                    "port": {
                                        "description": "Port number to determine target IP",
                                        "type": "string"
                                    }
                                },
                                "type": "object"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "DNS verification result"
                    },
                    "400": {
                        "description": "Bad request"
                    },
                    "401": {
                        "description": "Unauthorized"
                    },
                    "403": {
                        "description": "Forbidden"
                    },
                    "404": {
                        "description": "Server not found"
                    }
                }
            }
        },
        "/api/user/servers/{uuidShort}/schedules": {
            "get": {
                "tags": [
                    "User - Server Schedules"
                ],
                "summary": "Get server schedules",
                "description": "Retrieve all schedules for a specific server that the user owns or has subuser access to.",
                "operationId": "47bfa6780588888e7a125c7a0104d881",
                "parameters": [
                    {
                        "name": "uuidShort",
                        "in": "path",
                        "description": "Server short UUID",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "page",
                        "in": "query",
                        "description": "Page number for pagination",
                        "required": false,
                        "schema": {
                            "type": "integer",
                            "default": 1,
                            "minimum": 1
                        }
                    },
                    {
                        "name": "per_page",
                        "in": "query",
                        "description": "Number of records per page",
                        "required": false,
                        "schema": {
                            "type": "integer",
                            "default": 20,
                            "maximum": 100,
                            "minimum": 1
                        }
                    },
                    {
                        "name": "search",
                        "in": "query",
                        "description": "Search term to filter schedules by name",
                        "required": false,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Server schedules retrieved successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "data": {
                                            "type": "array",
                                            "items": {
                                                "$ref": "#/components/schemas/ServerSchedule"
                                            }
                                        },
                                        "pagination": {
                                            "$ref": "#/components/schemas/SchedulePagination"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request - Missing or invalid UUID short"
                    },
                    "401": {
                        "description": "Unauthorized - User not authenticated"
                    },
                    "403": {
                        "description": "Forbidden - Access denied to server"
                    },
                    "404": {
                        "description": "Not found - Server not found"
                    },
                    "500": {
                        "description": "Internal server error - Failed to retrieve schedules"
                    }
                }
            },
            "post": {
                "tags": [
                    "User - Server Schedules"
                ],
                "summary": "Create schedule",
                "description": "Create a new schedule for a server with cron expression validation and next run time calculation.",
                "operationId": "54bc15f34879bc835c274de320c908c4",
                "parameters": [
                    {
                        "name": "uuidShort",
                        "in": "path",
                        "description": "Server short UUID",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/ScheduleCreateRequest"
                            }
                        }
                    }
                },
                "responses": {
                    "201": {
                        "description": "Schedule created successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ScheduleCreateResponse"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request - Missing required fields, invalid cron expression, or invalid request body"
                    },
                    "401": {
                        "description": "Unauthorized - User not authenticated"
                    },
                    "403": {
                        "description": "Forbidden - Access denied to server"
                    },
                    "404": {
                        "description": "Not found - Server not found"
                    },
                    "500": {
                        "description": "Internal server error - Failed to create schedule"
                    }
                }
            }
        },
        "/api/user/servers/{uuidShort}/schedules/{scheduleId}": {
            "get": {
                "tags": [
                    "User - Server Schedules"
                ],
                "summary": "Get specific schedule",
                "description": "Retrieve details of a specific schedule for a server that the user owns or has subuser access to.",
                "operationId": "12011d66d6a264faf70d7382c7f4f90c",
                "parameters": [
                    {
                        "name": "uuidShort",
                        "in": "path",
                        "description": "Server short UUID",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "scheduleId",
                        "in": "path",
                        "description": "Schedule ID",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Schedule details retrieved successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ServerSchedule"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request - Missing or invalid parameters"
                    },
                    "401": {
                        "description": "Unauthorized - User not authenticated"
                    },
                    "403": {
                        "description": "Forbidden - Access denied to server"
                    },
                    "404": {
                        "description": "Not found - Server or schedule not found"
                    },
                    "500": {
                        "description": "Internal server error - Failed to retrieve schedule"
                    }
                }
            },
            "put": {
                "tags": [
                    "User - Server Schedules"
                ],
                "summary": "Update schedule",
                "description": "Update an existing schedule with new cron expression validation and next run time recalculation.",
                "operationId": "b570bc821d8912d85c49f937fdebe907",
                "parameters": [
                    {
                        "name": "uuidShort",
                        "in": "path",
                        "description": "Server short UUID",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "scheduleId",
                        "in": "path",
                        "description": "Schedule ID",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/ScheduleUpdateRequest"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Schedule updated successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "message": {
                                            "description": "Success message",
                                            "type": "string"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request - Invalid cron expression or invalid request body"
                    },
                    "401": {
                        "description": "Unauthorized - User not authenticated"
                    },
                    "403": {
                        "description": "Forbidden - Access denied to server"
                    },
                    "404": {
                        "description": "Not found - Server or schedule not found"
                    },
                    "500": {
                        "description": "Internal server error - Failed to update schedule"
                    }
                }
            },
            "delete": {
                "tags": [
                    "User - Server Schedules"
                ],
                "summary": "Delete schedule",
                "description": "Delete a schedule. Schedules that are currently processing can also be deleted (e.g. to clear stuck schedules).",
                "operationId": "8e7a548e2a6a7b44b043e30ca7a0c9cf",
                "parameters": [
                    {
                        "name": "uuidShort",
                        "in": "path",
                        "description": "Server short UUID",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "scheduleId",
                        "in": "path",
                        "description": "Schedule ID",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Schedule deleted successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "message": {
                                            "description": "Success message",
                                            "type": "string"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request - Missing parameters"
                    },
                    "401": {
                        "description": "Unauthorized - User not authenticated"
                    },
                    "403": {
                        "description": "Forbidden - Access denied to server"
                    },
                    "404": {
                        "description": "Not found - Server or schedule not found"
                    },
                    "500": {
                        "description": "Internal server error - Failed to delete schedule"
                    }
                }
            }
        },
        "/api/user/servers/{uuidShort}/schedules/{scheduleId}/toggle": {
            "post": {
                "tags": [
                    "User - Server Schedules"
                ],
                "summary": "Toggle schedule status",
                "description": "Toggle the active status of a schedule (enable/disable).",
                "operationId": "857e48703faf67eb160b8c1224678b38",
                "parameters": [
                    {
                        "name": "uuidShort",
                        "in": "path",
                        "description": "Server short UUID",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "scheduleId",
                        "in": "path",
                        "description": "Schedule ID",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Schedule status toggled successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ScheduleToggleResponse"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request - Missing or invalid parameters"
                    },
                    "401": {
                        "description": "Unauthorized - User not authenticated"
                    },
                    "403": {
                        "description": "Forbidden - Access denied to server"
                    },
                    "404": {
                        "description": "Not found - Server or schedule not found"
                    },
                    "500": {
                        "description": "Internal server error - Failed to toggle schedule status"
                    }
                }
            }
        },
        "/api/user/servers/{uuidShort}/schedules/active": {
            "get": {
                "tags": [
                    "User - Server Schedules"
                ],
                "summary": "Get active schedules",
                "description": "Retrieve all active schedules for a specific server.",
                "operationId": "e6bdeec7b8dea9cd6ff03da2db5714f2",
                "parameters": [
                    {
                        "name": "uuidShort",
                        "in": "path",
                        "description": "Server short UUID",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Active schedules retrieved successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "data": {
                                            "type": "array",
                                            "items": {
                                                "$ref": "#/components/schemas/ServerSchedule"
                                            }
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request - Missing or invalid UUID short"
                    },
                    "401": {
                        "description": "Unauthorized - User not authenticated"
                    },
                    "403": {
                        "description": "Forbidden - Access denied to server"
                    },
                    "404": {
                        "description": "Not found - Server not found"
                    },
                    "500": {
                        "description": "Internal server error - Failed to retrieve active schedules"
                    }
                }
            }
        },
        "/api/user/servers/{uuidShort}/schedules/due": {
            "get": {
                "tags": [
                    "User - Server Schedules"
                ],
                "summary": "Get due schedules",
                "description": "Retrieve schedules that are due to run for a specific server.",
                "operationId": "16d6114c3d6b9917b544e954956b8284",
                "parameters": [
                    {
                        "name": "uuidShort",
                        "in": "path",
                        "description": "Server short UUID",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Due schedules retrieved successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "data": {
                                            "type": "array",
                                            "items": {
                                                "$ref": "#/components/schemas/ServerSchedule"
                                            }
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request - Missing or invalid UUID short"
                    },
                    "401": {
                        "description": "Unauthorized - User not authenticated"
                    },
                    "403": {
                        "description": "Forbidden - Access denied to server"
                    },
                    "404": {
                        "description": "Not found - Server not found"
                    },
                    "500": {
                        "description": "Internal server error - Failed to retrieve due schedules"
                    }
                }
            }
        },
        "/api/user/servers/{uuidShort}/schedules/{scheduleId}/run": {
            "post": {
                "tags": [
                    "User - Server Schedules"
                ],
                "summary": "Run schedule now",
                "description": "Trigger a schedule to run on the next cron tick by setting its next run time to the past. The schedule must not already be processing.",
                "operationId": "7e8b200d800e24c70894c489c9a79e74",
                "parameters": [
                    {
                        "name": "uuidShort",
                        "in": "path",
                        "description": "Server short UUID",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "scheduleId",
                        "in": "path",
                        "description": "Schedule ID",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Schedule queued to run on next cron tick"
                    },
                    "400": {
                        "description": "Bad request - Schedule is already processing or has no tasks"
                    },
                    "401": {
                        "description": "Unauthorized - User not authenticated"
                    },
                    "403": {
                        "description": "Forbidden - Access denied to server"
                    },
                    "404": {
                        "description": "Not found - Server or schedule not found"
                    },
                    "500": {
                        "description": "Internal server error - Failed to queue schedule"
                    }
                }
            }
        },
        "/api/user/servers/{uuidShort}/schedules/{scheduleId}/export": {
            "get": {
                "tags": [
                    "User - Server Schedules"
                ],
                "summary": "Export schedule",
                "description": "Export a schedule and all its tasks as a JSON payload that can be imported into another server.",
                "operationId": "8c45d4daf477650f5e3833f9deaf9e2e",
                "parameters": [
                    {
                        "name": "uuidShort",
                        "in": "path",
                        "description": "Server short UUID",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "scheduleId",
                        "in": "path",
                        "description": "Schedule ID",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Schedule exported successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "name": {
                                            "description": "Schedule name",
                                            "type": "string"
                                        },
                                        "cron_minute": {
                                            "type": "string"
                                        },
                                        "cron_hour": {
                                            "type": "string"
                                        },
                                        "cron_day_of_month": {
                                            "type": "string"
                                        },
                                        "cron_month": {
                                            "type": "string"
                                        },
                                        "cron_day_of_week": {
                                            "type": "string"
                                        },
                                        "is_active": {
                                            "type": "boolean"
                                        },
                                        "only_when_online": {
                                            "type": "boolean"
                                        },
                                        "tasks": {
                                            "type": "array",
                                            "items": {
                                                "type": "object"
                                            }
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "401": {
                        "description": "Unauthorized - User not authenticated"
                    },
                    "403": {
                        "description": "Forbidden - Access denied to server"
                    },
                    "404": {
                        "description": "Not found - Server or schedule not found"
                    }
                }
            }
        },
        "/api/user/servers/{uuidShort}/schedules/import": {
            "post": {
                "tags": [
                    "User - Server Schedules"
                ],
                "summary": "Import schedule",
                "description": "Import a schedule and its tasks from a previously exported JSON payload.",
                "operationId": "2c3507c08055c5409c939d2ca814cacb",
                "parameters": [
                    {
                        "name": "uuidShort",
                        "in": "path",
                        "description": "Server short UUID",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "properties": {
                                    "name": {
                                        "description": "Schedule name (overrides exported name)",
                                        "type": "string"
                                    },
                                    "cron_minute": {
                                        "type": "string"
                                    },
                                    "cron_hour": {
                                        "type": "string"
                                    },
                                    "cron_day_of_month": {
                                        "type": "string"
                                    },
                                    "cron_month": {
                                        "type": "string"
                                    },
                                    "cron_day_of_week": {
                                        "type": "string"
                                    },
                                    "is_active": {
                                        "type": "boolean"
                                    },
                                    "only_when_online": {
                                        "type": "boolean"
                                    },
                                    "tasks": {
                                        "type": "array",
                                        "items": {
                                            "type": "object"
                                        }
                                    }
                                },
                                "type": "object"
                            }
                        }
                    }
                },
                "responses": {
                    "201": {
                        "description": "Schedule imported successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "id": {
                                            "description": "Created schedule ID",
                                            "type": "integer"
                                        },
                                        "name": {
                                            "description": "Schedule name",
                                            "type": "string"
                                        },
                                        "tasks_imported": {
                                            "description": "Number of tasks imported",
                                            "type": "integer"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request - Missing required fields, invalid cron expression, or invalid task data"
                    },
                    "401": {
                        "description": "Unauthorized - User not authenticated"
                    },
                    "403": {
                        "description": "Forbidden - Access denied to server"
                    },
                    "404": {
                        "description": "Not found - Server not found"
                    },
                    "500": {
                        "description": "Internal server error - Failed to import schedule"
                    }
                }
            }
        },
        "/api/user/servers": {
            "get": {
                "tags": [
                    "User - Server Management"
                ],
                "summary": "Get user servers",
                "description": "Retrieve all servers owned by the user or where the user is a subuser, with pagination and search functionality.",
                "operationId": "281b3550e32ee2591668d3c20c81e4ac",
                "parameters": [
                    {
                        "name": "page",
                        "in": "query",
                        "description": "Page number for pagination",
                        "required": false,
                        "schema": {
                            "type": "integer",
                            "default": 1,
                            "minimum": 1
                        }
                    },
                    {
                        "name": "limit",
                        "in": "query",
                        "description": "Number of records per page",
                        "required": false,
                        "schema": {
                            "type": "integer",
                            "default": 10,
                            "maximum": 100,
                            "minimum": 1
                        }
                    },
                    {
                        "name": "search",
                        "in": "query",
                        "description": "Search term to filter servers by name or description",
                        "required": false,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "view_all",
                        "in": "query",
                        "description": "View all servers (admin only - requires ADMIN_SERVERS_VIEW permission)",
                        "required": false,
                        "schema": {
                            "type": "boolean",
                            "default": false
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "User servers retrieved successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "servers": {
                                            "type": "array",
                                            "items": {
                                                "$ref": "#/components/schemas/UserServer"
                                            }
                                        },
                                        "pagination": {
                                            "$ref": "#/components/schemas/UserServerPagination"
                                        },
                                        "search": {
                                            "$ref": "#/components/schemas/ServerSearch"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "401": {
                        "description": "Unauthorized - User not authenticated"
                    },
                    "500": {
                        "description": "Internal server error - Failed to retrieve servers"
                    }
                }
            }
        },
        "/api/user/servers/{uuidShort}": {
            "get": {
                "tags": [
                    "User - Server Management"
                ],
                "summary": "Get server details",
                "description": "Retrieve detailed information about a specific server including node, realm, spell, allocation, location, SFTP details, and variables.",
                "operationId": "82c83964eb3e531e6ba583690a3dac3f",
                "parameters": [
                    {
                        "name": "uuidShort",
                        "in": "path",
                        "description": "Server short UUID",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Server details retrieved successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ServerDetail"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request - Missing or invalid UUID short"
                    },
                    "401": {
                        "description": "Unauthorized - User not authenticated"
                    },
                    "403": {
                        "description": "Forbidden - Access denied to server"
                    },
                    "404": {
                        "description": "Not found - Server not found"
                    },
                    "500": {
                        "description": "Internal server error - Failed to retrieve server"
                    }
                }
            },
            "put": {
                "tags": [
                    "User - Server Management"
                ],
                "summary": "Update server",
                "description": "Update server information including name, description, startup command, Docker image, and variables. Syncs changes with Wings daemon.",
                "operationId": "f13a4b03c08c56a321a2f56f0dad5c71",
                "parameters": [
                    {
                        "name": "uuidShort",
                        "in": "path",
                        "description": "Server short UUID",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/ServerUpdateRequest"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Server updated successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ServerUpdateResponse"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request - Missing UUID, invalid data, or validation errors"
                    },
                    "401": {
                        "description": "Unauthorized - User not authenticated"
                    },
                    "403": {
                        "description": "Forbidden - Access denied to server or variable not editable"
                    },
                    "404": {
                        "description": "Not found - Server or node not found"
                    },
                    "422": {
                        "description": "Unprocessable entity - Invalid variable values or unknown variables"
                    },
                    "500": {
                        "description": "Internal server error - Failed to update server"
                    }
                }
            },
            "delete": {
                "tags": [
                    "User - Server Management"
                ],
                "summary": "Delete server",
                "description": "Permanently delete a server. Only server owners can delete their servers. This action cannot be undone and will delete all server data, files, databases, and configurations.",
                "operationId": "b137d7e8564780ff6c47cc35e372d114",
                "parameters": [
                    {
                        "name": "uuidShort",
                        "in": "path",
                        "description": "Server short UUID",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Server deleted successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "message": {
                                            "description": "Success message",
                                            "type": "string"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request - Invalid server configuration"
                    },
                    "401": {
                        "description": "Unauthorized - User not authenticated"
                    },
                    "403": {
                        "description": "Forbidden - Access denied to server or user is not the server owner"
                    },
                    "404": {
                        "description": "Not found - Server or node not found"
                    },
                    "422": {
                        "description": "Unprocessable Entity - Invalid server data"
                    },
                    "500": {
                        "description": "Internal server error - Failed to delete server"
                    }
                }
            }
        },
        "/api/user/servers/{uuidShort}/jwt": {
            "post": {
                "tags": [
                    "User - Server Management"
                ],
                "summary": "Generate server JWT token",
                "description": "Generate a JWT token for Wings API access with user permissions and WebSocket connection details.",
                "operationId": "99d16f784197e0041bed743552ab8855",
                "parameters": [
                    {
                        "name": "uuidShort",
                        "in": "path",
                        "description": "Server short UUID",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "JWT token generated successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/JwtResponse"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request - Missing or invalid UUID short"
                    },
                    "401": {
                        "description": "Unauthorized - User not authenticated"
                    },
                    "403": {
                        "description": "Forbidden - Access denied to server"
                    },
                    "404": {
                        "description": "Not found - Server or node not found"
                    },
                    "500": {
                        "description": "Internal server error - Failed to generate JWT token"
                    }
                }
            }
        },
        "/api/user/servers/{uuidShort}/reinstall": {
            "post": {
                "tags": [
                    "User - Server Management"
                ],
                "summary": "Reinstall server",
                "description": "Reinstall a server using Wings daemon. This will reset the server to its initial state. Optionally wipe all files before reinstalling.",
                "operationId": "6c84e82a7bbde57ce29448dfec26133f",
                "parameters": [
                    {
                        "name": "uuidShort",
                        "in": "path",
                        "description": "Server short UUID",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "requestBody": {
                    "required": false,
                    "content": {
                        "application/json": {
                            "schema": {
                                "properties": {
                                    "wipe_files": {
                                        "description": "Whether to delete all server files before reinstalling",
                                        "type": "boolean",
                                        "default": false
                                    }
                                },
                                "type": "object"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Server reinstalled successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "server": {
                                            "properties": {
                                                "id": {
                                                    "type": "integer"
                                                },
                                                "uuid": {
                                                    "type": "string"
                                                },
                                                "uuidShort": {
                                                    "type": "string"
                                                },
                                                "name": {
                                                    "type": "string"
                                                },
                                                "description": {
                                                    "type": "string",
                                                    "nullable": true
                                                },
                                                "updated_at": {
                                                    "type": "string",
                                                    "format": "date-time",
                                                    "nullable": true
                                                }
                                            },
                                            "type": "object"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request - Missing or invalid UUID short"
                    },
                    "401": {
                        "description": "Unauthorized - User not authenticated"
                    },
                    "403": {
                        "description": "Forbidden - Access denied to server"
                    },
                    "404": {
                        "description": "Not found - Server or node not found"
                    },
                    "500": {
                        "description": "Internal server error - Failed to reinstall server"
                    }
                }
            }
        },
        "/api/user/servers/{uuidShort}/install/abort": {
            "post": {
                "tags": [
                    "User - Server"
                ],
                "summary": "Abort server install",
                "description": "Abort an in-progress install or reinstall on a Calagopus (wings_rs) node.",
                "operationId": "096083960b53af73f7b0ef04788d15bf",
                "parameters": [
                    {
                        "name": "uuidShort",
                        "in": "path",
                        "description": "Server short UUID",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Install abort requested"
                    },
                    "401": {
                        "description": "Unauthorized"
                    },
                    "403": {
                        "description": "Forbidden"
                    },
                    "404": {
                        "description": "Server or node not found"
                    },
                    "501": {
                        "description": "Daemon feature unsupported"
                    },
                    "500": {
                        "description": "Internal server error"
                    }
                }
            }
        },
        "/api/user/servers/{uuidShort}/command": {
            "post": {
                "tags": [
                    "User - Server Management"
                ],
                "summary": "Send console command",
                "description": "Send a console command to the server via Wings daemon WebSocket connection.",
                "operationId": "686a4cda6d82726a1408c522f40567dd",
                "parameters": [
                    {
                        "name": "uuidShort",
                        "in": "path",
                        "description": "Server short UUID",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "required": [
                                    "command"
                                ],
                                "properties": {
                                    "command": {
                                        "description": "Console command to execute",
                                        "type": "string"
                                    }
                                },
                                "type": "object"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Command sent successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "message": {
                                            "description": "Success message",
                                            "type": "string"
                                        },
                                        "command": {
                                            "description": "Command that was sent",
                                            "type": "string"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request - Missing command or server offline"
                    },
                    "401": {
                        "description": "Unauthorized - User not authenticated"
                    },
                    "403": {
                        "description": "Forbidden - Access denied or insufficient permissions"
                    },
                    "404": {
                        "description": "Not found - Server or node not found"
                    },
                    "500": {
                        "description": "Internal server error - Failed to send command"
                    }
                }
            }
        },
        "/api/user/servers/{uuidShort}/subdomains": {
            "get": {
                "tags": [
                    "User - Server Subdomains"
                ],
                "summary": "List subdomains and available domains",
                "description": "Returns the subdomains created for a server and the domains available for its spell.",
                "operationId": "ef86adee27f3ee0dfd2bc6fc5dfcc6e1",
                "parameters": [
                    {
                        "name": "uuidShort",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Subdomains retrieved successfully"
                    },
                    "403": {
                        "description": "Forbidden"
                    },
                    "404": {
                        "description": "Server not found"
                    }
                }
            },
            "put": {
                "tags": [
                    "User - Server Subdomains"
                ],
                "summary": "Create a subdomain",
                "operationId": "3f53111b04969c03801963a6aa90acbc",
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "required": [
                                    "domain_uuid",
                                    "subdomain"
                                ],
                                "properties": {
                                    "domain_uuid": {
                                        "type": "string"
                                    },
                                    "subdomain": {
                                        "type": "string"
                                    }
                                },
                                "type": "object"
                            }
                        }
                    }
                },
                "responses": {
                    "201": {
                        "description": "Subdomain created successfully"
                    },
                    "400": {
                        "description": "Validation failed"
                    },
                    "403": {
                        "description": "Forbidden"
                    },
                    "404": {
                        "description": "Domain not found"
                    }
                }
            }
        },
        "/api/user/servers/{uuidShort}/subdomains/{uuid}": {
            "delete": {
                "tags": [
                    "User - Server Subdomains"
                ],
                "summary": "Delete a subdomain",
                "operationId": "ebdb97bea1b03bdaed5e664e4b701722",
                "parameters": [
                    {
                        "name": "uuidShort",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "uuid",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Subdomain deleted successfully"
                    },
                    "404": {
                        "description": "Subdomain not found"
                    }
                }
            }
        },
        "/api/user/servers/{uuidShort}/subusers": {
            "get": {
                "tags": [
                    "User - Server Subusers"
                ],
                "summary": "Get server subusers",
                "description": "Retrieve all subusers for a specific server that the user owns or has subuser access to.",
                "operationId": "5eb03b045b2f34f9025abcb35235f31c",
                "parameters": [
                    {
                        "name": "uuidShort",
                        "in": "path",
                        "description": "Server short UUID",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "page",
                        "in": "query",
                        "description": "Page number for pagination",
                        "required": false,
                        "schema": {
                            "type": "integer",
                            "default": 1,
                            "minimum": 1
                        }
                    },
                    {
                        "name": "per_page",
                        "in": "query",
                        "description": "Number of records per page",
                        "required": false,
                        "schema": {
                            "type": "integer",
                            "default": 20,
                            "maximum": 100,
                            "minimum": 1
                        }
                    },
                    {
                        "name": "search",
                        "in": "query",
                        "description": "Search term to filter subusers by username or email",
                        "required": false,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Server subusers retrieved successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "data": {
                                            "type": "array",
                                            "items": {
                                                "$ref": "#/components/schemas/SubuserWithDetails"
                                            }
                                        },
                                        "pagination": {
                                            "$ref": "#/components/schemas/SubuserPagination"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request - Missing or invalid UUID short"
                    },
                    "401": {
                        "description": "Unauthorized - User not authenticated"
                    },
                    "403": {
                        "description": "Forbidden - Access denied to server"
                    },
                    "404": {
                        "description": "Not found - Server not found"
                    },
                    "500": {
                        "description": "Internal server error - Failed to retrieve subusers"
                    }
                }
            },
            "post": {
                "tags": [
                    "User - Server Subusers"
                ],
                "summary": "Create subuser",
                "description": "Create a new subuser for a server by email address. The user must exist in the system and not already be a subuser for this server.",
                "operationId": "0529bc059e342f84dbdf6930ef4cd694",
                "parameters": [
                    {
                        "name": "uuidShort",
                        "in": "path",
                        "description": "Server short UUID",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/SubuserCreateRequest"
                            }
                        }
                    }
                },
                "responses": {
                    "201": {
                        "description": "Subuser created successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/SubuserWithDetails"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request - Missing required fields, invalid email format, user not found, cannot add self, or subuser already exists"
                    },
                    "401": {
                        "description": "Unauthorized - User not authenticated"
                    },
                    "403": {
                        "description": "Forbidden - Access denied to server"
                    },
                    "404": {
                        "description": "Not found - Server or user not found"
                    },
                    "500": {
                        "description": "Internal server error - Failed to create subuser"
                    }
                }
            }
        },
        "/api/user/servers/{uuidShort}/subusers/{subuserId}": {
            "get": {
                "tags": [
                    "User - Server Subusers"
                ],
                "summary": "Get specific subuser",
                "description": "Retrieve details of a specific subuser for a server that the user owns or has subuser access to.",
                "operationId": "da886d4f6927ac857f9faec6d9cd3ffd",
                "parameters": [
                    {
                        "name": "uuidShort",
                        "in": "path",
                        "description": "Server short UUID",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "subuserId",
                        "in": "path",
                        "description": "Subuser ID",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Subuser details retrieved successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Subuser"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request - Missing or invalid parameters"
                    },
                    "401": {
                        "description": "Unauthorized - User not authenticated"
                    },
                    "403": {
                        "description": "Forbidden - Access denied to server"
                    },
                    "404": {
                        "description": "Not found - Server or subuser not found"
                    },
                    "500": {
                        "description": "Internal server error - Failed to retrieve subuser"
                    }
                }
            },
            "put": {
                "tags": [
                    "User - Server Subusers"
                ],
                "summary": "Update subuser",
                "description": "Update an existing subuser's permissions and other details.",
                "operationId": "c93815b21b5186b1e3fc1f55524d1570",
                "parameters": [
                    {
                        "name": "uuidShort",
                        "in": "path",
                        "description": "Server short UUID",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "subuserId",
                        "in": "path",
                        "description": "Subuser ID",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/SubuserUpdateRequest"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Subuser updated successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/SubuserWithDetails"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request - Invalid request data"
                    },
                    "401": {
                        "description": "Unauthorized - User not authenticated"
                    },
                    "403": {
                        "description": "Forbidden - Access denied to server"
                    },
                    "404": {
                        "description": "Not found - Server or subuser not found"
                    },
                    "500": {
                        "description": "Internal server error - Failed to update subuser"
                    }
                }
            },
            "delete": {
                "tags": [
                    "User - Server Subusers"
                ],
                "summary": "Delete subuser",
                "description": "Remove a subuser from a server.",
                "operationId": "2b00f811e0c53e22e00cca4ad8a5556a",
                "parameters": [
                    {
                        "name": "uuidShort",
                        "in": "path",
                        "description": "Server short UUID",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "subuserId",
                        "in": "path",
                        "description": "Subuser ID",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Subuser deleted successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "message": {
                                            "description": "Success message",
                                            "type": "string"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request - Missing or invalid parameters"
                    },
                    "401": {
                        "description": "Unauthorized - User not authenticated"
                    },
                    "403": {
                        "description": "Forbidden - Access denied to server"
                    },
                    "404": {
                        "description": "Not found - Server or subuser not found"
                    },
                    "500": {
                        "description": "Internal server error - Failed to delete subuser"
                    }
                }
            }
        },
        "/api/user/servers/{uuidShort}/subusers/{subuserId}/details": {
            "get": {
                "tags": [
                    "User - Server Subusers"
                ],
                "summary": "Get subuser with details",
                "description": "Retrieve detailed information about a specific subuser including user and server information.",
                "operationId": "556514b90f6cc7001594ffbb23f2bc4c",
                "parameters": [
                    {
                        "name": "uuidShort",
                        "in": "path",
                        "description": "Server short UUID",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "subuserId",
                        "in": "path",
                        "description": "Subuser ID",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Subuser details retrieved successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/SubuserWithDetails"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request - Missing or invalid parameters"
                    },
                    "401": {
                        "description": "Unauthorized - User not authenticated"
                    },
                    "403": {
                        "description": "Forbidden - Access denied to server"
                    },
                    "404": {
                        "description": "Not found - Server or subuser not found"
                    },
                    "500": {
                        "description": "Internal server error - Failed to retrieve subuser details"
                    }
                }
            }
        },
        "/api/user/servers/{uuidShort}/subusers/details": {
            "get": {
                "tags": [
                    "User - Server Subusers"
                ],
                "summary": "Get all subusers with details",
                "description": "Retrieve all subusers for a server with detailed user information.",
                "operationId": "c7acca3a6629a05f9e9fbe22b37a56fb",
                "parameters": [
                    {
                        "name": "uuidShort",
                        "in": "path",
                        "description": "Server short UUID",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Subusers with details retrieved successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "data": {
                                            "type": "array",
                                            "items": {
                                                "$ref": "#/components/schemas/SubuserWithDetails"
                                            }
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request - Missing or invalid UUID short"
                    },
                    "401": {
                        "description": "Unauthorized - User not authenticated"
                    },
                    "403": {
                        "description": "Forbidden - Access denied to server"
                    },
                    "404": {
                        "description": "Not found - Server not found"
                    },
                    "500": {
                        "description": "Internal server error - Failed to retrieve subusers"
                    }
                }
            }
        },
        "/api/user/servers/{uuidShort}/subusers/search-users": {
            "get": {
                "tags": [
                    "User - Server Subusers"
                ],
                "summary": "Search users for subuser",
                "description": "Search for users by email or username to add as subusers. Excludes users who are already subusers for this server.",
                "operationId": "bc221f3f5fae4017326fc66ef5d89945",
                "parameters": [
                    {
                        "name": "uuidShort",
                        "in": "path",
                        "description": "Server short UUID",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "search",
                        "in": "query",
                        "description": "Search term for username or email",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Users found successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/UserSearchResponse"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request - Missing UUID short or search query"
                    },
                    "401": {
                        "description": "Unauthorized - User not authenticated"
                    },
                    "403": {
                        "description": "Forbidden - Access denied to server"
                    },
                    "404": {
                        "description": "Not found - Server not found"
                    },
                    "500": {
                        "description": "Internal server error - Failed to search users"
                    }
                }
            }
        },
        "/api/user/servers/{uuidShort}/subusers/permissions": {
            "get": {
                "tags": [
                    "User - Server Subusers"
                ],
                "summary": "Get valid permissions",
                "description": "Retrieve the list of valid permissions that can be assigned to subusers.",
                "operationId": "c35028d0abb12a0630714f36d9664102",
                "parameters": [
                    {
                        "name": "uuidShort",
                        "in": "path",
                        "description": "Server short UUID",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Valid permissions retrieved successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/PermissionsResponse"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request - Missing or invalid UUID short"
                    },
                    "401": {
                        "description": "Unauthorized - User not authenticated"
                    },
                    "403": {
                        "description": "Forbidden - Access denied to server"
                    },
                    "404": {
                        "description": "Not found - Server not found"
                    },
                    "500": {
                        "description": "Internal server error - Failed to retrieve permissions"
                    }
                }
            }
        },
        "/api/user/servers/{uuidShort}/schedules/{scheduleId}/tasks": {
            "get": {
                "tags": [
                    "User - Server Tasks"
                ],
                "summary": "Get schedule tasks",
                "description": "Retrieve all tasks for a specific schedule that the user owns or has subuser access to.",
                "operationId": "8c7c8a423690c128381a1e83618b188e",
                "parameters": [
                    {
                        "name": "uuidShort",
                        "in": "path",
                        "description": "Server short UUID",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "scheduleId",
                        "in": "path",
                        "description": "Schedule ID",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    },
                    {
                        "name": "page",
                        "in": "query",
                        "description": "Page number for pagination",
                        "required": false,
                        "schema": {
                            "type": "integer",
                            "default": 1,
                            "minimum": 1
                        }
                    },
                    {
                        "name": "per_page",
                        "in": "query",
                        "description": "Number of records per page",
                        "required": false,
                        "schema": {
                            "type": "integer",
                            "default": 20,
                            "maximum": 100,
                            "minimum": 1
                        }
                    },
                    {
                        "name": "search",
                        "in": "query",
                        "description": "Search term to filter tasks by action or payload",
                        "required": false,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Schedule tasks retrieved successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "data": {
                                            "type": "array",
                                            "items": {
                                                "$ref": "#/components/schemas/Task"
                                            }
                                        },
                                        "pagination": {
                                            "$ref": "#/components/schemas/TaskPagination"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request - Missing or invalid parameters"
                    },
                    "401": {
                        "description": "Unauthorized - User not authenticated"
                    },
                    "403": {
                        "description": "Forbidden - Access denied to server"
                    },
                    "404": {
                        "description": "Not found - Server or schedule not found"
                    },
                    "500": {
                        "description": "Internal server error - Failed to retrieve tasks"
                    }
                }
            },
            "post": {
                "tags": [
                    "User - Server Tasks"
                ],
                "summary": "Create task",
                "description": "Create a new task for a schedule with action validation and automatic sequence ordering.",
                "operationId": "4c14b1187ad209398df04bea98581f4b",
                "parameters": [
                    {
                        "name": "uuidShort",
                        "in": "path",
                        "description": "Server short UUID",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "scheduleId",
                        "in": "path",
                        "description": "Schedule ID",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/TaskCreateRequest"
                            }
                        }
                    }
                },
                "responses": {
                    "201": {
                        "description": "Task created successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/TaskCreateResponse"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request - Missing required fields, invalid action, or invalid request body"
                    },
                    "401": {
                        "description": "Unauthorized - User not authenticated"
                    },
                    "403": {
                        "description": "Forbidden - Access denied to server"
                    },
                    "404": {
                        "description": "Not found - Server or schedule not found"
                    },
                    "500": {
                        "description": "Internal server error - Failed to create task"
                    }
                }
            }
        },
        "/api/user/servers/{uuidShort}/schedules/{scheduleId}/tasks/{taskId}": {
            "get": {
                "tags": [
                    "User - Server Tasks"
                ],
                "summary": "Get specific task",
                "description": "Retrieve details of a specific task for a schedule that the user owns or has subuser access to.",
                "operationId": "da8d46e05f21d12863390f3e14a8e61e",
                "parameters": [
                    {
                        "name": "uuidShort",
                        "in": "path",
                        "description": "Server short UUID",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "scheduleId",
                        "in": "path",
                        "description": "Schedule ID",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    },
                    {
                        "name": "taskId",
                        "in": "path",
                        "description": "Task ID",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Task details retrieved successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Task"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request - Missing or invalid parameters"
                    },
                    "401": {
                        "description": "Unauthorized - User not authenticated"
                    },
                    "403": {
                        "description": "Forbidden - Access denied to server"
                    },
                    "404": {
                        "description": "Not found - Server, schedule, or task not found"
                    },
                    "500": {
                        "description": "Internal server error - Failed to retrieve task"
                    }
                }
            },
            "put": {
                "tags": [
                    "User - Server Tasks"
                ],
                "summary": "Update task",
                "description": "Update an existing task with new action validation and field updates.",
                "operationId": "9d1bb40d24be7b4701dc7856ae3d554d",
                "parameters": [
                    {
                        "name": "uuidShort",
                        "in": "path",
                        "description": "Server short UUID",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "scheduleId",
                        "in": "path",
                        "description": "Schedule ID",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    },
                    {
                        "name": "taskId",
                        "in": "path",
                        "description": "Task ID",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/TaskUpdateRequest"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Task updated successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "message": {
                                            "description": "Success message",
                                            "type": "string"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request - Invalid action or invalid request body"
                    },
                    "401": {
                        "description": "Unauthorized - User not authenticated"
                    },
                    "403": {
                        "description": "Forbidden - Access denied to server"
                    },
                    "404": {
                        "description": "Not found - Server, schedule, or task not found"
                    },
                    "500": {
                        "description": "Internal server error - Failed to update task"
                    }
                }
            },
            "delete": {
                "tags": [
                    "User - Server Tasks"
                ],
                "summary": "Delete task",
                "description": "Delete a task from a schedule. Cannot delete queued tasks.",
                "operationId": "ea24b541add175ac27fbb90cc4f01190",
                "parameters": [
                    {
                        "name": "uuidShort",
                        "in": "path",
                        "description": "Server short UUID",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "scheduleId",
                        "in": "path",
                        "description": "Schedule ID",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    },
                    {
                        "name": "taskId",
                        "in": "path",
                        "description": "Task ID",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Task deleted successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "message": {
                                            "description": "Success message",
                                            "type": "string"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request - Missing parameters or task is queued"
                    },
                    "401": {
                        "description": "Unauthorized - User not authenticated"
                    },
                    "403": {
                        "description": "Forbidden - Access denied to server"
                    },
                    "404": {
                        "description": "Not found - Server, schedule, or task not found"
                    },
                    "500": {
                        "description": "Internal server error - Failed to delete task"
                    }
                }
            }
        },
        "/api/user/servers/{uuidShort}/schedules/{scheduleId}/tasks/{taskId}/sequence": {
            "put": {
                "tags": [
                    "User - Server Tasks"
                ],
                "summary": "Update task sequence",
                "description": "Update the sequence order of a task within a schedule.",
                "operationId": "c1484b77e2cf02f0f19be2caf3146e79",
                "parameters": [
                    {
                        "name": "uuidShort",
                        "in": "path",
                        "description": "Server short UUID",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "scheduleId",
                        "in": "path",
                        "description": "Schedule ID",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    },
                    {
                        "name": "taskId",
                        "in": "path",
                        "description": "Task ID",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/TaskSequenceUpdateRequest"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Task sequence updated successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "message": {
                                            "description": "Success message",
                                            "type": "string"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request - Missing sequence_id or invalid sequence_id"
                    },
                    "401": {
                        "description": "Unauthorized - User not authenticated"
                    },
                    "403": {
                        "description": "Forbidden - Access denied to server"
                    },
                    "404": {
                        "description": "Not found - Server, schedule, or task not found"
                    },
                    "500": {
                        "description": "Internal server error - Failed to update task sequence"
                    }
                }
            }
        },
        "/api/user/servers/{uuidShort}/schedules/{scheduleId}/tasks/{taskId}/queue": {
            "put": {
                "tags": [
                    "User - Server Tasks"
                ],
                "summary": "Toggle task queued status",
                "description": "Toggle the queued status of a task (queue/unqueue).",
                "operationId": "cf20530d5bda3784cb98e9542229055f",
                "parameters": [
                    {
                        "name": "uuidShort",
                        "in": "path",
                        "description": "Server short UUID",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "scheduleId",
                        "in": "path",
                        "description": "Schedule ID",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    },
                    {
                        "name": "taskId",
                        "in": "path",
                        "description": "Task ID",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Task queued status toggled successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/TaskStatusToggleResponse"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request - Missing or invalid parameters"
                    },
                    "401": {
                        "description": "Unauthorized - User not authenticated"
                    },
                    "403": {
                        "description": "Forbidden - Access denied to server"
                    },
                    "404": {
                        "description": "Not found - Server, schedule, or task not found"
                    },
                    "500": {
                        "description": "Internal server error - Failed to toggle task status"
                    }
                }
            }
        },
        "/api/user/servers/{uuidShort}/schedules/{scheduleId}/tasks/with-schedule": {
            "get": {
                "tags": [
                    "User - Server Tasks"
                ],
                "summary": "Get tasks with schedule",
                "description": "Retrieve all tasks for a schedule with schedule information included.",
                "operationId": "70cb1dae600f36983bb64c2b6e58653c",
                "parameters": [
                    {
                        "name": "uuidShort",
                        "in": "path",
                        "description": "Server short UUID",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "scheduleId",
                        "in": "path",
                        "description": "Schedule ID",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Tasks with schedule information retrieved successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "data": {
                                            "type": "array",
                                            "items": {
                                                "$ref": "#/components/schemas/Task"
                                            }
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request - Missing or invalid parameters"
                    },
                    "401": {
                        "description": "Unauthorized - User not authenticated"
                    },
                    "403": {
                        "description": "Forbidden - Access denied to server"
                    },
                    "404": {
                        "description": "Not found - Server or schedule not found"
                    },
                    "500": {
                        "description": "Internal server error - Failed to retrieve tasks"
                    }
                }
            }
        },
        "/api/user/servers/{uuidShort}/tasks/queued": {
            "get": {
                "tags": [
                    "User - Server Tasks"
                ],
                "summary": "Get queued tasks",
                "description": "Retrieve all queued tasks for a server across all schedules.",
                "operationId": "4089ab417469f3b13a9e07e702b8d5f3",
                "parameters": [
                    {
                        "name": "uuidShort",
                        "in": "path",
                        "description": "Server short UUID",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Queued tasks retrieved successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "data": {
                                            "type": "array",
                                            "items": {
                                                "$ref": "#/components/schemas/Task"
                                            }
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request - Missing or invalid UUID short"
                    },
                    "401": {
                        "description": "Unauthorized - User not authenticated"
                    },
                    "403": {
                        "description": "Forbidden - Access denied to server"
                    },
                    "404": {
                        "description": "Not found - Server not found"
                    },
                    "500": {
                        "description": "Internal server error - Failed to retrieve queued tasks"
                    }
                }
            }
        },
        "/api/user/servers/{uuidShort}/tasks/ready": {
            "get": {
                "tags": [
                    "User - Server Tasks"
                ],
                "summary": "Get ready tasks",
                "description": "Retrieve all ready tasks for a server across all schedules.",
                "operationId": "afe80d6b074194b326c14db540c1fccc",
                "parameters": [
                    {
                        "name": "uuidShort",
                        "in": "path",
                        "description": "Server short UUID",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Ready tasks retrieved successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "data": {
                                            "type": "array",
                                            "items": {
                                                "$ref": "#/components/schemas/Task"
                                            }
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request - Missing or invalid UUID short"
                    },
                    "401": {
                        "description": "Unauthorized - User not authenticated"
                    },
                    "403": {
                        "description": "Forbidden - Access denied to server"
                    },
                    "404": {
                        "description": "Not found - Server not found"
                    },
                    "500": {
                        "description": "Internal server error - Failed to retrieve ready tasks"
                    }
                }
            }
        },
        "/api/user/tickets": {
            "get": {
                "tags": [
                    "User - Tickets"
                ],
                "summary": "Get user tickets",
                "description": "Retrieve all tickets created by the authenticated user with pagination and optional filtering.",
                "operationId": "eaa473ba64168d90f9e84dc8e2bf7a80",
                "parameters": [
                    {
                        "name": "page",
                        "in": "query",
                        "description": "Page number for pagination",
                        "required": false,
                        "schema": {
                            "type": "integer",
                            "default": 1,
                            "minimum": 1
                        }
                    },
                    {
                        "name": "limit",
                        "in": "query",
                        "description": "Number of records per page",
                        "required": false,
                        "schema": {
                            "type": "integer",
                            "default": 10,
                            "maximum": 100,
                            "minimum": 1
                        }
                    },
                    {
                        "name": "search",
                        "in": "query",
                        "description": "Search term to filter tickets",
                        "required": false,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "status_id",
                        "in": "query",
                        "description": "Filter by status ID",
                        "required": false,
                        "schema": {
                            "type": "integer"
                        }
                    },
                    {
                        "name": "category_id",
                        "in": "query",
                        "description": "Filter by category ID",
                        "required": false,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Tickets retrieved successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "tickets": {
                                            "type": "array",
                                            "items": {
                                                "type": "object"
                                            }
                                        },
                                        "pagination": {
                                            "type": "object"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "401": {
                        "description": "Unauthorized"
                    }
                }
            },
            "put": {
                "tags": [
                    "User - Tickets"
                ],
                "summary": "Create ticket",
                "description": "Create a new support ticket with optional server link and attachments.",
                "operationId": "bf1ea09a367141fcc1aae754594176e2",
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "properties": {
                                    "title": {
                                        "description": "Ticket title",
                                        "type": "string"
                                    },
                                    "description": {
                                        "description": "Ticket description",
                                        "type": "string"
                                    },
                                    "category_id": {
                                        "description": "Category ID",
                                        "type": "integer"
                                    },
                                    "priority_id": {
                                        "description": "Priority ID",
                                        "type": "integer"
                                    },
                                    "server_id": {
                                        "description": "Optional server ID",
                                        "type": "integer",
                                        "nullable": true
                                    }
                                },
                                "type": "object"
                            }
                        }
                    }
                },
                "responses": {
                    "201": {
                        "description": "Ticket created successfully"
                    },
                    "400": {
                        "description": "Bad request - Invalid data"
                    }
                }
            }
        },
        "/api/user/tickets/{uuid}": {
            "get": {
                "tags": [
                    "User - Tickets"
                ],
                "summary": "Get ticket details",
                "description": "Retrieve detailed information about a specific ticket including messages and attachments.",
                "operationId": "4a8ce9161408365a14425603918f7b65",
                "parameters": [
                    {
                        "name": "uuid",
                        "in": "path",
                        "description": "Ticket UUID",
                        "required": true,
                        "schema": {
                            "type": "string",
                            "format": "uuid"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Ticket retrieved successfully"
                    },
                    "404": {
                        "description": "Ticket not found"
                    },
                    "403": {
                        "description": "Access denied - ticket belongs to another user"
                    }
                }
            },
            "delete": {
                "tags": [
                    "User - Tickets"
                ],
                "summary": "Delete a ticket",
                "description": "Delete a ticket and all its associated messages and attachments. Users can only delete their own tickets.",
                "operationId": "3124c488d8327ee34b03ed8194d86934",
                "parameters": [
                    {
                        "name": "uuid",
                        "in": "path",
                        "description": "Ticket UUID",
                        "required": true,
                        "schema": {
                            "type": "string",
                            "format": "uuid"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Ticket deleted successfully"
                    },
                    "403": {
                        "description": "Access denied - user does not own this ticket"
                    },
                    "404": {
                        "description": "Ticket not found"
                    }
                }
            }
        },
        "/api/user/tickets/{uuid}/reply": {
            "post": {
                "tags": [
                    "User - Tickets"
                ],
                "summary": "Reply to ticket",
                "description": "Add a reply message to a ticket.",
                "operationId": "5511cabae0acf9eab88edf4ba6f56e5b",
                "parameters": [
                    {
                        "name": "uuid",
                        "in": "path",
                        "description": "Ticket UUID",
                        "required": true,
                        "schema": {
                            "type": "string",
                            "format": "uuid"
                        }
                    }
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "properties": {
                                    "message": {
                                        "description": "Reply message",
                                        "type": "string"
                                    }
                                },
                                "type": "object"
                            }
                        }
                    }
                },
                "responses": {
                    "201": {
                        "description": "Reply sent successfully"
                    },
                    "403": {
                        "description": "Access denied"
                    }
                }
            }
        },
        "/api/user/tickets/{uuid}/attachments": {
            "post": {
                "tags": [
                    "User - Tickets"
                ],
                "summary": "Upload attachment",
                "description": "Upload an attachment file for a ticket or message.",
                "operationId": "7763f8ff0bb617ce5f179b06945bd370",
                "parameters": [
                    {
                        "name": "uuid",
                        "in": "path",
                        "description": "Ticket UUID",
                        "required": true,
                        "schema": {
                            "type": "string",
                            "format": "uuid"
                        }
                    }
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "multipart/form-data": {
                            "schema": {
                                "required": [
                                    "file"
                                ],
                                "properties": {
                                    "file": {
                                        "description": "File to upload",
                                        "type": "string",
                                        "format": "binary"
                                    },
                                    "message_id": {
                                        "description": "Optional message ID to attach to",
                                        "type": "integer",
                                        "nullable": true
                                    }
                                },
                                "type": "object"
                            }
                        }
                    }
                },
                "responses": {
                    "201": {
                        "description": "Attachment uploaded successfully"
                    },
                    "400": {
                        "description": "Bad request"
                    }
                }
            }
        },
        "/api/user/tickets/{uuid}/messages/{id}": {
            "delete": {
                "tags": [
                    "User - Tickets"
                ],
                "summary": "Delete a ticket message",
                "description": "Delete a message from a ticket. Users can only delete their own messages.",
                "operationId": "bfc97ce19e713b91f49841d46a1c7a84",
                "parameters": [
                    {
                        "name": "uuid",
                        "in": "path",
                        "description": "Ticket UUID",
                        "required": true,
                        "schema": {
                            "type": "string",
                            "format": "uuid"
                        }
                    },
                    {
                        "name": "id",
                        "in": "path",
                        "description": "Message ID",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Message deleted successfully"
                    },
                    "403": {
                        "description": "Access denied - user does not own this message"
                    },
                    "404": {
                        "description": "Ticket or message not found"
                    }
                }
            }
        },
        "/api/user/tickets/categories": {
            "get": {
                "tags": [
                    "User - Tickets"
                ],
                "summary": "Get ticket categories",
                "description": "Retrieve all available ticket categories.",
                "operationId": "6f973005003fca16212bba6fc971704a",
                "responses": {
                    "200": {
                        "description": "Categories retrieved successfully"
                    }
                }
            }
        },
        "/api/user/tickets/priorities": {
            "get": {
                "tags": [
                    "User - Tickets"
                ],
                "summary": "Get ticket priorities",
                "description": "Retrieve all available ticket priorities.",
                "operationId": "146ecd989f279eb47dc1a05babe8e68c",
                "responses": {
                    "200": {
                        "description": "Priorities retrieved successfully"
                    }
                }
            }
        },
        "/api/user/tickets/statuses": {
            "get": {
                "tags": [
                    "User - Tickets"
                ],
                "summary": "Get ticket statuses",
                "description": "Retrieve all available ticket statuses.",
                "operationId": "5bbd9014fd7031c93f481a42f657d135",
                "responses": {
                    "200": {
                        "description": "Statuses retrieved successfully"
                    }
                }
            }
        },
        "/api/user/tickets/servers": {
            "get": {
                "tags": [
                    "User - Tickets"
                ],
                "summary": "Get user servers",
                "description": "Retrieve all servers owned by the user for ticket linking.",
                "operationId": "3c897aa189e6a452571a29dac5839e9b",
                "responses": {
                    "200": {
                        "description": "Servers retrieved successfully"
                    }
                }
            }
        },
        "/api/user/account/deletion": {
            "get": {
                "tags": [
                    "User - Account"
                ],
                "summary": "Get account deletion status",
                "description": "Returns whether self-service account deletion is enabled, verification requirements, mode, and any pending deletion.",
                "operationId": "b2422692ea4574574d4b319fef4c587c",
                "responses": {
                    "200": {
                        "description": "Deletion status retrieved successfully"
                    },
                    "401": {
                        "description": "Unauthorized"
                    }
                }
            },
            "delete": {
                "tags": [
                    "User - Account"
                ],
                "summary": "Cancel pending account deletion",
                "description": "Cancel a pending delayed or after-services account deletion request.",
                "operationId": "e222e5634cb352f2ada8bc035f03054b",
                "responses": {
                    "200": {
                        "description": "Pending deletion cancelled"
                    },
                    "404": {
                        "description": "No pending deletion"
                    }
                }
            }
        },
        "/api/user/account/deletion/otp": {
            "post": {
                "tags": [
                    "User - Account"
                ],
                "summary": "Send account deletion email OTP",
                "description": "Send a one-time email code required to confirm account deletion when email OTP verification is enabled.",
                "operationId": "eeaf86d87266cc68f8be47c135582a7c",
                "responses": {
                    "200": {
                        "description": "OTP sent successfully"
                    },
                    "403": {
                        "description": "Feature disabled or email OTP not required"
                    },
                    "429": {
                        "description": "Rate limited"
                    }
                }
            }
        },
        "/api/user/account/deletion/confirm": {
            "post": {
                "tags": [
                    "User - Account"
                ],
                "summary": "Confirm account deletion",
                "description": "Verify identity (2FA and/or email OTP) and process the deletion according to admin configuration.",
                "operationId": "5fdf3715e7589e33cd9da2d259b646d0",
                "responses": {
                    "200": {
                        "description": "Account deleted or scheduled"
                    },
                    "400": {
                        "description": "Validation failed"
                    },
                    "403": {
                        "description": "Feature disabled"
                    },
                    "409": {
                        "description": "Active services block deletion"
                    }
                }
            }
        },
        "/api/user/api-clients": {
            "get": {
                "tags": [
                    "User - API Clients"
                ],
                "summary": "Get API clients",
                "description": "Retrieve all API clients for the authenticated user with pagination and search functionality.",
                "operationId": "5b7e50d28d8de8e88a95bdd9d319196a",
                "parameters": [
                    {
                        "name": "page",
                        "in": "query",
                        "description": "Page number for pagination",
                        "required": false,
                        "schema": {
                            "type": "integer",
                            "default": 1,
                            "minimum": 1
                        }
                    },
                    {
                        "name": "limit",
                        "in": "query",
                        "description": "Number of records per page",
                        "required": false,
                        "schema": {
                            "type": "integer",
                            "default": 10,
                            "maximum": 100,
                            "minimum": 1
                        }
                    },
                    {
                        "name": "search",
                        "in": "query",
                        "description": "Search term to filter API clients by name",
                        "required": false,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "API clients retrieved successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "api_clients": {
                                            "type": "array",
                                            "items": {
                                                "$ref": "#/components/schemas/ApiClientList"
                                            }
                                        },
                                        "pagination": {
                                            "$ref": "#/components/schemas/ApiClientPagination"
                                        },
                                        "search": {
                                            "$ref": "#/components/schemas/ApiClientSearch"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request - Invalid authentication token"
                    },
                    "401": {
                        "description": "Unauthorized - User not authenticated"
                    },
                    "500": {
                        "description": "Internal server error - Failed to retrieve API clients"
                    }
                }
            },
            "post": {
                "tags": [
                    "User - API Clients"
                ],
                "summary": "Create API client",
                "description": "Create a new API client for the authenticated user with automatically generated public and private keys.",
                "operationId": "5eab5ae92d815f16587fb417294f36ad",
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/ApiClientCreateRequest"
                            }
                        }
                    }
                },
                "responses": {
                    "201": {
                        "description": "API client created successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ApiClient"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request - Invalid authentication token, missing required fields, or invalid name length"
                    },
                    "401": {
                        "description": "Unauthorized - User not authenticated"
                    },
                    "500": {
                        "description": "Internal server error - Failed to create API client"
                    }
                }
            }
        },
        "/api/user/api-clients/{id}": {
            "get": {
                "tags": [
                    "User - API Clients"
                ],
                "summary": "Get specific API client",
                "description": "Retrieve details of a specific API client by ID for the authenticated user.",
                "operationId": "ba922d9646e4389a96ff8d159e0711ef",
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "description": "API client ID",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "API client retrieved successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ApiClient"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request - Invalid authentication token or API client ID"
                    },
                    "401": {
                        "description": "Unauthorized - User not authenticated"
                    },
                    "403": {
                        "description": "Forbidden - Access denied to API client"
                    },
                    "404": {
                        "description": "Not found - API client not found"
                    },
                    "500": {
                        "description": "Internal server error - Failed to retrieve API client"
                    }
                }
            },
            "put": {
                "tags": [
                    "User - API Clients"
                ],
                "summary": "Update API client",
                "description": "Update an existing API client for the authenticated user (name, allowed IPs/CIDR list, email alert for off-list IPs).",
                "operationId": "82dc42f5887c4fc1b6f2cded0cac2fa5",
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "description": "API client ID",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/ApiClientUpdateRequest"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "API client updated successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ApiClient"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request - Invalid authentication token, API client ID, request data, or invalid name length"
                    },
                    "401": {
                        "description": "Unauthorized - User not authenticated"
                    },
                    "403": {
                        "description": "Forbidden - Access denied to API client"
                    },
                    "404": {
                        "description": "Not found - API client not found"
                    },
                    "500": {
                        "description": "Internal server error - Failed to update API client"
                    }
                }
            },
            "delete": {
                "tags": [
                    "User - API Clients"
                ],
                "summary": "Delete API client",
                "description": "Delete an API client for the authenticated user. This is a hard delete operation.",
                "operationId": "99c910431d0a662f9498b84148af68b4",
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "description": "API client ID",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "API client deleted successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "message": {
                                            "description": "Success message",
                                            "type": "string"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request - Invalid authentication token or API client ID"
                    },
                    "401": {
                        "description": "Unauthorized - User not authenticated"
                    },
                    "403": {
                        "description": "Forbidden - Access denied to API client"
                    },
                    "404": {
                        "description": "Not found - API client not found"
                    },
                    "500": {
                        "description": "Internal server error - Failed to delete API client"
                    }
                }
            }
        },
        "/api/user/api-clients/{id}/regenerate": {
            "post": {
                "tags": [
                    "User - API Clients"
                ],
                "summary": "Regenerate API keys",
                "description": "Regenerate both public and private API keys for an existing API client.",
                "operationId": "6a103b183444240e39a60a2247d59f54",
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "description": "API client ID",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "API keys regenerated successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ApiClient"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request - Invalid authentication token or API client ID"
                    },
                    "401": {
                        "description": "Unauthorized - User not authenticated"
                    },
                    "403": {
                        "description": "Forbidden - Access denied to API client"
                    },
                    "404": {
                        "description": "Not found - API client not found"
                    },
                    "500": {
                        "description": "Internal server error - Failed to regenerate API keys"
                    }
                }
            }
        },
        "/api/user/api-clients/activities": {
            "get": {
                "tags": [
                    "User - API Clients"
                ],
                "summary": "Get API client activities",
                "description": "Retrieve API client related activities for the authenticated user with pagination.",
                "operationId": "118f5f59283d0f82eef9f6f1d11f7bde",
                "parameters": [
                    {
                        "name": "page",
                        "in": "query",
                        "description": "Page number for pagination",
                        "required": false,
                        "schema": {
                            "type": "integer",
                            "default": 1,
                            "minimum": 1
                        }
                    },
                    {
                        "name": "limit",
                        "in": "query",
                        "description": "Number of records per page",
                        "required": false,
                        "schema": {
                            "type": "integer",
                            "default": 10,
                            "maximum": 100,
                            "minimum": 1
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "API client activities retrieved successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "activities": {
                                            "type": "array",
                                            "items": {
                                                "$ref": "#/components/schemas/ApiClientActivity"
                                            }
                                        },
                                        "pagination": {
                                            "$ref": "#/components/schemas/ApiClientPagination"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request - Invalid authentication token"
                    },
                    "401": {
                        "description": "Unauthorized - User not authenticated"
                    },
                    "500": {
                        "description": "Internal server error - Failed to retrieve activities"
                    }
                }
            }
        },
        "/api/user/api-clients/validate": {
            "post": {
                "tags": [
                    "User - API Clients"
                ],
                "summary": "Validate API client",
                "description": "Validate an API client by public key and return associated user information. This endpoint does not require authentication.",
                "operationId": "c44766302552c7e16d6177c663d8a5e2",
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/ApiClientValidationRequest"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "API client validated successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ApiClientValidationResponse"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request - Missing or empty public key"
                    },
                    "404": {
                        "description": "Not found - Invalid API client or user not found"
                    },
                    "500": {
                        "description": "Internal server error - Failed to validate API client"
                    }
                }
            }
        },
        "/api/user/api-clients/oauth2/device": {
            "post": {
                "tags": [
                    "User - API Clients"
                ],
                "summary": "Start OAuth2 device authorization",
                "description": "Starts a serverless/device-code OAuth2 API consent grant that does not require a callback URL. The client polls /oauth2/device/token while the user visits the verification URI.",
                "operationId": "f6ce4e37db120910a7059520541a72b3",
                "responses": {
                    "200": {
                        "description": "Device authorization started"
                    },
                    "400": {
                        "description": "Invalid request data"
                    }
                }
            }
        },
        "/api/user/api-clients/oauth2/device/token": {
            "post": {
                "tags": [
                    "User - API Clients"
                ],
                "summary": "Poll OAuth2 device authorization",
                "description": "Polls a device authorization grant until the user approves or denies, or the grant expires.",
                "operationId": "bbb88160833fc6ab0a10bd10f1a41226",
                "responses": {
                    "200": {
                        "description": "Credentials issued or pending status"
                    },
                    "400": {
                        "description": "Invalid or denied device code"
                    }
                }
            }
        },
        "/api/user/api-clients/oauth2/device/claim": {
            "get": {
                "tags": [
                    "User - API Clients"
                ],
                "summary": "Claim OAuth2 device authorization",
                "description": "Binds a pending device authorization to the logged-in user and returns the consent payload.",
                "operationId": "43cf37c3e0d425039f6cfe52eb08a12e",
                "responses": {
                    "200": {
                        "description": "Device authorization claimed"
                    },
                    "400": {
                        "description": "Invalid user code"
                    },
                    "403": {
                        "description": "Feature disabled for account"
                    }
                }
            }
        },
        "/api/user/api-clients/oauth2/metadata": {
            "get": {
                "tags": [
                    "User - API Clients"
                ],
                "summary": "Validate OAuth2 API consent request metadata",
                "description": "Validates OAuth2 request query parameters and returns normalized request metadata without creating a pending grant.",
                "operationId": "ddc71e1d683701d1ebb10a1f8703029d",
                "responses": {
                    "200": {
                        "description": "Metadata validated successfully"
                    },
                    "400": {
                        "description": "Invalid request data"
                    },
                    "403": {
                        "description": "Feature disabled for account"
                    }
                }
            }
        },
        "/api/user/api-clients/oauth2/authorize": {
            "get": {
                "tags": [
                    "User - API Clients"
                ],
                "summary": "Prepare OAuth2 API consent payload",
                "description": "Validates an OAuth2-style API key authorization request and returns a normalized payload for consent UI.",
                "operationId": "4323c5a5767d7d164deb5a4c790652a9",
                "responses": {
                    "200": {
                        "description": "Authorization payload prepared successfully"
                    },
                    "400": {
                        "description": "Invalid request data"
                    },
                    "403": {
                        "description": "Feature disabled for account"
                    }
                }
            }
        },
        "/api/user/api-clients/oauth2/authorize/approve": {
            "post": {
                "tags": [
                    "User - API Clients"
                ],
                "summary": "Approve OAuth2 API authorization request",
                "description": "Approves a pending OAuth2 API authorization request, creates API credentials, and returns callback redirect URL.",
                "operationId": "d0a57dd76abe6f2c16e2a9d0e0530b2a",
                "responses": {
                    "200": {
                        "description": "Authorization approved"
                    },
                    "400": {
                        "description": "Invalid request token"
                    },
                    "403": {
                        "description": "Unauthorized request"
                    }
                }
            }
        },
        "/api/user/api-clients/oauth2/authorize/deny": {
            "post": {
                "tags": [
                    "User - API Clients"
                ],
                "summary": "Deny OAuth2 API authorization request",
                "description": "Denies a pending OAuth2 API authorization request and returns callback redirect URL with access_denied error.",
                "operationId": "0c8faed7363d5ecbe5ee7b8756583f6a",
                "responses": {
                    "200": {
                        "description": "Authorization denied"
                    },
                    "400": {
                        "description": "Invalid request token"
                    },
                    "403": {
                        "description": "Unauthorized request"
                    }
                }
            }
        },
        "/api/user/api-clients/oauth2/token": {
            "post": {
                "tags": [
                    "User - API Clients"
                ],
                "summary": "Exchange OAuth2 authorization code",
                "description": "Returns stored OAuth2 authorization metadata for approved requests. Use only for server-to-server integrations.",
                "operationId": "4307408ae5389b8b54abd10083471e83",
                "responses": {
                    "200": {
                        "description": "Token exchanged"
                    },
                    "400": {
                        "description": "Invalid code"
                    }
                }
            }
        },
        "/api/user/session": {
            "get": {
                "tags": [
                    "User - Session"
                ],
                "summary": "Get user session",
                "description": "Retrieve current user session information including user details, permissions, activities, and mail data.",
                "operationId": "bc40891e6bdffc0aaf9e3bed30ed8809",
                "responses": {
                    "200": {
                        "description": "Session information retrieved successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/SessionResponse"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request - Invalid authentication token"
                    },
                    "401": {
                        "description": "Unauthorized - User not authenticated"
                    },
                    "500": {
                        "description": "Internal server error - Failed to retrieve session"
                    }
                }
            },
            "patch": {
                "tags": [
                    "User - Session"
                ],
                "summary": "Update user session",
                "description": "Update user profile information including username, email, password, avatar, and 2FA settings. Includes CloudFlare Turnstile validation if enabled.",
                "operationId": "303e5e6b2782f4f1b2f2f84a14b6deb2",
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/SessionUpdateRequest"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Session updated successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/SessionUpdateResponse"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request - Invalid authentication token, request data, field validation, Turnstile validation failed, or Turnstile keys not set"
                    },
                    "409": {
                        "description": "Conflict - Username or email already exists"
                    },
                    "500": {
                        "description": "Internal server error - Failed to update session"
                    }
                }
            }
        },
        "/api/user/data-request": {
            "post": {
                "tags": [
                    "User - Session"
                ],
                "summary": "Request account data export",
                "description": "Create a support ticket requesting a personal data export for the authenticated user.",
                "operationId": "4de9e18d418b6a8b0415254aa909c660",
                "responses": {
                    "201": {
                        "description": "Data request ticket created successfully"
                    },
                    "400": {
                        "description": "Bad request - Missing ticket configuration"
                    },
                    "401": {
                        "description": "Unauthorized - User not authenticated"
                    },
                    "403": {
                        "description": "Forbidden - Ticket system disabled or open ticket limit reached"
                    },
                    "500": {
                        "description": "Internal server error - Failed to create request"
                    }
                }
            }
        },
        "/api/user/avatar": {
            "post": {
                "tags": [
                    "User - Session"
                ],
                "summary": "Upload user avatar",
                "description": "Upload a new avatar image for the current user. Accepts image files up to 5MB in size.",
                "operationId": "3f20569556e9c96ff965e8fd6a10cec2",
                "requestBody": {
                    "required": true,
                    "content": {
                        "multipart/form-data": {
                            "schema": {
                                "required": [
                                    "avatar"
                                ],
                                "properties": {
                                    "avatar": {
                                        "description": "Avatar image file",
                                        "type": "string",
                                        "format": "binary"
                                    }
                                },
                                "type": "object"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Avatar uploaded successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "success": {
                                            "description": "Success status",
                                            "type": "boolean"
                                        },
                                        "message": {
                                            "description": "Success message",
                                            "type": "string"
                                        },
                                        "avatar_url": {
                                            "description": "URL to the uploaded avatar",
                                            "type": "string"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request - Invalid file, file too large, or invalid authentication"
                    },
                    "500": {
                        "description": "Internal server error - Failed to save avatar"
                    }
                }
            }
        },
        "/api/user/preferences": {
            "get": {
                "tags": [
                    "User - Session"
                ],
                "summary": "Get user preferences",
                "description": "Retrieve current user UI/UX preferences including theme, language, sidebar state, and other settings.",
                "operationId": "c35410416179c7e1014b517328ccabe9",
                "responses": {
                    "200": {
                        "description": "Preferences retrieved successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/PreferencesResponse"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request - Invalid authentication token"
                    },
                    "401": {
                        "description": "Unauthorized - User not authenticated"
                    }
                }
            },
            "patch": {
                "tags": [
                    "User - Session"
                ],
                "summary": "Update user preferences",
                "description": "Update current user UI/UX preferences. Any preference fields can be provided and will be merged with existing preferences.",
                "operationId": "528e2ebe28a71f37be370b8918f0f7f2",
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/UserPreferences"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Preferences updated successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "preferences": {
                                            "$ref": "#/components/schemas/UserPreferences"
                                        },
                                        "message": {
                                            "description": "Success message",
                                            "type": "string"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request - Invalid authentication token or request data"
                    },
                    "401": {
                        "description": "Unauthorized - User not authenticated"
                    },
                    "500": {
                        "description": "Internal server error - Failed to update preferences"
                    }
                }
            }
        },
        "/api/user/mails": {
            "get": {
                "tags": [
                    "User - Session"
                ],
                "summary": "Get user mails with pagination",
                "description": "Retrieve paginated mail list for the current user with optional search functionality.",
                "operationId": "ec102b727a27317b2f651aa411f2b31c",
                "parameters": [
                    {
                        "name": "page",
                        "in": "query",
                        "description": "Page number (default: 1)",
                        "required": false,
                        "schema": {
                            "type": "integer",
                            "default": 1,
                            "minimum": 1
                        }
                    },
                    {
                        "name": "limit",
                        "in": "query",
                        "description": "Number of records per page (default: 10, max: 100)",
                        "required": false,
                        "schema": {
                            "type": "integer",
                            "default": 10,
                            "maximum": 100,
                            "minimum": 1
                        }
                    },
                    {
                        "name": "search",
                        "in": "query",
                        "description": "Search query to filter mails by subject or body",
                        "required": false,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Mails retrieved successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "mails": {
                                            "description": "Array of mail items",
                                            "type": "array",
                                            "items": {
                                                "type": "object"
                                            }
                                        },
                                        "pagination": {
                                            "properties": {
                                                "current_page": {
                                                    "type": "integer"
                                                },
                                                "per_page": {
                                                    "type": "integer"
                                                },
                                                "total_records": {
                                                    "type": "integer"
                                                },
                                                "total_pages": {
                                                    "type": "integer"
                                                },
                                                "has_next": {
                                                    "type": "boolean"
                                                },
                                                "has_prev": {
                                                    "type": "boolean"
                                                },
                                                "from": {
                                                    "type": "integer"
                                                },
                                                "to": {
                                                    "type": "integer"
                                                }
                                            },
                                            "type": "object"
                                        },
                                        "search": {
                                            "properties": {
                                                "query": {
                                                    "type": "string"
                                                },
                                                "has_results": {
                                                    "type": "boolean"
                                                }
                                            },
                                            "type": "object"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request - Invalid authentication token"
                    },
                    "401": {
                        "description": "Unauthorized - User not authenticated"
                    },
                    "500": {
                        "description": "Internal server error - Failed to retrieve mails"
                    }
                }
            }
        },
        "/api/user/mails/{id}/resend": {
            "post": {
                "tags": [
                    "User - Session"
                ],
                "summary": "Resend a failed email",
                "description": "Re-queue a failed system email for delivery to the current user.",
                "operationId": "34c9bbf7b8c5614c5241e3f47fdcaff7",
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "description": "Mail list entry ID",
                        "required": true,
                        "schema": {
                            "type": "integer",
                            "minimum": 1
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Email queued for resend"
                    },
                    "400": {
                        "description": "Bad request - Mail cannot be resent or SMTP disabled"
                    },
                    "401": {
                        "description": "Unauthorized - User not authenticated"
                    },
                    "404": {
                        "description": "Mail not found"
                    },
                    "500": {
                        "description": "Internal server error - Failed to resend mail"
                    }
                }
            }
        },
        "/api/user/activities": {
            "get": {
                "tags": [
                    "User - Session"
                ],
                "summary": "Get user activities with pagination",
                "description": "Retrieve paginated activity list for the current user with optional search functionality.",
                "operationId": "27078355d6f34e85a166e33c80e7ffa5",
                "parameters": [
                    {
                        "name": "page",
                        "in": "query",
                        "description": "Page number (default: 1)",
                        "required": false,
                        "schema": {
                            "type": "integer",
                            "default": 1,
                            "minimum": 1
                        }
                    },
                    {
                        "name": "limit",
                        "in": "query",
                        "description": "Number of records per page (default: 10, max: 100)",
                        "required": false,
                        "schema": {
                            "type": "integer",
                            "default": 10,
                            "maximum": 100,
                            "minimum": 1
                        }
                    },
                    {
                        "name": "search",
                        "in": "query",
                        "description": "Search query to filter activities by name, context, or IP address",
                        "required": false,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Activities retrieved successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "activities": {
                                            "description": "Array of activity items",
                                            "type": "array",
                                            "items": {
                                                "type": "object"
                                            }
                                        },
                                        "pagination": {
                                            "properties": {
                                                "current_page": {
                                                    "type": "integer"
                                                },
                                                "per_page": {
                                                    "type": "integer"
                                                },
                                                "total_records": {
                                                    "type": "integer"
                                                },
                                                "total_pages": {
                                                    "type": "integer"
                                                },
                                                "has_next": {
                                                    "type": "boolean"
                                                },
                                                "has_prev": {
                                                    "type": "boolean"
                                                },
                                                "from": {
                                                    "type": "integer"
                                                },
                                                "to": {
                                                    "type": "integer"
                                                }
                                            },
                                            "type": "object"
                                        },
                                        "search": {
                                            "properties": {
                                                "query": {
                                                    "type": "string"
                                                },
                                                "has_results": {
                                                    "type": "boolean"
                                                }
                                            },
                                            "type": "object"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request - Invalid authentication token"
                    },
                    "401": {
                        "description": "Unauthorized - User not authenticated"
                    },
                    "500": {
                        "description": "Internal server error - Failed to retrieve activities"
                    }
                }
            }
        },
        "/api/user/sign-api-key": {
            "post": {
                "tags": [
                    "User - Session"
                ],
                "summary": "Sign API key",
                "description": "Sign an API key",
                "operationId": "c67cb4d8b48a31def8e184670834c358",
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/SignApiKeyRequest"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "API key signed successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/SignApiKeyResponse"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request - Invalid request data, API key cannot be empty, or Invalid API key"
                    },
                    "401": {
                        "description": "Unauthorized - User not authenticated"
                    },
                    "500": {
                        "description": "Internal server error - Failed to sign API key"
                    }
                }
            }
        },
        "/api/user/ssh-keys": {
            "get": {
                "tags": [
                    "User - SSH Keys"
                ],
                "summary": "Get SSH keys",
                "description": "Retrieve all SSH keys for the authenticated user with pagination and search functionality.",
                "operationId": "e8631bca9d675c3a3062a5630f2062d4",
                "parameters": [
                    {
                        "name": "page",
                        "in": "query",
                        "description": "Page number for pagination",
                        "required": false,
                        "schema": {
                            "type": "integer",
                            "default": 1,
                            "minimum": 1
                        }
                    },
                    {
                        "name": "limit",
                        "in": "query",
                        "description": "Number of records per page",
                        "required": false,
                        "schema": {
                            "type": "integer",
                            "default": 10,
                            "maximum": 100,
                            "minimum": 1
                        }
                    },
                    {
                        "name": "search",
                        "in": "query",
                        "description": "Search term to filter SSH keys by name",
                        "required": false,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "include_deleted",
                        "in": "query",
                        "description": "Include soft-deleted SSH keys",
                        "required": false,
                        "schema": {
                            "type": "boolean",
                            "default": false
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "SSH keys retrieved successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "ssh_keys": {
                                            "type": "array",
                                            "items": {
                                                "$ref": "#/components/schemas/UserSshKeyList"
                                            }
                                        },
                                        "pagination": {
                                            "$ref": "#/components/schemas/SshKeyPagination"
                                        },
                                        "search": {
                                            "$ref": "#/components/schemas/SshKeySearch"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request - Invalid authentication token"
                    },
                    "401": {
                        "description": "Unauthorized - User not authenticated"
                    },
                    "500": {
                        "description": "Internal server error - Failed to retrieve SSH keys"
                    }
                }
            },
            "post": {
                "tags": [
                    "User - SSH Keys"
                ],
                "summary": "Create SSH key",
                "description": "Create a new SSH key for the authenticated user with automatic fingerprint generation.",
                "operationId": "6cd04bab6c9bf0be6c43477e1998a8af",
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/SshKeyCreateRequest"
                            }
                        }
                    }
                },
                "responses": {
                    "201": {
                        "description": "SSH key created successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/UserSshKey"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request - Invalid authentication token, missing required fields, or invalid name length"
                    },
                    "401": {
                        "description": "Unauthorized - User not authenticated"
                    },
                    "500": {
                        "description": "Internal server error - Failed to create SSH key"
                    }
                }
            }
        },
        "/api/user/ssh-keys/{id}": {
            "get": {
                "tags": [
                    "User - SSH Keys"
                ],
                "summary": "Get specific SSH key",
                "description": "Retrieve details of a specific SSH key by ID for the authenticated user.",
                "operationId": "cfef6a28241df82111a691097e113fd7",
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "description": "SSH key ID",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "SSH key retrieved successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/UserSshKey"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request - Invalid authentication token or SSH key ID"
                    },
                    "401": {
                        "description": "Unauthorized - User not authenticated"
                    },
                    "403": {
                        "description": "Forbidden - Access denied to SSH key"
                    },
                    "404": {
                        "description": "Not found - SSH key not found"
                    },
                    "500": {
                        "description": "Internal server error - Failed to retrieve SSH key"
                    }
                }
            },
            "put": {
                "tags": [
                    "User - SSH Keys"
                ],
                "summary": "Update SSH key",
                "description": "Update an existing SSH key for the authenticated user. Can update name and public key.",
                "operationId": "7ac90e5d0dde5c00a3aef41feb4e4443",
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "description": "SSH key ID",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/SshKeyUpdateRequest"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "SSH key updated successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/UserSshKey"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request - Invalid authentication token, SSH key ID, request data, or invalid name length"
                    },
                    "401": {
                        "description": "Unauthorized - User not authenticated"
                    },
                    "403": {
                        "description": "Forbidden - Access denied to SSH key"
                    },
                    "404": {
                        "description": "Not found - SSH key not found"
                    },
                    "500": {
                        "description": "Internal server error - Failed to update SSH key"
                    }
                }
            },
            "delete": {
                "tags": [
                    "User - SSH Keys"
                ],
                "summary": "Delete SSH key",
                "description": "Soft delete an SSH key for the authenticated user. The key can be restored later.",
                "operationId": "38d45c150231d3fa642c040e90456b8f",
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "description": "SSH key ID",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "SSH key deleted successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "message": {
                                            "description": "Success message",
                                            "type": "string"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request - Invalid authentication token or SSH key ID"
                    },
                    "401": {
                        "description": "Unauthorized - User not authenticated"
                    },
                    "403": {
                        "description": "Forbidden - Access denied to SSH key"
                    },
                    "404": {
                        "description": "Not found - SSH key not found"
                    },
                    "500": {
                        "description": "Internal server error - Failed to delete SSH key"
                    }
                }
            }
        },
        "/api/user/ssh-keys/{id}/restore": {
            "post": {
                "tags": [
                    "User - SSH Keys"
                ],
                "summary": "Restore SSH key",
                "description": "Restore a soft-deleted SSH key for the authenticated user.",
                "operationId": "f9620dcee19c6b8b68c47935d5bb75fa",
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "description": "SSH key ID",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "SSH key restored successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/UserSshKey"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request - Invalid authentication token or SSH key ID"
                    },
                    "401": {
                        "description": "Unauthorized - User not authenticated"
                    },
                    "403": {
                        "description": "Forbidden - Access denied to SSH key"
                    },
                    "404": {
                        "description": "Not found - SSH key not found"
                    },
                    "500": {
                        "description": "Internal server error - Failed to restore SSH key"
                    }
                }
            }
        },
        "/api/user/ssh-keys/{id}/hard-delete": {
            "delete": {
                "tags": [
                    "User - SSH Keys"
                ],
                "summary": "Hard delete SSH key",
                "description": "Permanently delete an SSH key for the authenticated user. This action cannot be undone.",
                "operationId": "443d63c43dccb4369efda97dacfbfc19",
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "description": "SSH key ID",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "SSH key permanently deleted successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "message": {
                                            "description": "Success message",
                                            "type": "string"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request - Invalid authentication token or SSH key ID"
                    },
                    "401": {
                        "description": "Unauthorized - User not authenticated"
                    },
                    "403": {
                        "description": "Forbidden - Access denied to SSH key"
                    },
                    "404": {
                        "description": "Not found - SSH key not found"
                    },
                    "500": {
                        "description": "Internal server error - Failed to permanently delete SSH key"
                    }
                }
            }
        },
        "/api/user/ssh-keys/activities": {
            "get": {
                "tags": [
                    "User - SSH Keys"
                ],
                "summary": "Get SSH key activities",
                "description": "Retrieve SSH key related activities for the authenticated user with pagination.",
                "operationId": "f835da78f12a3d334c84f2bb4296dcdc",
                "parameters": [
                    {
                        "name": "page",
                        "in": "query",
                        "description": "Page number for pagination",
                        "required": false,
                        "schema": {
                            "type": "integer",
                            "default": 1,
                            "minimum": 1
                        }
                    },
                    {
                        "name": "limit",
                        "in": "query",
                        "description": "Number of records per page",
                        "required": false,
                        "schema": {
                            "type": "integer",
                            "default": 10,
                            "maximum": 100,
                            "minimum": 1
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "SSH key activities retrieved successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "activities": {
                                            "type": "array",
                                            "items": {
                                                "$ref": "#/components/schemas/SshKeyActivity"
                                            }
                                        },
                                        "pagination": {
                                            "$ref": "#/components/schemas/SshKeyPagination"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request - Invalid authentication token"
                    },
                    "401": {
                        "description": "Unauthorized - User not authenticated"
                    },
                    "500": {
                        "description": "Internal server error - Failed to retrieve activities"
                    }
                }
            }
        },
        "/api/user/ssh-keys/generate-fingerprint": {
            "post": {
                "tags": [
                    "User - SSH Keys"
                ],
                "summary": "Generate SSH key fingerprint",
                "description": "Generate a fingerprint from an SSH public key for validation purposes.",
                "operationId": "354a2aa1634c90ee5f378506f2eee770",
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/SshKeyFingerprintRequest"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Fingerprint generated successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/SshKeyFingerprintResponse"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request - Invalid authentication token, missing public key, empty public key, or invalid SSH key format"
                    },
                    "401": {
                        "description": "Unauthorized - User not authenticated"
                    },
                    "500": {
                        "description": "Internal server error - Failed to generate fingerprint"
                    }
                }
            }
        },
        "/api/user/vm-instances/{id}/activities": {
            "get": {
                "tags": [
                    "User - VM Instance Activities"
                ],
                "summary": "Get VM instance activities",
                "description": "Retrieve paginated activity log for this VM instance (power, subuser, etc.). Uses dedicated vm_instance_activities table.",
                "operationId": "60453ada4f5f64642a4e15b1f5407a28",
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    },
                    {
                        "name": "page",
                        "in": "query",
                        "required": false,
                        "schema": {
                            "type": "integer",
                            "default": 1,
                            "minimum": 1
                        }
                    },
                    {
                        "name": "per_page",
                        "in": "query",
                        "required": false,
                        "schema": {
                            "type": "integer",
                            "default": 50,
                            "maximum": 100,
                            "minimum": 1
                        }
                    },
                    {
                        "name": "search",
                        "in": "query",
                        "required": false,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Activities retrieved",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "activities": {
                                            "type": "array",
                                            "items": {
                                                "$ref": "#/components/schemas/UserVmInstanceActivity"
                                            }
                                        },
                                        "pagination": {
                                            "$ref": "#/components/schemas/VmInstanceActivityPagination"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "401": {
                        "description": "Unauthorized"
                    },
                    "403": {
                        "description": "Forbidden"
                    },
                    "404": {
                        "description": "VM instance not found"
                    }
                }
            }
        },
        "/api/user/vm-instances/{id}/backups": {
            "get": {
                "tags": [
                    "User - VM Backups"
                ],
                "summary": "List VM backups",
                "description": "List backups for this VM instance. Returns backups, backup_limit (max allowed), and available Proxmox storages. Respects instance backup limit.",
                "operationId": "7cfd78a793f10d6763a691f3a6f176d5",
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "description": "VM instance ID",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Backups listed",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "backups": {
                                            "type": "array",
                                            "items": {
                                                "type": "object"
                                            }
                                        },
                                        "backup_limit": {
                                            "description": "Max backups allowed for this instance",
                                            "type": "integer"
                                        },
                                        "storages": {
                                            "description": "Available backup storages on node",
                                            "type": "array",
                                            "items": {
                                                "type": "string"
                                            }
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "401": {
                        "description": "Unauthorized"
                    },
                    "403": {
                        "description": "Forbidden"
                    },
                    "404": {
                        "description": "VM instance not found"
                    }
                }
            },
            "post": {
                "tags": [
                    "User - VM Backups"
                ],
                "summary": "Create VM backup",
                "description": "Start an async vzdump backup. Returns 202 with backup_id. Poll GET /api/user/vm-instances/backup-status/{backupId} until status is done or failed. Fails with 422 if backup limit reached.",
                "operationId": "761eb5a58fd46db932b3592505a382b2",
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "requestBody": {
                    "required": false,
                    "content": {
                        "application/json": {
                            "schema": {
                                "properties": {
                                    "storage": {
                                        "description": "Proxmox storage (optional)",
                                        "type": "string",
                                        "nullable": true
                                    },
                                    "compress": {
                                        "type": "string",
                                        "default": "zstd",
                                        "nullable": true
                                    },
                                    "mode": {
                                        "type": "string",
                                        "default": "snapshot",
                                        "enum": [
                                            "snapshot",
                                            "suspend",
                                            "stop"
                                        ],
                                        "nullable": true
                                    }
                                },
                                "type": "object"
                            }
                        }
                    }
                },
                "responses": {
                    "202": {
                        "description": "Backup started",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "backup_id": {
                                            "type": "string"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request"
                    },
                    "401": {
                        "description": "Unauthorized"
                    },
                    "403": {
                        "description": "Forbidden"
                    },
                    "404": {
                        "description": "VM not found"
                    },
                    "422": {
                        "description": "Backup limit reached"
                    },
                    "500": {
                        "description": "Proxmox error"
                    }
                }
            },
            "delete": {
                "tags": [
                    "User - VM Backups"
                ],
                "summary": "Delete VM backup",
                "description": "Delete a backup volume. Request body: volid and storage (from list backups).",
                "operationId": "194e5d77ff20e3e719f04ed41164c597",
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "required": [
                                    "volid",
                                    "storage"
                                ],
                                "properties": {
                                    "volid": {
                                        "type": "string"
                                    },
                                    "storage": {
                                        "type": "string"
                                    }
                                },
                                "type": "object"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Backup deleted"
                    },
                    "400": {
                        "description": "Missing volid or storage"
                    },
                    "401": {
                        "description": "Unauthorized"
                    },
                    "403": {
                        "description": "Forbidden or backup does not belong to this VM"
                    },
                    "404": {
                        "description": "VM not found"
                    }
                }
            }
        },
        "/api/user/vm-instances/backup-status/{backupId}": {
            "get": {
                "tags": [
                    "User - VM Backups"
                ],
                "summary": "Poll backup status",
                "description": "Poll until status is done or failed. Use backup_id from create backup response.",
                "operationId": "f0c0203ada1179d32b1ab002eb1a98dc",
                "parameters": [
                    {
                        "name": "backupId",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Status (running | done | failed)",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "status": {
                                            "type": "string",
                                            "enum": [
                                                "running",
                                                "done",
                                                "failed"
                                            ]
                                        },
                                        "error": {
                                            "type": "string",
                                            "nullable": true
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Invalid task"
                    },
                    "401": {
                        "description": "Unauthorized"
                    },
                    "404": {
                        "description": "Not found or access denied"
                    }
                }
            }
        },
        "/api/user/vm-instances/{id}/backups/restore": {
            "post": {
                "tags": [
                    "User - VM Backups"
                ],
                "summary": "Restore VM from backup",
                "description": "Start async restore from a backup. Returns 202 with restore_id. Poll GET /api/user/vm-instances/restore-status/{restoreId} until status is active or failed.",
                "operationId": "b876ddcc5c68cbb9db2733da56251f8c",
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "required": [
                                    "volid",
                                    "storage"
                                ],
                                "properties": {
                                    "volid": {
                                        "type": "string"
                                    },
                                    "storage": {
                                        "type": "string"
                                    }
                                },
                                "type": "object"
                            }
                        }
                    }
                },
                "responses": {
                    "202": {
                        "description": "Restore started",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "restore_id": {
                                            "type": "string"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Missing volid or storage"
                    },
                    "401": {
                        "description": "Unauthorized"
                    },
                    "403": {
                        "description": "Forbidden"
                    },
                    "404": {
                        "description": "VM not found"
                    },
                    "500": {
                        "description": "Proxmox error"
                    }
                }
            }
        },
        "/api/user/vm-instances/restore-status/{restoreId}": {
            "get": {
                "tags": [
                    "User - VM Backups"
                ],
                "summary": "Poll restore status",
                "description": "Poll until status is active or failed. Use restore_id from restore backup response.",
                "operationId": "73e526ec028e6a33e7d5c3c64fa3aa2d",
                "parameters": [
                    {
                        "name": "restoreId",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Status (restoring | active | failed)",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "status": {
                                            "type": "string",
                                            "enum": [
                                                "restoring",
                                                "active",
                                                "failed"
                                            ]
                                        },
                                        "instance": {
                                            "type": "object",
                                            "nullable": true
                                        },
                                        "error": {
                                            "type": "string",
                                            "nullable": true
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Invalid task"
                    },
                    "401": {
                        "description": "Unauthorized"
                    },
                    "404": {
                        "description": "Not found or access denied"
                    }
                }
            }
        },
        "/api/user/vm-instances": {
            "get": {
                "tags": [
                    "User - VM Instances"
                ],
                "summary": "List user VM instances",
                "description": "Get VM instances owned by or accessible to the authenticated user. Supports optional pagination and search.",
                "operationId": "21dd83b42840fc4b16ecc475ab41f743",
                "parameters": [
                    {
                        "name": "page",
                        "in": "query",
                        "description": "Page number",
                        "required": false,
                        "schema": {
                            "type": "integer",
                            "default": 1,
                            "minimum": 1
                        }
                    },
                    {
                        "name": "limit",
                        "in": "query",
                        "description": "Records per page",
                        "required": false,
                        "schema": {
                            "type": "integer",
                            "default": 25,
                            "maximum": 100,
                            "minimum": 1
                        }
                    },
                    {
                        "name": "search",
                        "in": "query",
                        "description": "Search by hostname or IP",
                        "required": false,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "VM instances retrieved successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "instances": {
                                            "type": "array",
                                            "items": {
                                                "type": "object"
                                            }
                                        },
                                        "pagination": {
                                            "properties": {
                                                "current_page": {
                                                    "type": "integer"
                                                },
                                                "per_page": {
                                                    "type": "integer"
                                                },
                                                "total_records": {
                                                    "type": "integer"
                                                },
                                                "total_pages": {
                                                    "type": "integer"
                                                },
                                                "has_next": {
                                                    "type": "boolean"
                                                },
                                                "has_prev": {
                                                    "type": "boolean"
                                                }
                                            },
                                            "type": "object"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "401": {
                        "description": "Unauthorized"
                    }
                }
            }
        },
        "/api/user/vm-instances/{id}": {
            "get": {
                "tags": [
                    "User - VM Instances"
                ],
                "summary": "Get VM instance details",
                "description": "Get detailed information about a specific VM instance.",
                "operationId": "4bda6c96e51dc5afc83f19a25a8e5d01",
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "VM instance retrieved successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "instance": {
                                            "type": "object"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "401": {
                        "description": "Unauthorized"
                    },
                    "403": {
                        "description": "Forbidden"
                    },
                    "404": {
                        "description": "VM instance not found"
                    }
                }
            }
        },
        "/api/user/vm-instances/{id}/status": {
            "get": {
                "tags": [
                    "User - VM Instances"
                ],
                "summary": "Get VM instance status",
                "description": "Get current status and resource usage from Proxmox.",
                "operationId": "8a823a41af472e069cc14df3a7ad22b7",
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Status retrieved successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "status": {
                                            "type": "object"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "401": {
                        "description": "Unauthorized"
                    },
                    "403": {
                        "description": "Forbidden"
                    },
                    "404": {
                        "description": "VM instance not found"
                    },
                    "500": {
                        "description": "Proxmox error"
                    }
                }
            }
        },
        "/api/user/vm-instances/{id}/qemu-hardware": {
            "get": {
                "tags": [
                    "User - VM Instances"
                ],
                "summary": "Get QEMU hardware settings (EFI + TPM + Serial)",
                "description": "Returns the current QEMU BIOS mode and whether EFI disk, TPM state disk, and serial0 socket are enabled.",
                "operationId": "a17ebe265b3f0fcb2947507953830202",
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Hardware settings fetched successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "bios": {
                                            "type": "string",
                                            "nullable": true
                                        },
                                        "efi_enabled": {
                                            "type": "boolean"
                                        },
                                        "tpm_enabled": {
                                            "type": "boolean"
                                        },
                                        "serial0_enabled": {
                                            "type": "boolean"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "401": {
                        "description": "Unauthorized"
                    },
                    "403": {
                        "description": "Forbidden"
                    },
                    "404": {
                        "description": "VM instance not found"
                    },
                    "500": {
                        "description": "Internal server error"
                    },
                    "503": {
                        "description": "Proxmox error"
                    }
                }
            },
            "patch": {
                "tags": [
                    "User - VM Instances"
                ],
                "summary": "Update QEMU hardware settings (EFI + TPM + Serial)",
                "description": "Updates Proxmox config to enable/disable EFI disk, TPM state disk, and serial0 socket. Optional BIOS mode can be updated.",
                "operationId": "d495ce640ac2f8625bae8bd66390c331",
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "properties": {
                                    "bios": {
                                        "type": "string",
                                        "enum": [
                                            "seabios",
                                            "ovmf"
                                        ],
                                        "nullable": true
                                    },
                                    "efi_enabled": {
                                        "type": "boolean",
                                        "nullable": true
                                    },
                                    "tpm_enabled": {
                                        "type": "boolean",
                                        "nullable": true
                                    },
                                    "serial0_enabled": {
                                        "type": "boolean",
                                        "nullable": true
                                    }
                                },
                                "type": "object"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Hardware updated successfully"
                    },
                    "400": {
                        "description": "Bad request"
                    },
                    "401": {
                        "description": "Unauthorized"
                    },
                    "403": {
                        "description": "Forbidden"
                    },
                    "404": {
                        "description": "VM instance not found"
                    },
                    "500": {
                        "description": "Internal server error"
                    },
                    "503": {
                        "description": "Proxmox error"
                    }
                }
            }
        },
        "/api/user/vm-instances/{id}/network-options": {
            "get": {
                "tags": [
                    "User - VM Instances"
                ],
                "summary": "Get DNS options",
                "description": "Returns current DNS settings (nameserver/searchdomain). Supports both QEMU and LXC.",
                "operationId": "179d6d4a19cb52e9d0478aefedb33acc",
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Options fetched successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "nameserver": {
                                            "type": "string",
                                            "nullable": true
                                        },
                                        "searchdomain": {
                                            "type": "string",
                                            "nullable": true
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "401": {
                        "description": "Unauthorized"
                    },
                    "403": {
                        "description": "Forbidden"
                    },
                    "404": {
                        "description": "VM instance not found"
                    },
                    "500": {
                        "description": "Internal server error"
                    },
                    "503": {
                        "description": "Proxmox error"
                    }
                }
            }
        },
        "/api/user/vm-instances/{id}/networking": {
            "get": {
                "tags": [
                    "User - VM Instances"
                ],
                "summary": "Get VM networking details",
                "description": "Returns assigned IP addresses and current DNS settings for a VDS instance.",
                "operationId": "cb5bb8c701f0fa1f177387b6289e232e",
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Networking details fetched"
                    },
                    "401": {
                        "description": "Unauthorized"
                    },
                    "403": {
                        "description": "Forbidden"
                    },
                    "404": {
                        "description": "VM instance not found"
                    }
                }
            }
        },
        "/api/user/vm-instances/{id}/network-dns": {
            "patch": {
                "tags": [
                    "User - VM Instances"
                ],
                "summary": "Update DNS settings",
                "description": "Updates nameserver (and searchdomain for LXC). Primary IP is intentionally not editable for normal users.",
                "operationId": "1f3da216f4eb0c914e68cfeef214da0f",
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "properties": {
                                    "nameserver": {
                                        "type": "string",
                                        "nullable": true
                                    },
                                    "searchdomain": {
                                        "type": "string",
                                        "nullable": true
                                    }
                                },
                                "type": "object"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Updated successfully"
                    },
                    "400": {
                        "description": "Bad request"
                    },
                    "401": {
                        "description": "Unauthorized"
                    },
                    "403": {
                        "description": "Forbidden"
                    },
                    "404": {
                        "description": "VM instance not found"
                    },
                    "500": {
                        "description": "Internal server error"
                    },
                    "503": {
                        "description": "Proxmox error"
                    }
                }
            }
        },
        "/api/user/vm-instances/{id}/iso-storages": {
            "get": {
                "tags": [
                    "User - VM Instances"
                ],
                "summary": "List ISO storages",
                "description": "Returns ISO-capable Proxmox storage names for the VM node.",
                "operationId": "656f054b088db15a217cec5b3a5c84b3",
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "ISO storages fetched",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "storages": {
                                            "type": "array",
                                            "items": {
                                                "type": "string"
                                            }
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "401": {
                        "description": "Unauthorized"
                    },
                    "403": {
                        "description": "Forbidden"
                    },
                    "404": {
                        "description": "VM instance not found"
                    },
                    "500": {
                        "description": "Internal server error"
                    },
                    "503": {
                        "description": "Proxmox error"
                    }
                }
            }
        },
        "/api/user/vm-instances/{id}/iso-current": {
            "get": {
                "tags": [
                    "User - VM Instances"
                ],
                "summary": "Get currently mounted ISO",
                "description": "Returns currently mounted ISO (if any) by inspecting QEMU cdrom devices (media=cdrom).",
                "operationId": "1da0b1d30e0acfb3c349b4ecc29a4800",
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "ISO current fetched"
                    },
                    "400": {
                        "description": "Bad request"
                    },
                    "401": {
                        "description": "Unauthorized"
                    },
                    "403": {
                        "description": "Forbidden"
                    },
                    "404": {
                        "description": "VM instance not found"
                    },
                    "500": {
                        "description": "Internal server error"
                    },
                    "503": {
                        "description": "Proxmox error"
                    }
                }
            }
        },
        "/api/user/vm-instances/{id}/iso-upload-and-mount": {
            "post": {
                "tags": [
                    "User - VM Instances"
                ],
                "summary": "Upload and mount an ISO",
                "description": "Uploads an ISO to Proxmox and mounts it as the VM cdrom (ide2) while enforcing only one ISO/cdrom at a time.",
                "operationId": "66361548c72a5c1098774ca4901b22a7",
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "multipart/form-data": {
                            "schema": {
                                "required": [
                                    "file",
                                    "storage"
                                ],
                                "properties": {
                                    "storage": {
                                        "description": "ISO storage name on Proxmox",
                                        "type": "string"
                                    },
                                    "file": {
                                        "description": "ISO file to upload",
                                        "type": "string",
                                        "format": "binary"
                                    }
                                },
                                "type": "object"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Mounted successfully"
                    },
                    "400": {
                        "description": "Bad request"
                    },
                    "401": {
                        "description": "Unauthorized"
                    },
                    "403": {
                        "description": "Forbidden"
                    },
                    "500": {
                        "description": "Internal server error"
                    },
                    "503": {
                        "description": "Proxmox error"
                    }
                }
            }
        },
        "/api/user/vm-instances/{id}/iso-fetch-and-mount": {
            "post": {
                "tags": [
                    "User - VM Instances"
                ],
                "summary": "Fetch ISO from URL and mount it",
                "description": "Proxmox downloads the ISO directly from a remote URL into the ISO storage, then mounts it as VM cdrom (ide2) while enforcing only one ISO/cdrom at a time.",
                "operationId": "5f016d5157a90e90b7c88169abec2cb5",
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "properties": {
                                    "storage": {
                                        "description": "ISO storage name on Proxmox",
                                        "type": "string"
                                    },
                                    "url": {
                                        "description": "Remote ISO URL to download",
                                        "type": "string",
                                        "format": "uri"
                                    }
                                },
                                "type": "object"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Mounted successfully"
                    },
                    "400": {
                        "description": "Bad request"
                    },
                    "401": {
                        "description": "Unauthorized"
                    },
                    "403": {
                        "description": "Forbidden"
                    },
                    "500": {
                        "description": "Internal server error"
                    },
                    "503": {
                        "description": "Proxmox error"
                    }
                }
            }
        },
        "/api/user/vm-instances/{id}/iso-unmount": {
            "post": {
                "tags": [
                    "User - VM Instances"
                ],
                "summary": "Unmount ISO",
                "description": "Unlinks cdrom devices (media=cdrom) and sets VM boot order back to the main disk.",
                "operationId": "9d5ddb802cd84f522f10d59f0dbce9bc",
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Unmounted successfully"
                    },
                    "400": {
                        "description": "Bad request"
                    },
                    "401": {
                        "description": "Unauthorized"
                    },
                    "403": {
                        "description": "Forbidden"
                    },
                    "500": {
                        "description": "Internal server error"
                    },
                    "503": {
                        "description": "Proxmox error"
                    }
                }
            }
        },
        "/api/user/vm-instances/{id}/power": {
            "post": {
                "tags": [
                    "User - VM Instances"
                ],
                "summary": "VM power action",
                "description": "Perform power action: start, stop, or reboot.",
                "operationId": "cbb3fc2895dd7b7a43df326755e7e765",
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "properties": {
                                    "action": {
                                        "type": "string",
                                        "enum": [
                                            "start",
                                            "stop",
                                            "reboot"
                                        ]
                                    }
                                },
                                "type": "object"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Power action completed",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "instance": {
                                            "type": "object"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request"
                    },
                    "401": {
                        "description": "Unauthorized"
                    },
                    "403": {
                        "description": "Forbidden"
                    },
                    "404": {
                        "description": "VM instance not found"
                    },
                    "500": {
                        "description": "Power action failed"
                    }
                }
            }
        },
        "/api/user/vm-instances/{id}/vnc-ticket": {
            "get": {
                "tags": [
                    "User - VM Instances"
                ],
                "summary": "Get VNC console ticket",
                "description": "Get VNC console access ticket. Returns wss_url (and optionally pve_redirect_url when panel can create a short-lived PVE user).",
                "operationId": "f3bb54bc7e502a99513239bd059eec3c",
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "VNC ticket created",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "ticket": {
                                            "type": "string"
                                        },
                                        "port": {
                                            "type": "integer"
                                        },
                                        "node": {
                                            "type": "string"
                                        },
                                        "vmid": {
                                            "type": "integer"
                                        },
                                        "host": {
                                            "type": "string"
                                        },
                                        "port_api": {
                                            "type": "integer"
                                        },
                                        "wss_url": {
                                            "type": "string"
                                        },
                                        "pve_redirect_url": {
                                            "description": "Proxmox noVNC URL when available",
                                            "type": "string",
                                            "nullable": true
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "401": {
                        "description": "Unauthorized"
                    },
                    "403": {
                        "description": "Forbidden"
                    },
                    "404": {
                        "description": "VM instance not found"
                    },
                    "500": {
                        "description": "VNC proxy failed"
                    }
                }
            }
        },
        "/api/user/vm-instances/{id}/reinstall": {
            "post": {
                "tags": [
                    "User - VM Instances"
                ],
                "summary": "Start async VM reinstall",
                "description": "Starts a full reinstall by cloning from the instance template. Returns 202 with reinstall_id. Poll GET /api/user/vm-instances/reinstall-status/{reinstallId} until status is active or failed. For QEMU/KVM, send ci_user and ci_password in the request body.",
                "operationId": "6266a9fdf0441a1f1b42fbed01ca956c",
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "description": "VM instance ID",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "requestBody": {
                    "required": false,
                    "content": {
                        "application/json": {
                            "schema": {
                                "properties": {
                                    "ci_user": {
                                        "description": "Cloud-init username (required for QEMU/KVM)",
                                        "type": "string"
                                    },
                                    "ci_password": {
                                        "description": "Cloud-init password (required for QEMU/KVM)",
                                        "type": "string"
                                    }
                                },
                                "type": "object"
                            }
                        }
                    }
                },
                "responses": {
                    "202": {
                        "description": "Reinstall started",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "reinstall_id": {
                                            "type": "string"
                                        },
                                        "message": {
                                            "type": "string"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request (e.g. missing ci_user/ci_password for QEMU)"
                    },
                    "401": {
                        "description": "Unauthorized"
                    },
                    "403": {
                        "description": "Forbidden"
                    },
                    "404": {
                        "description": "VM or template not found"
                    },
                    "500": {
                        "description": "Server error"
                    }
                }
            }
        },
        "/api/user/vm-instances/reinstall-status/{reinstallId}": {
            "get": {
                "tags": [
                    "User - VM Instances"
                ],
                "summary": "Poll reinstall status",
                "description": "Poll until status is active or failed. Use the reinstall_id returned from POST .../reinstall. Returns status: cloning (keep polling), failed (with error), or active (with instance).",
                "operationId": "f132605d1231d385bdef58375b53106e",
                "parameters": [
                    {
                        "name": "reinstallId",
                        "in": "path",
                        "description": "Reinstall ID from start reinstall response",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Status (cloning | failed | active)",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "status": {
                                            "type": "string",
                                            "enum": [
                                                "cloning",
                                                "failed",
                                                "active"
                                            ]
                                        },
                                        "message": {
                                            "description": "When status=cloning",
                                            "type": "string"
                                        },
                                        "error": {
                                            "description": "When status=failed",
                                            "type": "string"
                                        },
                                        "instance": {
                                            "description": "When status=active",
                                            "type": "object"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Missing reinstall_id"
                    },
                    "401": {
                        "description": "Unauthorized"
                    },
                    "404": {
                        "description": "Reinstall not found or access denied"
                    },
                    "500": {
                        "description": "Server error"
                    }
                }
            }
        },
        "/api/user/vm-instances/{id}/templates": {
            "get": {
                "tags": [
                    "User - VM Instances"
                ],
                "summary": "Get available templates",
                "description": "Get available templates for the VM instance to reinstall. Limited to the VM type (qemu/lxc).",
                "operationId": "d6ea4184a20b87b354028ff5e3dfb5ae",
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Templates retrieved successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "templates": {
                                            "type": "array",
                                            "items": {
                                                "type": "object"
                                            }
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "401": {
                        "description": "Unauthorized"
                    },
                    "403": {
                        "description": "Forbidden"
                    },
                    "404": {
                        "description": "VM instance not found"
                    }
                }
            }
        },
        "/api/user/vm-instances/{id}/subusers": {
            "get": {
                "tags": [
                    "User - VM Instance Subusers"
                ],
                "summary": "List subusers",
                "description": "List subusers for this VM instance. Only the VM owner can manage subusers.",
                "operationId": "da34ffed50c0033edf4bbf7a708540c9",
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Subusers listed",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "subusers": {
                                            "type": "array",
                                            "items": {
                                                "type": "object"
                                            }
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "401": {
                        "description": "Unauthorized"
                    },
                    "403": {
                        "description": "Only the VM owner can manage subusers"
                    },
                    "404": {
                        "description": "VM instance not found"
                    }
                }
            },
            "post": {
                "tags": [
                    "User - VM Instance Subusers"
                ],
                "summary": "Add subuser",
                "description": "Add a subuser to this VM instance with given permissions. Only the VM owner can add subusers.",
                "operationId": "60342e11a6aa5bd4498055a78119220e",
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "required": [
                                    "email",
                                    "permissions"
                                ],
                                "properties": {
                                    "email": {
                                        "description": "Target user email",
                                        "type": "string"
                                    },
                                    "permissions": {
                                        "description": "e.g. power, console",
                                        "type": "array",
                                        "items": {
                                            "type": "string"
                                        }
                                    }
                                },
                                "type": "object"
                            }
                        }
                    }
                },
                "responses": {
                    "201": {
                        "description": "Subuser added",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "subuser": {
                                            "type": "object"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "email and permissions required"
                    },
                    "401": {
                        "description": "Unauthorized"
                    },
                    "403": {
                        "description": "Only the VM owner can add subusers"
                    },
                    "404": {
                        "description": "VM instance not found"
                    },
                    "500": {
                        "description": "Create failed"
                    }
                }
            }
        },
        "/api/user/vm-instances/{id}/subusers/{subuserId}": {
            "delete": {
                "tags": [
                    "User - VM Instance Subusers"
                ],
                "summary": "Remove subuser",
                "description": "Remove a subuser from this VM instance. Only the VM owner can remove subusers.",
                "operationId": "8d9c77c26c18d7c74675620807df7206",
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    },
                    {
                        "name": "subuserId",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Subuser removed"
                    },
                    "401": {
                        "description": "Unauthorized"
                    },
                    "403": {
                        "description": "Only the VM owner can remove subusers"
                    },
                    "404": {
                        "description": "VM instance or subuser not found"
                    }
                }
            }
        },
        "/api/user/vds-chatbot/chat": {
            "post": {
                "tags": [
                    "User - VDS Chatbot"
                ],
                "summary": "Send a message to the VDS AI chatbot",
                "description": "Send a message to the VDS AI assistant and receive a response. Optionally include chat history for context.",
                "operationId": "baca91429d037c7d02b67e3b9a22c697",
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/VdsChatbotRequest"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Chat response received successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "response": {
                                            "type": "string"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Invalid request"
                    },
                    "401": {
                        "description": "Unauthorized"
                    }
                }
            }
        },
        "/api/user/vds-chatbot/conversations": {
            "get": {
                "tags": [
                    "User - VDS Chatbot"
                ],
                "summary": "Get user VDS chatbot conversations",
                "description": "Retrieve all VDS chatbot conversations for the authenticated user.",
                "operationId": "2a95316dd737f7b2c9c2fe930bdcf6b2",
                "responses": {
                    "200": {
                        "description": "Conversations retrieved successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "conversations": {
                                            "type": "array",
                                            "items": {
                                                "type": "object"
                                            }
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "401": {
                        "description": "Unauthorized"
                    }
                }
            }
        },
        "/api/user/vds-chatbot/conversations/{id}": {
            "get": {
                "tags": [
                    "User - VDS Chatbot"
                ],
                "summary": "Get VDS chatbot conversation messages",
                "description": "Retrieve all messages for a specific VDS chatbot conversation.",
                "operationId": "19fe7a236fcbc912d951dac6a560932f",
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "description": "Conversation ID",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Messages retrieved successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "conversation": {
                                            "type": "object"
                                        },
                                        "messages": {
                                            "type": "array",
                                            "items": {
                                                "type": "object"
                                            }
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "401": {
                        "description": "Unauthorized"
                    },
                    "404": {
                        "description": "Conversation not found"
                    }
                }
            },
            "delete": {
                "tags": [
                    "User - VDS Chatbot"
                ],
                "summary": "Delete VDS chatbot conversation",
                "description": "Delete a VDS chatbot conversation and all its messages.",
                "operationId": "63a4eab127f03d5ea36ee849b680f5aa",
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "description": "Conversation ID",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Conversation deleted successfully"
                    },
                    "401": {
                        "description": "Unauthorized"
                    },
                    "404": {
                        "description": "Conversation not found"
                    }
                }
            }
        },
        "/api/user/vds-chatbot/conversations/{id}/memory": {
            "patch": {
                "tags": [
                    "User - VDS Chatbot"
                ],
                "summary": "Update VDS chatbot conversation memory",
                "description": "Update the memory field for a VDS chatbot conversation. This memory is included in the AI context for future messages.",
                "operationId": "b1731dec02c357bf4a06a639bbf723bc",
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "description": "Conversation ID",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "properties": {
                                    "memory": {
                                        "description": "Memory content",
                                        "type": "string"
                                    }
                                },
                                "type": "object"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Memory updated successfully"
                    },
                    "401": {
                        "description": "Unauthorized"
                    },
                    "404": {
                        "description": "Conversation not found"
                    }
                }
            }
        },
        "/api/user/webspaces/{uuidShort}/files/list": {
            "get": {
                "tags": [
                    "User - WebSpace Files"
                ],
                "summary": "List WebSpace files",
                "operationId": "2544848921bdee9d51a640f386b31cf0"
            }
        },
        "/api/user/webspaces/{uuidShort}/file-capabilities": {
            "get": {
                "tags": [
                    "User - WebSpace Files"
                ],
                "summary": "WebSpace file manager capabilities",
                "operationId": "b03e2a0641ae1d97654ad378914a10bd"
            }
        },
        "/api/user/webspaces/{uuidShort}/files/contents": {
            "get": {
                "tags": [
                    "User - WebSpace Files"
                ],
                "summary": "Read WebSpace file",
                "operationId": "e7009831192e887822a2d5da68cea83e"
            }
        },
        "/api/user/webspaces/{uuidShort}/files/write": {
            "post": {
                "tags": [
                    "User - WebSpace Files"
                ],
                "summary": "Write WebSpace file",
                "operationId": "80a7e2ebbe513115ef17b682b41dcbf3"
            }
        },
        "/api/user/webspaces/{uuidShort}/files/create-directory": {
            "post": {
                "tags": [
                    "User - WebSpace Files"
                ],
                "summary": "Create WebSpace directory",
                "operationId": "ea9b04a9986d2c766bde86c601ee9115"
            }
        },
        "/api/user/webspaces/{uuidShort}/files/rename": {
            "put": {
                "tags": [
                    "User - WebSpace Files"
                ],
                "summary": "Rename WebSpace file",
                "operationId": "2f695228486c1e4ff210ad755dbbd0b4"
            }
        },
        "/api/user/webspaces/{uuidShort}/files/copy": {
            "post": {
                "tags": [
                    "User - WebSpace Files"
                ],
                "summary": "Copy WebSpace file or directory",
                "operationId": "40c27c6d6536bb7456e13ccb2812e2d1"
            }
        },
        "/api/user/webspaces/{uuidShort}/files/copy-many": {
            "post": {
                "tags": [
                    "User - WebSpace Files"
                ],
                "summary": "Copy many WebSpace files",
                "operationId": "ef4747971518c8af4a42864789f02e47"
            }
        },
        "/api/user/webspaces/{uuidShort}/files/create-symlink": {
            "post": {
                "tags": [
                    "User - WebSpace Files"
                ],
                "summary": "Create WebSpace symlink",
                "operationId": "dca52d54cab26cdd1bb6dc3bd784fd00"
            }
        },
        "/api/user/webspaces/{uuidShort}/files/fingerprints": {
            "get": {
                "tags": [
                    "User - WebSpace Files"
                ],
                "summary": "Fingerprint WebSpace files",
                "operationId": "b0a79fd2086d6d0a000009b5dabfd713"
            }
        },
        "/api/user/webspaces/{uuidShort}/files/delete": {
            "post": {
                "tags": [
                    "User - WebSpace Files"
                ],
                "summary": "Delete WebSpace files",
                "operationId": "bccefb0d2f0a685b2ef2a62158c3eda5"
            }
        },
        "/api/user/webspaces/{uuidShort}/files/compress": {
            "post": {
                "tags": [
                    "User - WebSpace Files"
                ],
                "summary": "Compress WebSpace files",
                "operationId": "6c9078e66130749333182f826160442b"
            }
        },
        "/api/user/webspaces/{uuidShort}/files/decompress": {
            "post": {
                "tags": [
                    "User - WebSpace Files"
                ],
                "summary": "Decompress WebSpace archive",
                "operationId": "e064b7b97923c58f1605aa2b6422024c"
            }
        },
        "/api/user/webspaces/{uuidShort}/files/chmod": {
            "post": {
                "tags": [
                    "User - WebSpace Files"
                ],
                "summary": "Change WebSpace file permissions",
                "operationId": "5b67d2543740258df591f03cb708a1e6"
            }
        },
        "/api/user/webspaces/{uuidShort}/files/search": {
            "get": {
                "tags": [
                    "User - WebSpace Files"
                ],
                "summary": "Search WebSpace files",
                "operationId": "2ad78dfc21a76e7e6a4e1f43204926be"
            }
        },
        "/api/user/webspaces/{uuidShort}/files/pull": {
            "post": {
                "tags": [
                    "User - WebSpace Files"
                ],
                "summary": "Pull remote file into WebSpace",
                "operationId": "71e25f1b236a9b3877782fe0376a6482"
            }
        },
        "/api/user/webspaces/{uuidShort}/files/download": {
            "get": {
                "tags": [
                    "User - WebSpace Files"
                ],
                "summary": "Download WebSpace file",
                "operationId": "0ea4bd371a31aa716e2207bfc917b73b"
            }
        },
        "/api/user/webspaces/{uuidShort}/files/upload": {
            "post": {
                "tags": [
                    "User - WebSpace Files"
                ],
                "summary": "Upload WebSpace file",
                "operationId": "29632426229e0397769c8f9013d40c7e"
            }
        },
        "/api/user/webspaces/{uuidShort}/schedules": {
            "get": {
                "tags": [
                    "User - WebSpace Schedules"
                ],
                "summary": "List WebSpace schedules",
                "operationId": "6fcdef2dc76f9006b49d410158fc26e6"
            },
            "post": {
                "tags": [
                    "User - WebSpace Schedules"
                ],
                "summary": "Create WebSpace schedule",
                "operationId": "70e1de3bf1cd20c0e78cb5dd3b7e8956"
            }
        },
        "/api/user/webspaces/{uuidShort}/schedules/{scheduleId}": {
            "get": {
                "tags": [
                    "User - WebSpace Schedules"
                ],
                "summary": "Get WebSpace schedule",
                "operationId": "b0a6b5a936b129e543e83ab3a7b1c067"
            },
            "put": {
                "tags": [
                    "User - WebSpace Schedules"
                ],
                "summary": "Update WebSpace schedule",
                "operationId": "1a6d273eb506735b22ec95a613d91f19"
            },
            "delete": {
                "tags": [
                    "User - WebSpace Schedules"
                ],
                "summary": "Delete WebSpace schedule",
                "operationId": "e13cdd15a58f913bff2ab67d689e3087"
            }
        },
        "/api/user/webspaces/{uuidShort}/schedules/{scheduleId}/toggle": {
            "post": {
                "tags": [
                    "User - WebSpace Schedules"
                ],
                "summary": "Toggle WebSpace schedule",
                "operationId": "f50a7d736540bb0abd895c5380bc6183"
            }
        },
        "/api/user/webspaces/{uuidShort}/schedules/{scheduleId}/execute": {
            "post": {
                "tags": [
                    "User - WebSpace Schedules"
                ],
                "summary": "Execute WebSpace schedule",
                "operationId": "6490fb110d8ecdec4732ff79ecf901a5"
            }
        },
        "/api/user/webspaces/{uuidShort}/schedules/abort": {
            "post": {
                "tags": [
                    "User - WebSpace Schedules"
                ],
                "summary": "Abort WebSpace schedule run",
                "operationId": "86b21d73f669e8c70e24bfb77201e4ef"
            }
        },
        "/api/user/webspaces/{uuidShort}/users": {
            "get": {
                "tags": [
                    "User - WebSpace Subusers"
                ],
                "summary": "List WebSpace subusers",
                "operationId": "a20a98f27446934c4efc6f991483b7b8"
            },
            "post": {
                "tags": [
                    "User - WebSpace Subusers"
                ],
                "summary": "Add WebSpace subuser",
                "operationId": "52090caf8c35f32868e3630c9b9dc889"
            }
        },
        "/api/user/webspaces/{uuidShort}/users/{subuserId}": {
            "put": {
                "tags": [
                    "User - WebSpace Subusers"
                ],
                "summary": "Update WebSpace subuser",
                "operationId": "a1ec261953ed14cb13b661e77374e9a9"
            },
            "delete": {
                "tags": [
                    "User - WebSpace Subusers"
                ],
                "summary": "Remove WebSpace subuser",
                "operationId": "636fa44c9ef5a50fa1700d26da4ed049"
            }
        },
        "/api/user/webspaces": {
            "get": {
                "tags": [
                    "User - WebSpaces"
                ],
                "summary": "List accessible WebSpaces",
                "operationId": "d177152c3cd737e0fe2f9191c203c90a"
            }
        },
        "/api/user/webspaces/{uuidShort}": {
            "get": {
                "tags": [
                    "User - WebSpaces"
                ],
                "summary": "Get WebSpace",
                "operationId": "d3e5d7b84a83db293da272d90414446b"
            }
        },
        "/api/user/webspaces/{uuidShort}/infrastructure-readiness": {
            "get": {
                "tags": [
                    "User - WebSpaces"
                ],
                "summary": "Infrastructure readiness for this WebSpace",
                "operationId": "88f46181076888ef686141ad58de6ad0"
            }
        },
        "/api/user/webspaces/catalog": {
            "get": {
                "tags": [
                    "User - WebSpaces"
                ],
                "summary": "Order catalog (nodes + WebPlates)",
                "operationId": "cc8ec494cb3963c6f2e0a53b8e532276"
            }
        },
        "/api/remote/activity": {
            "post": {
                "tags": [
                    "Wings - Activity"
                ],
                "summary": "Log server activities",
                "description": "Log server activities from Wings daemon. Processes multiple activity logs in a single request with validation and error handling. Requires Wings node token authentication (token ID and secret).",
                "operationId": "a9e66fc1b98d8534d8695024fd50f5f8",
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/WingsActivityRequest"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "All activities logged successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/WingsActivityResponse"
                                }
                            }
                        }
                    },
                    "207": {
                        "description": "Multi-status - Some activities processed with errors",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/WingsActivityErrorResponse"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request - Invalid JSON, missing activity data, invalid server UUID format, or invalid user UUID format"
                    },
                    "401": {
                        "description": "Unauthorized - Invalid Wings authentication"
                    },
                    "403": {
                        "description": "Forbidden - Invalid Wings authentication"
                    },
                    "500": {
                        "description": "Internal server error"
                    }
                }
            }
        },
        "/api/remote/backups/{backupUuid}": {
            "get": {
                "tags": [
                    "Wings - Backup"
                ],
                "summary": "Get backup upload information",
                "description": "Get presigned upload URLs for S3/remote backup storage. Returns multipart upload URLs for large backup files. Requires Wings node token authentication (token ID and secret).",
                "operationId": "155ecce14112bd0adaf05c1cf3c93eda",
                "parameters": [
                    {
                        "name": "backupUuid",
                        "in": "path",
                        "description": "Backup UUID",
                        "required": true,
                        "schema": {
                            "type": "string",
                            "format": "uuid"
                        }
                    },
                    {
                        "name": "size",
                        "in": "query",
                        "description": "Backup file size in bytes",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Backup upload information retrieved successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/BackupUploadInfo"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request - Missing backup UUID or invalid size parameter"
                    },
                    "401": {
                        "description": "Unauthorized - Invalid Wings authentication"
                    },
                    "403": {
                        "description": "Forbidden - Invalid Wings authentication"
                    },
                    "404": {
                        "description": "Not found - Backup, server, or node not found"
                    },
                    "500": {
                        "description": "Internal server error"
                    }
                }
            },
            "post": {
                "tags": [
                    "Wings - Backup"
                ],
                "summary": "Report backup completion",
                "description": "Report backup completion and metadata to update backup record with checksum, size, and success status. Requires Wings node token authentication (token ID and secret).",
                "operationId": "b031ea551b833b4e066c7db803c272d5",
                "parameters": [
                    {
                        "name": "backupUuid",
                        "in": "path",
                        "description": "Backup UUID",
                        "required": true,
                        "schema": {
                            "type": "string",
                            "format": "uuid"
                        }
                    }
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/BackupCompletion"
                            }
                        }
                    }
                },
                "responses": {
                    "204": {
                        "description": "Backup completion reported successfully"
                    },
                    "400": {
                        "description": "Bad request - Missing backup UUID, invalid request body, or missing required fields"
                    },
                    "401": {
                        "description": "Unauthorized - Invalid Wings authentication"
                    },
                    "403": {
                        "description": "Forbidden - Invalid Wings authentication"
                    },
                    "404": {
                        "description": "Not found - Backup, server, or node not found"
                    },
                    "500": {
                        "description": "Internal server error - Failed to update backup"
                    }
                }
            }
        },
        "/api/remote/backups/{backupUuid}/restore": {
            "post": {
                "tags": [
                    "Wings - Backup"
                ],
                "summary": "Report backup restoration completion",
                "description": "Report backup restoration completion status to log restoration activities. Requires Wings node token authentication (token ID and secret).",
                "operationId": "a240bb6663b1edf4ff66209f1f9ecfa1",
                "parameters": [
                    {
                        "name": "backupUuid",
                        "in": "path",
                        "description": "Backup UUID",
                        "required": true,
                        "schema": {
                            "type": "string",
                            "format": "uuid"
                        }
                    }
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/BackupRestoration"
                            }
                        }
                    }
                },
                "responses": {
                    "204": {
                        "description": "Backup restoration completion reported successfully"
                    },
                    "400": {
                        "description": "Bad request - Missing backup UUID, invalid request body, or missing required field"
                    },
                    "401": {
                        "description": "Unauthorized - Invalid Wings authentication"
                    },
                    "403": {
                        "description": "Forbidden - Invalid Wings authentication"
                    },
                    "404": {
                        "description": "Not found - Backup, server, or node not found"
                    },
                    "500": {
                        "description": "Internal server error"
                    }
                }
            }
        },
        "/api/remote/servers/{uuid}/import": {
            "post": {
                "tags": [
                    "Wings - Remote API"
                ],
                "summary": "Report import status",
                "description": "Called by Wings to report the final status of a server import operation.",
                "operationId": "ce98fc5a9b176956e3a040d41d3d8aca",
                "parameters": [
                    {
                        "name": "uuid",
                        "in": "path",
                        "description": "Server UUID",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "required": [
                                    "successful"
                                ],
                                "properties": {
                                    "successful": {
                                        "description": "Whether the import completed successfully",
                                        "type": "boolean"
                                    },
                                    "error": {
                                        "description": "Error message if import failed",
                                        "type": "string",
                                        "nullable": true
                                    }
                                },
                                "type": "object"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Import status recorded successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "success": {
                                            "type": "boolean",
                                            "example": true
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request"
                    },
                    "403": {
                        "description": "Invalid Wings authentication"
                    },
                    "404": {
                        "description": "Server not found"
                    }
                }
            }
        },
        "/api/remote/servers/{uuid}": {
            "get": {
                "tags": [
                    "Wings - Server"
                ],
                "summary": "Get server configuration",
                "description": "Retrieve complete server configuration for Wings daemon including settings, environment variables, allocations, and process configuration. Requires Wings node token authentication (token ID and secret).",
                "operationId": "9bef1540649f6a745cb8c5cce3d7dd32",
                "parameters": [
                    {
                        "name": "uuid",
                        "in": "path",
                        "description": "Server UUID",
                        "required": true,
                        "schema": {
                            "type": "string",
                            "format": "uuid"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Server configuration retrieved successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/WingsServerConfig"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request - Missing server UUID"
                    },
                    "401": {
                        "description": "Unauthorized - Invalid Wings node token (token ID and secret)"
                    },
                    "403": {
                        "description": "Forbidden - Invalid Wings node token (token ID and secret)"
                    },
                    "404": {
                        "description": "Not found - Server, node, allocation, spell, or realm not found"
                    },
                    "500": {
                        "description": "Internal server error - Configuration generation failed"
                    }
                }
            }
        },
        "/api/remote/servers/{uuid}/install": {
            "get": {
                "tags": [
                    "Wings - Server"
                ],
                "summary": "Get server installation configuration",
                "description": "Retrieve server installation configuration including container image, entrypoint, and installation script. Requires Wings node token authentication (token ID and secret).",
                "operationId": "f669dc48b568376c2d8ef31519b6a521",
                "parameters": [
                    {
                        "name": "uuid",
                        "in": "path",
                        "description": "Server UUID",
                        "required": true,
                        "schema": {
                            "type": "string",
                            "format": "uuid"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Server installation configuration retrieved successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ServerInstallConfig"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request - Missing server UUID"
                    },
                    "401": {
                        "description": "Unauthorized - Invalid Wings authentication"
                    },
                    "403": {
                        "description": "Forbidden - Invalid Wings authentication"
                    },
                    "404": {
                        "description": "Not found - Server, node, or spell not found"
                    },
                    "500": {
                        "description": "Internal server error"
                    }
                }
            },
            "post": {
                "tags": [
                    "Wings - Server"
                ],
                "summary": "Report server installation completion",
                "description": "Report server installation completion status to update server installation state. Requires Wings node token authentication (token ID and secret).",
                "operationId": "2519540633046a03bfb9c9a724f034e4",
                "parameters": [
                    {
                        "name": "uuid",
                        "in": "path",
                        "description": "Server UUID",
                        "required": true,
                        "schema": {
                            "type": "string",
                            "format": "uuid"
                        }
                    }
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/ServerInstallCompletion"
                            }
                        }
                    }
                },
                "responses": {
                    "204": {
                        "description": "Installation completion reported successfully"
                    },
                    "400": {
                        "description": "Bad request - Missing server UUID, invalid JSON, or missing required field"
                    },
                    "401": {
                        "description": "Unauthorized - Invalid Wings authentication"
                    },
                    "403": {
                        "description": "Forbidden - Invalid Wings authentication"
                    },
                    "404": {
                        "description": "Not found - Server, node, or spell not found"
                    },
                    "500": {
                        "description": "Internal server error - Failed to update installation status"
                    }
                }
            }
        },
        "/api/remote/servers": {
            "get": {
                "tags": [
                    "Wings - Server"
                ],
                "summary": "Get remote servers",
                "description": "Retrieve paginated list of all servers for the authenticated Wings node with complete configuration data. Requires Wings node token authentication (token ID and secret).",
                "operationId": "1f7144e89521a116d284db52c0e5b52b",
                "parameters": [
                    {
                        "name": "page",
                        "in": "query",
                        "description": "Page number for pagination",
                        "required": false,
                        "schema": {
                            "type": "integer",
                            "default": 1,
                            "minimum": 1
                        }
                    },
                    {
                        "name": "per_page",
                        "in": "query",
                        "description": "Number of records per page",
                        "required": false,
                        "schema": {
                            "type": "integer",
                            "default": 50,
                            "minimum": 1
                        }
                    },
                    {
                        "name": "search",
                        "in": "query",
                        "description": "Search term to filter servers",
                        "required": false,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Remote servers retrieved successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/RemoteServersResponse"
                                }
                            }
                        }
                    },
                    "401": {
                        "description": "Unauthorized - Invalid Wings authentication"
                    },
                    "403": {
                        "description": "Forbidden - Invalid Wings authentication"
                    },
                    "500": {
                        "description": "Internal server error"
                    }
                }
            }
        },
        "/api/remote/servers/{uuid}/container/status": {
            "get": {
                "tags": [
                    "Wings - Server"
                ],
                "summary": "Get server container status",
                "description": "Retrieve current server container status from the database. Requires Wings node token authentication (token ID and secret).",
                "operationId": "683407a31d5a17f92efa49d7f4ff58b9",
                "parameters": [
                    {
                        "name": "uuid",
                        "in": "path",
                        "description": "Server UUID",
                        "required": true,
                        "schema": {
                            "type": "string",
                            "format": "uuid"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Server status retrieved successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ServerStatusResponse"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request - Missing server UUID"
                    },
                    "401": {
                        "description": "Unauthorized - Invalid Wings authentication"
                    },
                    "403": {
                        "description": "Forbidden - Invalid Wings authentication"
                    },
                    "404": {
                        "description": "Not found - Server not found"
                    },
                    "500": {
                        "description": "Internal server error"
                    }
                }
            },
            "post": {
                "tags": [
                    "Wings - Server"
                ],
                "summary": "Update server container status",
                "description": "Update server container status from Wings daemon. Accepts various server states including running, stopped, crashed, etc. Requires Wings node token authentication (token ID and secret).",
                "operationId": "5641e96ee804ba054cfbd34990805746",
                "parameters": [
                    {
                        "name": "uuid",
                        "in": "path",
                        "description": "Server UUID",
                        "required": true,
                        "schema": {
                            "type": "string",
                            "format": "uuid"
                        }
                    }
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/ServerStatusUpdate"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Server status updated successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ServerStatusUpdateResponse"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request - Missing server UUID, invalid JSON, missing state field, or invalid state value"
                    },
                    "401": {
                        "description": "Unauthorized - Invalid Wings authentication"
                    },
                    "403": {
                        "description": "Forbidden - Invalid Wings authentication"
                    },
                    "404": {
                        "description": "Not found - Server not found"
                    },
                    "500": {
                        "description": "Internal server error - Failed to update server status"
                    }
                }
            }
        },
        "/api/remote/servers/reset": {
            "post": {
                "tags": [
                    "Wings - Server"
                ],
                "summary": "Reset servers",
                "description": "Reset all server statuses for the authenticated Wings node. Requires Wings node token authentication (token ID and secret).",
                "operationId": "c471f9dfbe5197113ad58d8a2aa424f1",
                "responses": {
                    "200": {
                        "description": "Servers reset successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ServersResetResponse"
                                }
                            }
                        }
                    },
                    "401": {
                        "description": "Unauthorized - Invalid Wings authentication"
                    },
                    "403": {
                        "description": "Forbidden - Invalid Wings authentication"
                    },
                    "500": {
                        "description": "Internal server error"
                    }
                }
            }
        },
        "/api/remote/sftp/auth": {
            "post": {
                "tags": [
                    "Wings - SFTP"
                ],
                "summary": "SFTP authentication",
                "description": "Handle SFTP authentication requests from Wings daemon. Supports both password and public key authentication. Requires Wings node token authentication.",
                "operationId": "c3fe92c176fec509fd2f7fad52ddbea2",
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/SftpAuthRequest"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "SFTP authentication successful",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/SftpAuthSuccessResponse"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request - Invalid request data or username format",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/SftpAuthErrorResponse"
                                }
                            }
                        }
                    },
                    "401": {
                        "description": "Unauthorized - Invalid Wings node token or credentials",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/SftpAuthErrorResponse"
                                }
                            }
                        }
                    },
                    "403": {
                        "description": "Forbidden - Invalid Wings node token or access denied",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/SftpAuthErrorResponse"
                                }
                            }
                        }
                    },
                    "404": {
                        "description": "Not found - Server not found",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/SftpAuthErrorResponse"
                                }
                            }
                        }
                    },
                    "500": {
                        "description": "Internal server error",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/SftpAuthErrorResponse"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/api/wings/admin": {
            "get": {
                "tags": [
                    "Wings - Admin"
                ],
                "summary": "Wings admin index",
                "description": "Welcome endpoint for Wings admin functionality. Requires Wings node token authentication (token ID and secret).",
                "operationId": "8855579ba95fb10c863b8002d2a53934",
                "responses": {
                    "200": {
                        "description": "Welcome message",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/WingsAdminResponse"
                                }
                            }
                        }
                    },
                    "401": {
                        "description": "Unauthorized - Invalid authentication"
                    },
                    "403": {
                        "description": "Forbidden - Insufficient permissions"
                    },
                    "500": {
                        "description": "Internal server error"
                    }
                }
            }
        },
        "/api/wings/admin/node/{id}/utilization": {
            "get": {
                "tags": [
                    "Wings - Admin"
                ],
                "summary": "Get node utilization",
                "description": "Retrieve system utilization data for a specific node from Wings daemon. Requires Wings node token authentication (token ID and secret).",
                "operationId": "179b6880ddafb95cf874be877aa6fce3",
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "description": "Node ID",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Node utilization retrieved successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/NodeUtilization"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request - Missing or invalid node ID"
                    },
                    "401": {
                        "description": "Unauthorized - Invalid authentication"
                    },
                    "403": {
                        "description": "Forbidden - Insufficient permissions"
                    },
                    "404": {
                        "description": "Not found - Node not found"
                    },
                    "500": {
                        "description": "Internal server error - Wings connection failed"
                    }
                }
            }
        },
        "/api/wings/admin/node/{id}/docker/disk": {
            "get": {
                "tags": [
                    "Wings - Admin"
                ],
                "summary": "Get Docker disk usage",
                "description": "Retrieve Docker disk usage information for a specific node from Wings daemon. Requires Wings node token authentication (token ID and secret).",
                "operationId": "f7f63a253163a57301abc6e86ea1d1fc",
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "description": "Node ID",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Docker disk usage retrieved successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/NodeDockerDiskUsage"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request - Missing or invalid node ID"
                    },
                    "401": {
                        "description": "Unauthorized - Invalid authentication"
                    },
                    "403": {
                        "description": "Forbidden - Insufficient permissions"
                    },
                    "404": {
                        "description": "Not found - Node not found"
                    },
                    "500": {
                        "description": "Internal server error - Wings connection failed"
                    }
                }
            }
        },
        "/api/wings/admin/node/{id}/docker/prune": {
            "delete": {
                "tags": [
                    "Wings - Admin"
                ],
                "summary": "Prune Docker images",
                "description": "Execute Docker image pruning on a specific node to free up disk space. Requires Wings node token authentication (token ID and secret).",
                "operationId": "d2a4fd4b8e0007463482304ae87373e6",
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "description": "Node ID",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Docker prune completed successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/NodeDockerPrune"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request - Missing or invalid node ID"
                    },
                    "401": {
                        "description": "Unauthorized - Invalid authentication"
                    },
                    "403": {
                        "description": "Forbidden - Insufficient permissions"
                    },
                    "404": {
                        "description": "Not found - Node not found"
                    },
                    "500": {
                        "description": "Internal server error - Wings connection failed"
                    }
                }
            }
        },
        "/api/wings/admin/node/{id}/ips": {
            "get": {
                "tags": [
                    "Wings - Admin"
                ],
                "summary": "Get node IPs",
                "description": "Retrieve available IP addresses for a specific node from Wings daemon. Requires Wings node token authentication (token ID and secret).",
                "operationId": "f1a4dd45a4ea6036444a6e30c36760a8",
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "description": "Node ID",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Node IPs retrieved successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/NodeIps"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request - Missing or invalid node ID"
                    },
                    "401": {
                        "description": "Unauthorized - Invalid authentication"
                    },
                    "403": {
                        "description": "Forbidden - Insufficient permissions"
                    },
                    "404": {
                        "description": "Not found - Node not found"
                    },
                    "500": {
                        "description": "Internal server error - Wings connection failed"
                    }
                }
            }
        },
        "/api/wings/admin/node/{id}/system": {
            "get": {
                "tags": [
                    "Wings - Admin"
                ],
                "summary": "Get node system information",
                "description": "Retrieve detailed system information for a specific node from Wings daemon. Requires Wings node token authentication (token ID and secret).",
                "operationId": "600b84af213363a9bd825728aade3963",
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "description": "Node ID",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Node system information retrieved successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/NodeSystemInfo"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request - Missing or invalid node ID"
                    },
                    "401": {
                        "description": "Unauthorized - Invalid authentication"
                    },
                    "403": {
                        "description": "Forbidden - Insufficient permissions"
                    },
                    "404": {
                        "description": "Not found - Node not found"
                    },
                    "500": {
                        "description": "Internal server error - Wings connection failed"
                    }
                }
            }
        },
        "/api/wings/admin/node/{id}/modules": {
            "get": {
                "tags": [
                    "Wings - Admin"
                ],
                "summary": "List all modules",
                "description": "Retrieve a list of all registered modules and their current status. Requires Wings node token authentication.",
                "operationId": "cc4b0080372558c635442c8a5b35aa0c",
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "description": "Node ID",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Modules listed successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "data": {
                                            "type": "array",
                                            "items": {
                                                "type": "object"
                                            }
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/api/wings/admin/node/{id}/modules/{module}/config": {
            "get": {
                "tags": [
                    "Wings - Admin"
                ],
                "summary": "Get module configuration",
                "description": "Retrieve the current configuration for a specific module. Requires Wings node token authentication.",
                "operationId": "d479b943c1cb35212959381ea20df1cf",
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "description": "Node ID",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    },
                    {
                        "name": "module",
                        "in": "path",
                        "description": "Module name",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Module configuration retrieved successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object"
                                }
                            }
                        }
                    }
                }
            },
            "put": {
                "tags": [
                    "Wings - Admin"
                ],
                "summary": "Update module configuration",
                "description": "Update the configuration for a specific module. The module must be disabled before configuration changes can be applied. Requires Wings node token authentication.",
                "operationId": "0f98cfb37f597591233b406670f265a7",
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "description": "Node ID",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    },
                    {
                        "name": "module",
                        "in": "path",
                        "description": "Module name",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Module configuration updated successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/api/wings/admin/node/{id}/modules/{module}/enable": {
            "post": {
                "tags": [
                    "Wings - Admin"
                ],
                "summary": "Enable module",
                "description": "Enable a module. This will start the module and make it active. Requires Wings node token authentication.",
                "operationId": "a877ec178d795f3326769d8f3178d241",
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "description": "Node ID",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    },
                    {
                        "name": "module",
                        "in": "path",
                        "description": "Module name",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Module enabled successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/api/wings/admin/node/{id}/modules/{module}/disable": {
            "post": {
                "tags": [
                    "Wings - Admin"
                ],
                "summary": "Disable module",
                "description": "Disable a module. This will stop the module and make it inactive. Requires Wings node token authentication.",
                "operationId": "46aa10d25517fc59e2c302bdacdb8d99",
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "description": "Node ID",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    },
                    {
                        "name": "module",
                        "in": "path",
                        "description": "Module name",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Module disabled successfully",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object"
                                }
                            }
                        }
                    }
                }
            }
        }
    },
    "components": {
        "schemas": {
            "Allocation": {
                "properties": {
                    "id": {
                        "description": "Allocation ID",
                        "type": "integer"
                    },
                    "node_id": {
                        "description": "Node ID",
                        "type": "integer"
                    },
                    "ip": {
                        "description": "IP address",
                        "type": "string"
                    },
                    "ip_alias": {
                        "description": "IP alias",
                        "type": "string",
                        "nullable": true
                    },
                    "port": {
                        "description": "Port number",
                        "type": "integer"
                    },
                    "server_id": {
                        "description": "Assigned server ID",
                        "type": "integer",
                        "nullable": true
                    },
                    "notes": {
                        "description": "Allocation notes",
                        "type": "string",
                        "nullable": true
                    },
                    "created_at": {
                        "description": "Creation timestamp",
                        "type": "string",
                        "format": "date-time"
                    },
                    "updated_at": {
                        "description": "Last update timestamp",
                        "type": "string",
                        "format": "date-time"
                    }
                },
                "type": "object"
            },
            "Pagination": {
                "properties": {
                    "current_page": {
                        "type": "integer"
                    },
                    "per_page": {
                        "type": "integer"
                    },
                    "total_records": {
                        "type": "integer"
                    },
                    "total_pages": {
                        "type": "integer"
                    },
                    "has_next": {
                        "type": "boolean"
                    },
                    "has_prev": {
                        "type": "boolean"
                    },
                    "from": {
                        "type": "integer"
                    },
                    "to": {
                        "type": "integer"
                    }
                },
                "type": "object"
            },
            "BlockedEmailDomainRow": {
                "properties": {
                    "id": {
                        "type": "integer"
                    },
                    "domain": {
                        "type": "string"
                    },
                    "source": {
                        "type": "string",
                        "enum": [
                            "manual",
                            "preset",
                            "import"
                        ]
                    },
                    "created_at": {
                        "type": "string",
                        "nullable": true
                    }
                },
                "type": "object"
            },
            "BlockedIpRow": {
                "properties": {
                    "id": {
                        "type": "integer"
                    },
                    "ip": {
                        "type": "string"
                    },
                    "reason": {
                        "type": "string",
                        "nullable": true
                    },
                    "expires_at": {
                        "description": "UTC datetime; null = permanent",
                        "type": "string",
                        "nullable": true
                    },
                    "created_by_uuid": {
                        "type": "string",
                        "nullable": true
                    },
                    "created_at": {
                        "type": "string",
                        "nullable": true
                    },
                    "is_active": {
                        "type": "boolean"
                    },
                    "is_permanent": {
                        "type": "boolean"
                    }
                },
                "type": "object"
            },
            "FeatherCloudCredentialPair": {
                "properties": {
                    "public_key": {
                        "type": "string"
                    },
                    "private_key": {
                        "type": "string"
                    },
                    "last_rotated_at": {
                        "description": "Timestamp when the keypair was last rotated or updated",
                        "type": "string",
                        "format": "date-time",
                        "nullable": true
                    }
                },
                "type": "object"
            },
            "FeatherCloudCredentials": {
                "properties": {
                    "panel_credentials": {
                        "$ref": "#/components/schemas/FeatherCloudCredentialPair"
                    },
                    "cloud_credentials": {
                        "$ref": "#/components/schemas/FeatherCloudCredentialPair"
                    }
                },
                "type": "object"
            },
            "OnlineAddon": {
                "properties": {
                    "id": {
                        "description": "Addon ID",
                        "type": "integer"
                    },
                    "identifier": {
                        "description": "Addon identifier",
                        "type": "string"
                    },
                    "name": {
                        "description": "Addon display name",
                        "type": "string"
                    },
                    "description": {
                        "description": "Addon description",
                        "type": "string"
                    },
                    "icon": {
                        "description": "Addon icon URL",
                        "type": "string",
                        "nullable": true
                    },
                    "website": {
                        "description": "Addon website URL",
                        "type": "string"
                    },
                    "author": {
                        "description": "Addon author",
                        "type": "string"
                    },
                    "author_email": {
                        "description": "Author email",
                        "type": "string"
                    },
                    "maintainers": {
                        "description": "Addon maintainers",
                        "type": "array",
                        "items": {
                            "type": "string"
                        }
                    },
                    "tags": {
                        "description": "Addon tags",
                        "type": "array",
                        "items": {
                            "type": "string"
                        }
                    },
                    "verified": {
                        "description": "Whether addon is verified",
                        "type": "boolean"
                    },
                    "premium": {
                        "description": "Whether addon is premium (0 = free, 1 = premium)",
                        "type": "integer"
                    },
                    "premium_link": {
                        "description": "Purchase link for premium addon",
                        "type": "string"
                    },
                    "premium_price": {
                        "description": "Price for premium addon in EUR",
                        "type": "string"
                    },
                    "downloads": {
                        "description": "Download count",
                        "type": "integer"
                    },
                    "created_at": {
                        "description": "Creation timestamp",
                        "type": "string",
                        "format": "date-time"
                    },
                    "updated_at": {
                        "description": "Last update timestamp",
                        "type": "string",
                        "format": "date-time"
                    },
                    "latest_version": {
                        "description": "Latest published version metadata when available",
                        "properties": {
                            "version": {
                                "description": "Latest version number",
                                "type": "string",
                                "nullable": true
                            },
                            "download_url": {
                                "description": "Download URL",
                                "type": "string",
                                "nullable": true
                            },
                            "file_size": {
                                "description": "File size in bytes",
                                "type": "integer",
                                "nullable": true
                            },
                            "created_at": {
                                "description": "Version creation timestamp",
                                "type": "string",
                                "format": "date-time",
                                "nullable": true
                            },
                            "changelog": {
                                "type": "string",
                                "nullable": true
                            },
                            "dependencies": {
                                "type": "array",
                                "items": {
                                    "type": "object"
                                },
                                "nullable": true
                            },
                            "min_panel_version": {
                                "type": "string",
                                "nullable": true
                            },
                            "max_panel_version": {
                                "type": "string",
                                "nullable": true
                            }
                        },
                        "type": "object",
                        "nullable": true
                    }
                },
                "type": "object"
            },
            "OnlineInstall": {
                "required": [
                    "identifier"
                ],
                "properties": {
                    "identifier": {
                        "description": "Addon identifier to install",
                        "type": "string",
                        "pattern": "^[a-zA-Z0-9_\\-]+$"
                    },
                    "queued_identifiers": {
                        "description": "Identifiers selected for the same install session; plugin= dependencies in this list are installed automatically before this addon when missing.",
                        "type": "array",
                        "items": {
                            "type": "string"
                        }
                    }
                },
                "type": "object"
            },
            "Database": {
                "properties": {
                    "id": {
                        "description": "Database ID",
                        "type": "integer"
                    },
                    "name": {
                        "description": "Database name",
                        "type": "string"
                    },
                    "node_id": {
                        "description": "Node ID (optional)",
                        "type": "integer",
                        "nullable": true
                    },
                    "database_type": {
                        "description": "Database type",
                        "type": "string",
                        "enum": [
                            "mysql",
                            "postgresql",
                            "mariadb"
                        ]
                    },
                    "database_port": {
                        "description": "Database port",
                        "type": "integer",
                        "maximum": 65535,
                        "minimum": 1
                    },
                    "database_username": {
                        "description": "Database username",
                        "type": "string"
                    },
                    "database_host": {
                        "description": "Database host",
                        "type": "string"
                    },
                    "database_subdomain": {
                        "description": "Optional custom hostname shown to users for database access (e.g. db1.node.domain.de)",
                        "type": "string",
                        "nullable": true
                    },
                    "created_at": {
                        "description": "Creation timestamp",
                        "type": "string",
                        "format": "date-time"
                    },
                    "updated_at": {
                        "description": "Last update timestamp",
                        "type": "string",
                        "format": "date-time"
                    }
                },
                "type": "object"
            },
            "DatabaseCreate": {
                "required": [
                    "name",
                    "database_type",
                    "database_port",
                    "database_username",
                    "database_password",
                    "database_host"
                ],
                "properties": {
                    "name": {
                        "description": "Database name",
                        "type": "string",
                        "maxLength": 255,
                        "minLength": 1
                    },
                    "node_id": {
                        "description": "Node ID (optional)",
                        "type": "integer",
                        "minimum": 1,
                        "nullable": true
                    },
                    "database_type": {
                        "description": "Database type",
                        "type": "string",
                        "enum": [
                            "mysql",
                            "postgresql",
                            "mariadb"
                        ]
                    },
                    "database_port": {
                        "description": "Database port",
                        "type": "integer",
                        "maximum": 65535,
                        "minimum": 1
                    },
                    "database_username": {
                        "description": "Database username",
                        "type": "string",
                        "maxLength": 255,
                        "minLength": 1
                    },
                    "database_password": {
                        "description": "Database password",
                        "type": "string",
                        "maxLength": 255,
                        "minLength": 1
                    },
                    "database_host": {
                        "description": "Database host",
                        "type": "string",
                        "maxLength": 255,
                        "minLength": 1
                    },
                    "database_subdomain": {
                        "description": "Optional custom hostname shown to users for database access",
                        "type": "string",
                        "maxLength": 255,
                        "minLength": 1,
                        "nullable": true
                    },
                    "id": {
                        "description": "Optional database ID (useful for migrations from other platforms)",
                        "type": "integer",
                        "nullable": true
                    }
                },
                "type": "object"
            },
            "DatabaseUpdate": {
                "properties": {
                    "name": {
                        "description": "Database name",
                        "type": "string",
                        "maxLength": 255,
                        "minLength": 1
                    },
                    "node_id": {
                        "description": "Node ID",
                        "type": "integer",
                        "minimum": 1
                    },
                    "database_type": {
                        "description": "Database type",
                        "type": "string",
                        "enum": [
                            "mysql",
                            "postgresql",
                            "mariadb"
                        ]
                    },
                    "database_port": {
                        "description": "Database port",
                        "type": "integer",
                        "maximum": 65535,
                        "minimum": 1
                    },
                    "database_username": {
                        "description": "Database username",
                        "type": "string",
                        "maxLength": 255,
                        "minLength": 1
                    },
                    "database_password": {
                        "description": "Database password",
                        "type": "string",
                        "maxLength": 255,
                        "minLength": 1
                    },
                    "database_host": {
                        "description": "Database host",
                        "type": "string",
                        "maxLength": 255,
                        "minLength": 1
                    },
                    "database_subdomain": {
                        "description": "Optional custom hostname shown to users for database access",
                        "type": "string",
                        "maxLength": 255,
                        "minLength": 1,
                        "nullable": true
                    }
                },
                "type": "object"
            },
            "ConnectionTest": {
                "required": [
                    "database_type",
                    "database_port",
                    "database_username",
                    "database_password",
                    "database_host"
                ],
                "properties": {
                    "database_type": {
                        "description": "Database type",
                        "type": "string",
                        "enum": [
                            "mysql",
                            "postgresql",
                            "mariadb"
                        ]
                    },
                    "database_port": {
                        "description": "Database port",
                        "type": "integer",
                        "maximum": 65535,
                        "minimum": 1
                    },
                    "database_username": {
                        "description": "Database username",
                        "type": "string"
                    },
                    "database_password": {
                        "description": "Database password",
                        "type": "string"
                    },
                    "database_host": {
                        "description": "Database host",
                        "type": "string"
                    }
                },
                "type": "object"
            },
            "FileItem": {
                "properties": {
                    "name": {
                        "description": "File or directory name",
                        "type": "string"
                    },
                    "path": {
                        "description": "Relative path from project root",
                        "type": "string"
                    },
                    "isDirectory": {
                        "description": "Whether the item is a directory",
                        "type": "boolean"
                    },
                    "size": {
                        "description": "File size in bytes (null for directories)",
                        "type": "integer",
                        "nullable": true
                    },
                    "modified": {
                        "description": "Last modification timestamp",
                        "type": "integer"
                    },
                    "permissions": {
                        "description": "File permissions in octal format",
                        "type": "string"
                    }
                },
                "type": "object"
            },
            "FileContent": {
                "properties": {
                    "path": {
                        "description": "File path",
                        "type": "string"
                    },
                    "content": {
                        "description": "File content (null for binary files)",
                        "type": "string",
                        "nullable": true
                    },
                    "isBinary": {
                        "description": "Whether the file is binary",
                        "type": "boolean"
                    },
                    "mimeType": {
                        "description": "MIME type of the file",
                        "type": "string"
                    },
                    "extension": {
                        "description": "File extension",
                        "type": "string"
                    },
                    "size": {
                        "description": "File size in bytes",
                        "type": "integer"
                    },
                    "modified": {
                        "description": "Last modification timestamp",
                        "type": "integer"
                    }
                },
                "type": "object"
            },
            "FileSave": {
                "required": [
                    "path",
                    "content"
                ],
                "properties": {
                    "path": {
                        "description": "File path to save",
                        "type": "string"
                    },
                    "content": {
                        "description": "File content to write",
                        "type": "string"
                    }
                },
                "type": "object"
            },
            "FileCreate": {
                "required": [
                    "path"
                ],
                "properties": {
                    "path": {
                        "description": "Path for the new file or directory",
                        "type": "string"
                    },
                    "isDirectory": {
                        "description": "Whether to create a directory (default: false)",
                        "type": "boolean",
                        "default": false
                    }
                },
                "type": "object"
            },
            "FileDelete": {
                "required": [
                    "path"
                ],
                "properties": {
                    "path": {
                        "description": "Path of the file or directory to delete",
                        "type": "string"
                    }
                },
                "type": "object"
            },
            "Image": {
                "properties": {
                    "id": {
                        "description": "Image ID",
                        "type": "integer"
                    },
                    "name": {
                        "description": "Image name",
                        "type": "string"
                    },
                    "url": {
                        "description": "Image URL",
                        "type": "string"
                    },
                    "created_at": {
                        "description": "Creation timestamp",
                        "type": "string",
                        "format": "date-time"
                    },
                    "updated_at": {
                        "description": "Last update timestamp",
                        "type": "string",
                        "format": "date-time"
                    }
                },
                "type": "object"
            },
            "ImagePagination": {
                "properties": {
                    "current_page": {
                        "description": "Current page number",
                        "type": "integer"
                    },
                    "per_page": {
                        "description": "Records per page",
                        "type": "integer"
                    },
                    "total_records": {
                        "description": "Total number of records",
                        "type": "integer"
                    },
                    "total_pages": {
                        "description": "Total number of pages",
                        "type": "integer"
                    },
                    "has_next": {
                        "description": "Whether there is a next page",
                        "type": "boolean"
                    },
                    "has_prev": {
                        "description": "Whether there is a previous page",
                        "type": "boolean"
                    },
                    "from": {
                        "description": "Starting record number",
                        "type": "integer"
                    },
                    "to": {
                        "description": "Ending record number",
                        "type": "integer"
                    }
                },
                "type": "object"
            },
            "ImageCreate": {
                "required": [
                    "name",
                    "url"
                ],
                "properties": {
                    "name": {
                        "description": "Image name",
                        "type": "string",
                        "maxLength": 191,
                        "minLength": 1
                    },
                    "url": {
                        "description": "Image URL",
                        "type": "string",
                        "maxLength": 191,
                        "minLength": 1
                    }
                },
                "type": "object"
            },
            "ImageUpdate": {
                "properties": {
                    "name": {
                        "description": "Image name",
                        "type": "string",
                        "maxLength": 191,
                        "minLength": 1
                    },
                    "url": {
                        "description": "Image URL",
                        "type": "string",
                        "maxLength": 191,
                        "minLength": 1
                    }
                },
                "type": "object"
            },
            "ImageUpload": {
                "required": [
                    "name"
                ],
                "properties": {
                    "name": {
                        "description": "Image name",
                        "type": "string",
                        "maxLength": 191,
                        "minLength": 1
                    },
                    "image": {
                        "description": "Image file (JPG, PNG, GIF, WebP, max 10MB)",
                        "type": "string",
                        "format": "binary"
                    }
                },
                "type": "object"
            },
            "UserAnalyticsOverview": {
                "properties": {
                    "total": {
                        "description": "Total user count",
                        "type": "integer"
                    },
                    "active": {
                        "description": "Active users (not banned)",
                        "type": "integer"
                    },
                    "banned": {
                        "description": "Banned users",
                        "type": "integer"
                    },
                    "verified": {
                        "description": "Email verified users",
                        "type": "integer"
                    },
                    "two_fa_enabled": {
                        "description": "Users with 2FA enabled",
                        "type": "integer"
                    },
                    "unverified": {
                        "description": "Unverified users",
                        "type": "integer"
                    },
                    "percentage_verified": {
                        "description": "Percentage of verified users",
                        "type": "number",
                        "format": "float"
                    },
                    "percentage_banned": {
                        "description": "Percentage of banned users",
                        "type": "number",
                        "format": "float"
                    },
                    "percentage_two_fa": {
                        "description": "Percentage of users with 2FA",
                        "type": "number",
                        "format": "float"
                    }
                },
                "type": "object"
            },
            "RoleDistribution": {
                "properties": {
                    "role_id": {
                        "description": "Role ID",
                        "type": "integer"
                    },
                    "role_name": {
                        "description": "Role name",
                        "type": "string"
                    },
                    "role_display_name": {
                        "description": "Role display name",
                        "type": "string"
                    },
                    "role_color": {
                        "description": "Role color",
                        "type": "string"
                    },
                    "user_count": {
                        "description": "Number of users with this role",
                        "type": "integer"
                    },
                    "percentage": {
                        "description": "Percentage of total users",
                        "type": "number",
                        "format": "float"
                    }
                },
                "type": "object"
            },
            "RegistrationTrend": {
                "properties": {
                    "date": {
                        "description": "Date",
                        "type": "string",
                        "format": "date"
                    },
                    "count": {
                        "description": "Number of registrations",
                        "type": "integer"
                    }
                },
                "type": "object"
            },
            "TopUser": {
                "properties": {
                    "id": {
                        "description": "User ID",
                        "type": "integer"
                    },
                    "uuid": {
                        "description": "User UUID",
                        "type": "string"
                    },
                    "username": {
                        "description": "Username",
                        "type": "string"
                    },
                    "email": {
                        "description": "Email address",
                        "type": "string"
                    },
                    "first_name": {
                        "description": "First name",
                        "type": "string"
                    },
                    "last_name": {
                        "description": "Last name",
                        "type": "string"
                    },
                    "server_count": {
                        "description": "Number of servers owned",
                        "type": "integer"
                    }
                },
                "type": "object"
            },
            "KnowledgebaseCategory": {
                "properties": {
                    "id": {
                        "description": "Category ID",
                        "type": "integer"
                    },
                    "name": {
                        "description": "Category name",
                        "type": "string"
                    },
                    "slug": {
                        "description": "Category slug",
                        "type": "string"
                    },
                    "icon": {
                        "description": "Category icon URL",
                        "type": "string"
                    },
                    "description": {
                        "description": "Category description",
                        "type": "string",
                        "nullable": true
                    },
                    "position": {
                        "description": "Category position for sorting",
                        "type": "integer"
                    },
                    "created_at": {
                        "description": "Creation timestamp",
                        "type": "string",
                        "format": "date-time"
                    },
                    "updated_at": {
                        "description": "Last update timestamp",
                        "type": "string",
                        "format": "date-time"
                    }
                },
                "type": "object"
            },
            "KnowledgebaseArticle": {
                "properties": {
                    "id": {
                        "description": "Article ID",
                        "type": "integer"
                    },
                    "category_id": {
                        "description": "Category ID",
                        "type": "integer"
                    },
                    "title": {
                        "description": "Article title",
                        "type": "string"
                    },
                    "slug": {
                        "description": "Article slug",
                        "type": "string"
                    },
                    "icon": {
                        "description": "Article icon/logo URL",
                        "type": "string",
                        "nullable": true
                    },
                    "content": {
                        "description": "Article content",
                        "type": "string"
                    },
                    "author_id": {
                        "description": "Author user ID",
                        "type": "integer"
                    },
                    "status": {
                        "description": "Article status",
                        "type": "string",
                        "enum": [
                            "draft",
                            "published",
                            "archived"
                        ]
                    },
                    "pinned": {
                        "description": "Whether article is pinned",
                        "type": "string",
                        "enum": [
                            "false",
                            "true"
                        ]
                    },
                    "sort_order": {
                        "description": "Article sort order for positioning",
                        "type": "integer"
                    },
                    "published_at": {
                        "description": "Publication timestamp",
                        "type": "string",
                        "format": "date-time",
                        "nullable": true
                    },
                    "created_at": {
                        "description": "Creation timestamp",
                        "type": "string",
                        "format": "date-time"
                    },
                    "updated_at": {
                        "description": "Last update timestamp",
                        "type": "string",
                        "format": "date-time"
                    }
                },
                "type": "object"
            },
            "KnowledgebasePagination": {
                "properties": {
                    "current_page": {
                        "description": "Current page number",
                        "type": "integer"
                    },
                    "per_page": {
                        "description": "Records per page",
                        "type": "integer"
                    },
                    "total_records": {
                        "description": "Total number of records",
                        "type": "integer"
                    },
                    "total_pages": {
                        "description": "Total number of pages",
                        "type": "integer"
                    },
                    "has_next": {
                        "description": "Whether there is a next page",
                        "type": "boolean"
                    },
                    "has_prev": {
                        "description": "Whether there is a previous page",
                        "type": "boolean"
                    },
                    "from": {
                        "description": "Starting record number",
                        "type": "integer"
                    },
                    "to": {
                        "description": "Ending record number",
                        "type": "integer"
                    }
                },
                "type": "object"
            },
            "KnowledgebaseCategoryCreate": {
                "required": [
                    "name",
                    "icon"
                ],
                "properties": {
                    "name": {
                        "description": "Category name",
                        "type": "string",
                        "maxLength": 255,
                        "minLength": 1
                    },
                    "slug": {
                        "description": "Category slug",
                        "type": "string",
                        "maxLength": 255,
                        "minLength": 1
                    },
                    "icon": {
                        "description": "Category icon URL",
                        "type": "string",
                        "maxLength": 255,
                        "minLength": 1
                    },
                    "description": {
                        "description": "Category description",
                        "type": "string",
                        "nullable": true
                    },
                    "position": {
                        "description": "Category position for sorting",
                        "type": "integer",
                        "default": 0,
                        "nullable": true
                    }
                },
                "type": "object"
            },
            "KnowledgebaseCategoryUpdate": {
                "properties": {
                    "name": {
                        "description": "Category name",
                        "type": "string",
                        "maxLength": 255,
                        "minLength": 1
                    },
                    "slug": {
                        "description": "Category slug",
                        "type": "string",
                        "maxLength": 255,
                        "minLength": 1
                    },
                    "icon": {
                        "description": "Category icon URL",
                        "type": "string",
                        "maxLength": 255,
                        "minLength": 1
                    },
                    "description": {
                        "description": "Category description",
                        "type": "string",
                        "nullable": true
                    },
                    "position": {
                        "description": "Category position for sorting",
                        "type": "integer",
                        "nullable": true
                    }
                },
                "type": "object"
            },
            "KnowledgebaseArticleCreate": {
                "required": [
                    "category_id",
                    "title",
                    "content",
                    "author_id"
                ],
                "properties": {
                    "category_id": {
                        "description": "Category ID",
                        "type": "integer"
                    },
                    "title": {
                        "description": "Article title",
                        "type": "string",
                        "maxLength": 255,
                        "minLength": 1
                    },
                    "slug": {
                        "description": "Article slug",
                        "type": "string",
                        "maxLength": 255,
                        "minLength": 1
                    },
                    "icon": {
                        "description": "Article icon/logo URL",
                        "type": "string",
                        "maxLength": 255,
                        "nullable": true
                    },
                    "content": {
                        "description": "Article content",
                        "type": "string"
                    },
                    "author_id": {
                        "description": "Author user ID",
                        "type": "integer"
                    },
                    "status": {
                        "description": "Article status",
                        "type": "string",
                        "default": "draft",
                        "enum": [
                            "draft",
                            "published",
                            "archived"
                        ],
                        "nullable": true
                    },
                    "pinned": {
                        "description": "Whether article is pinned",
                        "type": "boolean",
                        "default": false,
                        "nullable": true
                    },
                    "sort_order": {
                        "description": "Article sort order for positioning",
                        "type": "integer",
                        "default": 0,
                        "nullable": true
                    },
                    "published_at": {
                        "description": "Publication timestamp",
                        "type": "string",
                        "format": "date-time",
                        "nullable": true
                    }
                },
                "type": "object"
            },
            "KnowledgebaseArticleUpdate": {
                "properties": {
                    "category_id": {
                        "description": "Category ID",
                        "type": "integer"
                    },
                    "title": {
                        "description": "Article title",
                        "type": "string",
                        "maxLength": 255,
                        "minLength": 1
                    },
                    "slug": {
                        "description": "Article slug",
                        "type": "string",
                        "maxLength": 255,
                        "minLength": 1
                    },
                    "icon": {
                        "description": "Article icon/logo URL",
                        "type": "string",
                        "maxLength": 255,
                        "nullable": true
                    },
                    "content": {
                        "description": "Article content",
                        "type": "string"
                    },
                    "author_id": {
                        "description": "Author user ID",
                        "type": "integer"
                    },
                    "status": {
                        "description": "Article status",
                        "type": "string",
                        "enum": [
                            "draft",
                            "published",
                            "archived"
                        ]
                    },
                    "pinned": {
                        "description": "Whether article is pinned",
                        "type": "boolean"
                    },
                    "sort_order": {
                        "description": "Article sort order for positioning",
                        "type": "integer"
                    },
                    "published_at": {
                        "description": "Publication timestamp",
                        "type": "string",
                        "format": "date-time",
                        "nullable": true
                    }
                },
                "type": "object"
            },
            "KnowledgebaseArticleReorder": {
                "required": [
                    "articles"
                ],
                "properties": {
                    "articles": {
                        "description": "Array of articles with their new sort orders",
                        "type": "array",
                        "items": {
                            "properties": {
                                "id": {
                                    "description": "Article ID",
                                    "type": "integer"
                                },
                                "sort_order": {
                                    "description": "New sort order value",
                                    "type": "integer"
                                }
                            },
                            "type": "object"
                        }
                    }
                },
                "type": "object"
            },
            "LanguageStat": {
                "properties": {
                    "locale": {
                        "description": "Locale code",
                        "type": "string"
                    },
                    "name": {
                        "description": "Language name",
                        "type": "string"
                    },
                    "user_count": {
                        "description": "Number of users",
                        "type": "integer"
                    },
                    "percentage": {
                        "description": "Percentage of total users",
                        "type": "number",
                        "format": "float"
                    }
                },
                "type": "object"
            },
            "LanguageTrend": {
                "properties": {
                    "locale": {
                        "description": "Locale code",
                        "type": "string"
                    },
                    "month": {
                        "description": "Month (YYYY-MM)",
                        "type": "string"
                    },
                    "count": {
                        "description": "Number of new users",
                        "type": "integer"
                    }
                },
                "type": "object"
            },
            "LdapProvider": {
                "properties": {
                    "id": {
                        "type": "integer"
                    },
                    "uuid": {
                        "type": "string"
                    },
                    "name": {
                        "type": "string"
                    },
                    "host": {
                        "type": "string"
                    },
                    "port": {
                        "type": "integer"
                    },
                    "use_tls": {
                        "type": "string",
                        "enum": [
                            "true",
                            "false"
                        ]
                    },
                    "use_ssl": {
                        "type": "string",
                        "enum": [
                            "true",
                            "false"
                        ]
                    },
                    "bind_dn": {
                        "type": "string"
                    },
                    "base_dn": {
                        "type": "string"
                    },
                    "user_filter": {
                        "type": "string"
                    },
                    "username_attribute": {
                        "type": "string"
                    },
                    "email_attribute": {
                        "type": "string"
                    },
                    "auto_provision": {
                        "type": "string",
                        "enum": [
                            "true",
                            "false"
                        ]
                    },
                    "enabled": {
                        "type": "string",
                        "enum": [
                            "true",
                            "false"
                        ]
                    }
                },
                "type": "object"
            },
            "Location": {
                "properties": {
                    "id": {
                        "description": "Location ID",
                        "type": "integer"
                    },
                    "name": {
                        "description": "Location name",
                        "type": "string"
                    },
                    "description": {
                        "description": "Location description",
                        "type": "string",
                        "nullable": true
                    },
                    "flag_code": {
                        "description": "ISO 3166-1 alpha-2 country code for flag display",
                        "type": "string",
                        "nullable": true
                    },
                    "type": {
                        "description": "Location purpose type (immutable after creation)",
                        "type": "string",
                        "enum": [
                            "game",
                            "vps",
                            "web"
                        ]
                    },
                    "created_at": {
                        "description": "Creation timestamp",
                        "type": "string",
                        "format": "date-time"
                    },
                    "updated_at": {
                        "description": "Last update timestamp",
                        "type": "string",
                        "format": "date-time"
                    }
                },
                "type": "object"
            },
            "LocationPagination": {
                "properties": {
                    "current_page": {
                        "description": "Current page number",
                        "type": "integer"
                    },
                    "per_page": {
                        "description": "Records per page",
                        "type": "integer"
                    },
                    "total_records": {
                        "description": "Total number of records",
                        "type": "integer"
                    },
                    "total_pages": {
                        "description": "Total number of pages",
                        "type": "integer"
                    },
                    "has_next": {
                        "description": "Whether there is a next page",
                        "type": "boolean"
                    },
                    "has_prev": {
                        "description": "Whether there is a previous page",
                        "type": "boolean"
                    },
                    "from": {
                        "description": "Starting record number",
                        "type": "integer"
                    },
                    "to": {
                        "description": "Ending record number",
                        "type": "integer"
                    }
                },
                "type": "object"
            },
            "LocationCreate": {
                "required": [
                    "name",
                    "type"
                ],
                "properties": {
                    "name": {
                        "description": "Location name",
                        "type": "string",
                        "maxLength": 255,
                        "minLength": 2
                    },
                    "description": {
                        "description": "Location description",
                        "type": "string",
                        "nullable": true
                    },
                    "flag_code": {
                        "description": "ISO 3166-1 alpha-2 country code (e.g., \"us\", \"ua\") for flag display",
                        "type": "string",
                        "nullable": true
                    },
                    "type": {
                        "description": "Location purpose: game hosting, VPS/VDS, or web hosting (immutable after creation)",
                        "type": "string",
                        "enum": [
                            "game",
                            "vps",
                            "web"
                        ]
                    },
                    "webhosting_alpha_accepted": {
                        "description": "Required to be true when creating a Web Hosting location",
                        "type": "boolean"
                    },
                    "id": {
                        "description": "Optional location ID (useful for migrations from other platforms)",
                        "type": "integer",
                        "nullable": true
                    }
                },
                "type": "object"
            },
            "LocationUpdate": {
                "properties": {
                    "name": {
                        "description": "Location name",
                        "type": "string",
                        "maxLength": 255,
                        "minLength": 2
                    },
                    "description": {
                        "description": "Location description",
                        "type": "string",
                        "nullable": true
                    },
                    "flag_code": {
                        "description": "ISO 3166-1 alpha-2 country code (e.g., \"us\", \"ua\") for flag display. Set to null to remove the flag.",
                        "type": "string",
                        "nullable": true
                    },
                    "type": {
                        "description": "Location purpose: game hosting, VPS/VDS, or web hosting (immutable after creation)",
                        "type": "string",
                        "enum": [
                            "game",
                            "vps",
                            "web"
                        ]
                    }
                },
                "type": "object"
            },
            "LogFile": {
                "properties": {
                    "name": {
                        "description": "Log file name",
                        "type": "string"
                    },
                    "size": {
                        "description": "File size in bytes",
                        "type": "integer"
                    },
                    "modified": {
                        "description": "Last modification timestamp",
                        "type": "integer"
                    },
                    "type": {
                        "description": "Log type (web, app, mail, runner, unknown)",
                        "type": "string",
                        "enum": [
                            "web",
                            "app",
                            "mail",
                            "runner",
                            "unknown"
                        ]
                    }
                },
                "type": "object"
            },
            "LogContent": {
                "properties": {
                    "logs": {
                        "description": "Log content as string",
                        "type": "string"
                    },
                    "file": {
                        "description": "Log file name",
                        "type": "string"
                    },
                    "type": {
                        "description": "Log type",
                        "type": "string",
                        "enum": [
                            "web",
                            "app",
                            "mail",
                            "runner"
                        ]
                    },
                    "lines_count": {
                        "description": "Number of lines in the log content",
                        "type": "integer"
                    }
                },
                "type": "object"
            },
            "LogClear": {
                "required": [
                    "type"
                ],
                "properties": {
                    "type": {
                        "description": "Log type to clear",
                        "type": "string",
                        "default": "web",
                        "enum": [
                            "web",
                            "app",
                            "mail",
                            "runner"
                        ]
                    }
                },
                "type": "object"
            },
            "MailTemplate": {
                "properties": {
                    "id": {
                        "description": "Mail template ID",
                        "type": "integer"
                    },
                    "name": {
                        "description": "Template name",
                        "type": "string"
                    },
                    "subject": {
                        "description": "Email subject",
                        "type": "string"
                    },
                    "body": {
                        "description": "Email body content",
                        "type": "string"
                    },
                    "deleted": {
                        "description": "Soft delete status",
                        "type": "string",
                        "enum": [
                            "true",
                            "false"
                        ]
                    },
                    "created_at": {
                        "description": "Creation timestamp",
                        "type": "string",
                        "format": "date-time"
                    },
                    "updated_at": {
                        "description": "Last update timestamp",
                        "type": "string",
                        "format": "date-time"
                    }
                },
                "type": "object"
            },
            "MailTemplatePagination": {
                "properties": {
                    "current_page": {
                        "description": "Current page number",
                        "type": "integer"
                    },
                    "per_page": {
                        "description": "Records per page",
                        "type": "integer"
                    },
                    "total_records": {
                        "description": "Total number of records",
                        "type": "integer"
                    },
                    "total_pages": {
                        "description": "Total number of pages",
                        "type": "integer"
                    },
                    "has_next": {
                        "description": "Whether there is a next page",
                        "type": "boolean"
                    },
                    "has_prev": {
                        "description": "Whether there is a previous page",
                        "type": "boolean"
                    },
                    "from": {
                        "description": "Starting record number",
                        "type": "integer"
                    },
                    "to": {
                        "description": "Ending record number",
                        "type": "integer"
                    }
                },
                "type": "object"
            },
            "MailTemplateCreate": {
                "required": [
                    "name",
                    "subject",
                    "body"
                ],
                "properties": {
                    "name": {
                        "description": "Template name",
                        "type": "string",
                        "maxLength": 255,
                        "minLength": 1
                    },
                    "subject": {
                        "description": "Email subject",
                        "type": "string",
                        "maxLength": 255,
                        "minLength": 1
                    },
                    "body": {
                        "description": "Email body content",
                        "type": "string",
                        "maxLength": 65535,
                        "minLength": 1
                    }
                },
                "type": "object"
            },
            "MailTemplateUpdate": {
                "properties": {
                    "name": {
                        "description": "Template name",
                        "type": "string",
                        "maxLength": 255,
                        "minLength": 1
                    },
                    "subject": {
                        "description": "Email subject",
                        "type": "string",
                        "maxLength": 255,
                        "minLength": 1
                    },
                    "body": {
                        "description": "Email body content",
                        "type": "string",
                        "maxLength": 65535,
                        "minLength": 1
                    }
                },
                "type": "object"
            },
            "MassEmail": {
                "required": [
                    "subject",
                    "body"
                ],
                "properties": {
                    "subject": {
                        "description": "Email subject",
                        "type": "string",
                        "maxLength": 255,
                        "minLength": 1
                    },
                    "body": {
                        "description": "Email body content",
                        "type": "string",
                        "maxLength": 65535,
                        "minLength": 1
                    }
                },
                "type": "object"
            },
            "MassEmailResult": {
                "properties": {
                    "queued_count": {
                        "description": "Number of emails successfully queued",
                        "type": "integer"
                    },
                    "failed_count": {
                        "description": "Number of emails that failed to queue",
                        "type": "integer"
                    },
                    "total_users": {
                        "description": "Total number of valid users found",
                        "type": "integer"
                    }
                },
                "type": "object"
            },
            "Node": {
                "properties": {
                    "id": {
                        "description": "Node ID",
                        "type": "integer"
                    },
                    "uuid": {
                        "description": "Node UUID",
                        "type": "string"
                    },
                    "name": {
                        "description": "Node name",
                        "type": "string"
                    },
                    "fqdn": {
                        "description": "Fully qualified domain name",
                        "type": "string"
                    },
                    "location_id": {
                        "description": "Location ID",
                        "type": "integer"
                    },
                    "daemon_token_id": {
                        "description": "Daemon token ID",
                        "type": "string"
                    },
                    "daemon_token": {
                        "description": "Daemon authentication token",
                        "type": "string"
                    },
                    "daemon_type": {
                        "description": "Node daemon implementation (FeatherWings or Calagopus wings-rs)",
                        "type": "string",
                        "enum": [
                            "featherwings",
                            "wings_rs"
                        ]
                    },
                    "capabilities": {
                        "description": "Feature capability flags for this daemon type",
                        "type": "object",
                        "additionalProperties": {
                            "type": "boolean"
                        }
                    },
                    "public_ip_v4": {
                        "description": "Public IPv4 address reachable by clients. Required when using the subdomain manager.",
                        "type": "string",
                        "nullable": true
                    },
                    "public_ip_v6": {
                        "description": "Public IPv6 address reachable by clients.",
                        "type": "string",
                        "nullable": true
                    },
                    "sftp_subdomain": {
                        "description": "Custom subdomain for SFTP access (e.g., sftp.node.domain.de). DNS must be configured externally.",
                        "type": "string",
                        "example": "sftp.node.domain.de",
                        "nullable": true
                    },
                    "created_at": {
                        "description": "Creation timestamp",
                        "type": "string",
                        "format": "date-time"
                    },
                    "updated_at": {
                        "description": "Last update timestamp",
                        "type": "string",
                        "format": "date-time"
                    }
                },
                "type": "object"
            },
            "NodePagination": {
                "properties": {
                    "current_page": {
                        "description": "Current page number",
                        "type": "integer"
                    },
                    "per_page": {
                        "description": "Records per page",
                        "type": "integer"
                    },
                    "total_records": {
                        "description": "Total number of records",
                        "type": "integer"
                    },
                    "total_pages": {
                        "description": "Total number of pages",
                        "type": "integer"
                    },
                    "has_next": {
                        "description": "Whether there is a next page",
                        "type": "boolean"
                    },
                    "has_prev": {
                        "description": "Whether there is a previous page",
                        "type": "boolean"
                    },
                    "from": {
                        "description": "Starting record number",
                        "type": "integer"
                    },
                    "to": {
                        "description": "Ending record number",
                        "type": "integer"
                    }
                },
                "type": "object"
            },
            "NodeCreate": {
                "required": [
                    "name",
                    "fqdn",
                    "location_id"
                ],
                "properties": {
                    "name": {
                        "description": "Node name",
                        "type": "string",
                        "maxLength": 255,
                        "minLength": 1
                    },
                    "fqdn": {
                        "description": "Fully qualified domain name",
                        "type": "string",
                        "maxLength": 255,
                        "minLength": 1
                    },
                    "location_id": {
                        "description": "Location ID",
                        "type": "integer",
                        "minimum": 1
                    },
                    "daemon_type": {
                        "description": "Daemon implementation for this node",
                        "type": "string",
                        "default": "featherwings",
                        "enum": [
                            "featherwings",
                            "wings_rs"
                        ]
                    },
                    "public_ip_v4": {
                        "description": "Public IPv4 address reachable by clients. Set this if you plan to use the subdomain manager.",
                        "type": "string",
                        "example": "203.0.113.42",
                        "nullable": true
                    },
                    "public_ip_v6": {
                        "description": "Public IPv6 address reachable by clients.",
                        "type": "string",
                        "example": "2001:db8::10",
                        "nullable": true
                    },
                    "sftp_subdomain": {
                        "description": "Optional custom hostname for SFTP connections shown to users.",
                        "type": "string",
                        "example": "sftp.node.domain.de",
                        "nullable": true
                    },
                    "id": {
                        "description": "Optional node ID (useful for migrations from other platforms)",
                        "type": "integer",
                        "nullable": true
                    }
                },
                "type": "object"
            },
            "NodeUpdate": {
                "properties": {
                    "name": {
                        "description": "Node name",
                        "type": "string",
                        "maxLength": 255,
                        "minLength": 1
                    },
                    "fqdn": {
                        "description": "Fully qualified domain name",
                        "type": "string",
                        "maxLength": 255,
                        "minLength": 1
                    },
                    "location_id": {
                        "description": "Location ID",
                        "type": "integer",
                        "minimum": 1
                    },
                    "uuid": {
                        "description": "Node UUID (must be valid UUID format)",
                        "type": "string"
                    },
                    "daemon_type": {
                        "description": "Daemon implementation for this node",
                        "type": "string",
                        "enum": [
                            "featherwings",
                            "wings_rs"
                        ]
                    },
                    "public_ip_v4": {
                        "description": "Public IPv4 address reachable by clients. Set this if you plan to use the subdomain manager.",
                        "type": "string",
                        "nullable": true
                    },
                    "public_ip_v6": {
                        "description": "Public IPv6 address reachable by clients.",
                        "type": "string",
                        "nullable": true
                    },
                    "sftp_subdomain": {
                        "description": "Optional custom hostname for SFTP connections shown to users.",
                        "type": "string",
                        "nullable": true
                    }
                },
                "type": "object"
            },
            "Notification": {
                "properties": {
                    "id": {
                        "description": "Notification ID",
                        "type": "integer"
                    },
                    "user_id": {
                        "description": "Target user ID (null = global)",
                        "type": "integer",
                        "nullable": true
                    },
                    "server_id": {
                        "description": "Target server ID (null = account/global)",
                        "type": "integer",
                        "nullable": true
                    },
                    "title": {
                        "description": "Notification title",
                        "type": "string"
                    },
                    "message_markdown": {
                        "description": "Notification message in Markdown format",
                        "type": "string"
                    },
                    "type": {
                        "description": "Notification type",
                        "type": "string",
                        "enum": [
                            "info",
                            "warning",
                            "danger",
                            "success",
                            "error"
                        ]
                    },
                    "is_dismissible": {
                        "description": "Whether the notification can be dismissed",
                        "type": "boolean"
                    },
                    "is_sticky": {
                        "description": "Whether the notification stays until explicitly closed",
                        "type": "boolean"
                    },
                    "created_at": {
                        "description": "Creation timestamp",
                        "type": "string",
                        "format": "date-time"
                    },
                    "updated_at": {
                        "description": "Last update timestamp",
                        "type": "string",
                        "format": "date-time",
                        "nullable": true
                    }
                },
                "type": "object"
            },
            "NotificationPagination": {
                "properties": {
                    "current_page": {
                        "description": "Current page number",
                        "type": "integer"
                    },
                    "per_page": {
                        "description": "Records per page",
                        "type": "integer"
                    },
                    "total_records": {
                        "description": "Total number of records",
                        "type": "integer"
                    },
                    "total_pages": {
                        "description": "Total number of pages",
                        "type": "integer"
                    },
                    "has_next": {
                        "description": "Whether there is a next page",
                        "type": "boolean"
                    },
                    "has_prev": {
                        "description": "Whether there is a previous page",
                        "type": "boolean"
                    },
                    "from": {
                        "description": "Starting record number",
                        "type": "integer"
                    },
                    "to": {
                        "description": "Ending record number",
                        "type": "integer"
                    }
                },
                "type": "object"
            },
            "NotificationCreate": {
                "required": [
                    "title",
                    "message_markdown",
                    "type"
                ],
                "properties": {
                    "title": {
                        "description": "Notification title",
                        "type": "string",
                        "maxLength": 255,
                        "minLength": 1
                    },
                    "message_markdown": {
                        "description": "Notification message in Markdown format",
                        "type": "string",
                        "maxLength": 65535,
                        "minLength": 1
                    },
                    "type": {
                        "description": "Notification type",
                        "type": "string",
                        "enum": [
                            "info",
                            "warning",
                            "danger",
                            "success",
                            "error"
                        ]
                    },
                    "user_id": {
                        "description": "Target user ID (null = all users)",
                        "type": "integer",
                        "nullable": true
                    },
                    "server_id": {
                        "description": "Target server ID (optional; implies owner)",
                        "type": "integer",
                        "nullable": true
                    },
                    "send_email": {
                        "description": "Also email the target user (requires user or server target)",
                        "type": "boolean",
                        "nullable": true
                    },
                    "is_dismissible": {
                        "description": "Whether the notification can be dismissed (default: true)",
                        "type": "boolean",
                        "nullable": true
                    },
                    "is_sticky": {
                        "description": "Whether the notification stays until explicitly closed (default: false)",
                        "type": "boolean",
                        "nullable": true
                    }
                },
                "type": "object"
            },
            "NotificationUpdate": {
                "properties": {
                    "title": {
                        "description": "Notification title",
                        "type": "string",
                        "maxLength": 255,
                        "minLength": 1
                    },
                    "message_markdown": {
                        "description": "Notification message in Markdown format",
                        "type": "string",
                        "maxLength": 65535,
                        "minLength": 1
                    },
                    "type": {
                        "description": "Notification type",
                        "type": "string",
                        "enum": [
                            "info",
                            "warning",
                            "danger",
                            "success",
                            "error"
                        ]
                    },
                    "user_id": {
                        "description": "Target user ID (null = all users)",
                        "type": "integer",
                        "nullable": true
                    },
                    "server_id": {
                        "description": "Target server ID",
                        "type": "integer",
                        "nullable": true
                    },
                    "is_dismissible": {
                        "description": "Whether the notification can be dismissed",
                        "type": "boolean"
                    },
                    "is_sticky": {
                        "description": "Whether the notification stays until explicitly closed",
                        "type": "boolean"
                    }
                },
                "type": "object"
            },
            "OidcProvider": {
                "properties": {
                    "uuid": {
                        "description": "Provider UUID",
                        "type": "string",
                        "format": "uuid"
                    },
                    "name": {
                        "description": "Display name",
                        "type": "string"
                    },
                    "issuer_url": {
                        "description": "OIDC issuer URL",
                        "type": "string"
                    },
                    "client_id": {
                        "description": "OIDC client ID",
                        "type": "string"
                    },
                    "scopes": {
                        "description": "Space-separated scopes",
                        "type": "string"
                    },
                    "email_claim": {
                        "description": "Email claim name",
                        "type": "string"
                    },
                    "subject_claim": {
                        "description": "Subject claim name",
                        "type": "string"
                    },
                    "group_claim": {
                        "description": "Group/role claim name",
                        "type": "string",
                        "nullable": true
                    },
                    "group_value": {
                        "description": "Required group/role value",
                        "type": "string",
                        "nullable": true
                    },
                    "auto_provision": {
                        "description": "Auto provision users",
                        "type": "string",
                        "enum": [
                            "true",
                            "false"
                        ]
                    },
                    "require_email_verified": {
                        "description": "Require email_verified",
                        "type": "string",
                        "enum": [
                            "true",
                            "false"
                        ]
                    },
                    "enabled": {
                        "description": "Whether this provider is enabled",
                        "type": "string",
                        "enum": [
                            "true",
                            "false"
                        ]
                    }
                },
                "type": "object"
            },
            "Permission": {
                "properties": {
                    "id": {
                        "description": "Permission ID",
                        "type": "integer"
                    },
                    "role_id": {
                        "description": "Role ID",
                        "type": "integer"
                    },
                    "permission": {
                        "description": "Permission name",
                        "type": "string"
                    },
                    "created_at": {
                        "description": "Creation timestamp",
                        "type": "string",
                        "format": "date-time"
                    },
                    "updated_at": {
                        "description": "Last update timestamp",
                        "type": "string",
                        "format": "date-time"
                    }
                },
                "type": "object"
            },
            "PermissionPagination": {
                "properties": {
                    "current_page": {
                        "description": "Current page number",
                        "type": "integer"
                    },
                    "per_page": {
                        "description": "Records per page",
                        "type": "integer"
                    },
                    "total_records": {
                        "description": "Total number of records",
                        "type": "integer"
                    },
                    "total_pages": {
                        "description": "Total number of pages",
                        "type": "integer"
                    },
                    "has_next": {
                        "description": "Whether there is a next page",
                        "type": "boolean"
                    },
                    "has_prev": {
                        "description": "Whether there is a previous page",
                        "type": "boolean"
                    },
                    "from": {
                        "description": "Starting record number",
                        "type": "integer"
                    },
                    "to": {
                        "description": "Ending record number",
                        "type": "integer"
                    }
                },
                "type": "object"
            },
            "PermissionCreate": {
                "required": [
                    "role_id",
                    "permission"
                ],
                "properties": {
                    "role_id": {
                        "description": "Role ID",
                        "type": "integer",
                        "minimum": 1
                    },
                    "permission": {
                        "description": "Permission name",
                        "type": "string",
                        "maxLength": 255,
                        "minLength": 2
                    }
                },
                "type": "object"
            },
            "PermissionUpdate": {
                "properties": {
                    "role_id": {
                        "description": "Role ID",
                        "type": "integer",
                        "minimum": 1
                    },
                    "permission": {
                        "description": "Permission name",
                        "type": "string",
                        "maxLength": 255,
                        "minLength": 2
                    }
                },
                "type": "object"
            },
            "Plugin": {
                "properties": {
                    "name": {
                        "description": "Plugin name",
                        "type": "string"
                    },
                    "identifier": {
                        "description": "Plugin identifier",
                        "type": "string"
                    },
                    "description": {
                        "description": "Plugin description",
                        "type": "string"
                    },
                    "version": {
                        "description": "Plugin version",
                        "type": "string"
                    },
                    "target": {
                        "description": "Target FeatherPanel version",
                        "type": "string"
                    },
                    "author": {
                        "description": "Plugin authors",
                        "type": "array",
                        "items": {
                            "type": "string"
                        }
                    },
                    "icon": {
                        "description": "Plugin icon URL",
                        "type": "string"
                    },
                    "flags": {
                        "description": "Plugin flags",
                        "type": "array",
                        "items": {
                            "type": "string"
                        }
                    },
                    "dependencies": {
                        "description": "Plugin dependencies",
                        "type": "array",
                        "items": {
                            "type": "string"
                        }
                    },
                    "requiredConfigs": {
                        "description": "Required configuration keys",
                        "type": "array",
                        "items": {
                            "type": "string"
                        }
                    },
                    "status": {
                        "description": "Plugin status",
                        "type": "string"
                    },
                    "dependencies_met": {
                        "description": "Whether dependencies are met",
                        "type": "boolean"
                    },
                    "required_configs_set": {
                        "description": "Whether required configs are set",
                        "type": "boolean"
                    },
                    "settings": {
                        "description": "Plugin settings",
                        "type": "object"
                    },
                    "config": {
                        "description": "Plugin configuration schema",
                        "type": "array",
                        "items": {
                            "type": "object"
                        }
                    }
                },
                "type": "object"
            },
            "PluginCreate": {
                "required": [
                    "identifier",
                    "name"
                ],
                "properties": {
                    "identifier": {
                        "description": "Plugin identifier",
                        "type": "string",
                        "maxLength": 255,
                        "minLength": 1
                    },
                    "name": {
                        "description": "Plugin name",
                        "type": "string",
                        "maxLength": 255,
                        "minLength": 1
                    },
                    "description": {
                        "description": "Plugin description",
                        "type": "string"
                    },
                    "version": {
                        "description": "Plugin version",
                        "type": "string",
                        "default": "1.0.0"
                    },
                    "author": {
                        "description": "Plugin authors",
                        "type": "array",
                        "items": {
                            "type": "string"
                        }
                    },
                    "flags": {
                        "description": "Plugin flags",
                        "type": "array",
                        "items": {
                            "type": "string"
                        }
                    },
                    "dependencies": {
                        "description": "Plugin dependencies",
                        "type": "array",
                        "items": {
                            "type": "string"
                        }
                    },
                    "requiredConfigs": {
                        "description": "Required configuration keys",
                        "type": "array",
                        "items": {
                            "type": "string"
                        }
                    },
                    "configSchema": {
                        "description": "Configuration schema",
                        "type": "array",
                        "items": {
                            "type": "object"
                        }
                    }
                },
                "type": "object"
            },
            "PluginUpdate": {
                "properties": {
                    "name": {
                        "description": "Plugin name",
                        "type": "string"
                    },
                    "description": {
                        "description": "Plugin description",
                        "type": "string"
                    },
                    "version": {
                        "description": "Plugin version",
                        "type": "string"
                    },
                    "target": {
                        "description": "Target FeatherPanel version",
                        "type": "string"
                    },
                    "author": {
                        "description": "Plugin authors",
                        "type": "array",
                        "items": {
                            "type": "string"
                        }
                    },
                    "flags": {
                        "description": "Plugin flags",
                        "type": "array",
                        "items": {
                            "type": "string"
                        }
                    },
                    "dependencies": {
                        "description": "Plugin dependencies",
                        "type": "array",
                        "items": {
                            "type": "string"
                        }
                    },
                    "requiredConfigs": {
                        "description": "Required configuration keys",
                        "type": "array",
                        "items": {
                            "type": "string"
                        }
                    },
                    "configSchema": {
                        "description": "Configuration schema",
                        "type": "array",
                        "items": {
                            "type": "object"
                        }
                    }
                },
                "type": "object"
            },
            "PluginSettingsUpdate": {
                "required": [
                    "settings"
                ],
                "properties": {
                    "settings": {
                        "description": "Plugin settings key-value pairs",
                        "type": "object"
                    }
                },
                "type": "object"
            },
            "PluginValidation": {
                "properties": {
                    "config_valid": {
                        "description": "Whether plugin configuration is valid",
                        "type": "boolean"
                    },
                    "dependencies_met": {
                        "description": "Whether dependencies are met",
                        "type": "boolean"
                    },
                    "required_configs_set": {
                        "description": "Whether required configs are set",
                        "type": "boolean"
                    },
                    "identifier_valid": {
                        "description": "Whether identifier is valid",
                        "type": "boolean"
                    },
                    "flags_valid": {
                        "description": "Whether flags are valid",
                        "type": "boolean"
                    },
                    "files_exist": {
                        "description": "Whether required files exist",
                        "type": "boolean"
                    },
                    "overall_valid": {
                        "description": "Overall validation status",
                        "type": "boolean"
                    }
                },
                "type": "object"
            },
            "PluginFileCreate": {
                "required": [
                    "plugin_id",
                    "file_type"
                ],
                "properties": {
                    "plugin_id": {
                        "description": "Plugin identifier",
                        "type": "string"
                    },
                    "file_type": {
                        "description": "File type to create",
                        "type": "string",
                        "enum": [
                            "migration",
                            "cron",
                            "command",
                            "public_file"
                        ]
                    },
                    "name": {
                        "description": "File name (required for migration, cron, command)",
                        "type": "string"
                    },
                    "description": {
                        "description": "File description",
                        "type": "string"
                    },
                    "schedule": {
                        "description": "Schedule for cron jobs",
                        "type": "string",
                        "default": "1H"
                    },
                    "file": {
                        "description": "File to upload (for public_file type)",
                        "type": "string",
                        "format": "binary"
                    }
                },
                "type": "object"
            },
            "PluginWidgetConfig": {
                "required": [
                    "id",
                    "component",
                    "page",
                    "location"
                ],
                "properties": {
                    "id": {
                        "description": "Unique widget identifier",
                        "type": "string"
                    },
                    "component": {
                        "description": "Widget HTML component file path",
                        "type": "string"
                    },
                    "page": {
                        "description": "Target page identifier",
                        "type": "string"
                    },
                    "location": {
                        "description": "Widget location on page",
                        "type": "string"
                    },
                    "enabled": {
                        "description": "Whether widget is enabled",
                        "type": "boolean",
                        "default": true
                    },
                    "priority": {
                        "description": "Rendering priority (higher = first)",
                        "type": "integer",
                        "default": 100
                    },
                    "size": {
                        "description": "Widget size: full, half, third, or quarter",
                        "type": "string",
                        "default": "full"
                    }
                },
                "type": "object"
            },
            "PluginCreationOptions": {
                "properties": {
                    "migration": {
                        "properties": {
                            "name": {
                                "type": "string"
                            },
                            "description": {
                                "type": "string"
                            },
                            "icon": {
                                "type": "string"
                            },
                            "fields": {
                                "type": "object"
                            }
                        },
                        "type": "object"
                    },
                    "cron": {
                        "properties": {
                            "name": {
                                "type": "string"
                            },
                            "description": {
                                "type": "string"
                            },
                            "icon": {
                                "type": "string"
                            },
                            "fields": {
                                "type": "object"
                            }
                        },
                        "type": "object"
                    },
                    "command": {
                        "properties": {
                            "name": {
                                "type": "string"
                            },
                            "description": {
                                "type": "string"
                            },
                            "icon": {
                                "type": "string"
                            },
                            "fields": {
                                "type": "object"
                            }
                        },
                        "type": "object"
                    },
                    "public_file": {
                        "properties": {
                            "name": {
                                "type": "string"
                            },
                            "description": {
                                "type": "string"
                            },
                            "icon": {
                                "type": "string"
                            },
                            "fields": {
                                "type": "object"
                            }
                        },
                        "type": "object"
                    }
                },
                "type": "object"
            },
            "PluginInfo": {
                "properties": {
                    "plugin": {
                        "properties": {
                            "name": {
                                "description": "Plugin name",
                                "type": "string"
                            },
                            "identifier": {
                                "description": "Plugin identifier",
                                "type": "string"
                            },
                            "description": {
                                "description": "Plugin description",
                                "type": "string"
                            },
                            "version": {
                                "description": "Plugin version",
                                "type": "string"
                            },
                            "target": {
                                "description": "Target FeatherPanel version",
                                "type": "string"
                            },
                            "author": {
                                "description": "Plugin authors",
                                "type": "array",
                                "items": {
                                    "type": "string"
                                }
                            },
                            "icon": {
                                "description": "Plugin icon URL",
                                "type": "string"
                            },
                            "flags": {
                                "description": "Plugin flags",
                                "type": "array",
                                "items": {
                                    "type": "string"
                                }
                            },
                            "dependencies": {
                                "description": "Plugin dependencies",
                                "type": "array",
                                "items": {
                                    "type": "string"
                                }
                            },
                            "requiredConfigs": {
                                "description": "Required configuration keys",
                                "type": "array",
                                "items": {
                                    "type": "string"
                                }
                            },
                            "loaded": {
                                "description": "Whether plugin is loaded in memory",
                                "type": "boolean"
                            },
                            "unmetDependencies": {
                                "description": "List of unmet dependencies",
                                "type": "array",
                                "items": {
                                    "type": "string"
                                }
                            },
                            "missingConfigs": {
                                "description": "List of missing required configurations",
                                "type": "array",
                                "items": {
                                    "type": "string"
                                }
                            }
                        },
                        "type": "object"
                    },
                    "configSchema": {
                        "description": "Plugin configuration schema",
                        "type": "array",
                        "items": {
                            "type": "object"
                        }
                    }
                },
                "type": "object"
            },
            "PluginSettingUpdate": {
                "required": [
                    "key",
                    "value"
                ],
                "properties": {
                    "key": {
                        "description": "Setting key",
                        "type": "string",
                        "minLength": 1
                    },
                    "value": {
                        "description": "Setting value",
                        "type": "string",
                        "minLength": 1
                    }
                },
                "type": "object"
            },
            "PluginSettingRemove": {
                "required": [
                    "key"
                ],
                "properties": {
                    "key": {
                        "description": "Setting key to remove",
                        "type": "string",
                        "minLength": 1
                    }
                },
                "type": "object"
            },
            "UrlInstall": {
                "required": [
                    "url"
                ],
                "properties": {
                    "url": {
                        "description": "URL to download addon from",
                        "type": "string",
                        "format": "uri"
                    }
                },
                "type": "object"
            },
            "RateLimitRoute": {
                "properties": {
                    "route_name": {
                        "description": "The route name",
                        "type": "string"
                    },
                    "per_second": {
                        "description": "Rate limit per second",
                        "type": "integer",
                        "nullable": true
                    },
                    "per_minute": {
                        "description": "Rate limit per minute",
                        "type": "integer",
                        "nullable": true
                    },
                    "per_hour": {
                        "description": "Rate limit per hour",
                        "type": "integer",
                        "nullable": true
                    },
                    "per_day": {
                        "description": "Rate limit per day",
                        "type": "integer",
                        "nullable": true
                    },
                    "namespace": {
                        "description": "Namespace for rate limiting",
                        "type": "string",
                        "nullable": true
                    }
                },
                "type": "object"
            },
            "Realm": {
                "properties": {
                    "id": {
                        "description": "Realm ID",
                        "type": "integer"
                    },
                    "name": {
                        "description": "Realm name",
                        "type": "string"
                    },
                    "description": {
                        "description": "Realm description",
                        "type": "string",
                        "nullable": true
                    },
                    "created_at": {
                        "description": "Creation timestamp",
                        "type": "string",
                        "format": "date-time"
                    },
                    "updated_at": {
                        "description": "Last update timestamp",
                        "type": "string",
                        "format": "date-time"
                    }
                },
                "type": "object"
            },
            "RealmPagination": {
                "properties": {
                    "current_page": {
                        "description": "Current page number",
                        "type": "integer"
                    },
                    "per_page": {
                        "description": "Records per page",
                        "type": "integer"
                    },
                    "total_records": {
                        "description": "Total number of records",
                        "type": "integer"
                    },
                    "total_pages": {
                        "description": "Total number of pages",
                        "type": "integer"
                    },
                    "has_next": {
                        "description": "Whether there is a next page",
                        "type": "boolean"
                    },
                    "has_prev": {
                        "description": "Whether there is a previous page",
                        "type": "boolean"
                    },
                    "from": {
                        "description": "Starting record number",
                        "type": "integer"
                    },
                    "to": {
                        "description": "Ending record number",
                        "type": "integer"
                    }
                },
                "type": "object"
            },
            "RealmCreate": {
                "required": [
                    "name"
                ],
                "properties": {
                    "name": {
                        "description": "Realm name",
                        "type": "string",
                        "maxLength": 255,
                        "minLength": 2
                    },
                    "description": {
                        "description": "Realm description",
                        "type": "string",
                        "maxLength": 65535,
                        "nullable": true
                    },
                    "id": {
                        "description": "Optional realm ID (useful for migrations from other platforms)",
                        "type": "integer",
                        "nullable": true
                    }
                },
                "type": "object"
            },
            "RealmUpdate": {
                "properties": {
                    "name": {
                        "description": "Realm name",
                        "type": "string",
                        "maxLength": 255,
                        "minLength": 2
                    },
                    "description": {
                        "description": "Realm description",
                        "type": "string",
                        "maxLength": 65535,
                        "nullable": true
                    }
                },
                "type": "object"
            },
            "Role": {
                "properties": {
                    "id": {
                        "description": "Role ID",
                        "type": "integer"
                    },
                    "name": {
                        "description": "Role name",
                        "type": "string"
                    },
                    "display_name": {
                        "description": "Role display name",
                        "type": "string"
                    },
                    "color": {
                        "description": "Role color",
                        "type": "string"
                    },
                    "custom_badge": {
                        "description": "Optional short label shown on user badges instead of the display name",
                        "type": "string",
                        "nullable": true
                    },
                    "badge_icon": {
                        "description": "Optional icon or image URL shown on role badges",
                        "type": "string",
                        "nullable": true
                    },
                    "created_at": {
                        "description": "Creation timestamp",
                        "type": "string",
                        "format": "date-time"
                    },
                    "updated_at": {
                        "description": "Last update timestamp",
                        "type": "string",
                        "format": "date-time"
                    }
                },
                "type": "object"
            },
            "RolePagination": {
                "properties": {
                    "current_page": {
                        "description": "Current page number",
                        "type": "integer"
                    },
                    "per_page": {
                        "description": "Records per page",
                        "type": "integer"
                    },
                    "total_records": {
                        "description": "Total number of records",
                        "type": "integer"
                    },
                    "total_pages": {
                        "description": "Total number of pages",
                        "type": "integer"
                    },
                    "has_next": {
                        "description": "Whether there is a next page",
                        "type": "boolean"
                    },
                    "has_prev": {
                        "description": "Whether there is a previous page",
                        "type": "boolean"
                    },
                    "from": {
                        "description": "Starting record number",
                        "type": "integer"
                    },
                    "to": {
                        "description": "Ending record number",
                        "type": "integer"
                    }
                },
                "type": "object"
            },
            "RoleCreate": {
                "required": [
                    "name",
                    "display_name",
                    "color"
                ],
                "properties": {
                    "name": {
                        "description": "Role name",
                        "type": "string",
                        "maxLength": 255,
                        "minLength": 2
                    },
                    "display_name": {
                        "description": "Role display name",
                        "type": "string",
                        "maxLength": 255,
                        "minLength": 2
                    },
                    "color": {
                        "description": "Role color",
                        "type": "string",
                        "maxLength": 32
                    },
                    "custom_badge": {
                        "description": "Optional short label shown on user badges",
                        "type": "string",
                        "maxLength": 64,
                        "nullable": true
                    },
                    "badge_icon": {
                        "description": "Optional icon or image URL shown on role badges",
                        "type": "string",
                        "maxLength": 512,
                        "nullable": true
                    }
                },
                "type": "object"
            },
            "RoleUpdate": {
                "properties": {
                    "name": {
                        "description": "Role name",
                        "type": "string",
                        "maxLength": 255,
                        "minLength": 2
                    },
                    "display_name": {
                        "description": "Role display name",
                        "type": "string",
                        "maxLength": 255,
                        "minLength": 2
                    },
                    "color": {
                        "description": "Role color",
                        "type": "string",
                        "maxLength": 32
                    },
                    "custom_badge": {
                        "description": "Optional short label shown on user badges",
                        "type": "string",
                        "maxLength": 64,
                        "nullable": true
                    },
                    "badge_icon": {
                        "description": "Optional icon or image URL shown on role badges",
                        "type": "string",
                        "maxLength": 512,
                        "nullable": true
                    }
                },
                "type": "object"
            },
            "ServerActivity": {
                "properties": {
                    "id": {
                        "description": "Activity ID",
                        "type": "integer"
                    },
                    "server_id": {
                        "description": "Server ID",
                        "type": "integer"
                    },
                    "node_id": {
                        "description": "Node ID",
                        "type": "integer"
                    },
                    "user_id": {
                        "description": "User ID",
                        "type": "integer"
                    },
                    "activity_type": {
                        "description": "Type of activity",
                        "type": "string"
                    },
                    "activity_description": {
                        "description": "Activity description",
                        "type": "string"
                    },
                    "metadata": {
                        "description": "Activity metadata",
                        "type": "object",
                        "nullable": true
                    },
                    "ip_address": {
                        "description": "IP address",
                        "type": "string",
                        "nullable": true
                    },
                    "created_at": {
                        "description": "Creation timestamp",
                        "type": "string",
                        "format": "date-time"
                    },
                    "updated_at": {
                        "description": "Last update timestamp",
                        "type": "string",
                        "format": "date-time"
                    }
                },
                "type": "object"
            },
            "ServerActivityPagination": {
                "properties": {
                    "current_page": {
                        "description": "Current page number",
                        "type": "integer"
                    },
                    "per_page": {
                        "description": "Records per page",
                        "type": "integer"
                    },
                    "total_records": {
                        "description": "Total number of records",
                        "type": "integer"
                    },
                    "total_pages": {
                        "description": "Total number of pages",
                        "type": "integer"
                    },
                    "has_next": {
                        "description": "Whether there is a next page",
                        "type": "boolean"
                    },
                    "has_prev": {
                        "description": "Whether there is a previous page",
                        "type": "boolean"
                    },
                    "from": {
                        "description": "Starting record number",
                        "type": "integer"
                    },
                    "to": {
                        "description": "Ending record number",
                        "type": "integer"
                    }
                },
                "type": "object"
            },
            "Server": {
                "properties": {
                    "id": {
                        "description": "Server ID",
                        "type": "integer"
                    },
                    "uuid": {
                        "description": "Server UUID",
                        "type": "string"
                    },
                    "uuidShort": {
                        "description": "Short server UUID",
                        "type": "string"
                    },
                    "name": {
                        "description": "Server name",
                        "type": "string"
                    },
                    "description": {
                        "description": "Server description",
                        "type": "string",
                        "nullable": true
                    },
                    "startup": {
                        "description": "Server startup command",
                        "type": "string"
                    },
                    "image": {
                        "description": "Server Docker image",
                        "type": "string"
                    },
                    "status": {
                        "description": "Server status",
                        "type": "string",
                        "enum": [
                            "installing",
                            "install_failed",
                            "suspended",
                            "running",
                            "stopping",
                            "stopped",
                            "starting",
                            "restarting",
                            "backuping",
                            "restoring_backup",
                            "deleting_backup",
                            "transferring",
                            "offline",
                            "error"
                        ]
                    },
                    "node_id": {
                        "description": "Node ID",
                        "type": "integer"
                    },
                    "owner_id": {
                        "description": "Owner user ID",
                        "type": "integer"
                    },
                    "memory": {
                        "description": "Memory limit in MB",
                        "type": "integer"
                    },
                    "swap": {
                        "description": "Swap limit in MB",
                        "type": "integer"
                    },
                    "disk": {
                        "description": "Disk limit in MB",
                        "type": "integer"
                    },
                    "io": {
                        "description": "IO limit",
                        "type": "integer"
                    },
                    "cpu": {
                        "description": "CPU limit percentage",
                        "type": "integer"
                    },
                    "allocation_id": {
                        "description": "Allocation ID",
                        "type": "integer"
                    },
                    "realms_id": {
                        "description": "Realm ID",
                        "type": "integer"
                    },
                    "spell_id": {
                        "description": "Spell ID",
                        "type": "integer"
                    },
                    "allocation_limit": {
                        "description": "Allocation limit",
                        "type": "integer",
                        "nullable": true
                    },
                    "database_limit": {
                        "description": "Database limit",
                        "type": "integer"
                    },
                    "backup_limit": {
                        "description": "Backup limit",
                        "type": "integer"
                    },
                    "external_id": {
                        "description": "External ID",
                        "type": "string",
                        "nullable": true
                    },
                    "threads": {
                        "description": "Specific CPU threads this process can run on. Single number, comma list, or ranges like 0,1,3 or 0-1,3",
                        "type": "string",
                        "nullable": true
                    },
                    "skip_scripts": {
                        "description": "Skip scripts flag",
                        "type": "boolean"
                    },
                    "show_on_status": {
                        "description": "Whether this server appears on the public status page",
                        "type": "boolean"
                    },
                    "auto_start": {
                        "description": "Automatically start this server after the node reconnects (default off)",
                        "type": "boolean"
                    },
                    "auto_start_delay": {
                        "description": "Extra seconds to wait before auto-starting this server after reconnect",
                        "type": "integer"
                    },
                    "manually_stopped": {
                        "description": "Whether the server was intentionally stopped (auto-start skips these)",
                        "type": "boolean"
                    },
                    "oom_killer": {
                        "description": "Whether the OOM killer is enabled (true) or disabled (false)",
                        "type": "boolean"
                    },
                    "suspended": {
                        "description": "Suspended flag",
                        "type": "boolean"
                    },
                    "created_at": {
                        "description": "Creation timestamp",
                        "type": "string",
                        "format": "date-time"
                    },
                    "updated_at": {
                        "description": "Last update timestamp",
                        "type": "string",
                        "format": "date-time"
                    }
                },
                "type": "object"
            },
            "ServerPagination": {
                "properties": {
                    "current_page": {
                        "description": "Current page number",
                        "type": "integer"
                    },
                    "per_page": {
                        "description": "Records per page",
                        "type": "integer"
                    },
                    "total_records": {
                        "description": "Total number of records",
                        "type": "integer"
                    },
                    "total_pages": {
                        "description": "Total number of pages",
                        "type": "integer"
                    },
                    "has_next": {
                        "description": "Whether there is a next page",
                        "type": "boolean"
                    },
                    "has_prev": {
                        "description": "Whether there is a previous page",
                        "type": "boolean"
                    },
                    "from": {
                        "description": "Starting record number",
                        "type": "integer"
                    },
                    "to": {
                        "description": "Ending record number",
                        "type": "integer"
                    }
                },
                "type": "object"
            },
            "ServerCreate": {
                "required": [
                    "node_id",
                    "name",
                    "owner_id",
                    "memory",
                    "swap",
                    "disk",
                    "io",
                    "cpu",
                    "allocation_id",
                    "realms_id",
                    "spell_id",
                    "startup",
                    "image"
                ],
                "properties": {
                    "node_id": {
                        "description": "Node ID",
                        "type": "integer",
                        "minimum": 1
                    },
                    "name": {
                        "description": "Server name",
                        "type": "string",
                        "maxLength": 191,
                        "minLength": 1
                    },
                    "description": {
                        "description": "Server description (optional)",
                        "type": "string",
                        "maxLength": 65535,
                        "nullable": true
                    },
                    "owner_id": {
                        "description": "Owner user ID",
                        "type": "integer",
                        "minimum": 1
                    },
                    "memory": {
                        "description": "Memory limit in MB",
                        "type": "integer",
                        "minimum": 128
                    },
                    "swap": {
                        "description": "Swap limit in MB (-1 = unlimited, 0 = disabled)",
                        "type": "integer",
                        "minimum": -1
                    },
                    "disk": {
                        "description": "Disk limit in MB",
                        "type": "integer",
                        "minimum": 1024
                    },
                    "io": {
                        "description": "IO limit",
                        "type": "integer",
                        "minimum": 10
                    },
                    "cpu": {
                        "description": "CPU limit percentage",
                        "type": "integer",
                        "minimum": 10
                    },
                    "allocation_id": {
                        "description": "Allocation ID",
                        "type": "integer",
                        "minimum": 1
                    },
                    "realms_id": {
                        "description": "Realm ID",
                        "type": "integer",
                        "minimum": 1
                    },
                    "spell_id": {
                        "description": "Spell ID",
                        "type": "integer",
                        "minimum": 1
                    },
                    "startup": {
                        "description": "Server startup command",
                        "type": "string",
                        "maxLength": 65535,
                        "minLength": 1
                    },
                    "image": {
                        "description": "Server Docker image",
                        "type": "string",
                        "maxLength": 191,
                        "minLength": 1
                    },
                    "status": {
                        "description": "Server status",
                        "type": "string",
                        "enum": [
                            "installing",
                            "install_failed",
                            "suspended",
                            "running",
                            "stopping",
                            "stopped",
                            "starting",
                            "restarting",
                            "backuping",
                            "restoring_backup",
                            "deleting_backup",
                            "transferring",
                            "offline"
                        ]
                    },
                    "allocation_limit": {
                        "description": "Allocation limit",
                        "type": "integer",
                        "nullable": true
                    },
                    "database_limit": {
                        "description": "Database limit",
                        "type": "integer",
                        "minimum": 0
                    },
                    "backup_limit": {
                        "description": "Backup limit",
                        "type": "integer",
                        "minimum": 0
                    },
                    "external_id": {
                        "description": "External ID",
                        "type": "string",
                        "maxLength": 191,
                        "nullable": true
                    },
                    "threads": {
                        "description": "Specific CPU threads this process can run on. Single number, comma list, or ranges like 0,1,3 or 0-1,3",
                        "type": "string",
                        "nullable": true
                    },
                    "skip_scripts": {
                        "description": "Skip scripts flag",
                        "type": "boolean"
                    },
                    "show_on_status": {
                        "description": "Whether this server appears on the public status page",
                        "type": "boolean"
                    },
                    "auto_start": {
                        "description": "Automatically start this server after the node reconnects (default off)",
                        "type": "boolean"
                    },
                    "auto_start_delay": {
                        "description": "Extra seconds to wait before auto-starting this server after reconnect",
                        "type": "integer",
                        "minimum": 0
                    },
                    "oom_disabled": {
                        "description": "OOM disabled flag",
                        "type": "boolean"
                    },
                    "variables": {
                        "description": "Server variables as key-value pairs",
                        "type": "object"
                    },
                    "mount_ids": {
                        "description": "Optional: Wings bind mounts to attach (validated against node/spell rules)",
                        "type": "array",
                        "items": {
                            "type": "integer"
                        }
                    }
                },
                "type": "object"
            },
            "ServerUpdate": {
                "properties": {
                    "node_id": {
                        "description": "Node ID",
                        "type": "integer",
                        "minimum": 1
                    },
                    "name": {
                        "description": "Server name",
                        "type": "string",
                        "maxLength": 191,
                        "minLength": 1
                    },
                    "description": {
                        "description": "Server description",
                        "type": "string",
                        "maxLength": 65535
                    },
                    "owner_id": {
                        "description": "Owner user ID",
                        "type": "integer",
                        "minimum": 1
                    },
                    "memory": {
                        "description": "Memory limit in MB",
                        "type": "integer",
                        "minimum": 128
                    },
                    "swap": {
                        "description": "Swap limit in MB (-1 = unlimited, 0 = disabled)",
                        "type": "integer",
                        "minimum": -1
                    },
                    "disk": {
                        "description": "Disk limit in MB",
                        "type": "integer",
                        "minimum": 1024
                    },
                    "io": {
                        "description": "IO limit",
                        "type": "integer",
                        "minimum": 10
                    },
                    "cpu": {
                        "description": "CPU limit percentage",
                        "type": "integer",
                        "minimum": 10
                    },
                    "allocation_id": {
                        "description": "Allocation ID",
                        "type": "integer",
                        "minimum": 1
                    },
                    "realms_id": {
                        "description": "Realm ID",
                        "type": "integer",
                        "minimum": 1
                    },
                    "spell_id": {
                        "description": "Spell ID",
                        "type": "integer",
                        "minimum": 1
                    },
                    "startup": {
                        "description": "Server startup command",
                        "type": "string",
                        "maxLength": 65535,
                        "minLength": 1
                    },
                    "image": {
                        "description": "Server Docker image",
                        "type": "string",
                        "maxLength": 191,
                        "minLength": 1
                    },
                    "status": {
                        "description": "Server status",
                        "type": "string",
                        "enum": [
                            "installing",
                            "install_failed",
                            "suspended",
                            "running",
                            "stopping",
                            "stopped",
                            "starting",
                            "restarting",
                            "backuping",
                            "restoring_backup",
                            "deleting_backup",
                            "transferring",
                            "offline"
                        ]
                    },
                    "allocation_limit": {
                        "description": "Allocation limit",
                        "type": "integer",
                        "nullable": true
                    },
                    "database_limit": {
                        "description": "Database limit",
                        "type": "integer",
                        "minimum": 0
                    },
                    "backup_limit": {
                        "description": "Backup limit",
                        "type": "integer",
                        "minimum": 0
                    },
                    "external_id": {
                        "description": "External ID",
                        "type": "string",
                        "maxLength": 191,
                        "nullable": true
                    },
                    "threads": {
                        "description": "Specific CPU threads this process can run on. Single number, comma list, or ranges like 0,1,3 or 0-1,3",
                        "type": "string",
                        "nullable": true
                    },
                    "skip_scripts": {
                        "description": "Skip scripts flag",
                        "type": "boolean"
                    },
                    "show_on_status": {
                        "description": "Whether this server appears on the public status page",
                        "type": "boolean"
                    },
                    "auto_start": {
                        "description": "Automatically start this server after the node reconnects (default off)",
                        "type": "boolean"
                    },
                    "auto_start_delay": {
                        "description": "Extra seconds to wait before auto-starting this server after reconnect",
                        "type": "integer",
                        "minimum": 0
                    },
                    "oom_disabled": {
                        "description": "OOM disabled flag",
                        "type": "boolean"
                    },
                    "variables": {
                        "description": "Server variables as key-value pairs",
                        "type": "object"
                    },
                    "mount_ids": {
                        "description": "Optional: replace Wings bind mounts for this server",
                        "type": "array",
                        "items": {
                            "type": "integer"
                        }
                    }
                },
                "type": "object"
            },
            "ServerVariable": {
                "properties": {
                    "id": {
                        "description": "Variable ID",
                        "type": "integer"
                    },
                    "server_id": {
                        "description": "Server ID",
                        "type": "integer"
                    },
                    "variable_id": {
                        "description": "Spell variable ID",
                        "type": "integer"
                    },
                    "variable_value": {
                        "description": "Variable value",
                        "type": "string"
                    },
                    "name": {
                        "description": "Variable name",
                        "type": "string"
                    },
                    "description": {
                        "description": "Variable description",
                        "type": "string"
                    },
                    "env_variable": {
                        "description": "Environment variable name",
                        "type": "string"
                    },
                    "default_value": {
                        "description": "Default value",
                        "type": "string"
                    },
                    "user_viewable": {
                        "description": "User viewable flag",
                        "type": "boolean"
                    },
                    "user_editable": {
                        "description": "User editable flag",
                        "type": "boolean"
                    },
                    "rules": {
                        "description": "Validation rules",
                        "type": "string"
                    },
                    "field_type": {
                        "description": "Field type",
                        "type": "string"
                    },
                    "created_at": {
                        "description": "Creation timestamp",
                        "type": "string",
                        "format": "date-time"
                    },
                    "updated_at": {
                        "description": "Last update timestamp",
                        "type": "string",
                        "format": "date-time"
                    }
                },
                "type": "object"
            },
            "ServerSFTP": {
                "properties": {
                    "host": {
                        "description": "SFTP host",
                        "type": "string"
                    },
                    "port": {
                        "description": "SFTP port",
                        "type": "integer"
                    },
                    "username": {
                        "description": "SFTP username",
                        "type": "string"
                    },
                    "password": {
                        "description": "SFTP password placeholder",
                        "type": "string"
                    },
                    "url": {
                        "description": "SFTP connection URL",
                        "type": "string"
                    }
                },
                "type": "object"
            },
            "Setting": {
                "properties": {
                    "name": {
                        "description": "Setting name/key",
                        "type": "string"
                    },
                    "value": {
                        "description": "Current setting value",
                        "type": "string"
                    },
                    "description": {
                        "description": "Setting description",
                        "type": "string"
                    },
                    "type": {
                        "description": "Setting input type",
                        "type": "string",
                        "enum": [
                            "text",
                            "select",
                            "number",
                            "textarea"
                        ]
                    },
                    "required": {
                        "description": "Whether the setting is required",
                        "type": "boolean"
                    },
                    "placeholder": {
                        "description": "Placeholder text for the input",
                        "type": "string"
                    },
                    "validation": {
                        "description": "Validation rules",
                        "type": "string"
                    },
                    "options": {
                        "description": "Available options for select fields",
                        "type": "array",
                        "items": {
                            "type": "string"
                        }
                    },
                    "category": {
                        "description": "Setting category",
                        "type": "string",
                        "enum": [
                            "app",
                            "security",
                            "email",
                            "other"
                        ]
                    }
                },
                "type": "object"
            },
            "SettingCategory": {
                "properties": {
                    "id": {
                        "description": "Category ID",
                        "type": "string"
                    },
                    "name": {
                        "description": "Category name",
                        "type": "string"
                    },
                    "description": {
                        "description": "Category description",
                        "type": "string"
                    },
                    "icon": {
                        "description": "Category icon",
                        "type": "string"
                    },
                    "settings_count": {
                        "description": "Number of settings in this category",
                        "type": "integer"
                    }
                },
                "type": "object"
            },
            "SettingsUpdate": {
                "description": "Key-value pairs of settings to update",
                "type": "object",
                "additionalProperties": {
                    "type": "string"
                }
            },
            "OrganizedSettings": {
                "description": "Settings organized by category",
                "type": "object",
                "additionalProperties": {
                    "properties": {
                        "category": {
                            "description": "Category information",
                            "type": "object"
                        },
                        "settings": {
                            "description": "Settings in this category",
                            "type": "object",
                            "additionalProperties": {
                                "$ref": "#/components/schemas/Setting"
                            }
                        }
                    },
                    "type": "object"
                }
            },
            "Spell": {
                "properties": {
                    "id": {
                        "description": "Spell ID",
                        "type": "integer"
                    },
                    "uuid": {
                        "description": "Spell UUID",
                        "type": "string"
                    },
                    "realm_id": {
                        "description": "Realm ID",
                        "type": "integer"
                    },
                    "author": {
                        "description": "Spell author",
                        "type": "string"
                    },
                    "name": {
                        "description": "Spell name",
                        "type": "string"
                    },
                    "description": {
                        "description": "Spell description",
                        "type": "string",
                        "nullable": true
                    },
                    "features": {
                        "description": "Spell features (JSON)",
                        "type": "string",
                        "nullable": true
                    },
                    "docker_images": {
                        "description": "Docker images (JSON)",
                        "type": "string",
                        "nullable": true
                    },
                    "default_docker_image": {
                        "description": "Default Docker image used on new server installs",
                        "type": "string",
                        "nullable": true
                    },
                    "file_denylist": {
                        "description": "File denylist (JSON)",
                        "type": "string",
                        "nullable": true
                    },
                    "update_url": {
                        "description": "Update URL",
                        "type": "string",
                        "nullable": true
                    },
                    "config_files": {
                        "description": "Config files",
                        "type": "string",
                        "nullable": true
                    },
                    "config_startup": {
                        "description": "Config startup",
                        "type": "string",
                        "nullable": true
                    },
                    "config_logs": {
                        "description": "Config logs",
                        "type": "string",
                        "nullable": true
                    },
                    "config_stop": {
                        "description": "Config stop",
                        "type": "string",
                        "nullable": true
                    },
                    "startup": {
                        "description": "Startup command",
                        "type": "string",
                        "nullable": true
                    },
                    "script_container": {
                        "description": "Script container",
                        "type": "string",
                        "nullable": true
                    },
                    "script_entry": {
                        "description": "Script entry point",
                        "type": "string",
                        "nullable": true
                    },
                    "script_is_privileged": {
                        "description": "Script is privileged",
                        "type": "boolean"
                    },
                    "script_install": {
                        "description": "Installation script",
                        "type": "string",
                        "nullable": true
                    },
                    "force_outgoing_ip": {
                        "description": "Force outgoing IP",
                        "type": "boolean"
                    },
                    "config_from": {
                        "description": "Config from spell ID",
                        "type": "integer",
                        "nullable": true
                    },
                    "copy_script_from": {
                        "description": "Copy script from spell ID",
                        "type": "integer",
                        "nullable": true
                    },
                    "created_at": {
                        "description": "Creation timestamp",
                        "type": "string",
                        "format": "date-time"
                    },
                    "updated_at": {
                        "description": "Last update timestamp",
                        "type": "string",
                        "format": "date-time"
                    }
                },
                "type": "object"
            },
            "SpellPagination": {
                "properties": {
                    "current_page": {
                        "description": "Current page number",
                        "type": "integer"
                    },
                    "per_page": {
                        "description": "Records per page",
                        "type": "integer"
                    },
                    "total_records": {
                        "description": "Total number of records",
                        "type": "integer"
                    },
                    "total_pages": {
                        "description": "Total number of pages",
                        "type": "integer"
                    },
                    "has_next": {
                        "description": "Whether there is a next page",
                        "type": "boolean"
                    },
                    "has_prev": {
                        "description": "Whether there is a previous page",
                        "type": "boolean"
                    },
                    "from": {
                        "description": "Starting record number",
                        "type": "integer"
                    },
                    "to": {
                        "description": "Ending record number",
                        "type": "integer"
                    }
                },
                "type": "object"
            },
            "SpellCreate": {
                "required": [
                    "realm_id",
                    "author",
                    "name"
                ],
                "properties": {
                    "realm_id": {
                        "description": "Realm ID",
                        "type": "integer",
                        "minimum": 1
                    },
                    "author": {
                        "description": "Spell author",
                        "type": "string",
                        "minLength": 1
                    },
                    "name": {
                        "description": "Spell name",
                        "type": "string",
                        "minLength": 1
                    },
                    "description": {
                        "description": "Spell description",
                        "type": "string",
                        "nullable": true
                    },
                    "features": {
                        "description": "Spell features (JSON)",
                        "type": "string",
                        "nullable": true
                    },
                    "docker_images": {
                        "description": "Docker images (JSON)",
                        "type": "string",
                        "nullable": true
                    },
                    "default_docker_image": {
                        "description": "Default Docker image used on new server installs",
                        "type": "string",
                        "nullable": true
                    },
                    "file_denylist": {
                        "description": "File denylist (JSON)",
                        "type": "string",
                        "nullable": true
                    },
                    "update_url": {
                        "description": "Update URL",
                        "type": "string",
                        "nullable": true
                    },
                    "config_files": {
                        "description": "Config files",
                        "type": "string",
                        "nullable": true
                    },
                    "config_startup": {
                        "description": "Config startup",
                        "type": "string",
                        "nullable": true
                    },
                    "config_logs": {
                        "description": "Config logs",
                        "type": "string",
                        "nullable": true
                    },
                    "config_stop": {
                        "description": "Config stop",
                        "type": "string",
                        "nullable": true
                    },
                    "startup": {
                        "description": "Startup command",
                        "type": "string",
                        "nullable": true
                    },
                    "script_container": {
                        "description": "Script container",
                        "type": "string",
                        "nullable": true
                    },
                    "script_entry": {
                        "description": "Script entry point",
                        "type": "string",
                        "nullable": true
                    },
                    "script_is_privileged": {
                        "description": "Script is privileged",
                        "type": "boolean"
                    },
                    "script_install": {
                        "description": "Installation script",
                        "type": "string",
                        "nullable": true
                    },
                    "force_outgoing_ip": {
                        "description": "Force outgoing IP",
                        "type": "boolean"
                    },
                    "config_from": {
                        "description": "Config from spell ID",
                        "type": "integer",
                        "nullable": true
                    },
                    "copy_script_from": {
                        "description": "Copy script from spell ID",
                        "type": "integer",
                        "nullable": true
                    },
                    "uuid": {
                        "description": "Spell UUID (auto-generated if not provided)",
                        "type": "string",
                        "nullable": true
                    },
                    "id": {
                        "description": "Optional spell ID (useful for migrations from other platforms)",
                        "type": "integer",
                        "nullable": true
                    }
                },
                "type": "object"
            },
            "SpellUpdate": {
                "properties": {
                    "realm_id": {
                        "description": "Realm ID",
                        "type": "integer",
                        "minimum": 1
                    },
                    "author": {
                        "description": "Spell author",
                        "type": "string"
                    },
                    "name": {
                        "description": "Spell name",
                        "type": "string"
                    },
                    "description": {
                        "description": "Spell description",
                        "type": "string",
                        "nullable": true
                    },
                    "features": {
                        "description": "Spell features (JSON)",
                        "type": "string",
                        "nullable": true
                    },
                    "docker_images": {
                        "description": "Docker images (JSON)",
                        "type": "string",
                        "nullable": true
                    },
                    "default_docker_image": {
                        "description": "Default Docker image used on new server installs",
                        "type": "string",
                        "nullable": true
                    },
                    "file_denylist": {
                        "description": "File denylist (JSON)",
                        "type": "string",
                        "nullable": true
                    },
                    "update_url": {
                        "description": "Update URL",
                        "type": "string",
                        "nullable": true
                    },
                    "config_files": {
                        "description": "Config files",
                        "type": "string",
                        "nullable": true
                    },
                    "config_startup": {
                        "description": "Config startup",
                        "type": "string",
                        "nullable": true
                    },
                    "config_logs": {
                        "description": "Config logs",
                        "type": "string",
                        "nullable": true
                    },
                    "config_stop": {
                        "description": "Config stop",
                        "type": "string",
                        "nullable": true
                    },
                    "startup": {
                        "description": "Startup command",
                        "type": "string",
                        "nullable": true
                    },
                    "script_container": {
                        "description": "Script container",
                        "type": "string",
                        "nullable": true
                    },
                    "script_entry": {
                        "description": "Script entry point",
                        "type": "string",
                        "nullable": true
                    },
                    "script_is_privileged": {
                        "description": "Script is privileged",
                        "type": "boolean"
                    },
                    "script_install": {
                        "description": "Installation script",
                        "type": "string",
                        "nullable": true
                    },
                    "force_outgoing_ip": {
                        "description": "Force outgoing IP",
                        "type": "boolean"
                    },
                    "config_from": {
                        "description": "Config from spell ID",
                        "type": "integer",
                        "nullable": true
                    },
                    "copy_script_from": {
                        "description": "Copy script from spell ID",
                        "type": "integer",
                        "nullable": true
                    },
                    "uuid": {
                        "description": "Spell UUID",
                        "type": "string",
                        "nullable": true
                    }
                },
                "type": "object"
            },
            "SpellVariable": {
                "properties": {
                    "id": {
                        "description": "Variable ID",
                        "type": "integer"
                    },
                    "spell_id": {
                        "description": "Spell ID",
                        "type": "integer"
                    },
                    "name": {
                        "description": "Variable name",
                        "type": "string"
                    },
                    "description": {
                        "description": "Variable description",
                        "type": "string"
                    },
                    "env_variable": {
                        "description": "Environment variable name",
                        "type": "string"
                    },
                    "default_value": {
                        "description": "Default value",
                        "type": "string"
                    },
                    "user_viewable": {
                        "description": "User viewable flag",
                        "type": "boolean"
                    },
                    "user_editable": {
                        "description": "User editable flag",
                        "type": "boolean"
                    },
                    "rules": {
                        "description": "Validation rules",
                        "type": "string"
                    },
                    "field_type": {
                        "description": "Field type",
                        "type": "string"
                    },
                    "created_at": {
                        "description": "Creation timestamp",
                        "type": "string",
                        "format": "date-time"
                    },
                    "updated_at": {
                        "description": "Last update timestamp",
                        "type": "string",
                        "format": "date-time"
                    }
                },
                "type": "object"
            },
            "SpellVariableCreate": {
                "required": [
                    "name",
                    "env_variable",
                    "description",
                    "default_value"
                ],
                "properties": {
                    "name": {
                        "description": "Variable name",
                        "type": "string",
                        "minLength": 1
                    },
                    "env_variable": {
                        "description": "Environment variable name",
                        "type": "string",
                        "minLength": 1
                    },
                    "description": {
                        "description": "Variable description",
                        "type": "string",
                        "minLength": 1
                    },
                    "default_value": {
                        "description": "Default value",
                        "type": "string",
                        "minLength": 1
                    },
                    "user_viewable": {
                        "description": "User viewable flag",
                        "type": "boolean"
                    },
                    "user_editable": {
                        "description": "User editable flag",
                        "type": "boolean"
                    },
                    "rules": {
                        "description": "Validation rules",
                        "type": "string",
                        "nullable": true
                    },
                    "field_type": {
                        "description": "Field type",
                        "type": "string",
                        "nullable": true
                    }
                },
                "type": "object"
            },
            "SpellVariableUpdate": {
                "properties": {
                    "name": {
                        "description": "Variable name",
                        "type": "string"
                    },
                    "env_variable": {
                        "description": "Environment variable name",
                        "type": "string"
                    },
                    "description": {
                        "description": "Variable description",
                        "type": "string"
                    },
                    "default_value": {
                        "description": "Default value",
                        "type": "string"
                    },
                    "user_viewable": {
                        "description": "User viewable flag",
                        "type": "boolean"
                    },
                    "user_editable": {
                        "description": "User editable flag",
                        "type": "boolean"
                    },
                    "rules": {
                        "description": "Validation rules",
                        "type": "string",
                        "nullable": true
                    },
                    "field_type": {
                        "description": "Field type",
                        "type": "string",
                        "nullable": true
                    }
                },
                "type": "object"
            },
            "SpellImport": {
                "required": [
                    "realm_id"
                ],
                "properties": {
                    "realm_id": {
                        "description": "Realm ID",
                        "type": "integer",
                        "minimum": 1
                    },
                    "file": {
                        "description": "Spell JSON file",
                        "type": "string",
                        "format": "binary"
                    }
                },
                "type": "object"
            },
            "OnlineSpell": {
                "properties": {
                    "id": {
                        "description": "Spell ID",
                        "type": "integer",
                        "nullable": true
                    },
                    "identifier": {
                        "description": "Spell identifier",
                        "type": "string"
                    },
                    "name": {
                        "description": "Spell display name",
                        "type": "string"
                    },
                    "description": {
                        "description": "Spell description",
                        "type": "string",
                        "nullable": true
                    },
                    "icon": {
                        "description": "Spell icon URL",
                        "type": "string",
                        "nullable": true
                    },
                    "website": {
                        "description": "Spell website",
                        "type": "string",
                        "nullable": true
                    },
                    "author": {
                        "description": "Spell author",
                        "type": "string",
                        "nullable": true
                    },
                    "author_email": {
                        "description": "Author email",
                        "type": "string",
                        "nullable": true
                    },
                    "maintainers": {
                        "description": "Maintainers",
                        "type": "array",
                        "items": {
                            "type": "string"
                        }
                    },
                    "tags": {
                        "description": "Spell tags",
                        "type": "array",
                        "items": {
                            "type": "string"
                        }
                    },
                    "verified": {
                        "description": "Verified status",
                        "type": "boolean"
                    },
                    "downloads": {
                        "description": "Download count",
                        "type": "integer"
                    },
                    "created_at": {
                        "description": "Creation timestamp",
                        "type": "string",
                        "nullable": true
                    },
                    "updated_at": {
                        "description": "Last update timestamp",
                        "type": "string",
                        "nullable": true
                    },
                    "latest_version": {
                        "description": "Latest version information",
                        "properties": {
                            "version": {
                                "description": "Version number",
                                "type": "string",
                                "nullable": true
                            },
                            "download_url": {
                                "description": "Download URL",
                                "type": "string",
                                "nullable": true
                            },
                            "file_size": {
                                "description": "File size",
                                "type": "integer",
                                "nullable": true
                            },
                            "created_at": {
                                "description": "Version creation timestamp",
                                "type": "string",
                                "nullable": true
                            }
                        },
                        "type": "object"
                    }
                },
                "type": "object"
            },
            "OnlineSpellInstall": {
                "required": [
                    "identifier",
                    "realm_id"
                ],
                "properties": {
                    "identifier": {
                        "description": "Spell identifier",
                        "type": "string",
                        "pattern": "^[a-zA-Z0-9_\\-]+$"
                    },
                    "realm_id": {
                        "description": "Realm ID",
                        "type": "integer",
                        "minimum": 1
                    }
                },
                "type": "object"
            },
            "SubdomainManagerSpellMapping": {
                "properties": {
                    "spell_id": {
                        "type": "integer"
                    },
                    "protocol_service": {
                        "type": "string",
                        "nullable": true
                    },
                    "protocol_type": {
                        "type": "string"
                    },
                    "priority": {
                        "type": "integer"
                    },
                    "weight": {
                        "type": "integer"
                    },
                    "ttl": {
                        "type": "integer"
                    },
                    "spell": {
                        "properties": {
                            "id": {
                                "type": "integer"
                            },
                            "uuid": {
                                "type": "string"
                            },
                            "name": {
                                "type": "string"
                            }
                        },
                        "type": "object",
                        "nullable": true
                    }
                },
                "type": "object"
            },
            "SubdomainManagerDomain": {
                "properties": {
                    "uuid": {
                        "type": "string"
                    },
                    "domain": {
                        "type": "string"
                    },
                    "description": {
                        "type": "string",
                        "nullable": true
                    },
                    "is_active": {
                        "type": "integer"
                    },
                    "cloudflare_zone_id": {
                        "type": "string",
                        "nullable": true
                    },
                    "cloudflare_account_id": {
                        "type": "string",
                        "nullable": true
                    },
                    "subdomain_count": {
                        "type": "integer"
                    },
                    "spells": {
                        "type": "array",
                        "items": {
                            "$ref": "#/components/schemas/SubdomainManagerSpellMapping"
                        }
                    },
                    "created_at": {
                        "type": "string"
                    },
                    "updated_at": {
                        "type": "string"
                    }
                },
                "type": "object"
            },
            "SubdomainManagerSubdomain": {
                "properties": {
                    "uuid": {
                        "type": "string"
                    },
                    "subdomain": {
                        "type": "string"
                    },
                    "record_type": {
                        "type": "string"
                    },
                    "port": {
                        "type": "integer",
                        "nullable": true
                    },
                    "server_id": {
                        "type": "integer"
                    },
                    "spell_id": {
                        "type": "integer"
                    },
                    "cloudflare_record_id": {
                        "type": "string",
                        "nullable": true
                    },
                    "created_at": {
                        "type": "string"
                    }
                },
                "type": "object"
            },
            "TicketAttachment": {
                "properties": {
                    "id": {
                        "description": "Attachment ID",
                        "type": "integer"
                    },
                    "ticket_id": {
                        "description": "Ticket ID",
                        "type": "integer",
                        "nullable": true
                    },
                    "message_id": {
                        "description": "Message ID",
                        "type": "integer",
                        "nullable": true
                    },
                    "file_name": {
                        "description": "Stored file name",
                        "type": "string"
                    },
                    "file_path": {
                        "description": "Relative file path",
                        "type": "string"
                    },
                    "file_size": {
                        "description": "File size in bytes",
                        "type": "integer"
                    },
                    "file_type": {
                        "description": "MIME type",
                        "type": "string"
                    },
                    "user_downloadable": {
                        "description": "Whether users can download this file",
                        "type": "boolean"
                    },
                    "created_at": {
                        "description": "Creation timestamp",
                        "type": "string",
                        "format": "date-time"
                    },
                    "updated_at": {
                        "description": "Last update timestamp",
                        "type": "string",
                        "format": "date-time",
                        "nullable": true
                    }
                },
                "type": "object"
            },
            "TicketCategory": {
                "properties": {
                    "id": {
                        "description": "Category ID",
                        "type": "integer"
                    },
                    "name": {
                        "description": "Category name",
                        "type": "string"
                    },
                    "icon": {
                        "description": "Category icon",
                        "type": "string",
                        "nullable": true
                    },
                    "color": {
                        "description": "Category color",
                        "type": "string"
                    },
                    "support_email": {
                        "description": "Support email for this category",
                        "type": "string"
                    },
                    "open_hours": {
                        "description": "Open hours",
                        "type": "string",
                        "nullable": true
                    },
                    "description": {
                        "description": "Category description",
                        "type": "string",
                        "nullable": true
                    },
                    "created_at": {
                        "description": "Creation timestamp",
                        "type": "string",
                        "format": "date-time"
                    },
                    "updated_at": {
                        "description": "Last update timestamp",
                        "type": "string",
                        "format": "date-time",
                        "nullable": true
                    }
                },
                "type": "object"
            },
            "TicketCategoryPagination": {
                "properties": {
                    "current_page": {
                        "description": "Current page number",
                        "type": "integer"
                    },
                    "per_page": {
                        "description": "Records per page",
                        "type": "integer"
                    },
                    "total_records": {
                        "description": "Total number of records",
                        "type": "integer"
                    },
                    "total_pages": {
                        "description": "Total number of pages",
                        "type": "integer"
                    },
                    "has_next": {
                        "description": "Whether there is a next page",
                        "type": "boolean"
                    },
                    "has_prev": {
                        "description": "Whether there is a previous page",
                        "type": "boolean"
                    },
                    "from": {
                        "description": "Starting record number",
                        "type": "integer"
                    },
                    "to": {
                        "description": "Ending record number",
                        "type": "integer"
                    }
                },
                "type": "object"
            },
            "TicketCategoryCreate": {
                "required": [
                    "name"
                ],
                "properties": {
                    "name": {
                        "description": "Category name",
                        "type": "string",
                        "maxLength": 255,
                        "minLength": 1
                    },
                    "icon": {
                        "description": "Category icon",
                        "type": "string",
                        "nullable": true
                    },
                    "color": {
                        "description": "Category color",
                        "type": "string",
                        "default": "#000000",
                        "nullable": true
                    },
                    "support_email": {
                        "description": "Support email for this category",
                        "type": "string",
                        "default": "",
                        "nullable": true
                    },
                    "open_hours": {
                        "description": "Open hours",
                        "type": "string",
                        "nullable": true
                    },
                    "description": {
                        "description": "Category description",
                        "type": "string",
                        "nullable": true
                    }
                },
                "type": "object"
            },
            "TicketCategoryUpdate": {
                "properties": {
                    "name": {
                        "description": "Category name",
                        "type": "string",
                        "maxLength": 255,
                        "minLength": 1
                    },
                    "icon": {
                        "description": "Category icon",
                        "type": "string",
                        "nullable": true
                    },
                    "color": {
                        "description": "Category color",
                        "type": "string",
                        "nullable": true
                    },
                    "support_email": {
                        "description": "Support email for this category",
                        "type": "string",
                        "nullable": true
                    },
                    "open_hours": {
                        "description": "Open hours",
                        "type": "string",
                        "nullable": true
                    },
                    "description": {
                        "description": "Category description",
                        "type": "string",
                        "nullable": true
                    }
                },
                "type": "object"
            },
            "TicketMessage": {
                "properties": {
                    "id": {
                        "description": "Message ID",
                        "type": "integer"
                    },
                    "ticket_id": {
                        "description": "Ticket ID",
                        "type": "integer"
                    },
                    "user_uuid": {
                        "description": "User UUID who sent the message",
                        "type": "string",
                        "format": "uuid",
                        "nullable": true
                    },
                    "message": {
                        "description": "Message content",
                        "type": "string"
                    },
                    "is_internal": {
                        "description": "Whether this is an internal note (staff only)",
                        "type": "boolean"
                    },
                    "created_at": {
                        "description": "Creation timestamp",
                        "type": "string",
                        "format": "date-time"
                    },
                    "updated_at": {
                        "description": "Last update timestamp",
                        "type": "string",
                        "format": "date-time",
                        "nullable": true
                    }
                },
                "type": "object"
            },
            "TicketMessageCreate": {
                "required": [
                    "message"
                ],
                "properties": {
                    "message": {
                        "description": "Message content",
                        "type": "string",
                        "minLength": 1
                    },
                    "is_internal": {
                        "description": "Whether this is an internal note (staff only)",
                        "type": "boolean",
                        "default": false,
                        "nullable": true
                    }
                },
                "type": "object"
            },
            "TicketMessageUpdate": {
                "properties": {
                    "message": {
                        "description": "Message content",
                        "type": "string",
                        "minLength": 1
                    },
                    "is_internal": {
                        "description": "Whether this is an internal note (staff only)",
                        "type": "boolean",
                        "nullable": true
                    }
                },
                "type": "object"
            },
            "TicketPriority": {
                "properties": {
                    "id": {
                        "description": "Priority ID",
                        "type": "integer"
                    },
                    "name": {
                        "description": "Priority name",
                        "type": "string"
                    },
                    "color": {
                        "description": "Priority color",
                        "type": "string"
                    },
                    "sort_order": {
                        "description": "Display order (lower appears first)",
                        "type": "integer"
                    },
                    "created_at": {
                        "description": "Creation timestamp",
                        "type": "string",
                        "format": "date-time"
                    },
                    "updated_at": {
                        "description": "Last update timestamp",
                        "type": "string",
                        "format": "date-time",
                        "nullable": true
                    }
                },
                "type": "object"
            },
            "TicketPriorityPagination": {
                "properties": {
                    "current_page": {
                        "description": "Current page number",
                        "type": "integer"
                    },
                    "per_page": {
                        "description": "Records per page",
                        "type": "integer"
                    },
                    "total_records": {
                        "description": "Total number of records",
                        "type": "integer"
                    },
                    "total_pages": {
                        "description": "Total number of pages",
                        "type": "integer"
                    },
                    "has_next": {
                        "description": "Whether there is a next page",
                        "type": "boolean"
                    },
                    "has_prev": {
                        "description": "Whether there is a previous page",
                        "type": "boolean"
                    },
                    "from": {
                        "description": "Starting record number",
                        "type": "integer"
                    },
                    "to": {
                        "description": "Ending record number",
                        "type": "integer"
                    }
                },
                "type": "object"
            },
            "TicketPriorityCreate": {
                "required": [
                    "name"
                ],
                "properties": {
                    "name": {
                        "description": "Priority name",
                        "type": "string",
                        "maxLength": 255,
                        "minLength": 1
                    },
                    "color": {
                        "description": "Priority color",
                        "type": "string",
                        "default": "#000000",
                        "nullable": true
                    },
                    "sort_order": {
                        "description": "Display order (lower appears first)",
                        "type": "integer",
                        "nullable": true
                    }
                },
                "type": "object"
            },
            "TicketPriorityUpdate": {
                "properties": {
                    "name": {
                        "description": "Priority name",
                        "type": "string",
                        "maxLength": 255,
                        "minLength": 1
                    },
                    "color": {
                        "description": "Priority color",
                        "type": "string",
                        "nullable": true
                    },
                    "sort_order": {
                        "description": "Display order (lower appears first)",
                        "type": "integer",
                        "nullable": true
                    }
                },
                "type": "object"
            },
            "TicketStatus": {
                "properties": {
                    "id": {
                        "description": "Status ID",
                        "type": "integer"
                    },
                    "name": {
                        "description": "Status name",
                        "type": "string"
                    },
                    "color": {
                        "description": "Status color",
                        "type": "string"
                    },
                    "sort_order": {
                        "description": "Display order (lower appears first)",
                        "type": "integer"
                    },
                    "is_default": {
                        "description": "Whether new tickets use this status (0 or 1)",
                        "type": "integer"
                    },
                    "created_at": {
                        "description": "Creation timestamp",
                        "type": "string",
                        "format": "date-time"
                    },
                    "updated_at": {
                        "description": "Last update timestamp",
                        "type": "string",
                        "format": "date-time",
                        "nullable": true
                    }
                },
                "type": "object"
            },
            "TicketStatusPagination": {
                "properties": {
                    "current_page": {
                        "description": "Current page number",
                        "type": "integer"
                    },
                    "per_page": {
                        "description": "Records per page",
                        "type": "integer"
                    },
                    "total_records": {
                        "description": "Total number of records",
                        "type": "integer"
                    },
                    "total_pages": {
                        "description": "Total number of pages",
                        "type": "integer"
                    },
                    "has_next": {
                        "description": "Whether there is a next page",
                        "type": "boolean"
                    },
                    "has_prev": {
                        "description": "Whether there is a previous page",
                        "type": "boolean"
                    },
                    "from": {
                        "description": "Starting record number",
                        "type": "integer"
                    },
                    "to": {
                        "description": "Ending record number",
                        "type": "integer"
                    }
                },
                "type": "object"
            },
            "TicketStatusCreate": {
                "required": [
                    "name"
                ],
                "properties": {
                    "name": {
                        "description": "Status name",
                        "type": "string",
                        "maxLength": 255,
                        "minLength": 1
                    },
                    "color": {
                        "description": "Status color",
                        "type": "string",
                        "default": "#000000",
                        "nullable": true
                    },
                    "sort_order": {
                        "description": "Display order (lower appears first)",
                        "type": "integer",
                        "nullable": true
                    },
                    "is_default": {
                        "description": "Assign this status to newly created tickets",
                        "type": "boolean",
                        "nullable": true
                    }
                },
                "type": "object"
            },
            "TicketStatusUpdate": {
                "properties": {
                    "name": {
                        "description": "Status name",
                        "type": "string",
                        "maxLength": 255,
                        "minLength": 1
                    },
                    "color": {
                        "description": "Status color",
                        "type": "string",
                        "nullable": true
                    },
                    "sort_order": {
                        "description": "Display order (lower appears first)",
                        "type": "integer",
                        "nullable": true
                    },
                    "is_default": {
                        "description": "Assign this status to newly created tickets",
                        "type": "boolean",
                        "nullable": true
                    }
                },
                "type": "object"
            },
            "Ticket": {
                "properties": {
                    "id": {
                        "description": "Ticket ID",
                        "type": "integer"
                    },
                    "uuid": {
                        "description": "Ticket UUID",
                        "type": "string",
                        "format": "uuid"
                    },
                    "user_uuid": {
                        "description": "User UUID who created the ticket",
                        "type": "string",
                        "format": "uuid"
                    },
                    "server_id": {
                        "description": "Server ID if ticket is related to a server",
                        "type": "integer",
                        "nullable": true
                    },
                    "category_id": {
                        "description": "Category ID",
                        "type": "integer"
                    },
                    "priority_id": {
                        "description": "Priority ID",
                        "type": "integer"
                    },
                    "status_id": {
                        "description": "Status ID",
                        "type": "integer"
                    },
                    "title": {
                        "description": "Ticket title",
                        "type": "string"
                    },
                    "description": {
                        "description": "Ticket description",
                        "type": "string"
                    },
                    "closed_at": {
                        "description": "Ticket closed timestamp",
                        "type": "string",
                        "format": "date-time",
                        "nullable": true
                    },
                    "created_at": {
                        "description": "Creation timestamp",
                        "type": "string",
                        "format": "date-time"
                    },
                    "updated_at": {
                        "description": "Last update timestamp",
                        "type": "string",
                        "format": "date-time",
                        "nullable": true
                    }
                },
                "type": "object"
            },
            "TicketPagination": {
                "properties": {
                    "current_page": {
                        "description": "Current page number",
                        "type": "integer"
                    },
                    "per_page": {
                        "description": "Records per page",
                        "type": "integer"
                    },
                    "total_records": {
                        "description": "Total number of records",
                        "type": "integer"
                    },
                    "total_pages": {
                        "description": "Total number of pages",
                        "type": "integer"
                    },
                    "has_next": {
                        "description": "Whether there is a next page",
                        "type": "boolean"
                    },
                    "has_prev": {
                        "description": "Whether there is a previous page",
                        "type": "boolean"
                    },
                    "from": {
                        "description": "Starting record number",
                        "type": "integer"
                    },
                    "to": {
                        "description": "Ending record number",
                        "type": "integer"
                    }
                },
                "type": "object"
            },
            "TicketCreate": {
                "required": [
                    "user_uuid",
                    "category_id",
                    "priority_id",
                    "status_id",
                    "title",
                    "description"
                ],
                "properties": {
                    "user_uuid": {
                        "description": "User UUID who is creating the ticket",
                        "type": "string",
                        "format": "uuid"
                    },
                    "server_id": {
                        "description": "Server ID if ticket is related to a server",
                        "type": "integer",
                        "nullable": true
                    },
                    "category_id": {
                        "description": "Category ID",
                        "type": "integer"
                    },
                    "priority_id": {
                        "description": "Priority ID",
                        "type": "integer"
                    },
                    "status_id": {
                        "description": "Status ID",
                        "type": "integer"
                    },
                    "title": {
                        "description": "Ticket title",
                        "type": "string",
                        "maxLength": 255,
                        "minLength": 1
                    },
                    "description": {
                        "description": "Ticket description",
                        "type": "string",
                        "minLength": 1
                    }
                },
                "type": "object"
            },
            "TicketUpdate": {
                "properties": {
                    "server_id": {
                        "description": "Server ID if ticket is related to a server",
                        "type": "integer",
                        "nullable": true
                    },
                    "category_id": {
                        "description": "Category ID",
                        "type": "integer"
                    },
                    "priority_id": {
                        "description": "Priority ID",
                        "type": "integer"
                    },
                    "status_id": {
                        "description": "Status ID",
                        "type": "integer"
                    },
                    "title": {
                        "description": "Ticket title",
                        "type": "string",
                        "maxLength": 255,
                        "minLength": 1
                    },
                    "description": {
                        "description": "Ticket description",
                        "type": "string",
                        "minLength": 1
                    },
                    "closed_at": {
                        "description": "Ticket closed timestamp",
                        "type": "string",
                        "format": "date-time",
                        "nullable": true
                    }
                },
                "type": "object"
            },
            "TicketReply": {
                "required": [
                    "message"
                ],
                "properties": {
                    "message": {
                        "description": "Reply message",
                        "type": "string",
                        "minLength": 1
                    },
                    "is_internal": {
                        "description": "Whether this is an internal note (staff only)",
                        "type": "boolean",
                        "default": false,
                        "nullable": true
                    }
                },
                "type": "object"
            },
            "TranslationFile": {
                "properties": {
                    "code": {
                        "type": "string",
                        "example": "en"
                    },
                    "name": {
                        "type": "string",
                        "example": "English"
                    },
                    "file": {
                        "type": "string",
                        "example": "en.json"
                    },
                    "size": {
                        "type": "integer",
                        "example": 191515
                    },
                    "modified": {
                        "type": "string",
                        "example": "2024-01-10T19:26:00Z"
                    }
                },
                "type": "object"
            },
            "User": {
                "properties": {
                    "id": {
                        "description": "User ID",
                        "type": "integer"
                    },
                    "uuid": {
                        "description": "User UUID",
                        "type": "string"
                    },
                    "username": {
                        "description": "Username",
                        "type": "string"
                    },
                    "first_name": {
                        "description": "First name",
                        "type": "string"
                    },
                    "last_name": {
                        "description": "Last name",
                        "type": "string"
                    },
                    "email": {
                        "description": "Email address",
                        "type": "string",
                        "format": "email"
                    },
                    "email_verified": {
                        "description": "Whether the user email is verified",
                        "type": "boolean"
                    },
                    "avatar": {
                        "description": "Avatar URL",
                        "type": "string",
                        "format": "uri"
                    },
                    "last_seen": {
                        "description": "Last seen timestamp",
                        "type": "string",
                        "format": "date-time",
                        "nullable": true
                    },
                    "banned": {
                        "description": "Banned status",
                        "type": "boolean"
                    },
                    "two_fa_enabled": {
                        "description": "Two-factor authentication enabled",
                        "type": "boolean"
                    },
                    "created_at": {
                        "description": "Creation timestamp",
                        "type": "string",
                        "format": "date-time"
                    },
                    "updated_at": {
                        "description": "Last update timestamp",
                        "type": "string",
                        "format": "date-time"
                    },
                    "role": {
                        "description": "User role information",
                        "properties": {
                            "name": {
                                "description": "Role name",
                                "type": "string"
                            },
                            "display_name": {
                                "description": "Role display name",
                                "type": "string"
                            },
                            "color": {
                                "description": "Role color",
                                "type": "string"
                            }
                        },
                        "type": "object"
                    },
                    "activities": {
                        "description": "User activities",
                        "type": "array",
                        "items": {
                            "type": "object"
                        }
                    },
                    "mails": {
                        "description": "User mail history",
                        "type": "array",
                        "items": {
                            "type": "object"
                        }
                    }
                },
                "type": "object"
            },
            "UserPagination": {
                "properties": {
                    "current_page": {
                        "description": "Current page number",
                        "type": "integer"
                    },
                    "per_page": {
                        "description": "Records per page",
                        "type": "integer"
                    },
                    "total_records": {
                        "description": "Total number of records",
                        "type": "integer"
                    },
                    "total_pages": {
                        "description": "Total number of pages",
                        "type": "integer"
                    },
                    "has_next": {
                        "description": "Whether there is a next page",
                        "type": "boolean"
                    },
                    "has_prev": {
                        "description": "Whether there is a previous page",
                        "type": "boolean"
                    },
                    "from": {
                        "description": "Starting record number",
                        "type": "integer"
                    },
                    "to": {
                        "description": "Ending record number",
                        "type": "integer"
                    }
                },
                "type": "object"
            },
            "UserCreate": {
                "required": [
                    "username",
                    "first_name",
                    "last_name",
                    "email",
                    "password"
                ],
                "properties": {
                    "username": {
                        "description": "Username",
                        "type": "string",
                        "maxLength": 32,
                        "minLength": 3
                    },
                    "first_name": {
                        "description": "First name",
                        "type": "string",
                        "maxLength": 64,
                        "minLength": 1
                    },
                    "last_name": {
                        "description": "Last name",
                        "type": "string",
                        "maxLength": 64,
                        "minLength": 1
                    },
                    "email": {
                        "description": "Email address",
                        "type": "string",
                        "format": "email",
                        "maxLength": 255,
                        "minLength": 3
                    },
                    "password": {
                        "description": "Password",
                        "type": "string",
                        "maxLength": 255,
                        "minLength": 8
                    },
                    "avatar": {
                        "description": "Avatar URL",
                        "type": "string",
                        "format": "uri",
                        "nullable": true
                    },
                    "role_id": {
                        "description": "Role ID (defaults to 1)",
                        "type": "integer",
                        "nullable": true
                    }
                },
                "type": "object"
            },
            "UserUpdate": {
                "properties": {
                    "username": {
                        "description": "Username",
                        "type": "string",
                        "maxLength": 32,
                        "minLength": 3
                    },
                    "first_name": {
                        "description": "First name",
                        "type": "string",
                        "maxLength": 64,
                        "minLength": 1
                    },
                    "last_name": {
                        "description": "Last name",
                        "type": "string",
                        "maxLength": 64,
                        "minLength": 1
                    },
                    "email": {
                        "description": "Email address",
                        "type": "string",
                        "format": "email",
                        "maxLength": 255,
                        "minLength": 3
                    },
                    "password": {
                        "description": "Password",
                        "type": "string",
                        "maxLength": 255,
                        "minLength": 8
                    },
                    "avatar": {
                        "description": "Avatar URL",
                        "type": "string",
                        "format": "uri",
                        "nullable": true
                    },
                    "role_id": {
                        "description": "Role ID",
                        "type": "integer",
                        "nullable": true
                    },
                    "banned": {
                        "description": "Banned status",
                        "type": "boolean",
                        "nullable": true
                    }
                },
                "type": "object"
            },
            "UserActivity": {
                "properties": {
                    "name": {
                        "description": "Activity name",
                        "type": "string"
                    },
                    "context": {
                        "description": "Activity context",
                        "type": "string"
                    },
                    "ip_address": {
                        "description": "IP address",
                        "type": "string"
                    },
                    "created_at": {
                        "description": "Activity timestamp",
                        "type": "string",
                        "format": "date-time"
                    }
                },
                "type": "object"
            },
            "UserMail": {
                "properties": {
                    "subject": {
                        "description": "Mail subject",
                        "type": "string"
                    },
                    "template": {
                        "description": "Mail template",
                        "type": "string"
                    },
                    "data": {
                        "description": "Mail data",
                        "type": "object"
                    },
                    "status": {
                        "description": "Mail status",
                        "type": "string"
                    },
                    "created_at": {
                        "description": "Mail timestamp",
                        "type": "string",
                        "format": "date-time"
                    }
                },
                "type": "object"
            },
            "AdminUserServer": {
                "properties": {
                    "id": {
                        "description": "Server ID",
                        "type": "integer"
                    },
                    "uuid": {
                        "description": "Server UUID",
                        "type": "string"
                    },
                    "uuidShort": {
                        "description": "Short server UUID",
                        "type": "string"
                    },
                    "name": {
                        "description": "Server name",
                        "type": "string"
                    },
                    "description": {
                        "description": "Server description",
                        "type": "string",
                        "nullable": true
                    },
                    "status": {
                        "description": "Server status",
                        "type": "string"
                    },
                    "created_at": {
                        "description": "Creation timestamp",
                        "type": "string",
                        "format": "date-time"
                    }
                },
                "type": "object"
            },
            "VmInstance": {
                "properties": {
                    "id": {
                        "description": "VM Instance ID",
                        "type": "integer"
                    },
                    "vmid": {
                        "description": "Proxmox VMID",
                        "type": "integer"
                    },
                    "vm_node_id": {
                        "description": "VM Node ID",
                        "type": "integer"
                    },
                    "user_uuid": {
                        "description": "User UUID",
                        "type": "string",
                        "nullable": true
                    },
                    "pve_node": {
                        "description": "Proxmox node name",
                        "type": "string"
                    },
                    "plan_id": {
                        "description": "Plan ID",
                        "type": "integer",
                        "nullable": true
                    },
                    "template_id": {
                        "description": "Template ID",
                        "type": "integer",
                        "nullable": true
                    },
                    "vm_type": {
                        "description": "VM Type",
                        "type": "string",
                        "enum": [
                            "qemu",
                            "lxc"
                        ]
                    },
                    "hostname": {
                        "description": "Hostname",
                        "type": "string"
                    },
                    "status": {
                        "description": "VM Status",
                        "type": "string"
                    },
                    "ip_address": {
                        "description": "IP Address",
                        "type": "string"
                    },
                    "subnet_mask": {
                        "description": "Subnet Mask",
                        "type": "string",
                        "nullable": true
                    },
                    "gateway": {
                        "description": "Gateway",
                        "type": "string",
                        "nullable": true
                    },
                    "vm_ip_id": {
                        "description": "VM IP ID",
                        "type": "integer",
                        "nullable": true
                    },
                    "notes": {
                        "description": "Notes",
                        "type": "string",
                        "nullable": true
                    },
                    "created_at": {
                        "description": "Creation timestamp",
                        "type": "string",
                        "format": "date-time"
                    },
                    "updated_at": {
                        "description": "Last update timestamp",
                        "type": "string",
                        "format": "date-time"
                    }
                },
                "type": "object"
            },
            "VmInstancePagination": {
                "properties": {
                    "current_page": {
                        "description": "Current page number",
                        "type": "integer"
                    },
                    "per_page": {
                        "description": "Records per page",
                        "type": "integer"
                    },
                    "total_records": {
                        "description": "Total number of records",
                        "type": "integer"
                    },
                    "total_pages": {
                        "description": "Total number of pages",
                        "type": "integer"
                    },
                    "has_next": {
                        "description": "Whether there is a next page",
                        "type": "boolean"
                    },
                    "has_prev": {
                        "description": "Whether there is a previous page",
                        "type": "boolean"
                    }
                },
                "type": "object"
            },
            "VmInstanceCreate": {
                "required": [
                    "vm_node_id",
                    "template_id"
                ],
                "properties": {
                    "vm_node_id": {
                        "description": "VM Node ID",
                        "type": "integer"
                    },
                    "template_id": {
                        "description": "Template ID",
                        "type": "integer"
                    },
                    "pve_node": {
                        "description": "Explicit Proxmox cluster node to place the VM on",
                        "type": "string",
                        "nullable": true
                    },
                    "memory": {
                        "description": "Memory in MB",
                        "type": "integer",
                        "default": 512
                    },
                    "cpus": {
                        "description": "Number of CPU sockets",
                        "type": "integer",
                        "default": 1
                    },
                    "cores": {
                        "description": "Number of CPU cores per socket",
                        "type": "integer",
                        "default": 1
                    },
                    "disk": {
                        "description": "Disk size in GB",
                        "type": "integer",
                        "default": 10
                    },
                    "storage": {
                        "description": "Storage name",
                        "type": "string",
                        "default": "local"
                    },
                    "bridge": {
                        "description": "Network bridge",
                        "type": "string",
                        "default": "vmbr0"
                    },
                    "on_boot": {
                        "description": "Start on boot",
                        "type": "integer",
                        "default": 1
                    },
                    "hostname": {
                        "description": "Hostname",
                        "type": "string",
                        "nullable": true
                    },
                    "vm_ip_id": {
                        "description": "Specific IP ID to assign",
                        "type": "integer",
                        "nullable": true
                    },
                    "networks": {
                        "description": "List of network IP assignments for this VM",
                        "type": "array",
                        "items": {
                            "type": "object"
                        },
                        "nullable": true
                    },
                    "user_uuid": {
                        "description": "User UUID",
                        "type": "string",
                        "nullable": true
                    },
                    "notes": {
                        "description": "Notes",
                        "type": "string",
                        "nullable": true
                    },
                    "ci_user": {
                        "description": "Cloud-init user (required for KVM/QEMU)",
                        "type": "string",
                        "nullable": true
                    },
                    "ci_password": {
                        "description": "Cloud-init password (required for KVM/QEMU). Not used for LXC.",
                        "type": "string",
                        "nullable": true
                    }
                },
                "type": "object"
            },
            "VmInstanceUpdate": {
                "properties": {
                    "hostname": {
                        "description": "Hostname",
                        "type": "string",
                        "nullable": true
                    },
                    "notes": {
                        "description": "Notes",
                        "type": "string",
                        "nullable": true
                    },
                    "user_uuid": {
                        "description": "User UUID",
                        "type": "string",
                        "nullable": true
                    },
                    "vm_ip_id": {
                        "description": "VM IP ID",
                        "type": "integer",
                        "nullable": true
                    },
                    "memory": {
                        "description": "Memory in MB",
                        "type": "integer",
                        "nullable": true
                    },
                    "cpus": {
                        "description": "Number of CPUs",
                        "type": "integer",
                        "nullable": true
                    },
                    "cores": {
                        "description": "Number of Cores",
                        "type": "integer",
                        "nullable": true
                    },
                    "on_boot": {
                        "description": "Start on boot",
                        "type": "boolean",
                        "nullable": true
                    },
                    "networks": {
                        "description": "List of networks (LXC)",
                        "type": "array",
                        "items": {
                            "type": "object"
                        },
                        "nullable": true
                    },
                    "nameserver": {
                        "description": "Nameserver (LXC)",
                        "type": "string",
                        "nullable": true
                    },
                    "searchdomain": {
                        "description": "Search domain (LXC)",
                        "type": "string",
                        "nullable": true
                    },
                    "bios": {
                        "description": "QEMU BIOS mode: seabios or ovmf (EFI)",
                        "type": "string",
                        "nullable": true
                    },
                    "efi_enabled": {
                        "description": "Enable EFI disk (QEMU only)",
                        "type": "boolean",
                        "nullable": true
                    },
                    "efi_storage": {
                        "description": "Storage for EFI disk (QEMU only)",
                        "type": "string",
                        "nullable": true
                    },
                    "tpm_enabled": {
                        "description": "Enable TPM state disk (QEMU only)",
                        "type": "boolean",
                        "nullable": true
                    },
                    "tpm_storage": {
                        "description": "Storage for TPM state disk (QEMU only)",
                        "type": "string",
                        "nullable": true
                    }
                },
                "type": "object"
            },
            "VmNode": {
                "properties": {
                    "id": {
                        "description": "VM Node ID",
                        "type": "integer"
                    },
                    "name": {
                        "description": "VM Node name",
                        "type": "string"
                    },
                    "description": {
                        "description": "VM Node description",
                        "type": "string",
                        "nullable": true
                    },
                    "location_id": {
                        "description": "Location ID (must be type=vps)",
                        "type": "integer"
                    },
                    "fqdn": {
                        "description": "Proxmox host FQDN or IP",
                        "type": "string"
                    },
                    "scheme": {
                        "description": "Connection scheme",
                        "type": "string",
                        "enum": [
                            "http",
                            "https"
                        ]
                    },
                    "port": {
                        "description": "Proxmox API port",
                        "type": "integer"
                    },
                    "user": {
                        "description": "Proxmox API user (e.g. root@pam)",
                        "type": "string"
                    },
                    "token_id": {
                        "description": "Proxmox API token ID",
                        "type": "string"
                    },
                    "secret": {
                        "description": "Proxmox API token secret",
                        "type": "string"
                    },
                    "tls_no_verify": {
                        "description": "Skip TLS verification",
                        "type": "string",
                        "enum": [
                            "true",
                            "false"
                        ]
                    },
                    "timeout": {
                        "description": "Timeout in seconds",
                        "type": "integer"
                    },
                    "addional_headers": {
                        "description": "Additional HTTP headers (JSON encoded, optional)",
                        "type": "string",
                        "nullable": true
                    },
                    "additional_params": {
                        "description": "Additional query parameters (JSON encoded, optional)",
                        "type": "string",
                        "nullable": true
                    },
                    "created_at": {
                        "description": "Creation timestamp",
                        "type": "string",
                        "format": "date-time"
                    },
                    "updated_at": {
                        "description": "Last update timestamp",
                        "type": "string",
                        "format": "date-time"
                    }
                },
                "type": "object"
            },
            "VmNodePagination": {
                "properties": {
                    "current_page": {
                        "description": "Current page number",
                        "type": "integer"
                    },
                    "per_page": {
                        "description": "Records per page",
                        "type": "integer"
                    },
                    "total_records": {
                        "description": "Total number of records",
                        "type": "integer"
                    },
                    "total_pages": {
                        "description": "Total number of pages",
                        "type": "integer"
                    },
                    "has_next": {
                        "description": "Whether there is a next page",
                        "type": "boolean"
                    },
                    "has_prev": {
                        "description": "Whether there is a previous page",
                        "type": "boolean"
                    },
                    "from": {
                        "description": "Starting record number",
                        "type": "integer"
                    },
                    "to": {
                        "description": "Ending record number",
                        "type": "integer"
                    }
                },
                "type": "object"
            },
            "VmNodeCreate": {
                "required": [
                    "name",
                    "fqdn",
                    "location_id",
                    "user",
                    "token_id",
                    "secret"
                ],
                "properties": {
                    "name": {
                        "description": "VM Node name",
                        "type": "string",
                        "maxLength": 255,
                        "minLength": 1
                    },
                    "description": {
                        "description": "VM Node description",
                        "type": "string",
                        "nullable": true
                    },
                    "location_id": {
                        "description": "Location ID (must be type=vps)",
                        "type": "integer"
                    },
                    "fqdn": {
                        "description": "Proxmox host FQDN or IP",
                        "type": "string"
                    },
                    "scheme": {
                        "description": "Connection scheme",
                        "type": "string",
                        "default": "https",
                        "enum": [
                            "http",
                            "https"
                        ]
                    },
                    "port": {
                        "description": "Proxmox API port",
                        "type": "integer",
                        "default": 8006
                    },
                    "user": {
                        "description": "Proxmox API user (e.g. root@pam)",
                        "type": "string"
                    },
                    "token_id": {
                        "description": "Proxmox API token ID",
                        "type": "string"
                    },
                    "secret": {
                        "description": "Proxmox API token secret",
                        "type": "string"
                    },
                    "tls_no_verify": {
                        "description": "Skip TLS verification",
                        "type": "string",
                        "default": "false",
                        "enum": [
                            "true",
                            "false"
                        ]
                    },
                    "timeout": {
                        "description": "Timeout in seconds",
                        "type": "integer",
                        "default": 60
                    },
                    "addional_headers": {
                        "description": "Additional HTTP headers (JSON encoded, optional)",
                        "type": "string",
                        "nullable": true
                    },
                    "additional_params": {
                        "description": "Additional query parameters (JSON encoded, optional)",
                        "type": "string",
                        "nullable": true
                    },
                    "id": {
                        "description": "Optional VM node ID (useful for migrations)",
                        "type": "integer",
                        "nullable": true
                    }
                },
                "type": "object"
            },
            "VmNodeUpdate": {
                "properties": {
                    "name": {
                        "description": "VM Node name",
                        "type": "string",
                        "maxLength": 255,
                        "minLength": 1
                    },
                    "description": {
                        "description": "VM Node description",
                        "type": "string",
                        "nullable": true
                    },
                    "location_id": {
                        "description": "Location ID (must be type=vps)",
                        "type": "integer"
                    },
                    "fqdn": {
                        "description": "Proxmox host FQDN or IP",
                        "type": "string"
                    },
                    "scheme": {
                        "description": "Connection scheme",
                        "type": "string",
                        "enum": [
                            "http",
                            "https"
                        ]
                    },
                    "port": {
                        "description": "Proxmox API port",
                        "type": "integer"
                    },
                    "user": {
                        "description": "Proxmox API user (e.g. root@pam)",
                        "type": "string"
                    },
                    "token_id": {
                        "description": "Proxmox API token ID",
                        "type": "string"
                    },
                    "secret": {
                        "description": "Proxmox API token secret",
                        "type": "string"
                    },
                    "tls_no_verify": {
                        "description": "Skip TLS verification",
                        "type": "string",
                        "enum": [
                            "true",
                            "false"
                        ]
                    },
                    "timeout": {
                        "description": "Timeout in seconds",
                        "type": "integer"
                    },
                    "addional_headers": {
                        "description": "Additional HTTP headers (JSON encoded, optional)",
                        "type": "string",
                        "nullable": true
                    },
                    "additional_params": {
                        "description": "Additional query parameters (JSON encoded, optional)",
                        "type": "string",
                        "nullable": true
                    }
                },
                "type": "object"
            },
            "WebNode": {
                "properties": {
                    "id": {
                        "description": "Web Node ID",
                        "type": "integer"
                    },
                    "uuid": {
                        "description": "Web Node UUID",
                        "type": "string",
                        "format": "uuid"
                    },
                    "name": {
                        "description": "Web Node name",
                        "type": "string"
                    },
                    "description": {
                        "description": "Web Node description",
                        "type": "string",
                        "nullable": true
                    },
                    "location_id": {
                        "description": "Location ID (must be type=web)",
                        "type": "integer"
                    },
                    "fqdn": {
                        "description": "FeatherQuilld host FQDN or IP",
                        "type": "string"
                    },
                    "scheme": {
                        "description": "Connection scheme",
                        "type": "string",
                        "enum": [
                            "http",
                            "https"
                        ]
                    },
                    "public": {
                        "description": "Whether the node is publicly visible",
                        "type": "integer"
                    },
                    "behind_proxy": {
                        "description": "Whether the node is behind a reverse proxy",
                        "type": "integer"
                    },
                    "maintenance_mode": {
                        "description": "Whether the node is in maintenance mode",
                        "type": "integer"
                    },
                    "memory": {
                        "description": "Memory allocation in MB",
                        "type": "integer"
                    },
                    "memory_overallocate": {
                        "description": "Memory overallocation percentage",
                        "type": "integer"
                    },
                    "disk": {
                        "description": "Disk allocation in MB",
                        "type": "integer"
                    },
                    "disk_overallocate": {
                        "description": "Disk overallocation percentage",
                        "type": "integer"
                    },
                    "upload_size": {
                        "description": "Max upload size in MB",
                        "type": "integer"
                    },
                    "daemon_token_id": {
                        "description": "FeatherQuilld daemon token ID",
                        "type": "string"
                    },
                    "daemon_token": {
                        "description": "FeatherQuilld daemon authentication token",
                        "type": "string"
                    },
                    "daemonListen": {
                        "description": "FeatherQuilld daemon listen port",
                        "type": "integer"
                    },
                    "daemonBase": {
                        "description": "FeatherQuilld daemon base path",
                        "type": "string"
                    },
                    "websitesPath": {
                        "description": "Volumes path (system.data); defaults to {daemonBase}/volumes",
                        "type": "string",
                        "nullable": true
                    },
                    "backupsPath": {
                        "description": "Backup path (system.backup_directory); defaults to {daemonBase}/backups",
                        "type": "string",
                        "nullable": true
                    },
                    "backupsProvider": {
                        "description": "Backup storage provider: local or s3",
                        "type": "string",
                        "default": "local",
                        "nullable": true
                    },
                    "backupsS3Endpoint": {
                        "description": "S3-compatible endpoint URL (empty = AWS default)",
                        "type": "string",
                        "nullable": true
                    },
                    "backupsS3Region": {
                        "description": "S3 region",
                        "type": "string",
                        "default": "us-east-1",
                        "nullable": true
                    },
                    "backupsS3Bucket": {
                        "description": "S3 bucket name",
                        "type": "string",
                        "nullable": true
                    },
                    "backupsS3AccessKey": {
                        "description": "S3 access key",
                        "type": "string",
                        "nullable": true
                    },
                    "backupsS3SecretKey": {
                        "description": "S3 secret key",
                        "type": "string",
                        "nullable": true
                    },
                    "backupsS3Prefix": {
                        "description": "S3 object key prefix",
                        "type": "string",
                        "default": "webspaces/",
                        "nullable": true
                    },
                    "backupsS3ForcePathStyle": {
                        "description": "Force path-style S3 addressing (MinIO, etc.)",
                        "type": "boolean",
                        "nullable": true
                    },
                    "addonsPath": {
                        "description": "Plugins path (plugins.directory); only emitted in config when explicitly set",
                        "type": "string",
                        "nullable": true
                    },
                    "quilldConfigOverrides": {
                        "description": "Optional JSON object merged into generated FeatherQuilld config (docker, api.ssl, etc.)",
                        "type": "string",
                        "nullable": true
                    },
                    "remoteTimeout": {
                        "description": "Panel API request timeout in seconds",
                        "type": "integer",
                        "default": 30
                    },
                    "remoteRetryLimit": {
                        "description": "Panel API retry limit",
                        "type": "integer",
                        "default": 10
                    },
                    "remoteCustomHeaders": {
                        "description": "Optional JSON object of custom HTTP headers sent to the panel (remote.custom_headers)",
                        "type": "string",
                        "nullable": true
                    },
                    "sftpEnabled": {
                        "description": "Whether SFTP is enabled on the daemon",
                        "type": "integer"
                    },
                    "sftpKeyAlgorithm": {
                        "description": "SSH key algorithm for SFTP host keys",
                        "type": "string",
                        "default": "ssh-ed25519"
                    },
                    "sftpPort": {
                        "description": "SFTP listen port",
                        "type": "integer",
                        "default": 2222
                    },
                    "sftpDisablePasswordAuth": {
                        "description": "Whether SFTP password authentication is disabled",
                        "type": "integer"
                    },
                    "proxyEnabled": {
                        "description": "Whether FeatherQuilld terminates HTTP(S) for WebSpaces",
                        "type": "boolean",
                        "nullable": true
                    },
                    "proxyProvider": {
                        "description": "Reverse proxy provider: caddy, nginx, or traefik",
                        "type": "string",
                        "nullable": true
                    },
                    "acmeEmail": {
                        "description": "Optional ACME fallback email (site owner account email is preferred)",
                        "type": "string",
                        "nullable": true
                    },
                    "acmeStaging": {
                        "description": "Use Let’s Encrypt staging ACME directory",
                        "type": "boolean",
                        "nullable": true
                    },
                    "backendPortMin": {
                        "description": "Loopback backend port range start (system.proxy.backend_port_min)",
                        "type": "integer",
                        "default": 20000
                    },
                    "backendPortMax": {
                        "description": "Loopback backend port range end (system.proxy.backend_port_max)",
                        "type": "integer",
                        "default": 29999
                    },
                    "created_at": {
                        "description": "Creation timestamp",
                        "type": "string",
                        "format": "date-time"
                    },
                    "updated_at": {
                        "description": "Last update timestamp",
                        "type": "string",
                        "format": "date-time"
                    }
                },
                "type": "object"
            },
            "WebNodePagination": {
                "properties": {
                    "current_page": {
                        "description": "Current page number",
                        "type": "integer"
                    },
                    "per_page": {
                        "description": "Records per page",
                        "type": "integer"
                    },
                    "total_records": {
                        "description": "Total number of records",
                        "type": "integer"
                    },
                    "total_pages": {
                        "description": "Total number of pages",
                        "type": "integer"
                    },
                    "has_next": {
                        "description": "Whether there is a next page",
                        "type": "boolean"
                    },
                    "has_prev": {
                        "description": "Whether there is a previous page",
                        "type": "boolean"
                    },
                    "from": {
                        "description": "Starting record number",
                        "type": "integer"
                    },
                    "to": {
                        "description": "Ending record number",
                        "type": "integer"
                    }
                },
                "type": "object"
            },
            "WebNodeCreate": {
                "required": [
                    "name",
                    "fqdn",
                    "location_id"
                ],
                "properties": {
                    "name": {
                        "description": "Web Node name",
                        "type": "string",
                        "maxLength": 191,
                        "minLength": 1
                    },
                    "description": {
                        "description": "Web Node description",
                        "type": "string",
                        "nullable": true
                    },
                    "location_id": {
                        "description": "Location ID (must be type=web)",
                        "type": "integer"
                    },
                    "fqdn": {
                        "description": "FeatherQuilld host FQDN or IP",
                        "type": "string"
                    },
                    "scheme": {
                        "description": "Connection scheme",
                        "type": "string",
                        "default": "https",
                        "enum": [
                            "http",
                            "https"
                        ]
                    },
                    "public": {
                        "description": "Whether the node is publicly visible",
                        "type": "boolean",
                        "default": true
                    },
                    "behind_proxy": {
                        "description": "Whether the node is behind a reverse proxy",
                        "type": "boolean",
                        "default": false
                    },
                    "maintenance_mode": {
                        "description": "Whether the node is in maintenance mode",
                        "type": "boolean",
                        "default": false
                    },
                    "memory": {
                        "description": "Memory allocation in MB",
                        "type": "integer",
                        "default": 1024
                    },
                    "memory_overallocate": {
                        "description": "Memory overallocation percentage",
                        "type": "integer",
                        "default": 0
                    },
                    "disk": {
                        "description": "Disk allocation in MB",
                        "type": "integer",
                        "default": 4096
                    },
                    "disk_overallocate": {
                        "description": "Disk overallocation percentage",
                        "type": "integer",
                        "default": 0
                    },
                    "upload_size": {
                        "description": "Max upload size in MB",
                        "type": "integer",
                        "default": 100
                    },
                    "daemonListen": {
                        "description": "FeatherQuilld daemon listen port",
                        "type": "integer",
                        "default": 8989
                    },
                    "daemonBase": {
                        "description": "FeatherQuilld daemon base path",
                        "type": "string",
                        "default": "/var/lib/featherquilld"
                    },
                    "websitesPath": {
                        "description": "Path where hosted websites are stored (defaults to {daemonBase}/websites)",
                        "type": "string",
                        "nullable": true
                    },
                    "backupsPath": {
                        "description": "Path where website backups are stored (defaults to {daemonBase}/backups)",
                        "type": "string",
                        "nullable": true
                    },
                    "backupsProvider": {
                        "description": "Backup storage provider: local or s3",
                        "type": "string",
                        "default": "local",
                        "nullable": true
                    },
                    "backupsS3Endpoint": {
                        "description": "S3-compatible endpoint URL (empty = AWS default)",
                        "type": "string",
                        "nullable": true
                    },
                    "backupsS3Region": {
                        "description": "S3 region",
                        "type": "string",
                        "default": "us-east-1",
                        "nullable": true
                    },
                    "backupsS3Bucket": {
                        "description": "S3 bucket name",
                        "type": "string",
                        "nullable": true
                    },
                    "backupsS3AccessKey": {
                        "description": "S3 access key",
                        "type": "string",
                        "nullable": true
                    },
                    "backupsS3SecretKey": {
                        "description": "S3 secret key",
                        "type": "string",
                        "nullable": true
                    },
                    "backupsS3Prefix": {
                        "description": "S3 object key prefix",
                        "type": "string",
                        "default": "webspaces/",
                        "nullable": true
                    },
                    "backupsS3ForcePathStyle": {
                        "description": "Force path-style S3 addressing (MinIO, etc.)",
                        "type": "boolean",
                        "nullable": true
                    },
                    "addonsPath": {
                        "description": "Plugins path; only emitted in config when explicitly set",
                        "type": "string",
                        "nullable": true
                    },
                    "quilldConfigOverrides": {
                        "description": "Optional JSON merged into generated FeatherQuilld config",
                        "type": "string",
                        "nullable": true
                    },
                    "remoteTimeout": {
                        "description": "Panel API request timeout in seconds",
                        "type": "integer",
                        "default": 30
                    },
                    "remoteRetryLimit": {
                        "description": "Panel API retry limit",
                        "type": "integer",
                        "default": 10
                    },
                    "remoteCustomHeaders": {
                        "description": "Optional JSON object of custom HTTP headers (remote.custom_headers)",
                        "type": "string",
                        "nullable": true
                    },
                    "sftpEnabled": {
                        "description": "Whether SFTP is enabled",
                        "type": "boolean",
                        "default": true
                    },
                    "sftpKeyAlgorithm": {
                        "description": "SSH key algorithm for SFTP",
                        "type": "string",
                        "default": "ssh-ed25519"
                    },
                    "sftpPort": {
                        "description": "SFTP listen port",
                        "type": "integer",
                        "default": 2222
                    },
                    "sftpDisablePasswordAuth": {
                        "description": "Disable SFTP password authentication",
                        "type": "boolean",
                        "default": false
                    },
                    "proxyEnabled": {
                        "description": "Whether FeatherQuilld terminates HTTP(S) for WebSpaces",
                        "type": "boolean",
                        "nullable": true
                    },
                    "proxyProvider": {
                        "description": "Reverse proxy provider: caddy, nginx, or traefik",
                        "type": "string",
                        "nullable": true
                    },
                    "acmeEmail": {
                        "description": "Optional ACME fallback email (site owner account email is preferred)",
                        "type": "string",
                        "nullable": true
                    },
                    "acmeStaging": {
                        "description": "Use Let’s Encrypt staging ACME directory",
                        "type": "boolean",
                        "nullable": true
                    },
                    "backendPortMin": {
                        "description": "Loopback backend port range start (system.proxy.backend_port_min)",
                        "type": "integer",
                        "default": 20000
                    },
                    "backendPortMax": {
                        "description": "Loopback backend port range end (system.proxy.backend_port_max)",
                        "type": "integer",
                        "default": 29999
                    },
                    "id": {
                        "description": "Optional web node ID (useful for migrations)",
                        "type": "integer",
                        "nullable": true
                    }
                },
                "type": "object"
            },
            "WebNodeUpdate": {
                "properties": {
                    "name": {
                        "description": "Web Node name",
                        "type": "string",
                        "maxLength": 191,
                        "minLength": 1
                    },
                    "description": {
                        "description": "Web Node description",
                        "type": "string",
                        "nullable": true
                    },
                    "location_id": {
                        "description": "Location ID (must be type=web)",
                        "type": "integer"
                    },
                    "fqdn": {
                        "description": "FeatherQuilld host FQDN or IP",
                        "type": "string"
                    },
                    "scheme": {
                        "description": "Connection scheme",
                        "type": "string",
                        "enum": [
                            "http",
                            "https"
                        ]
                    },
                    "public": {
                        "description": "Whether the node is publicly visible",
                        "type": "boolean"
                    },
                    "behind_proxy": {
                        "description": "Whether the node is behind a reverse proxy",
                        "type": "boolean"
                    },
                    "maintenance_mode": {
                        "description": "Whether the node is in maintenance mode",
                        "type": "boolean"
                    },
                    "memory": {
                        "description": "Memory allocation in MB",
                        "type": "integer"
                    },
                    "memory_overallocate": {
                        "description": "Memory overallocation percentage",
                        "type": "integer"
                    },
                    "disk": {
                        "description": "Disk allocation in MB",
                        "type": "integer"
                    },
                    "disk_overallocate": {
                        "description": "Disk overallocation percentage",
                        "type": "integer"
                    },
                    "upload_size": {
                        "description": "Max upload size in MB",
                        "type": "integer"
                    },
                    "daemonListen": {
                        "description": "FeatherQuilld daemon listen port",
                        "type": "integer"
                    },
                    "daemonBase": {
                        "description": "FeatherQuilld daemon base path",
                        "type": "string"
                    },
                    "websitesPath": {
                        "description": "Volumes path (system.data); defaults to {daemonBase}/volumes",
                        "type": "string",
                        "nullable": true
                    },
                    "backupsPath": {
                        "description": "Backup path (system.backup_directory); defaults to {daemonBase}/backups",
                        "type": "string",
                        "nullable": true
                    },
                    "backupsProvider": {
                        "description": "Backup storage provider: local or s3",
                        "type": "string",
                        "default": "local",
                        "nullable": true
                    },
                    "backupsS3Endpoint": {
                        "description": "S3-compatible endpoint URL (empty = AWS default)",
                        "type": "string",
                        "nullable": true
                    },
                    "backupsS3Region": {
                        "description": "S3 region",
                        "type": "string",
                        "default": "us-east-1",
                        "nullable": true
                    },
                    "backupsS3Bucket": {
                        "description": "S3 bucket name",
                        "type": "string",
                        "nullable": true
                    },
                    "backupsS3AccessKey": {
                        "description": "S3 access key",
                        "type": "string",
                        "nullable": true
                    },
                    "backupsS3SecretKey": {
                        "description": "S3 secret key",
                        "type": "string",
                        "nullable": true
                    },
                    "backupsS3Prefix": {
                        "description": "S3 object key prefix",
                        "type": "string",
                        "default": "webspaces/",
                        "nullable": true
                    },
                    "backupsS3ForcePathStyle": {
                        "description": "Force path-style S3 addressing (MinIO, etc.)",
                        "type": "boolean",
                        "nullable": true
                    },
                    "addonsPath": {
                        "description": "Plugins path; only emitted in config when explicitly set",
                        "type": "string",
                        "nullable": true
                    },
                    "quilldConfigOverrides": {
                        "description": "Optional JSON merged into generated FeatherQuilld config",
                        "type": "string",
                        "nullable": true
                    },
                    "remoteTimeout": {
                        "description": "Panel API request timeout in seconds",
                        "type": "integer"
                    },
                    "remoteRetryLimit": {
                        "description": "Panel API retry limit",
                        "type": "integer"
                    },
                    "remoteCustomHeaders": {
                        "description": "Optional JSON object of custom HTTP headers (remote.custom_headers)",
                        "type": "string",
                        "nullable": true
                    },
                    "sftpEnabled": {
                        "description": "Whether SFTP is enabled",
                        "type": "boolean"
                    },
                    "sftpKeyAlgorithm": {
                        "description": "SSH key algorithm for SFTP",
                        "type": "string"
                    },
                    "sftpPort": {
                        "description": "SFTP listen port",
                        "type": "integer"
                    },
                    "sftpDisablePasswordAuth": {
                        "description": "Disable SFTP password authentication",
                        "type": "boolean"
                    },
                    "proxyEnabled": {
                        "description": "Whether FeatherQuilld terminates HTTP(S) for WebSpaces",
                        "type": "boolean",
                        "nullable": true
                    },
                    "proxyProvider": {
                        "description": "Reverse proxy provider: caddy, nginx, or traefik",
                        "type": "string",
                        "nullable": true
                    },
                    "acmeEmail": {
                        "description": "Optional ACME fallback email (site owner account email is preferred)",
                        "type": "string",
                        "nullable": true
                    },
                    "acmeStaging": {
                        "description": "Use Let’s Encrypt staging ACME directory",
                        "type": "boolean",
                        "nullable": true
                    },
                    "backendPortMin": {
                        "description": "Loopback backend port range start (system.proxy.backend_port_min)",
                        "type": "integer"
                    },
                    "backendPortMax": {
                        "description": "Loopback backend port range end (system.proxy.backend_port_max)",
                        "type": "integer"
                    }
                },
                "type": "object"
            },
            "DebugInfoResponse": {
                "properties": {
                    "ip_info": {
                        "description": "IP detection debug information",
                        "type": "object"
                    },
                    "headers": {
                        "description": "All HTTP headers",
                        "type": "object"
                    },
                    "server_vars": {
                        "description": "Relevant $_SERVER variables",
                        "type": "object"
                    }
                },
                "type": "object"
            },
            "CountryCode": {
                "properties": {
                    "code": {
                        "description": "ISO 3166-1 alpha-2 country code",
                        "type": "string"
                    },
                    "name": {
                        "description": "Country name",
                        "type": "string"
                    }
                },
                "type": "object"
            },
            "PluginSidebar": {
                "properties": {
                    "sidebar": {
                        "description": "Complete sidebar structure with plugin items",
                        "properties": {
                            "server": {
                                "description": "Server section sidebar items",
                                "type": "object"
                            },
                            "vds": {
                                "description": "VDS section sidebar items",
                                "type": "object"
                            },
                            "webspace": {
                                "description": "WebSpace section sidebar items",
                                "type": "object"
                            },
                            "client": {
                                "description": "Client section sidebar items",
                                "type": "object"
                            },
                            "admin": {
                                "description": "Admin section sidebar items",
                                "type": "object"
                            }
                        },
                        "type": "object"
                    }
                },
                "type": "object"
            },
            "SidebarItem": {
                "properties": {
                    "plugin": {
                        "description": "Plugin identifier",
                        "type": "string"
                    },
                    "pluginName": {
                        "description": "Plugin display name",
                        "type": "string"
                    },
                    "title": {
                        "description": "Sidebar item title",
                        "type": "string"
                    },
                    "url": {
                        "description": "Sidebar item URL",
                        "type": "string"
                    },
                    "icon": {
                        "description": "Sidebar item icon (emoji or URL). Used as fallback if lucideIcon is not provided.",
                        "type": "string"
                    },
                    "lucideIcon": {
                        "description": "Lucide icon name (e.g., \"camera\", \"search\"). If provided, this will be used instead of the icon field. See https://lucide.dev/icons/ for available icons.",
                        "type": "string",
                        "nullable": true
                    },
                    "permission": {
                        "description": "Required permission for this item",
                        "type": "string",
                        "nullable": true
                    },
                    "group": {
                        "description": "Group name for organizing items (e.g., \"Minecraft Java Edition\"). Items with the same group name will be grouped together.",
                        "type": "string",
                        "nullable": true
                    },
                    "priority": {
                        "description": "Sort order within the sidebar group. Lower numbers render first.",
                        "type": "integer",
                        "nullable": true
                    },
                    "hidden": {
                        "description": "Hide this sidebar route when true or when a visibility setting evaluates true.",
                        "type": "boolean",
                        "nullable": true
                    }
                },
                "type": "object"
            },
            "PluginWidget": {
                "properties": {
                    "id": {
                        "description": "Widget identifier",
                        "type": "string"
                    },
                    "plugin": {
                        "description": "Plugin identifier",
                        "type": "string"
                    },
                    "pluginName": {
                        "description": "Plugin display name",
                        "type": "string"
                    },
                    "component": {
                        "description": "Component file path",
                        "type": "string"
                    },
                    "enabled": {
                        "description": "Whether widget is enabled",
                        "type": "boolean"
                    },
                    "hidden": {
                        "description": "Whether widget is hidden by plugin frontend visibility rules",
                        "type": "boolean"
                    },
                    "priority": {
                        "description": "Display priority (higher = first)",
                        "type": "integer"
                    },
                    "page": {
                        "description": "Target page identifier",
                        "type": "string"
                    },
                    "location": {
                        "description": "Widget placement location",
                        "type": "string"
                    },
                    "useRawRendering": {
                        "description": "Whether to render the widget without a card container and with full transparency",
                        "type": "boolean"
                    },
                    "borderless": {
                        "description": "When true, skip Card/header/footer wrapper (embed iframe only; same effect as useRawRendering)",
                        "type": "boolean"
                    },
                    "title": {
                        "description": "Optional title to display above the widget content",
                        "type": "string",
                        "nullable": true
                    },
                    "description": {
                        "description": "Optional description text for the widget",
                        "type": "string",
                        "nullable": true
                    },
                    "icon": {
                        "description": "Optional icon identifier used in the widget header",
                        "type": "string",
                        "nullable": true
                    },
                    "size": {
                        "description": "Widget size preset or explicit responsive column configuration",
                        "oneOf": [
                            {
                                "type": "string",
                                "enum": [
                                    "full",
                                    "half",
                                    "third",
                                    "quarter"
                                ]
                            },
                            {
                                "description": "Responsive column span configuration per breakpoint",
                                "type": "object",
                                "additionalProperties": {
                                    "type": "integer"
                                }
                            }
                        ]
                    },
                    "layout": {
                        "description": "Advanced layout overrides (columns, breakpoints, row span)",
                        "type": "object",
                        "nullable": true,
                        "additionalProperties": {
                            "type": "integer"
                        }
                    },
                    "card": {
                        "description": "Card presentation options",
                        "properties": {
                            "enabled": {
                                "description": "Wrap widget in a card container",
                                "type": "boolean"
                            },
                            "variant": {
                                "description": "Card variant style",
                                "type": "string"
                            },
                            "padding": {
                                "description": "Card content padding size",
                                "type": "string"
                            },
                            "header": {
                                "properties": {
                                    "show": {
                                        "description": "Display the card header",
                                        "type": "boolean"
                                    },
                                    "title": {
                                        "description": "Header title override",
                                        "type": "string",
                                        "nullable": true
                                    },
                                    "description": {
                                        "description": "Header description text",
                                        "type": "string",
                                        "nullable": true
                                    },
                                    "icon": {
                                        "description": "Header icon identifier",
                                        "type": "string",
                                        "nullable": true
                                    }
                                },
                                "type": "object",
                                "nullable": true
                            },
                            "bodyClass": {
                                "description": "Additional classes for the card body",
                                "type": "string",
                                "nullable": true
                            },
                            "footer": {
                                "properties": {
                                    "show": {
                                        "description": "Display the card footer",
                                        "type": "boolean"
                                    },
                                    "text": {
                                        "description": "Footer helper text",
                                        "type": "string",
                                        "nullable": true
                                    }
                                },
                                "type": "object",
                                "nullable": true
                            }
                        },
                        "type": "object",
                        "nullable": true
                    },
                    "behavior": {
                        "description": "Behavior overrides for loading and error states",
                        "properties": {
                            "loadingMessage": {
                                "description": "Custom loading message",
                                "type": "string",
                                "nullable": true
                            },
                            "errorMessage": {
                                "description": "Custom error message",
                                "type": "string",
                                "nullable": true
                            },
                            "retryLabel": {
                                "description": "Custom label for retry button",
                                "type": "string",
                                "nullable": true
                            },
                            "emptyStateMessage": {
                                "description": "Custom empty state message",
                                "type": "string",
                                "nullable": true
                            }
                        },
                        "type": "object",
                        "nullable": true
                    },
                    "iframe": {
                        "description": "Iframe attribute overrides",
                        "properties": {
                            "minHeight": {
                                "type": "string",
                                "nullable": true
                            },
                            "maxHeight": {
                                "type": "string",
                                "nullable": true
                            },
                            "sandbox": {
                                "type": "string",
                                "nullable": true
                            },
                            "allow": {
                                "type": "string",
                                "nullable": true
                            },
                            "loading": {
                                "type": "string",
                                "nullable": true
                            },
                            "referrerPolicy": {
                                "type": "string",
                                "nullable": true
                            },
                            "title": {
                                "type": "string",
                                "nullable": true
                            },
                            "ariaLabel": {
                                "type": "string",
                                "nullable": true
                            }
                        },
                        "type": "object",
                        "nullable": true
                    },
                    "classes": {
                        "description": "Optional CSS class overrides",
                        "properties": {
                            "container": {
                                "type": "string",
                                "nullable": true
                            },
                            "card": {
                                "type": "string",
                                "nullable": true
                            },
                            "header": {
                                "type": "string",
                                "nullable": true
                            },
                            "content": {
                                "type": "string",
                                "nullable": true
                            },
                            "iframe": {
                                "type": "string",
                                "nullable": true
                            },
                            "footer": {
                                "type": "string",
                                "nullable": true
                            }
                        },
                        "type": "object",
                        "nullable": true
                    }
                },
                "type": "object"
            },
            "PluginWidgetsResponse": {
                "properties": {
                    "widgets": {
                        "description": "Widgets organized by page and location",
                        "type": "object",
                        "additionalProperties": {
                            "type": "object",
                            "additionalProperties": {
                                "type": "array",
                                "items": {
                                    "$ref": "#/components/schemas/PluginWidget"
                                }
                            }
                        }
                    }
                },
                "type": "object"
            },
            "SelftestResponse": {
                "properties": {
                    "status": {
                        "description": "Overall system status",
                        "type": "string"
                    },
                    "checks": {
                        "description": "Individual check results",
                        "type": "object"
                    },
                    "timestamp": {
                        "description": "This check timestamp",
                        "type": "integer"
                    },
                    "cached": {
                        "description": "If the response is cached",
                        "type": "boolean"
                    }
                },
                "type": "object"
            },
            "PublicSettings": {
                "properties": {
                    "settings": {
                        "description": "Public application settings with default values",
                        "type": "object"
                    }
                },
                "type": "object"
            },
            "Translations": {
                "description": "Translation key-value pairs",
                "type": "object"
            },
            "WebAppManifest": {
                "properties": {
                    "name": {
                        "description": "Webapp name",
                        "type": "string"
                    },
                    "short_name": {
                        "description": "Webapp short name",
                        "type": "string"
                    },
                    "description": {
                        "description": "Webapp description",
                        "type": "string"
                    },
                    "icons": {
                        "type": "array",
                        "items": {
                            "type": "object"
                        }
                    },
                    "start_url": {
                        "type": "string"
                    },
                    "scope": {
                        "type": "string"
                    },
                    "display": {
                        "type": "string"
                    },
                    "theme_color": {
                        "type": "string"
                    },
                    "background_color": {
                        "type": "string"
                    }
                },
                "type": "object"
            },
            "LogoutResponse": {
                "properties": {
                    "message": {
                        "description": "Logout success message",
                        "type": "string"
                    }
                },
                "type": "object"
            },
            "EmailLoginRequest": {
                "required": [
                    "email"
                ],
                "properties": {
                    "email": {
                        "description": "User email address",
                        "type": "string",
                        "format": "email"
                    },
                    "turnstile_token": {
                        "description": "CloudFlare Turnstile token (required if Turnstile is enabled)",
                        "type": "string"
                    }
                },
                "type": "object"
            },
            "EmailLoginVerifyRequest": {
                "required": [
                    "email",
                    "code"
                ],
                "properties": {
                    "email": {
                        "description": "User email address",
                        "type": "string",
                        "format": "email"
                    },
                    "code": {
                        "description": "6-digit login code sent to email",
                        "type": "string",
                        "maxLength": 6,
                        "minLength": 6
                    }
                },
                "type": "object"
            },
            "EmailLoginCodeSentResponse": {
                "properties": {
                    "message": {
                        "description": "Success message",
                        "type": "string"
                    },
                    "email": {
                        "description": "Email address where code was sent",
                        "type": "string"
                    }
                },
                "type": "object"
            },
            "ForgotPasswordRequest": {
                "required": [
                    "email"
                ],
                "properties": {
                    "email": {
                        "description": "User email address",
                        "type": "string",
                        "format": "email",
                        "maxLength": 255,
                        "minLength": 3
                    },
                    "turnstile_token": {
                        "description": "CloudFlare Turnstile token (required if Turnstile is enabled)",
                        "type": "string"
                    }
                },
                "type": "object"
            },
            "ForgotPasswordResponse": {
                "properties": {
                    "message": {
                        "description": "Success message",
                        "type": "string"
                    }
                },
                "type": "object"
            },
            "LdapLoginRequest": {
                "required": [
                    "provider_uuid",
                    "username",
                    "password"
                ],
                "properties": {
                    "provider_uuid": {
                        "description": "LDAP provider UUID",
                        "type": "string"
                    },
                    "username": {
                        "description": "LDAP username",
                        "type": "string",
                        "maxLength": 255,
                        "minLength": 1
                    },
                    "password": {
                        "description": "LDAP password",
                        "type": "string",
                        "maxLength": 255,
                        "minLength": 1
                    },
                    "turnstile_token": {
                        "description": "CloudFlare Turnstile token (required if Turnstile is enabled)",
                        "type": "string"
                    }
                },
                "type": "object"
            },
            "LoginRequest": {
                "required": [
                    "username_or_email",
                    "password"
                ],
                "properties": {
                    "username_or_email": {
                        "description": "User email address or username",
                        "type": "string",
                        "maxLength": 255,
                        "minLength": 3
                    },
                    "password": {
                        "description": "User password",
                        "type": "string",
                        "maxLength": 255,
                        "minLength": 8
                    },
                    "turnstile_token": {
                        "description": "CloudFlare Turnstile token (required if Turnstile is enabled)",
                        "type": "string"
                    }
                },
                "type": "object"
            },
            "LoginResponse": {
                "properties": {
                    "user": {
                        "description": "User information",
                        "type": "object"
                    },
                    "preferences": {
                        "description": "User preferences",
                        "type": "object"
                    },
                    "message": {
                        "description": "Success message",
                        "type": "string"
                    }
                },
                "type": "object"
            },
            "TwoFactorRequiredResponse": {
                "properties": {
                    "email": {
                        "description": "User email address",
                        "type": "string"
                    },
                    "challenge": {
                        "description": "Short-lived token proving password auth succeeded; required for /two-factor",
                        "type": "string"
                    },
                    "message": {
                        "description": "2FA required message",
                        "type": "string"
                    }
                },
                "type": "object"
            },
            "OidcLoginState": {
                "properties": {
                    "state": {
                        "description": "CSRF state parameter",
                        "type": "string"
                    },
                    "nonce": {
                        "description": "OIDC nonce for ID token",
                        "type": "string"
                    }
                },
                "type": "object"
            },
            "RegisterRequest": {
                "required": [
                    "username",
                    "email",
                    "password",
                    "first_name",
                    "last_name"
                ],
                "properties": {
                    "username": {
                        "description": "Username (alphanumeric and underscores only)",
                        "type": "string",
                        "maxLength": 64,
                        "minLength": 3
                    },
                    "email": {
                        "description": "User email address",
                        "type": "string",
                        "format": "email",
                        "maxLength": 255,
                        "minLength": 3
                    },
                    "password": {
                        "description": "User password",
                        "type": "string",
                        "maxLength": 255,
                        "minLength": 8
                    },
                    "first_name": {
                        "description": "User first name",
                        "type": "string",
                        "maxLength": 64,
                        "minLength": 3
                    },
                    "last_name": {
                        "description": "User last name",
                        "type": "string",
                        "maxLength": 64,
                        "minLength": 3
                    },
                    "turnstile_token": {
                        "description": "CloudFlare Turnstile token (required if Turnstile is enabled)",
                        "type": "string"
                    }
                },
                "type": "object"
            },
            "RegisterResponse": {
                "properties": {
                    "user": {
                        "description": "User information",
                        "type": "object"
                    },
                    "preferences": {
                        "description": "User preferences",
                        "type": "object"
                    },
                    "message": {
                        "description": "Success message",
                        "type": "string"
                    }
                },
                "type": "object"
            },
            "ResetPasswordRequest": {
                "required": [
                    "token",
                    "password"
                ],
                "properties": {
                    "token": {
                        "description": "Password reset token from email",
                        "type": "string"
                    },
                    "password": {
                        "description": "New password",
                        "type": "string",
                        "maxLength": 255,
                        "minLength": 8
                    },
                    "turnstile_token": {
                        "description": "CloudFlare Turnstile token (required if Turnstile is enabled)",
                        "type": "string"
                    }
                },
                "type": "object"
            },
            "ResetPasswordResponse": {
                "properties": {
                    "message": {
                        "description": "Success message",
                        "type": "string"
                    }
                },
                "type": "object"
            },
            "TokenValidationResponse": {
                "properties": {
                    "message": {
                        "description": "Token validation message",
                        "type": "string"
                    },
                    "token": {
                        "description": "Validated token",
                        "type": "string"
                    }
                },
                "type": "object"
            },
            "TwoFactorEnableRequest": {
                "required": [
                    "code",
                    "secret"
                ],
                "properties": {
                    "code": {
                        "description": "6-digit TOTP code",
                        "type": "string",
                        "maxLength": 6,
                        "minLength": 6
                    },
                    "secret": {
                        "description": "16-character secret key",
                        "type": "string",
                        "maxLength": 16,
                        "minLength": 16
                    },
                    "turnstile_token": {
                        "description": "CloudFlare Turnstile token (required if Turnstile is enabled)",
                        "type": "string"
                    }
                },
                "type": "object"
            },
            "TwoFactorEnableResponse": {
                "properties": {
                    "user": {
                        "description": "User information",
                        "type": "object"
                    },
                    "message": {
                        "description": "Success message",
                        "type": "string"
                    }
                },
                "type": "object"
            },
            "TwoFactorSetupResponse": {
                "properties": {
                    "qr_code_url": {
                        "description": "QR code URL for authenticator app",
                        "type": "string"
                    },
                    "secret": {
                        "description": "Secret key for manual entry",
                        "type": "string"
                    },
                    "message": {
                        "description": "Success message",
                        "type": "string"
                    }
                },
                "type": "object"
            },
            "TwoFactorVerifyRequest": {
                "required": [
                    "email",
                    "code",
                    "challenge"
                ],
                "properties": {
                    "email": {
                        "description": "User email address",
                        "type": "string",
                        "format": "email"
                    },
                    "code": {
                        "description": "6-digit TOTP code",
                        "type": "string",
                        "maxLength": 6,
                        "minLength": 6
                    },
                    "challenge": {
                        "description": "Challenge token from the password authentication step (TWO_FACTOR_REQUIRED)",
                        "type": "string",
                        "maxLength": 64,
                        "minLength": 64
                    }
                },
                "type": "object"
            },
            "TwoFactorVerifyResponse": {
                "properties": {
                    "user": {
                        "description": "User information",
                        "type": "object"
                    },
                    "message": {
                        "description": "Success message",
                        "type": "string"
                    }
                },
                "type": "object"
            },
            "ChatbotRequest": {
                "required": [
                    "message"
                ],
                "properties": {
                    "message": {
                        "description": "User message",
                        "type": "string"
                    },
                    "history": {
                        "description": "Chat history",
                        "type": "array",
                        "items": {
                            "type": "object"
                        }
                    }
                },
                "type": "object"
            },
            "ChatbotResponse": {
                "properties": {
                    "response": {
                        "description": "AI assistant response",
                        "type": "string"
                    }
                },
                "type": "object"
            },
            "UserNotification": {
                "properties": {
                    "id": {
                        "description": "Notification ID",
                        "type": "integer"
                    },
                    "user_id": {
                        "description": "Target user ID (null = global)",
                        "type": "integer",
                        "nullable": true
                    },
                    "server_id": {
                        "description": "Target server ID (null = account/global)",
                        "type": "integer",
                        "nullable": true
                    },
                    "title": {
                        "description": "Notification title",
                        "type": "string"
                    },
                    "message_markdown": {
                        "description": "Notification message in Markdown format",
                        "type": "string"
                    },
                    "type": {
                        "description": "Notification type",
                        "type": "string",
                        "enum": [
                            "info",
                            "warning",
                            "danger",
                            "success",
                            "error"
                        ]
                    },
                    "is_dismissible": {
                        "description": "Whether the notification can be dismissed",
                        "type": "boolean"
                    },
                    "is_sticky": {
                        "description": "Whether the notification stays until explicitly closed",
                        "type": "boolean"
                    },
                    "created_at": {
                        "description": "Creation timestamp",
                        "type": "string",
                        "format": "date-time"
                    },
                    "updated_at": {
                        "description": "Last update timestamp",
                        "type": "string",
                        "format": "date-time",
                        "nullable": true
                    }
                },
                "type": "object"
            },
            "ServerFileItem": {
                "properties": {
                    "name": {
                        "description": "File or directory name",
                        "type": "string"
                    },
                    "type": {
                        "description": "Item type",
                        "type": "string",
                        "enum": [
                            "file",
                            "directory"
                        ]
                    },
                    "size": {
                        "description": "File size in bytes (directory entry size for folders)",
                        "type": "integer",
                        "nullable": true
                    },
                    "directory_size": {
                        "description": "Recursive size of folder contents in bytes (only when requested from Wings)",
                        "type": "integer",
                        "nullable": true
                    },
                    "permissions": {
                        "description": "File permissions",
                        "type": "string",
                        "nullable": true
                    },
                    "modified_at": {
                        "description": "Last modified timestamp",
                        "type": "string",
                        "format": "date-time",
                        "nullable": true
                    },
                    "path": {
                        "description": "Full file path",
                        "type": "string"
                    }
                },
                "type": "object"
            },
            "FileOperationRequest": {
                "required": [
                    "files",
                    "root"
                ],
                "properties": {
                    "files": {
                        "description": "Array of file paths",
                        "type": "array",
                        "items": {
                            "type": "string"
                        }
                    },
                    "root": {
                        "description": "Root directory path",
                        "type": "string"
                    }
                },
                "type": "object"
            },
            "CompressRequest": {
                "required": [
                    "files",
                    "root"
                ],
                "properties": {
                    "files": {
                        "description": "Array of file paths",
                        "type": "array",
                        "items": {
                            "type": "string"
                        }
                    },
                    "root": {
                        "description": "Root directory path",
                        "type": "string"
                    },
                    "name": {
                        "description": "Archive name (optional, auto-generated if not provided)",
                        "type": "string",
                        "nullable": true
                    },
                    "extension": {
                        "description": "Archive type: zip, tar.gz, tgz, tar.bz2, tbz2, tar.xz, txz",
                        "type": "string",
                        "default": "tar.gz",
                        "nullable": true
                    }
                },
                "type": "object"
            },
            "RenameRequest": {
                "required": [
                    "files",
                    "root"
                ],
                "properties": {
                    "files": {
                        "description": "Array of rename operations",
                        "type": "array",
                        "items": {
                            "properties": {
                                "from": {
                                    "type": "string"
                                },
                                "to": {
                                    "type": "string"
                                }
                            },
                            "type": "object"
                        }
                    },
                    "root": {
                        "description": "Root directory path",
                        "type": "string"
                    }
                },
                "type": "object"
            },
            "CopyRequest": {
                "required": [
                    "files",
                    "location"
                ],
                "properties": {
                    "files": {
                        "description": "Array of file paths to copy",
                        "type": "array",
                        "items": {
                            "type": "string"
                        }
                    },
                    "location": {
                        "description": "Destination location",
                        "type": "string"
                    },
                    "name": {
                        "description": "Optional destination name (Calagopus)",
                        "type": "string",
                        "nullable": true
                    },
                    "overwrite": {
                        "description": "Overwrite existing destination (Calagopus)",
                        "type": "boolean",
                        "default": false,
                        "nullable": true
                    }
                },
                "type": "object"
            },
            "CreateDirectoryRequest": {
                "required": [
                    "name",
                    "path"
                ],
                "properties": {
                    "name": {
                        "description": "Directory name",
                        "type": "string"
                    },
                    "path": {
                        "description": "Parent directory path",
                        "type": "string"
                    }
                },
                "type": "object"
            },
            "DecompressRequest": {
                "required": [
                    "file",
                    "root"
                ],
                "properties": {
                    "file": {
                        "description": "Archive file path",
                        "type": "string"
                    },
                    "root": {
                        "description": "Root directory path",
                        "type": "string"
                    }
                },
                "type": "object"
            },
            "PullFileRequest": {
                "required": [
                    "url",
                    "root"
                ],
                "properties": {
                    "url": {
                        "description": "URL to download from",
                        "type": "string",
                        "format": "uri"
                    },
                    "root": {
                        "description": "Destination directory path",
                        "type": "string"
                    },
                    "fileName": {
                        "description": "Custom filename",
                        "type": "string",
                        "nullable": true
                    },
                    "foreground": {
                        "description": "Run in foreground",
                        "type": "boolean",
                        "default": false,
                        "nullable": true
                    },
                    "useHeader": {
                        "description": "Use headers",
                        "type": "boolean",
                        "default": true,
                        "nullable": true
                    }
                },
                "type": "object"
            },
            "DownloadProcess": {
                "properties": {
                    "id": {
                        "description": "Download process ID",
                        "type": "string"
                    },
                    "url": {
                        "description": "Download URL",
                        "type": "string"
                    },
                    "status": {
                        "description": "Download status",
                        "type": "string"
                    },
                    "progress": {
                        "description": "Download progress percentage",
                        "type": "number",
                        "nullable": true
                    },
                    "created_at": {
                        "description": "Process creation time",
                        "type": "string",
                        "format": "date-time"
                    }
                },
                "type": "object"
            },
            "ServerLogsResponse": {
                "properties": {
                    "response": {
                        "description": "Array of log lines from the server",
                        "type": "array",
                        "items": {
                            "type": "string"
                        }
                    }
                },
                "type": "object"
            },
            "InstallLogsResponse": {
                "properties": {
                    "response": {
                        "description": "Array of installation log lines from the server",
                        "type": "array",
                        "items": {
                            "type": "string"
                        }
                    }
                },
                "type": "object"
            },
            "PowerActionResponse": {
                "properties": {
                    "response": {
                        "description": "Response from Wings daemon",
                        "type": "object"
                    }
                },
                "type": "object"
            },
            "UserServerActivity": {
                "properties": {
                    "id": {
                        "description": "Activity ID",
                        "type": "integer"
                    },
                    "server_id": {
                        "description": "Server ID",
                        "type": "integer"
                    },
                    "node_id": {
                        "description": "Node ID",
                        "type": "integer"
                    },
                    "user_id": {
                        "description": "User ID (null for daemon events)",
                        "type": "integer",
                        "nullable": true
                    },
                    "event": {
                        "description": "Activity event name",
                        "type": "string"
                    },
                    "metadata": {
                        "description": "Activity metadata (parsed from JSON)",
                        "type": "object",
                        "nullable": true
                    },
                    "ip": {
                        "description": "IP address",
                        "type": "string",
                        "nullable": true
                    },
                    "timestamp": {
                        "description": "Activity timestamp",
                        "type": "string",
                        "format": "date-time"
                    },
                    "created_at": {
                        "description": "Created timestamp",
                        "type": "string",
                        "format": "date-time"
                    },
                    "updated_at": {
                        "description": "Updated timestamp",
                        "type": "string",
                        "format": "date-time"
                    },
                    "user": {
                        "description": "User information (null for daemon events)",
                        "properties": {
                            "username": {
                                "description": "Username",
                                "type": "string"
                            },
                            "avatar": {
                                "description": "User avatar URL",
                                "type": "string",
                                "nullable": true
                            },
                            "role": {
                                "description": "User role name",
                                "type": "string",
                                "nullable": true
                            }
                        },
                        "type": "object",
                        "nullable": true
                    }
                },
                "type": "object"
            },
            "ActivityPagination": {
                "properties": {
                    "current_page": {
                        "description": "Current page number",
                        "type": "integer"
                    },
                    "per_page": {
                        "description": "Records per page",
                        "type": "integer"
                    },
                    "total_records": {
                        "description": "Total number of records",
                        "type": "integer"
                    },
                    "total_pages": {
                        "description": "Total number of pages",
                        "type": "integer"
                    },
                    "has_next": {
                        "description": "Whether there is a next page",
                        "type": "boolean"
                    },
                    "has_prev": {
                        "description": "Whether there is a previous page",
                        "type": "boolean"
                    },
                    "from": {
                        "description": "Starting record number",
                        "type": "integer"
                    },
                    "to": {
                        "description": "Ending record number",
                        "type": "integer"
                    }
                },
                "type": "object"
            },
            "ServerAllocation": {
                "properties": {
                    "id": {
                        "description": "Allocation ID",
                        "type": "integer"
                    },
                    "server_id": {
                        "description": "Server ID",
                        "type": "integer"
                    },
                    "node_id": {
                        "description": "Node ID",
                        "type": "integer"
                    },
                    "ip": {
                        "description": "IP address",
                        "type": "string"
                    },
                    "port": {
                        "description": "Port number",
                        "type": "integer"
                    },
                    "notes": {
                        "description": "Allocation notes",
                        "type": "string",
                        "nullable": true
                    },
                    "is_primary": {
                        "description": "Whether this is the primary allocation",
                        "type": "boolean"
                    },
                    "created_at": {
                        "description": "Allocation creation timestamp",
                        "type": "string",
                        "format": "date-time"
                    },
                    "updated_at": {
                        "description": "Allocation update timestamp",
                        "type": "string",
                        "format": "date-time"
                    }
                },
                "type": "object"
            },
            "ServerAllocationInfo": {
                "properties": {
                    "id": {
                        "description": "Server ID",
                        "type": "integer"
                    },
                    "name": {
                        "description": "Server name",
                        "type": "string"
                    },
                    "uuid": {
                        "description": "Server UUID",
                        "type": "string"
                    },
                    "allocation_limit": {
                        "description": "Maximum number of allocations allowed",
                        "type": "integer"
                    },
                    "current_allocations": {
                        "description": "Current number of allocations",
                        "type": "integer"
                    },
                    "can_add_more": {
                        "description": "Whether more allocations can be added",
                        "type": "boolean"
                    },
                    "primary_allocation_id": {
                        "description": "ID of the primary allocation",
                        "type": "integer"
                    }
                },
                "type": "object"
            },
            "AllocationResponse": {
                "properties": {
                    "server": {
                        "$ref": "#/components/schemas/ServerAllocationInfo"
                    },
                    "allocations": {
                        "type": "array",
                        "items": {
                            "$ref": "#/components/schemas/ServerAllocation"
                        }
                    }
                },
                "type": "object"
            },
            "AllocationDeleteResponse": {
                "properties": {
                    "message": {
                        "description": "Success message",
                        "type": "string"
                    },
                    "deleted_allocation_id": {
                        "description": "ID of the deleted allocation",
                        "type": "integer"
                    }
                },
                "type": "object"
            },
            "PrimaryAllocationResponse": {
                "properties": {
                    "message": {
                        "description": "Success message",
                        "type": "string"
                    },
                    "new_primary_allocation_id": {
                        "description": "ID of the new primary allocation",
                        "type": "integer"
                    }
                },
                "type": "object"
            },
            "AutoAllocationResponse": {
                "properties": {
                    "assigned_allocation": {
                        "$ref": "#/components/schemas/ServerAllocation"
                    },
                    "message": {
                        "description": "Success message",
                        "type": "string"
                    }
                },
                "type": "object"
            },
            "Backup": {
                "properties": {
                    "id": {
                        "description": "Backup ID",
                        "type": "integer"
                    },
                    "server_id": {
                        "description": "Server ID",
                        "type": "integer"
                    },
                    "uuid": {
                        "description": "Backup UUID",
                        "type": "string"
                    },
                    "name": {
                        "description": "Backup name",
                        "type": "string"
                    },
                    "ignored_files": {
                        "description": "JSON string of ignored files",
                        "type": "string"
                    },
                    "disk": {
                        "description": "Storage disk type",
                        "type": "string"
                    },
                    "is_successful": {
                        "description": "Whether backup was successful (0 or 1)",
                        "type": "integer"
                    },
                    "is_stale": {
                        "description": "Incomplete backup older than 24 hours; eligible for manual interruption recovery",
                        "type": "boolean"
                    },
                    "is_locked": {
                        "description": "Whether backup is locked (0 or 1)",
                        "type": "integer"
                    },
                    "created_at": {
                        "description": "Backup creation timestamp",
                        "type": "string",
                        "format": "date-time"
                    },
                    "updated_at": {
                        "description": "Backup update timestamp",
                        "type": "string",
                        "format": "date-time"
                    }
                },
                "type": "object"
            },
            "BackupPagination": {
                "properties": {
                    "current_page": {
                        "description": "Current page number",
                        "type": "integer"
                    },
                    "per_page": {
                        "description": "Records per page",
                        "type": "integer"
                    },
                    "total": {
                        "description": "Total number of records",
                        "type": "integer"
                    },
                    "last_page": {
                        "description": "Last page number",
                        "type": "integer"
                    },
                    "from": {
                        "description": "Starting record number",
                        "type": "integer"
                    },
                    "to": {
                        "description": "Ending record number",
                        "type": "integer"
                    }
                },
                "type": "object"
            },
            "BackupCreateRequest": {
                "properties": {
                    "uuid": {
                        "description": "Custom backup UUID (optional)",
                        "type": "string",
                        "nullable": true
                    },
                    "name": {
                        "description": "Backup name (optional)",
                        "type": "string",
                        "nullable": true
                    },
                    "ignore": {
                        "description": "JSON string of files to ignore (optional)",
                        "type": "string",
                        "nullable": true
                    }
                },
                "type": "object"
            },
            "BackupCreateResponse": {
                "properties": {
                    "id": {
                        "description": "Backup ID",
                        "type": "integer"
                    },
                    "uuid": {
                        "description": "Backup UUID",
                        "type": "string"
                    },
                    "name": {
                        "description": "Backup name",
                        "type": "string"
                    },
                    "adapter": {
                        "description": "Backup adapter used",
                        "type": "string"
                    }
                },
                "type": "object"
            },
            "BackupRestoreRequest": {
                "properties": {
                    "truncate_directory": {
                        "description": "Whether to truncate directory before restore (optional)",
                        "type": "boolean",
                        "nullable": true
                    },
                    "download_url": {
                        "description": "Download URL for restore (optional)",
                        "type": "string",
                        "nullable": true
                    }
                },
                "type": "object"
            },
            "BackupDownloadResponse": {
                "properties": {
                    "download_url": {
                        "description": "Backup download URL",
                        "type": "string"
                    },
                    "expires_in": {
                        "description": "Token expiration time in seconds",
                        "type": "integer"
                    }
                },
                "type": "object"
            },
            "ServerDatabase": {
                "properties": {
                    "id": {
                        "description": "Database ID",
                        "type": "integer"
                    },
                    "server_id": {
                        "description": "Server ID",
                        "type": "integer"
                    },
                    "database_host_id": {
                        "description": "Database host ID",
                        "type": "integer"
                    },
                    "database": {
                        "description": "Database name",
                        "type": "string"
                    },
                    "username": {
                        "description": "Database username",
                        "type": "string"
                    },
                    "password": {
                        "description": "Database password",
                        "type": "string"
                    },
                    "remote": {
                        "description": "Remote access pattern",
                        "type": "string"
                    },
                    "max_connections": {
                        "description": "Maximum connections",
                        "type": "integer"
                    },
                    "database_host_name": {
                        "description": "Database host name",
                        "type": "string"
                    },
                    "database_host": {
                        "description": "Database host address",
                        "type": "string"
                    },
                    "database_port": {
                        "description": "Database host port",
                        "type": "integer"
                    },
                    "database_type": {
                        "description": "Database type",
                        "type": "string"
                    },
                    "created_at": {
                        "description": "Creation timestamp",
                        "type": "string",
                        "format": "date-time"
                    },
                    "updated_at": {
                        "description": "Last update timestamp",
                        "type": "string",
                        "format": "date-time"
                    }
                },
                "type": "object"
            },
            "DatabasePagination": {
                "properties": {
                    "current_page": {
                        "description": "Current page number",
                        "type": "integer"
                    },
                    "per_page": {
                        "description": "Records per page",
                        "type": "integer"
                    },
                    "total": {
                        "description": "Total number of records",
                        "type": "integer"
                    },
                    "last_page": {
                        "description": "Last page number",
                        "type": "integer"
                    },
                    "from": {
                        "description": "Starting record number",
                        "type": "integer"
                    },
                    "to": {
                        "description": "Ending record number",
                        "type": "integer"
                    }
                },
                "type": "object"
            },
            "DatabaseCreateRequest": {
                "required": [
                    "database_host_id",
                    "database_name"
                ],
                "properties": {
                    "database_host_id": {
                        "description": "Database host ID",
                        "type": "integer"
                    },
                    "database_name": {
                        "description": "Database name (without server prefix)",
                        "type": "string"
                    },
                    "remote": {
                        "description": "Remote access pattern",
                        "type": "string",
                        "default": "%",
                        "nullable": true
                    },
                    "max_connections": {
                        "description": "Maximum connections",
                        "type": "integer",
                        "default": 0,
                        "nullable": true
                    }
                },
                "type": "object"
            },
            "DatabaseCreateResponse": {
                "properties": {
                    "id": {
                        "description": "Created database ID",
                        "type": "integer"
                    },
                    "database_name": {
                        "description": "Generated database name",
                        "type": "string"
                    },
                    "username": {
                        "description": "Generated username",
                        "type": "string"
                    },
                    "password": {
                        "description": "Generated password",
                        "type": "string"
                    },
                    "message": {
                        "description": "Success message",
                        "type": "string"
                    }
                },
                "type": "object"
            },
            "DatabaseUpdateRequest": {
                "properties": {
                    "remote": {
                        "description": "Remote access pattern",
                        "type": "string",
                        "nullable": true
                    },
                    "max_connections": {
                        "description": "Maximum connections",
                        "type": "integer",
                        "nullable": true
                    }
                },
                "type": "object"
            },
            "DatabaseHost": {
                "properties": {
                    "id": {
                        "description": "Database host ID",
                        "type": "integer"
                    },
                    "name": {
                        "description": "Database host name",
                        "type": "string"
                    },
                    "database_host": {
                        "description": "Database host address",
                        "type": "string"
                    },
                    "database_port": {
                        "description": "Database host port",
                        "type": "integer"
                    },
                    "database_type": {
                        "description": "Database type",
                        "type": "string"
                    },
                    "database_username": {
                        "description": "Database host username",
                        "type": "string"
                    },
                    "node_name": {
                        "description": "Associated node name",
                        "type": "string",
                        "nullable": true
                    },
                    "healthy": {
                        "description": "Health status",
                        "type": "boolean"
                    }
                },
                "type": "object"
            },
            "ConnectionTestResponse": {
                "properties": {
                    "database_host_id": {
                        "description": "Database host ID",
                        "type": "integer"
                    },
                    "healthy": {
                        "description": "Connection health status",
                        "type": "boolean"
                    },
                    "message": {
                        "description": "Connection test message",
                        "type": "string"
                    },
                    "response_time": {
                        "description": "Response time in milliseconds",
                        "type": "number",
                        "nullable": true
                    }
                },
                "type": "object"
            },
            "FastDlConfig": {
                "properties": {
                    "enabled": {
                        "description": "Whether FastDL is enabled",
                        "type": "boolean"
                    },
                    "directory": {
                        "description": "Subdirectory within server data directory (e.g., \"fastdl\")",
                        "type": "string"
                    },
                    "url": {
                        "description": "Full FastDL URL when enabled",
                        "type": "string",
                        "nullable": true
                    },
                    "command": {
                        "description": "Ready-to-use sv_downloadurl command",
                        "type": "string",
                        "nullable": true
                    }
                },
                "type": "object"
            },
            "FastDlEnableRequest": {
                "properties": {
                    "directory": {
                        "description": "Optional subdirectory within server data directory (e.g., \"csgo\")",
                        "type": "string",
                        "nullable": true
                    }
                },
                "type": "object"
            },
            "FastDlUpdateRequest": {
                "properties": {
                    "enabled": {
                        "description": "Whether FastDL is enabled",
                        "type": "boolean"
                    },
                    "directory": {
                        "description": "Optional subdirectory within server data directory",
                        "type": "string",
                        "nullable": true
                    }
                },
                "type": "object"
            },
            "FirewallRule": {
                "properties": {
                    "id": {
                        "type": "integer"
                    },
                    "created_at": {
                        "type": "string",
                        "format": "date-time"
                    },
                    "updated_at": {
                        "type": "string",
                        "format": "date-time"
                    },
                    "server_uuid": {
                        "type": "string",
                        "format": "uuid"
                    },
                    "remote_ip": {
                        "type": "string"
                    },
                    "server_port": {
                        "type": "integer"
                    },
                    "priority": {
                        "type": "integer"
                    },
                    "type": {
                        "type": "string",
                        "enum": [
                            "allow",
                            "block"
                        ]
                    },
                    "protocol": {
                        "type": "string",
                        "enum": [
                            "tcp",
                            "udp"
                        ]
                    }
                },
                "type": "object"
            },
            "FirewallRuleCreateRequest": {
                "required": [
                    "remote_ip",
                    "server_port",
                    "type"
                ],
                "properties": {
                    "remote_ip": {
                        "description": "IP address or CIDR",
                        "type": "string"
                    },
                    "server_port": {
                        "description": "Allocated port (1-65535)",
                        "type": "integer"
                    },
                    "priority": {
                        "description": "Rule priority (0-10000)",
                        "type": "integer",
                        "nullable": true
                    },
                    "type": {
                        "type": "string",
                        "enum": [
                            "allow",
                            "block"
                        ]
                    },
                    "protocol": {
                        "type": "string",
                        "enum": [
                            "tcp",
                            "udp"
                        ],
                        "nullable": true
                    }
                },
                "type": "object"
            },
            "FirewallRuleUpdateRequest": {
                "properties": {
                    "remote_ip": {
                        "description": "IP address or CIDR",
                        "type": "string"
                    },
                    "server_port": {
                        "description": "Allocated port (1-65535)",
                        "type": "integer"
                    },
                    "priority": {
                        "description": "Rule priority (0-10000)",
                        "type": "integer"
                    },
                    "type": {
                        "type": "string",
                        "enum": [
                            "allow",
                            "block"
                        ]
                    },
                    "protocol": {
                        "type": "string",
                        "enum": [
                            "tcp",
                            "udp"
                        ]
                    }
                },
                "type": "object"
            },
            "ServerImportRequest": {
                "required": [
                    "user",
                    "password",
                    "hote",
                    "port",
                    "srclocation",
                    "dstlocation",
                    "type"
                ],
                "properties": {
                    "user": {
                        "description": "Username for SFTP/FTP authentication",
                        "type": "string"
                    },
                    "password": {
                        "description": "Password for SFTP/FTP authentication",
                        "type": "string"
                    },
                    "hote": {
                        "description": "Hostname or IP address of the remote server",
                        "type": "string"
                    },
                    "port": {
                        "description": "Port number (1-65535). Typically 22 for SFTP, 21 for FTP",
                        "type": "integer"
                    },
                    "srclocation": {
                        "description": "Source path on the remote server (absolute path)",
                        "type": "string"
                    },
                    "dstlocation": {
                        "description": "Destination path on the local server (relative to server root)",
                        "type": "string"
                    },
                    "wipe": {
                        "description": "If true, clears the destination directory before importing",
                        "type": "boolean",
                        "default": false
                    },
                    "type": {
                        "description": "Connection type",
                        "type": "string",
                        "enum": [
                            "sftp",
                            "ftp"
                        ]
                    }
                },
                "type": "object"
            },
            "ProxyCreateRequest": {
                "required": [
                    "domain",
                    "ip",
                    "port",
                    "ssl"
                ],
                "properties": {
                    "domain": {
                        "description": "The domain name for the proxy",
                        "type": "string"
                    },
                    "ip": {
                        "description": "The target IP address to proxy to",
                        "type": "string"
                    },
                    "port": {
                        "description": "The target port to proxy to",
                        "type": "string"
                    },
                    "ssl": {
                        "description": "Whether to enable SSL/TLS",
                        "type": "boolean"
                    },
                    "use_lets_encrypt": {
                        "description": "Whether to use Let's Encrypt for SSL",
                        "type": "boolean"
                    },
                    "client_email": {
                        "description": "Email for Let's Encrypt registration",
                        "type": "string"
                    },
                    "ssl_cert": {
                        "description": "SSL certificate content",
                        "type": "string"
                    },
                    "ssl_key": {
                        "description": "SSL private key content",
                        "type": "string"
                    }
                },
                "type": "object"
            },
            "ProxyDeleteRequest": {
                "required": [
                    "domain",
                    "port"
                ],
                "properties": {
                    "domain": {
                        "description": "The domain name of the proxy to delete",
                        "type": "string"
                    },
                    "port": {
                        "description": "The port associated with the proxy configuration",
                        "type": "string"
                    }
                },
                "type": "object"
            },
            "ServerSchedule": {
                "properties": {
                    "id": {
                        "description": "Schedule ID",
                        "type": "integer"
                    },
                    "server_id": {
                        "description": "Server ID",
                        "type": "integer"
                    },
                    "name": {
                        "description": "Schedule name",
                        "type": "string"
                    },
                    "cron_day_of_week": {
                        "description": "Cron day of week expression",
                        "type": "string"
                    },
                    "cron_month": {
                        "description": "Cron month expression",
                        "type": "string"
                    },
                    "cron_day_of_month": {
                        "description": "Cron day of month expression",
                        "type": "string"
                    },
                    "cron_hour": {
                        "description": "Cron hour expression",
                        "type": "string"
                    },
                    "cron_minute": {
                        "description": "Cron minute expression",
                        "type": "string"
                    },
                    "timezone": {
                        "description": "IANA timezone the cron expression is authored in (e.g. \"Europe/Paris\", \"UTC\")",
                        "type": "string"
                    },
                    "is_active": {
                        "description": "Whether schedule is active",
                        "type": "boolean"
                    },
                    "is_processing": {
                        "description": "Whether schedule is currently processing",
                        "type": "boolean"
                    },
                    "only_when_online": {
                        "description": "Whether to run only when server is online",
                        "type": "boolean"
                    },
                    "next_run_at": {
                        "description": "Next scheduled run time",
                        "type": "string",
                        "format": "date-time"
                    },
                    "created_at": {
                        "description": "Creation timestamp",
                        "type": "string",
                        "format": "date-time"
                    },
                    "updated_at": {
                        "description": "Last update timestamp",
                        "type": "string",
                        "format": "date-time"
                    }
                },
                "type": "object"
            },
            "SchedulePagination": {
                "properties": {
                    "current_page": {
                        "description": "Current page number",
                        "type": "integer"
                    },
                    "per_page": {
                        "description": "Records per page",
                        "type": "integer"
                    },
                    "total": {
                        "description": "Total number of records",
                        "type": "integer"
                    },
                    "last_page": {
                        "description": "Last page number",
                        "type": "integer"
                    },
                    "from": {
                        "description": "Starting record number",
                        "type": "integer"
                    },
                    "to": {
                        "description": "Ending record number",
                        "type": "integer"
                    }
                },
                "type": "object"
            },
            "ScheduleCreateRequest": {
                "required": [
                    "name",
                    "cron_day_of_week",
                    "cron_month",
                    "cron_day_of_month",
                    "cron_hour",
                    "cron_minute"
                ],
                "properties": {
                    "name": {
                        "description": "Schedule name",
                        "type": "string"
                    },
                    "cron_day_of_week": {
                        "description": "Cron day of week expression",
                        "type": "string"
                    },
                    "cron_month": {
                        "description": "Cron month expression",
                        "type": "string"
                    },
                    "cron_day_of_month": {
                        "description": "Cron day of month expression",
                        "type": "string"
                    },
                    "cron_hour": {
                        "description": "Cron hour expression",
                        "type": "string"
                    },
                    "cron_minute": {
                        "description": "Cron minute expression",
                        "type": "string"
                    },
                    "timezone": {
                        "description": "IANA timezone the cron expression is authored in (default: \"UTC\")",
                        "type": "string",
                        "default": "UTC",
                        "nullable": true
                    },
                    "is_active": {
                        "description": "Whether schedule is active",
                        "type": "boolean",
                        "default": true,
                        "nullable": true
                    },
                    "only_when_online": {
                        "description": "Whether to run only when server is online",
                        "type": "boolean",
                        "default": false,
                        "nullable": true
                    }
                },
                "type": "object"
            },
            "ScheduleCreateResponse": {
                "properties": {
                    "id": {
                        "description": "Created schedule ID",
                        "type": "integer"
                    },
                    "name": {
                        "description": "Schedule name",
                        "type": "string"
                    },
                    "next_run_at": {
                        "description": "Next scheduled run time",
                        "type": "string",
                        "format": "date-time"
                    }
                },
                "type": "object"
            },
            "ScheduleUpdateRequest": {
                "properties": {
                    "name": {
                        "description": "Schedule name",
                        "type": "string",
                        "nullable": true
                    },
                    "cron_day_of_week": {
                        "description": "Cron day of week expression",
                        "type": "string",
                        "nullable": true
                    },
                    "cron_month": {
                        "description": "Cron month expression",
                        "type": "string",
                        "nullable": true
                    },
                    "cron_day_of_month": {
                        "description": "Cron day of month expression",
                        "type": "string",
                        "nullable": true
                    },
                    "cron_hour": {
                        "description": "Cron hour expression",
                        "type": "string",
                        "nullable": true
                    },
                    "cron_minute": {
                        "description": "Cron minute expression",
                        "type": "string",
                        "nullable": true
                    },
                    "timezone": {
                        "description": "IANA timezone the cron expression is authored in",
                        "type": "string",
                        "nullable": true
                    },
                    "is_active": {
                        "description": "Whether schedule is active",
                        "type": "boolean",
                        "nullable": true
                    },
                    "only_when_online": {
                        "description": "Whether to run only when server is online",
                        "type": "boolean",
                        "nullable": true
                    }
                },
                "type": "object"
            },
            "ScheduleToggleResponse": {
                "properties": {
                    "is_active": {
                        "description": "New active status",
                        "type": "boolean"
                    },
                    "status": {
                        "description": "Status description",
                        "type": "string",
                        "enum": [
                            "enabled",
                            "disabled"
                        ]
                    }
                },
                "type": "object"
            },
            "UserServer": {
                "properties": {
                    "id": {
                        "description": "Server ID",
                        "type": "integer"
                    },
                    "uuid": {
                        "description": "Server UUID",
                        "type": "string"
                    },
                    "uuidShort": {
                        "description": "Server short UUID",
                        "type": "string"
                    },
                    "name": {
                        "description": "Server name",
                        "type": "string"
                    },
                    "description": {
                        "description": "Server description",
                        "type": "string",
                        "nullable": true
                    },
                    "status": {
                        "description": "Server status",
                        "type": "string"
                    },
                    "memory": {
                        "description": "Memory limit in MB",
                        "type": "integer"
                    },
                    "disk": {
                        "description": "Disk limit in MB",
                        "type": "integer"
                    },
                    "cpu": {
                        "description": "CPU limit percentage",
                        "type": "integer"
                    },
                    "swap": {
                        "description": "Swap limit in MB",
                        "type": "integer"
                    },
                    "io": {
                        "description": "IO limit",
                        "type": "integer"
                    },
                    "is_subuser": {
                        "description": "Whether user is a subuser",
                        "type": "boolean"
                    },
                    "subuser_permissions": {
                        "description": "Subuser permissions",
                        "type": "array",
                        "items": {
                            "type": "string"
                        }
                    },
                    "subuser_id": {
                        "description": "Subuser ID if applicable",
                        "type": "integer",
                        "nullable": true
                    },
                    "node": {
                        "properties": {
                            "name": {
                                "type": "string",
                                "nullable": true
                            },
                            "maintenance_mode": {
                                "type": "boolean",
                                "nullable": true
                            },
                            "fqdn": {
                                "type": "string",
                                "nullable": true
                            },
                            "behind_proxy": {
                                "type": "boolean",
                                "nullable": true
                            },
                            "daemon_type": {
                                "type": "string",
                                "nullable": true
                            },
                            "capabilities": {
                                "type": "object",
                                "nullable": true,
                                "additionalProperties": {
                                    "type": "boolean"
                                }
                            }
                        },
                        "type": "object"
                    },
                    "location": {
                        "properties": {
                            "id": {
                                "type": "integer",
                                "nullable": true
                            },
                            "name": {
                                "type": "string",
                                "nullable": true
                            },
                            "description": {
                                "type": "string",
                                "nullable": true
                            },
                            "flag_code": {
                                "description": "ISO 3166-1 alpha-2 country code for flag display",
                                "type": "string",
                                "nullable": true
                            }
                        },
                        "type": "object"
                    },
                    "realm": {
                        "properties": {
                            "name": {
                                "type": "string",
                                "nullable": true
                            },
                            "description": {
                                "type": "string",
                                "nullable": true
                            },
                            "logo": {
                                "type": "string",
                                "nullable": true
                            }
                        },
                        "type": "object"
                    },
                    "spell": {
                        "properties": {
                            "name": {
                                "type": "string",
                                "nullable": true
                            },
                            "description": {
                                "type": "string",
                                "nullable": true
                            },
                            "banner": {
                                "type": "string",
                                "nullable": true
                            }
                        },
                        "type": "object"
                    },
                    "allocation": {
                        "properties": {
                            "ip": {
                                "type": "string",
                                "nullable": true
                            },
                            "port": {
                                "type": "integer",
                                "nullable": true
                            },
                            "ip_alias": {
                                "type": "string",
                                "nullable": true
                            }
                        },
                        "type": "object"
                    }
                },
                "type": "object"
            },
            "UserServerPagination": {
                "properties": {
                    "current_page": {
                        "description": "Current page number",
                        "type": "integer"
                    },
                    "per_page": {
                        "description": "Records per page",
                        "type": "integer"
                    },
                    "total_records": {
                        "description": "Total number of records",
                        "type": "integer"
                    },
                    "total_pages": {
                        "description": "Total number of pages",
                        "type": "integer"
                    },
                    "has_next": {
                        "description": "Whether there is a next page",
                        "type": "boolean"
                    },
                    "has_prev": {
                        "description": "Whether there is a previous page",
                        "type": "boolean"
                    },
                    "from": {
                        "description": "Starting record number",
                        "type": "integer"
                    },
                    "to": {
                        "description": "Ending record number",
                        "type": "integer"
                    }
                },
                "type": "object"
            },
            "ServerSearch": {
                "properties": {
                    "query": {
                        "description": "Search query",
                        "type": "string"
                    },
                    "has_results": {
                        "description": "Whether search returned results",
                        "type": "boolean"
                    }
                },
                "type": "object"
            },
            "ServerDetail": {
                "properties": {
                    "id": {
                        "description": "Server ID",
                        "type": "integer"
                    },
                    "uuid": {
                        "description": "Server UUID",
                        "type": "string"
                    },
                    "uuidShort": {
                        "description": "Server short UUID",
                        "type": "string"
                    },
                    "name": {
                        "description": "Server name",
                        "type": "string"
                    },
                    "description": {
                        "description": "Server description",
                        "type": "string",
                        "nullable": true
                    },
                    "status": {
                        "description": "Server status",
                        "type": "string"
                    },
                    "memory": {
                        "description": "Memory limit in MB",
                        "type": "integer"
                    },
                    "disk": {
                        "description": "Disk limit in MB",
                        "type": "integer"
                    },
                    "cpu": {
                        "description": "CPU limit percentage",
                        "type": "integer"
                    },
                    "swap": {
                        "description": "Swap limit in MB",
                        "type": "integer"
                    },
                    "io": {
                        "description": "IO limit",
                        "type": "integer"
                    },
                    "node": {
                        "description": "Node information",
                        "type": "object"
                    },
                    "realm": {
                        "description": "Realm information",
                        "type": "object"
                    },
                    "spell": {
                        "description": "Spell information",
                        "type": "object"
                    },
                    "allocation": {
                        "description": "Allocation information",
                        "type": "object"
                    },
                    "location": {
                        "description": "Location information",
                        "properties": {
                            "id": {
                                "type": "integer",
                                "nullable": true
                            },
                            "name": {
                                "type": "string",
                                "nullable": true
                            },
                            "description": {
                                "type": "string",
                                "nullable": true
                            },
                            "flag_code": {
                                "description": "ISO 3166-1 alpha-2 country code for flag display",
                                "type": "string",
                                "nullable": true
                            }
                        },
                        "type": "object"
                    },
                    "sftp": {
                        "properties": {
                            "host": {
                                "type": "string"
                            },
                            "port": {
                                "type": "integer"
                            },
                            "username": {
                                "type": "string"
                            },
                            "password": {
                                "type": "string"
                            },
                            "url": {
                                "type": "string"
                            }
                        },
                        "type": "object"
                    },
                    "variables": {
                        "description": "Server variables",
                        "type": "array",
                        "items": {
                            "type": "object"
                        }
                    }
                },
                "type": "object"
            },
            "JwtResponse": {
                "properties": {
                    "token": {
                        "description": "JWT token",
                        "type": "string"
                    },
                    "expires_at": {
                        "description": "Token expiration timestamp",
                        "type": "integer"
                    },
                    "server_uuid": {
                        "description": "Server UUID",
                        "type": "string"
                    },
                    "user_uuid": {
                        "description": "User UUID",
                        "type": "string"
                    },
                    "permissions": {
                        "description": "User permissions",
                        "type": "array",
                        "items": {
                            "type": "string"
                        }
                    },
                    "connection_string": {
                        "description": "WebSocket connection string",
                        "type": "string"
                    }
                },
                "type": "object"
            },
            "ServerUpdateRequest": {
                "properties": {
                    "name": {
                        "description": "Server name",
                        "type": "string",
                        "nullable": true
                    },
                    "description": {
                        "description": "Server description",
                        "type": "string",
                        "nullable": true
                    },
                    "startup": {
                        "description": "Startup command",
                        "type": "string",
                        "nullable": true
                    },
                    "image": {
                        "description": "Docker image",
                        "type": "string",
                        "nullable": true
                    },
                    "spell_id": {
                        "description": "Spell ID to change server spell",
                        "type": "integer",
                        "nullable": true
                    },
                    "wipe_files": {
                        "description": "Whether to delete all server files before reinstalling (only applies when changing spell_id)",
                        "type": "boolean",
                        "default": false,
                        "nullable": true
                    },
                    "auto_start": {
                        "description": "Start automatically after node reboot/reconnect",
                        "type": "boolean",
                        "nullable": true
                    },
                    "auto_start_delay": {
                        "description": "Extra delay in seconds before auto-start",
                        "type": "integer",
                        "nullable": true
                    },
                    "variables": {
                        "description": "Server variables",
                        "type": "array",
                        "items": {
                            "properties": {
                                "variable_id": {
                                    "type": "integer"
                                },
                                "variable_value": {
                                    "type": "string"
                                }
                            },
                            "type": "object"
                        },
                        "nullable": true
                    }
                },
                "type": "object"
            },
            "ServerUpdateResponse": {
                "properties": {
                    "server": {
                        "properties": {
                            "id": {
                                "type": "integer"
                            },
                            "uuid": {
                                "type": "string"
                            },
                            "uuidShort": {
                                "type": "string"
                            },
                            "name": {
                                "type": "string"
                            },
                            "description": {
                                "type": "string",
                                "nullable": true
                            },
                            "startup": {
                                "type": "string",
                                "nullable": true
                            },
                            "image": {
                                "type": "string",
                                "nullable": true
                            },
                            "updated_at": {
                                "type": "string",
                                "format": "date-time",
                                "nullable": true
                            }
                        },
                        "type": "object"
                    }
                },
                "type": "object"
            },
            "ServerSubdomainAvailableDomain": {
                "properties": {
                    "uuid": {
                        "type": "string"
                    },
                    "domain": {
                        "type": "string"
                    },
                    "protocol_service": {
                        "type": "string",
                        "nullable": true
                    },
                    "protocol_type": {
                        "type": "string"
                    },
                    "priority": {
                        "type": "integer"
                    },
                    "weight": {
                        "type": "integer"
                    },
                    "ttl": {
                        "type": "integer"
                    }
                },
                "type": "object"
            },
            "ServerSubdomainEntry": {
                "properties": {
                    "uuid": {
                        "type": "string"
                    },
                    "domain": {
                        "type": "string"
                    },
                    "subdomain": {
                        "type": "string"
                    },
                    "record_type": {
                        "type": "string"
                    },
                    "port": {
                        "type": "integer",
                        "nullable": true
                    },
                    "created_at": {
                        "type": "string"
                    }
                },
                "type": "object"
            },
            "ServerSubdomainOverview": {
                "properties": {
                    "max_allowed": {
                        "type": "integer"
                    },
                    "current_total": {
                        "type": "integer"
                    },
                    "domains": {
                        "type": "array",
                        "items": {
                            "$ref": "#/components/schemas/ServerSubdomainAvailableDomain"
                        }
                    },
                    "subdomains": {
                        "type": "array",
                        "items": {
                            "$ref": "#/components/schemas/ServerSubdomainEntry"
                        }
                    }
                },
                "type": "object"
            },
            "Subuser": {
                "properties": {
                    "id": {
                        "description": "Subuser ID",
                        "type": "integer"
                    },
                    "user_id": {
                        "description": "User ID",
                        "type": "integer"
                    },
                    "server_id": {
                        "description": "Server ID",
                        "type": "integer"
                    },
                    "permissions": {
                        "description": "Array of permission strings",
                        "type": "array",
                        "items": {
                            "type": "string"
                        }
                    },
                    "created_at": {
                        "description": "Creation timestamp",
                        "type": "string",
                        "format": "date-time"
                    },
                    "updated_at": {
                        "description": "Last update timestamp",
                        "type": "string",
                        "format": "date-time"
                    }
                },
                "type": "object"
            },
            "SubuserWithDetails": {
                "properties": {
                    "id": {
                        "description": "Subuser ID",
                        "type": "integer"
                    },
                    "user_id": {
                        "description": "User ID",
                        "type": "integer"
                    },
                    "server_id": {
                        "description": "Server ID",
                        "type": "integer"
                    },
                    "permissions": {
                        "description": "Array of permission strings",
                        "type": "array",
                        "items": {
                            "type": "string"
                        }
                    },
                    "created_at": {
                        "description": "Creation timestamp",
                        "type": "string",
                        "format": "date-time"
                    },
                    "updated_at": {
                        "description": "Last update timestamp",
                        "type": "string",
                        "format": "date-time"
                    },
                    "username": {
                        "description": "User username",
                        "type": "string"
                    },
                    "email": {
                        "description": "User email",
                        "type": "string",
                        "format": "email"
                    },
                    "first_name": {
                        "description": "User first name",
                        "type": "string",
                        "nullable": true
                    },
                    "last_name": {
                        "description": "User last name",
                        "type": "string",
                        "nullable": true
                    },
                    "uuid": {
                        "description": "User UUID",
                        "type": "string"
                    }
                },
                "type": "object"
            },
            "SubuserPagination": {
                "properties": {
                    "current_page": {
                        "description": "Current page number",
                        "type": "integer"
                    },
                    "per_page": {
                        "description": "Records per page",
                        "type": "integer"
                    },
                    "total": {
                        "description": "Total number of records",
                        "type": "integer"
                    },
                    "last_page": {
                        "description": "Last page number",
                        "type": "integer"
                    },
                    "from": {
                        "description": "Starting record number",
                        "type": "integer"
                    },
                    "to": {
                        "description": "Ending record number",
                        "type": "integer"
                    }
                },
                "type": "object"
            },
            "SubuserCreateRequest": {
                "required": [
                    "email"
                ],
                "properties": {
                    "email": {
                        "description": "Email address of user to add as subuser",
                        "type": "string",
                        "format": "email"
                    }
                },
                "type": "object"
            },
            "SubuserUpdateRequest": {
                "properties": {
                    "permissions": {
                        "description": "Array of permission strings",
                        "type": "array",
                        "items": {
                            "type": "string"
                        },
                        "nullable": true
                    }
                },
                "type": "object"
            },
            "UserSearchResult": {
                "properties": {
                    "id": {
                        "description": "User ID",
                        "type": "integer"
                    },
                    "username": {
                        "description": "Username",
                        "type": "string"
                    },
                    "email": {
                        "description": "Email address",
                        "type": "string",
                        "format": "email"
                    },
                    "uuid": {
                        "description": "User UUID",
                        "type": "string"
                    },
                    "first_name": {
                        "description": "First name",
                        "type": "string",
                        "nullable": true
                    },
                    "last_name": {
                        "description": "Last name",
                        "type": "string",
                        "nullable": true
                    }
                },
                "type": "object"
            },
            "UserSearchResponse": {
                "properties": {
                    "users": {
                        "type": "array",
                        "items": {
                            "$ref": "#/components/schemas/UserSearchResult"
                        }
                    },
                    "total": {
                        "description": "Total number of users found",
                        "type": "integer"
                    }
                },
                "type": "object"
            },
            "PermissionsResponse": {
                "properties": {
                    "permissions": {
                        "description": "Array of available permissions",
                        "type": "array",
                        "items": {
                            "type": "string"
                        }
                    },
                    "total": {
                        "description": "Total number of permissions",
                        "type": "integer"
                    }
                },
                "type": "object"
            },
            "Task": {
                "properties": {
                    "id": {
                        "description": "Task ID",
                        "type": "integer"
                    },
                    "schedule_id": {
                        "description": "Schedule ID",
                        "type": "integer"
                    },
                    "sequence_id": {
                        "description": "Task sequence order",
                        "type": "integer"
                    },
                    "action": {
                        "description": "Task action type",
                        "type": "string"
                    },
                    "payload": {
                        "description": "Task payload data",
                        "type": "string"
                    },
                    "time_offset": {
                        "description": "Time offset in seconds",
                        "type": "integer"
                    },
                    "is_queued": {
                        "description": "Whether task is queued",
                        "type": "boolean"
                    },
                    "continue_on_failure": {
                        "description": "Whether to continue on failure",
                        "type": "boolean"
                    },
                    "created_at": {
                        "description": "Creation timestamp",
                        "type": "string",
                        "format": "date-time"
                    },
                    "updated_at": {
                        "description": "Last update timestamp",
                        "type": "string",
                        "format": "date-time"
                    }
                },
                "type": "object"
            },
            "TaskPagination": {
                "properties": {
                    "current_page": {
                        "description": "Current page number",
                        "type": "integer"
                    },
                    "per_page": {
                        "description": "Records per page",
                        "type": "integer"
                    },
                    "total": {
                        "description": "Total number of records",
                        "type": "integer"
                    },
                    "last_page": {
                        "description": "Last page number",
                        "type": "integer"
                    },
                    "from": {
                        "description": "Starting record number",
                        "type": "integer"
                    },
                    "to": {
                        "description": "Ending record number",
                        "type": "integer"
                    }
                },
                "type": "object"
            },
            "TaskCreateRequest": {
                "required": [
                    "action"
                ],
                "properties": {
                    "action": {
                        "description": "Task action type",
                        "type": "string"
                    },
                    "payload": {
                        "description": "Task payload data",
                        "type": "string",
                        "default": "",
                        "nullable": true
                    },
                    "time_offset": {
                        "description": "Time offset in seconds",
                        "type": "integer",
                        "default": 0,
                        "nullable": true
                    },
                    "continue_on_failure": {
                        "description": "Whether to continue on failure",
                        "type": "boolean",
                        "default": false,
                        "nullable": true
                    }
                },
                "type": "object"
            },
            "TaskCreateResponse": {
                "properties": {
                    "id": {
                        "description": "Created task ID",
                        "type": "integer"
                    },
                    "action": {
                        "description": "Task action type",
                        "type": "string"
                    },
                    "sequence_id": {
                        "description": "Task sequence order",
                        "type": "integer"
                    }
                },
                "type": "object"
            },
            "TaskUpdateRequest": {
                "properties": {
                    "action": {
                        "description": "Task action type",
                        "type": "string",
                        "nullable": true
                    },
                    "payload": {
                        "description": "Task payload data",
                        "type": "string",
                        "nullable": true
                    },
                    "time_offset": {
                        "description": "Time offset in seconds",
                        "type": "integer",
                        "nullable": true
                    },
                    "continue_on_failure": {
                        "description": "Whether to continue on failure",
                        "type": "boolean",
                        "nullable": true
                    }
                },
                "type": "object"
            },
            "TaskSequenceUpdateRequest": {
                "required": [
                    "sequence_id"
                ],
                "properties": {
                    "sequence_id": {
                        "description": "New sequence order for the task",
                        "type": "integer"
                    }
                },
                "type": "object"
            },
            "TaskStatusToggleResponse": {
                "properties": {
                    "is_queued": {
                        "description": "New queued status",
                        "type": "integer",
                        "enum": [
                            0,
                            1
                        ]
                    },
                    "status": {
                        "description": "Status description",
                        "type": "string",
                        "enum": [
                            "queued",
                            "unqueued"
                        ]
                    }
                },
                "type": "object"
            },
            "ApiClient": {
                "properties": {
                    "id": {
                        "description": "API client ID",
                        "type": "integer"
                    },
                    "user_uuid": {
                        "description": "User UUID",
                        "type": "string"
                    },
                    "name": {
                        "description": "API client name",
                        "type": "string"
                    },
                    "public_key": {
                        "description": "Public API key",
                        "type": "string"
                    },
                    "private_key": {
                        "description": "Private API key (only shown on creation)",
                        "type": "string"
                    },
                    "created_at": {
                        "description": "Creation timestamp",
                        "type": "string",
                        "format": "date-time"
                    },
                    "updated_at": {
                        "description": "Last update timestamp",
                        "type": "string",
                        "format": "date-time"
                    },
                    "allowed_ips": {
                        "description": "Allowed client IPs/CIDR (newline or comma separated); empty = no restriction",
                        "type": "string",
                        "nullable": true
                    },
                    "notify_foreign_ip": {
                        "description": "Email owner when a non-allowed IP attempts to use this key",
                        "type": "string",
                        "enum": [
                            "false",
                            "true"
                        ]
                    }
                },
                "type": "object"
            },
            "ApiClientList": {
                "properties": {
                    "id": {
                        "description": "API client ID",
                        "type": "integer"
                    },
                    "user_uuid": {
                        "description": "User UUID",
                        "type": "string"
                    },
                    "name": {
                        "description": "API client name",
                        "type": "string"
                    },
                    "public_key": {
                        "description": "Public API key (truncated)",
                        "type": "string"
                    },
                    "created_at": {
                        "description": "Creation timestamp",
                        "type": "string",
                        "format": "date-time"
                    },
                    "updated_at": {
                        "description": "Last update timestamp",
                        "type": "string",
                        "format": "date-time"
                    },
                    "allowed_ips": {
                        "description": "Allowed client IPs/CIDR list",
                        "type": "string",
                        "nullable": true
                    },
                    "notify_foreign_ip": {
                        "type": "string",
                        "enum": [
                            "false",
                            "true"
                        ]
                    }
                },
                "type": "object"
            },
            "ApiClientPagination": {
                "properties": {
                    "current_page": {
                        "description": "Current page number",
                        "type": "integer"
                    },
                    "per_page": {
                        "description": "Records per page",
                        "type": "integer"
                    },
                    "total_records": {
                        "description": "Total number of records",
                        "type": "integer"
                    },
                    "total_pages": {
                        "description": "Total number of pages",
                        "type": "integer"
                    },
                    "has_next": {
                        "description": "Whether there is a next page",
                        "type": "boolean"
                    },
                    "has_prev": {
                        "description": "Whether there is a previous page",
                        "type": "boolean"
                    },
                    "from": {
                        "description": "Starting record number",
                        "type": "integer"
                    },
                    "to": {
                        "description": "Ending record number",
                        "type": "integer"
                    }
                },
                "type": "object"
            },
            "ApiClientSearch": {
                "properties": {
                    "query": {
                        "description": "Search query",
                        "type": "string"
                    },
                    "has_results": {
                        "description": "Whether search returned results",
                        "type": "boolean"
                    }
                },
                "type": "object"
            },
            "ApiClientCreateRequest": {
                "required": [
                    "name"
                ],
                "properties": {
                    "name": {
                        "description": "API client name",
                        "type": "string",
                        "maxLength": 191,
                        "minLength": 1
                    },
                    "allowed_ips": {
                        "description": "Allowed IPs/CIDR (newline or comma); omit or empty for no restriction",
                        "type": "string",
                        "nullable": true
                    },
                    "notify_foreign_ip": {
                        "description": "Email when the key is used from a non-allowed IP (requires allowed_ips)",
                        "type": "boolean",
                        "nullable": true
                    }
                },
                "type": "object"
            },
            "ApiClientUpdateRequest": {
                "properties": {
                    "name": {
                        "description": "API client name",
                        "type": "string",
                        "maxLength": 191,
                        "minLength": 1
                    },
                    "allowed_ips": {
                        "description": "Allowed IPs/CIDR; empty/null clears restriction",
                        "type": "string",
                        "nullable": true
                    },
                    "notify_foreign_ip": {
                        "description": "Email when the key is used from a off-list IP",
                        "type": "boolean",
                        "nullable": true
                    }
                },
                "type": "object"
            },
            "ApiClientValidationRequest": {
                "required": [
                    "public_key"
                ],
                "properties": {
                    "public_key": {
                        "description": "Public API key to validate",
                        "type": "string"
                    }
                },
                "type": "object"
            },
            "ApiClientValidationResponse": {
                "properties": {
                    "valid": {
                        "description": "Whether the API client is valid",
                        "type": "boolean"
                    },
                    "api_client": {
                        "properties": {
                            "id": {
                                "type": "integer"
                            },
                            "name": {
                                "type": "string"
                            },
                            "user_uuid": {
                                "type": "string"
                            },
                            "created_at": {
                                "type": "string",
                                "format": "date-time"
                            }
                        },
                        "type": "object"
                    },
                    "user": {
                        "properties": {
                            "id": {
                                "type": "integer"
                            },
                            "username": {
                                "type": "string"
                            },
                            "email": {
                                "type": "string"
                            },
                            "uuid": {
                                "type": "string"
                            }
                        },
                        "type": "object"
                    }
                },
                "type": "object"
            },
            "ApiClientActivity": {
                "properties": {
                    "id": {
                        "description": "Activity ID",
                        "type": "integer"
                    },
                    "user_uuid": {
                        "description": "User UUID",
                        "type": "string"
                    },
                    "name": {
                        "description": "Activity name",
                        "type": "string"
                    },
                    "context": {
                        "description": "Activity context",
                        "type": "string"
                    },
                    "ip_address": {
                        "description": "IP address",
                        "type": "string"
                    },
                    "created_at": {
                        "description": "Creation timestamp",
                        "type": "string",
                        "format": "date-time"
                    }
                },
                "type": "object"
            },
            "SessionUpdateRequest": {
                "properties": {
                    "username": {
                        "description": "Username (alphanumeric and underscores only)",
                        "type": "string",
                        "maxLength": 32,
                        "minLength": 3
                    },
                    "email": {
                        "description": "User email address",
                        "type": "string",
                        "format": "email",
                        "maxLength": 255,
                        "minLength": 3
                    },
                    "first_name": {
                        "description": "User first name",
                        "type": "string",
                        "maxLength": 64,
                        "minLength": 1
                    },
                    "last_name": {
                        "description": "User last name",
                        "type": "string",
                        "maxLength": 64,
                        "minLength": 1
                    },
                    "password": {
                        "description": "User password",
                        "type": "string",
                        "maxLength": 255,
                        "minLength": 8
                    },
                    "avatar": {
                        "description": "Avatar URL (must start with https://)",
                        "type": "string",
                        "format": "uri"
                    },
                    "ticket_signature": {
                        "description": "Ticket signature (supports Markdown)",
                        "type": "string",
                        "maxLength": 5000
                    },
                    "two_fa_enabled": {
                        "description": "Two-factor authentication enabled status",
                        "type": "boolean"
                    },
                    "turnstile_token": {
                        "description": "CloudFlare Turnstile token (required if Turnstile is enabled)",
                        "type": "string"
                    }
                },
                "type": "object"
            },
            "SessionUpdateResponse": {
                "properties": {
                    "message": {
                        "description": "Success message",
                        "type": "string"
                    }
                },
                "type": "object"
            },
            "SessionResponse": {
                "properties": {
                    "user_info": {
                        "description": "User information",
                        "type": "object"
                    },
                    "permissions": {
                        "description": "User permissions",
                        "type": "array",
                        "items": {
                            "type": "string"
                        }
                    },
                    "preferences": {
                        "$ref": "#/components/schemas/UserPreferences"
                    }
                },
                "type": "object"
            },
            "UserPreferences": {
                "description": "User preferences stored as localStorage key-value pairs",
                "type": "object",
                "additionalProperties": true
            },
            "PreferencesResponse": {
                "properties": {
                    "preferences": {
                        "$ref": "#/components/schemas/UserPreferences"
                    }
                },
                "type": "object"
            },
            "SignApiKeyRequest": {
                "properties": {
                    "api_key": {
                        "description": "API key to sign",
                        "type": "string"
                    }
                },
                "type": "object"
            },
            "SignApiKeyResponse": {
                "properties": {
                    "signature": {
                        "description": "Signature",
                        "type": "string"
                    },
                    "api_key": {
                        "description": "API key",
                        "type": "string"
                    }
                },
                "type": "object"
            },
            "UserSshKey": {
                "properties": {
                    "id": {
                        "description": "SSH key ID",
                        "type": "integer"
                    },
                    "user_id": {
                        "description": "User ID",
                        "type": "integer"
                    },
                    "name": {
                        "description": "SSH key name",
                        "type": "string"
                    },
                    "public_key": {
                        "description": "SSH public key",
                        "type": "string"
                    },
                    "fingerprint": {
                        "description": "SSH key fingerprint",
                        "type": "string"
                    },
                    "created_at": {
                        "description": "Creation timestamp",
                        "type": "string",
                        "format": "date-time"
                    },
                    "updated_at": {
                        "description": "Last update timestamp",
                        "type": "string",
                        "format": "date-time"
                    },
                    "deleted_at": {
                        "description": "Deletion timestamp",
                        "type": "string",
                        "format": "date-time",
                        "nullable": true
                    }
                },
                "type": "object"
            },
            "UserSshKeyList": {
                "properties": {
                    "id": {
                        "description": "SSH key ID",
                        "type": "integer"
                    },
                    "user_id": {
                        "description": "User ID",
                        "type": "integer"
                    },
                    "name": {
                        "description": "SSH key name",
                        "type": "string"
                    },
                    "created_at": {
                        "description": "Creation timestamp",
                        "type": "string",
                        "format": "date-time"
                    },
                    "updated_at": {
                        "description": "Last update timestamp",
                        "type": "string",
                        "format": "date-time"
                    },
                    "deleted_at": {
                        "description": "Deletion timestamp",
                        "type": "string",
                        "format": "date-time",
                        "nullable": true
                    }
                },
                "type": "object"
            },
            "SshKeyPagination": {
                "properties": {
                    "current_page": {
                        "description": "Current page number",
                        "type": "integer"
                    },
                    "per_page": {
                        "description": "Records per page",
                        "type": "integer"
                    },
                    "total_records": {
                        "description": "Total number of records",
                        "type": "integer"
                    },
                    "total_pages": {
                        "description": "Total number of pages",
                        "type": "integer"
                    },
                    "has_next": {
                        "description": "Whether there is a next page",
                        "type": "boolean"
                    },
                    "has_prev": {
                        "description": "Whether there is a previous page",
                        "type": "boolean"
                    },
                    "from": {
                        "description": "Starting record number",
                        "type": "integer"
                    },
                    "to": {
                        "description": "Ending record number",
                        "type": "integer"
                    }
                },
                "type": "object"
            },
            "SshKeySearch": {
                "properties": {
                    "query": {
                        "description": "Search query",
                        "type": "string"
                    },
                    "has_results": {
                        "description": "Whether search returned results",
                        "type": "boolean"
                    }
                },
                "type": "object"
            },
            "SshKeyCreateRequest": {
                "required": [
                    "name",
                    "public_key"
                ],
                "properties": {
                    "name": {
                        "description": "SSH key name",
                        "type": "string",
                        "maxLength": 191,
                        "minLength": 1
                    },
                    "public_key": {
                        "description": "SSH public key",
                        "type": "string"
                    }
                },
                "type": "object"
            },
            "SshKeyUpdateRequest": {
                "properties": {
                    "name": {
                        "description": "SSH key name",
                        "type": "string",
                        "maxLength": 191,
                        "minLength": 1
                    },
                    "public_key": {
                        "description": "SSH public key",
                        "type": "string"
                    }
                },
                "type": "object"
            },
            "SshKeyFingerprintRequest": {
                "required": [
                    "public_key"
                ],
                "properties": {
                    "public_key": {
                        "description": "SSH public key to generate fingerprint for",
                        "type": "string"
                    }
                },
                "type": "object"
            },
            "SshKeyFingerprintResponse": {
                "properties": {
                    "fingerprint": {
                        "description": "Generated fingerprint",
                        "type": "string"
                    },
                    "public_key": {
                        "description": "Original public key",
                        "type": "string"
                    }
                },
                "type": "object"
            },
            "SshKeyActivity": {
                "properties": {
                    "id": {
                        "description": "Activity ID",
                        "type": "integer"
                    },
                    "user_uuid": {
                        "description": "User UUID",
                        "type": "string"
                    },
                    "name": {
                        "description": "Activity name",
                        "type": "string"
                    },
                    "context": {
                        "description": "Activity context",
                        "type": "string"
                    },
                    "ip_address": {
                        "description": "IP address",
                        "type": "string"
                    },
                    "created_at": {
                        "description": "Creation timestamp",
                        "type": "string",
                        "format": "date-time"
                    }
                },
                "type": "object"
            },
            "UserVmInstanceActivity": {
                "properties": {
                    "id": {
                        "description": "User-facing VM instance activity log (separate table, like ServerActivityController for servers).",
                        "type": "integer"
                    },
                    "vm_instance_id": {
                        "type": "integer"
                    },
                    "vm_node_id": {
                        "type": "integer"
                    },
                    "user_id": {
                        "type": "integer",
                        "nullable": true
                    },
                    "event": {
                        "type": "string"
                    },
                    "metadata": {
                        "type": "object",
                        "nullable": true
                    },
                    "ip": {
                        "type": "string",
                        "nullable": true
                    },
                    "timestamp": {
                        "type": "string",
                        "format": "date-time"
                    },
                    "user": {
                        "properties": {
                            "username": {
                                "type": "string"
                            },
                            "avatar": {
                                "type": "string",
                                "nullable": true
                            },
                            "role": {
                                "type": "string",
                                "nullable": true
                            }
                        },
                        "type": "object",
                        "nullable": true
                    }
                },
                "type": "object"
            },
            "VmInstanceActivityPagination": {
                "properties": {
                    "current_page": {
                        "type": "integer"
                    },
                    "per_page": {
                        "type": "integer"
                    },
                    "total": {
                        "type": "integer"
                    },
                    "last_page": {
                        "type": "integer"
                    },
                    "from": {
                        "type": "integer"
                    },
                    "to": {
                        "type": "integer"
                    }
                },
                "type": "object"
            },
            "VdsChatbotRequest": {
                "required": [
                    "message"
                ],
                "properties": {
                    "message": {
                        "description": "User message",
                        "type": "string"
                    },
                    "history": {
                        "description": "Chat history",
                        "type": "array",
                        "items": {
                            "type": "object"
                        }
                    }
                },
                "type": "object"
            },
            "VdsChatbotResponse": {
                "properties": {
                    "response": {
                        "description": "VDS AI assistant response",
                        "type": "string"
                    }
                },
                "type": "object"
            },
            "WingsActivityLog": {
                "required": [
                    "server",
                    "event"
                ],
                "properties": {
                    "user": {
                        "description": "User UUID (nullable)",
                        "type": "string",
                        "format": "uuid",
                        "nullable": true
                    },
                    "server": {
                        "description": "Server UUID",
                        "type": "string",
                        "format": "uuid"
                    },
                    "event": {
                        "description": "Activity event name",
                        "type": "string"
                    },
                    "metadata": {
                        "description": "Additional activity metadata",
                        "type": "object"
                    },
                    "ip": {
                        "description": "IP address of the user",
                        "type": "string"
                    },
                    "timestamp": {
                        "description": "Activity timestamp",
                        "type": "string",
                        "format": "date-time"
                    }
                },
                "type": "object"
            },
            "WingsActivityRequest": {
                "required": [
                    "data"
                ],
                "properties": {
                    "data": {
                        "description": "Array of activity logs",
                        "type": "array",
                        "items": {
                            "$ref": "#/components/schemas/WingsActivityLog"
                        }
                    }
                },
                "type": "object"
            },
            "WingsActivityResponse": {
                "properties": {
                    "message": {
                        "description": "Success message",
                        "type": "string"
                    },
                    "processed_count": {
                        "description": "Number of activities processed successfully",
                        "type": "integer"
                    }
                },
                "type": "object"
            },
            "WingsActivityErrorResponse": {
                "properties": {
                    "message": {
                        "description": "Error message",
                        "type": "string"
                    },
                    "processed_count": {
                        "description": "Number of activities processed successfully",
                        "type": "integer"
                    },
                    "error_count": {
                        "description": "Number of activities that failed",
                        "type": "integer"
                    },
                    "errors": {
                        "description": "Array of error messages",
                        "type": "array",
                        "items": {
                            "type": "string"
                        }
                    }
                },
                "type": "object"
            },
            "BackupUploadInfo": {
                "properties": {
                    "parts": {
                        "description": "Array of upload URLs for each part",
                        "type": "array",
                        "items": {
                            "type": "string"
                        }
                    },
                    "part_size": {
                        "description": "Size of each part in bytes",
                        "type": "integer"
                    }
                },
                "type": "object"
            },
            "BackupCompletion": {
                "required": [
                    "successful"
                ],
                "properties": {
                    "checksum": {
                        "description": "Backup file checksum, required on success",
                        "type": "string",
                        "nullable": true
                    },
                    "checksum_type": {
                        "description": "Type of checksum algorithm, required on success",
                        "type": "string",
                        "nullable": true
                    },
                    "size": {
                        "description": "Backup file size in bytes, required on success",
                        "type": "integer",
                        "nullable": true
                    },
                    "successful": {
                        "description": "Whether backup was successful",
                        "type": "boolean"
                    },
                    "upload_id": {
                        "description": "Upload ID for multipart uploads",
                        "type": "string"
                    }
                },
                "type": "object"
            },
            "BackupRestoration": {
                "required": [
                    "successful"
                ],
                "properties": {
                    "successful": {
                        "description": "Whether restoration was successful",
                        "type": "boolean"
                    }
                },
                "type": "object"
            },
            "WingsServerConfig": {
                "properties": {
                    "settings": {
                        "properties": {
                            "uuid": {
                                "description": "Server UUID",
                                "type": "string"
                            },
                            "meta": {
                                "properties": {
                                    "name": {
                                        "description": "Server name",
                                        "type": "string"
                                    },
                                    "description": {
                                        "description": "Server description",
                                        "type": "string"
                                    }
                                },
                                "type": "object"
                            },
                            "suspended": {
                                "description": "Server suspension status",
                                "type": "boolean"
                            },
                            "invocation": {
                                "description": "Startup command",
                                "type": "string"
                            },
                            "skip_egg_scripts": {
                                "description": "Skip egg scripts flag",
                                "type": "boolean"
                            },
                            "environment": {
                                "description": "Environment variables",
                                "type": "object"
                            },
                            "allocations": {
                                "properties": {
                                    "force_outgoing_ip": {
                                        "type": "boolean"
                                    },
                                    "default": {
                                        "properties": {
                                            "ip": {
                                                "type": "string"
                                            },
                                            "port": {
                                                "type": "integer"
                                            }
                                        },
                                        "type": "object"
                                    },
                                    "mappings": {
                                        "type": "object"
                                    }
                                },
                                "type": "object"
                            },
                            "build": {
                                "properties": {
                                    "memory_limit": {
                                        "type": "integer"
                                    },
                                    "swap": {
                                        "type": "integer"
                                    },
                                    "io_weight": {
                                        "type": "integer"
                                    },
                                    "cpu_limit": {
                                        "type": "integer"
                                    },
                                    "disk_space": {
                                        "type": "integer"
                                    },
                                    "threads": {
                                        "type": "integer",
                                        "nullable": true
                                    },
                                    "oom_disabled": {
                                        "type": "boolean"
                                    }
                                },
                                "type": "object"
                            },
                            "mounts": {
                                "type": "array",
                                "items": {
                                    "type": "object"
                                }
                            },
                            "egg": {
                                "properties": {
                                    "id": {
                                        "type": "string"
                                    },
                                    "file_denylist": {
                                        "type": "array",
                                        "items": {
                                            "type": "string"
                                        }
                                    },
                                    "features": {
                                        "type": "object"
                                    }
                                },
                                "type": "object"
                            },
                            "container": {
                                "properties": {
                                    "image": {
                                        "type": "string"
                                    },
                                    "oom_disabled": {
                                        "type": "boolean"
                                    },
                                    "requires_rebuild": {
                                        "type": "boolean"
                                    }
                                },
                                "type": "object"
                            }
                        },
                        "type": "object"
                    },
                    "process_configuration": {
                        "properties": {
                            "configs": {
                                "type": "array",
                                "items": {
                                    "type": "object"
                                }
                            },
                            "startup": {
                                "properties": {
                                    "done": {
                                        "type": "array",
                                        "items": {
                                            "type": "string"
                                        }
                                    },
                                    "user_interaction": {
                                        "type": "array",
                                        "items": {
                                            "type": "string"
                                        }
                                    },
                                    "strip_ansi": {
                                        "type": "boolean"
                                    }
                                },
                                "type": "object"
                            },
                            "stop": {
                                "properties": {
                                    "type": {
                                        "type": "string"
                                    },
                                    "value": {
                                        "type": "string"
                                    }
                                },
                                "type": "object"
                            }
                        },
                        "type": "object"
                    }
                },
                "type": "object"
            },
            "ServerInstallConfig": {
                "properties": {
                    "container_image": {
                        "description": "Docker container image",
                        "type": "string"
                    },
                    "entrypoint": {
                        "description": "Container entrypoint",
                        "type": "string"
                    },
                    "script": {
                        "description": "Installation script",
                        "type": "string"
                    }
                },
                "type": "object"
            },
            "ServerInstallCompletion": {
                "required": [
                    "successful"
                ],
                "properties": {
                    "successful": {
                        "description": "Whether installation was successful",
                        "type": "boolean"
                    },
                    "reinstall": {
                        "description": "Whether this was a reinstall",
                        "type": "boolean"
                    }
                },
                "type": "object"
            },
            "RemoteServersResponse": {
                "properties": {
                    "data": {
                        "description": "Array of server configurations",
                        "type": "array",
                        "items": {
                            "$ref": "#/components/schemas/WingsServerConfig"
                        }
                    },
                    "links": {
                        "properties": {
                            "first": {
                                "description": "First page URL",
                                "type": "string"
                            },
                            "last": {
                                "description": "Last page URL",
                                "type": "string"
                            },
                            "prev": {
                                "description": "Previous page URL",
                                "type": "string",
                                "nullable": true
                            },
                            "next": {
                                "description": "Next page URL",
                                "type": "string",
                                "nullable": true
                            }
                        },
                        "type": "object"
                    },
                    "meta": {
                        "properties": {
                            "current_page": {
                                "description": "Current page number",
                                "type": "integer"
                            },
                            "from": {
                                "description": "Starting record number",
                                "type": "integer"
                            },
                            "last_page": {
                                "description": "Last page number",
                                "type": "integer"
                            },
                            "links": {
                                "description": "Pagination links",
                                "type": "array",
                                "items": {
                                    "type": "object"
                                }
                            },
                            "path": {
                                "description": "Base path",
                                "type": "string"
                            },
                            "per_page": {
                                "description": "Records per page",
                                "type": "integer"
                            },
                            "to": {
                                "description": "Ending record number",
                                "type": "integer"
                            },
                            "total": {
                                "description": "Total number of records",
                                "type": "integer"
                            }
                        },
                        "type": "object"
                    }
                },
                "type": "object"
            },
            "ServerStatusUpdate": {
                "properties": {
                    "data": {
                        "properties": {
                            "new_state": {
                                "description": "New server state",
                                "type": "string",
                                "enum": [
                                    "offline",
                                    "starting",
                                    "running",
                                    "stopping",
                                    "stopped",
                                    "installing",
                                    "install_failed",
                                    "update_failed",
                                    "backup_failed",
                                    "crashed",
                                    "suspended",
                                    "error"
                                ]
                            },
                            "error": {
                                "description": "Error message if applicable",
                                "type": "string"
                            }
                        },
                        "type": "object"
                    },
                    "state": {
                        "description": "Server state (fallback format)",
                        "type": "string",
                        "enum": [
                            "offline",
                            "starting",
                            "running",
                            "stopping",
                            "stopped",
                            "installing",
                            "install_failed",
                            "update_failed",
                            "backup_failed",
                            "crashed",
                            "suspended",
                            "error"
                        ]
                    }
                },
                "type": "object"
            },
            "ServerStatusUpdateResponse": {
                "properties": {
                    "message": {
                        "description": "Success message",
                        "type": "string"
                    },
                    "state": {
                        "description": "Updated server state",
                        "type": "string"
                    },
                    "server_uuid": {
                        "description": "Server UUID",
                        "type": "string"
                    }
                },
                "type": "object"
            },
            "ServerStatusResponse": {
                "properties": {
                    "state": {
                        "description": "Current server state",
                        "type": "string"
                    },
                    "server_uuid": {
                        "description": "Server UUID",
                        "type": "string"
                    },
                    "node_id": {
                        "description": "Node ID",
                        "type": "integer"
                    }
                },
                "type": "object"
            },
            "ServersResetResponse": {
                "properties": {
                    "success": {
                        "description": "Whether the reset was successful",
                        "type": "boolean"
                    },
                    "message": {
                        "description": "Success message",
                        "type": "string"
                    }
                },
                "type": "object"
            },
            "SftpAuthRequest": {
                "required": [
                    "type",
                    "username",
                    "password",
                    "ip"
                ],
                "properties": {
                    "type": {
                        "description": "Authentication type",
                        "type": "string",
                        "enum": [
                            "password",
                            "public_key"
                        ]
                    },
                    "username": {
                        "description": "Username in format username.serverid",
                        "type": "string"
                    },
                    "password": {
                        "description": "Password or public key content",
                        "type": "string"
                    },
                    "ip": {
                        "description": "Client IP address",
                        "type": "string"
                    },
                    "session_id": {
                        "description": "Session ID",
                        "type": "string"
                    },
                    "client_version": {
                        "description": "SFTP client version",
                        "type": "string"
                    }
                },
                "type": "object"
            },
            "SftpAuthSuccessResponse": {
                "properties": {
                    "server": {
                        "description": "Server UUID",
                        "type": "string"
                    },
                    "user": {
                        "description": "User UUID",
                        "type": "string"
                    },
                    "permissions": {
                        "description": "File permissions",
                        "type": "array",
                        "items": {
                            "type": "string"
                        }
                    }
                },
                "type": "object"
            },
            "SftpAuthErrorResponse": {
                "properties": {
                    "error": {
                        "description": "Error message",
                        "type": "string"
                    }
                },
                "type": "object"
            },
            "WingsAdminResponse": {
                "properties": {
                    "message": {
                        "description": "Welcome message",
                        "type": "string"
                    }
                },
                "type": "object"
            },
            "NodeUtilization": {
                "properties": {
                    "node": {
                        "description": "Node information",
                        "type": "object"
                    },
                    "utilization": {
                        "description": "System utilization data",
                        "type": "object"
                    }
                },
                "type": "object"
            },
            "NodeDockerDiskUsage": {
                "properties": {
                    "node": {
                        "description": "Node information",
                        "type": "object"
                    },
                    "dockerDiskUsage": {
                        "description": "Docker disk usage data",
                        "type": "object"
                    }
                },
                "type": "object"
            },
            "NodeDockerPrune": {
                "properties": {
                    "node": {
                        "description": "Node information",
                        "type": "object"
                    },
                    "dockerPrune": {
                        "description": "Docker prune results",
                        "type": "object"
                    }
                },
                "type": "object"
            },
            "NodeIps": {
                "properties": {
                    "node": {
                        "description": "Node information",
                        "type": "object"
                    },
                    "ips": {
                        "description": "Available IP addresses",
                        "type": "array",
                        "items": {
                            "type": "string"
                        }
                    }
                },
                "type": "object"
            },
            "NodeSystemInfo": {
                "properties": {
                    "node": {
                        "description": "Node information",
                        "type": "object"
                    },
                    "wings": {
                        "description": "Detailed system information from Wings",
                        "type": "object"
                    }
                },
                "type": "object"
            }
        }
    },
    "tags": [
        {
            "name": "Admin - Mounts",
            "description": "Wings bind mounts (host paths into containers)"
        },
        {
            "name": "System",
            "description": "System configuration and settings"
        },
        {
            "name": "Admin - Users",
            "description": "User management operations"
        },
        {
            "name": "Admin - Servers",
            "description": "Server management operations"
        },
        {
            "name": "Admin - Allocations",
            "description": "IP allocation management"
        },
        {
            "name": "Admin - Nodes",
            "description": "Node management operations"
        },
        {
            "name": "Admin - Realms",
            "description": "Realm management operations"
        },
        {
            "name": "Admin - Spells",
            "description": "Spell (egg) management operations"
        },
        {
            "name": "Admin - Roles",
            "description": "Role and permission management"
        },
        {
            "name": "Admin - Plugins",
            "description": "Plugin management operations"
        },
        {
            "name": "Admin - Settings",
            "description": "System settings management"
        },
        {
            "name": "Admin - Dashboard",
            "description": "Dashboard and statistics"
        },
        {
            "name": "User - VM Instance Activities",
            "description": "VM instance activity history"
        },
        {
            "name": "User - VM Backups",
            "description": "List, create, delete, and restore VM backups (client area). Backup limit enforced per instance."
        },
        {
            "name": "User - VM Instances",
            "description": "User VM instance list, detail, status, power, console"
        },
        {
            "name": "User - VM Instance Subusers",
            "description": "VM instance subuser management"
        },
        {
            "name": "Admin - AbuseIPDB",
            "description": "Admin - AbuseIPDB"
        },
        {
            "name": "Admin - Backup Schedules",
            "description": "Admin - Backup Schedules"
        },
        {
            "name": "Admin - Security",
            "description": "Admin - Security"
        },
        {
            "name": "Admin - FeatherCloud",
            "description": "Admin - FeatherCloud"
        },
        {
            "name": "Admin - Cloud Plugins",
            "description": "Admin - Cloud Plugins"
        },
        {
            "name": "Admin - Console",
            "description": "Admin - Console"
        },
        {
            "name": "Admin - Database Management",
            "description": "Admin - Database Management"
        },
        {
            "name": "Admin - Database Snapshots",
            "description": "Admin - Database Snapshots"
        },
        {
            "name": "Admin - Databases",
            "description": "Admin - Databases"
        },
        {
            "name": "Admin - DNS Hosts",
            "description": "Admin - DNS Hosts"
        },
        {
            "name": "Admin - FeatherPanel Premium",
            "description": "Admin - FeatherPanel Premium"
        },
        {
            "name": "Admin - FeatherZeroTrust",
            "description": "Admin - FeatherZeroTrust"
        },
        {
            "name": "Admin - File Manager",
            "description": "Admin - File Manager"
        },
        {
            "name": "Admin - Hosting packages",
            "description": "Admin - Hosting packages"
        },
        {
            "name": "Admin - Images",
            "description": "Admin - Images"
        },
        {
            "name": "Admin - Integrity",
            "description": "Admin - Integrity"
        },
        {
            "name": "Admin - Analytics",
            "description": "Admin - Analytics"
        },
        {
            "name": "Admin - Knowledgebase",
            "description": "Admin - Knowledgebase"
        },
        {
            "name": "Admin - LDAP",
            "description": "Admin - LDAP"
        },
        {
            "name": "Admin - Locations",
            "description": "Admin - Locations"
        },
        {
            "name": "Admin - Log Viewer",
            "description": "Admin - Log Viewer"
        },
        {
            "name": "Admin - Mail Hosts",
            "description": "Admin - Mail Hosts"
        },
        {
            "name": "Admin - Mail Templates",
            "description": "Admin - Mail Templates"
        },
        {
            "name": "Admin - FeatherCloud Translations",
            "description": "Admin - FeatherCloud Translations"
        },
        {
            "name": "Admin - Notifications",
            "description": "Admin - Notifications"
        },
        {
            "name": "Admin - OIDC",
            "description": "Admin - OIDC"
        },
        {
            "name": "Admin - Permissions",
            "description": "Admin - Permissions"
        },
        {
            "name": "Admin - Plugin Manager",
            "description": "Admin - Plugin Manager"
        },
        {
            "name": "Admin - Plugin Manager - Dev Tools",
            "description": "Admin - Plugin Manager - Dev Tools"
        },
        {
            "name": "Admin - Pterodactyl Importer",
            "description": "Admin - Pterodactyl Importer"
        },
        {
            "name": "Admin - Rate Limits",
            "description": "Admin - Rate Limits"
        },
        {
            "name": "Admin - Server Activities",
            "description": "Admin - Server Activities"
        },
        {
            "name": "Admin - Server Allocations",
            "description": "Admin - Server Allocations"
        },
        {
            "name": "Admin - Storage Sense",
            "description": "Admin - Storage Sense"
        },
        {
            "name": "Admin - Subdomains",
            "description": "Admin - Subdomains"
        },
        {
            "name": "Admin - Ticket Attachments",
            "description": "Admin - Ticket Attachments"
        },
        {
            "name": "Admin - Ticket Categories",
            "description": "Admin - Ticket Categories"
        },
        {
            "name": "Admin - Ticket Messages",
            "description": "Admin - Ticket Messages"
        },
        {
            "name": "Admin - Ticket Priorities",
            "description": "Admin - Ticket Priorities"
        },
        {
            "name": "Admin - Ticket Statuses",
            "description": "Admin - Ticket Statuses"
        },
        {
            "name": "Admin - Tickets",
            "description": "Admin - Tickets"
        },
        {
            "name": "Admin - Translations",
            "description": "Admin - Translations"
        },
        {
            "name": "Admin - VM Instances",
            "description": "Admin - VM Instances"
        },
        {
            "name": "Admin - VM Nodes",
            "description": "Admin - VM Nodes"
        },
        {
            "name": "Admin - Web Nodes",
            "description": "Admin - Web Nodes"
        },
        {
            "name": "Admin - WebPlates",
            "description": "Admin - WebPlates"
        },
        {
            "name": "Admin - WebSpaces",
            "description": "Admin - WebSpaces"
        },
        {
            "name": "Admin - Wings Backups",
            "description": "Admin - Wings Backups"
        },
        {
            "name": "System - Mythic Cloud",
            "description": "System - Mythic Cloud"
        },
        {
            "name": "System - Debug",
            "description": "System - Debug"
        },
        {
            "name": "System - LDAP",
            "description": "System - LDAP"
        },
        {
            "name": "System - OIDC",
            "description": "System - OIDC"
        },
        {
            "name": "System - Selftest",
            "description": "System - Selftest"
        },
        {
            "name": "User - Authentication",
            "description": "User - Authentication"
        },
        {
            "name": "User - Chatbot",
            "description": "User - Chatbot"
        },
        {
            "name": "User - Status",
            "description": "User - Status"
        },
        {
            "name": "User - Notifications",
            "description": "User - Notifications"
        },
        {
            "name": "User - Server Files",
            "description": "User - Server Files"
        },
        {
            "name": "User - Server Logs",
            "description": "User - Server Logs"
        },
        {
            "name": "User - Server Power",
            "description": "User - Server Power"
        },
        {
            "name": "User - Server Activities",
            "description": "User - Server Activities"
        },
        {
            "name": "User - Server Allocations",
            "description": "User - Server Allocations"
        },
        {
            "name": "User - Server Backups",
            "description": "User - Server Backups"
        },
        {
            "name": "User - Server Databases",
            "description": "User - Server Databases"
        },
        {
            "name": "User - Server FastDL",
            "description": "User - Server FastDL"
        },
        {
            "name": "User - Server Firewall",
            "description": "User - Server Firewall"
        },
        {
            "name": "User - Server Import",
            "description": "User - Server Import"
        },
        {
            "name": "User - Server Proxy",
            "description": "User - Server Proxy"
        },
        {
            "name": "User - Server Schedules",
            "description": "User - Server Schedules"
        },
        {
            "name": "User - Server Management",
            "description": "User - Server Management"
        },
        {
            "name": "User - Server",
            "description": "User - Server"
        },
        {
            "name": "User - Server Subdomains",
            "description": "User - Server Subdomains"
        },
        {
            "name": "User - Server Subusers",
            "description": "User - Server Subusers"
        },
        {
            "name": "User - Server Tasks",
            "description": "User - Server Tasks"
        },
        {
            "name": "User - Tickets",
            "description": "User - Tickets"
        },
        {
            "name": "User - Account",
            "description": "User - Account"
        },
        {
            "name": "User - API Clients",
            "description": "User - API Clients"
        },
        {
            "name": "User - Session",
            "description": "User - Session"
        },
        {
            "name": "User - SSH Keys",
            "description": "User - SSH Keys"
        },
        {
            "name": "User - VDS Chatbot",
            "description": "User - VDS Chatbot"
        },
        {
            "name": "User - WebSpace Files",
            "description": "User - WebSpace Files"
        },
        {
            "name": "User - WebSpace Schedules",
            "description": "User - WebSpace Schedules"
        },
        {
            "name": "User - WebSpace Subusers",
            "description": "User - WebSpace Subusers"
        },
        {
            "name": "User - WebSpaces",
            "description": "User - WebSpaces"
        },
        {
            "name": "Wings - Activity",
            "description": "Wings - Activity"
        },
        {
            "name": "Wings - Backup",
            "description": "Wings - Backup"
        },
        {
            "name": "Wings - Remote API",
            "description": "Wings - Remote API"
        },
        {
            "name": "Wings - Server",
            "description": "Wings - Server"
        },
        {
            "name": "Wings - SFTP",
            "description": "Wings - SFTP"
        },
        {
            "name": "Wings - Admin",
            "description": "Wings - Admin"
        }
    ]
}