{
  "components": {
    "schemas": {
      "AccountCreate": {
        "properties": {
          "auto_ssl": {
            "default": true,
            "title": "Auto Ssl",
            "type": "boolean"
          },
          "domain": {
            "title": "Domain",
            "type": "string"
          },
          "email": {
            "title": "Email",
            "type": "string"
          },
          "ip_address": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Ip Address"
          },
          "is_reseller": {
            "default": false,
            "title": "Is Reseller",
            "type": "boolean"
          },
          "package": {
            "$ref": "#/components/schemas/PackageLimits"
          },
          "password": {
            "description": "At least 8 characters and at most 72 bytes when UTF-8 encoded.",
            "title": "Password",
            "type": "string"
          },
          "php_version": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Php Version"
          },
          "plan_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Plan Id"
          },
          "reseller_acl_plan_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Reseller Acl Plan Id"
          },
          "reseller_limits": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/ResellerLimits"
              },
              {
                "type": "null"
              }
            ]
          },
          "reseller_owner": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Reseller Owner"
          },
          "setup_mail_dns": {
            "default": true,
            "title": "Setup Mail Dns",
            "type": "boolean"
          },
          "shell_access": {
            "default": false,
            "title": "Shell Access",
            "type": "boolean"
          },
          "username": {
            "title": "Username",
            "type": "string"
          },
          "webserver": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Webserver"
          }
        },
        "required": [
          "username",
          "password",
          "domain",
          "email"
        ],
        "title": "AccountCreate",
        "type": "object"
      },
      "AccountDomainsForPHP": {
        "properties": {
          "domains": {
            "items": {
              "$ref": "#/components/schemas/DomainPHPConfigResponse"
            },
            "title": "Domains",
            "type": "array"
          },
          "username": {
            "title": "Username",
            "type": "string"
          }
        },
        "required": [
          "username",
          "domains"
        ],
        "title": "AccountDomainsForPHP",
        "type": "object"
      },
      "AccountMigrationProgress": {
        "properties": {
          "completed_at": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Completed At"
          },
          "current_step": {
            "default": "",
            "title": "Current Step",
            "type": "string"
          },
          "domain": {
            "default": "",
            "title": "Domain",
            "type": "string"
          },
          "error": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Error"
          },
          "progress": {
            "default": 0,
            "title": "Progress",
            "type": "integer"
          },
          "started_at": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Started At"
          },
          "status": {
            "default": "pending",
            "title": "Status",
            "type": "string"
          },
          "username": {
            "title": "Username",
            "type": "string"
          },
          "warnings": {
            "items": {
              "type": "string"
            },
            "title": "Warnings",
            "type": "array"
          }
        },
        "required": [
          "username"
        ],
        "title": "AccountMigrationProgress",
        "type": "object"
      },
      "AccountResponse": {
        "properties": {
          "auto_ssl": {
            "default": true,
            "title": "Auto Ssl",
            "type": "boolean"
          },
          "created_at": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Created At"
          },
          "domain": {
            "title": "Domain",
            "type": "string"
          },
          "email": {
            "title": "Email",
            "type": "string"
          },
          "home_dir": {
            "title": "Home Dir",
            "type": "string"
          },
          "ip_address": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Ip Address"
          },
          "is_reseller": {
            "default": false,
            "title": "Is Reseller",
            "type": "boolean"
          },
          "package": {
            "$ref": "#/components/schemas/PackageLimits"
          },
          "php_version": {
            "title": "Php Version",
            "type": "string"
          },
          "plan_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Plan Id"
          },
          "post_create_issues": {
            "items": {
              "type": "string"
            },
            "title": "Post Create Issues",
            "type": "array"
          },
          "reseller_acl_plan_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Reseller Acl Plan Id"
          },
          "reseller_limits": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/ResellerLimits"
              },
              {
                "type": "null"
              }
            ]
          },
          "reseller_owner": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Reseller Owner"
          },
          "setup_mail_dns": {
            "default": true,
            "title": "Setup Mail Dns",
            "type": "boolean"
          },
          "shell_access": {
            "default": false,
            "title": "Shell Access",
            "type": "boolean"
          },
          "status": {
            "$ref": "#/components/schemas/AccountStatus"
          },
          "sub_account_count": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Sub Account Count"
          },
          "subdomains": {
            "items": {
              "type": "string"
            },
            "title": "Subdomains",
            "type": "array"
          },
          "suspend_reason": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Suspend Reason"
          },
          "updated_at": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Updated At"
          },
          "username": {
            "title": "Username",
            "type": "string"
          },
          "webserver": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Webserver"
          }
        },
        "required": [
          "username",
          "domain",
          "email",
          "status",
          "home_dir",
          "package",
          "php_version"
        ],
        "title": "AccountResponse",
        "type": "object"
      },
      "AccountStatus": {
        "enum": [
          "active",
          "suspended",
          "terminated"
        ],
        "title": "AccountStatus",
        "type": "string"
      },
      "AccountUpdate": {
        "properties": {
          "auto_ssl": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "title": "Auto Ssl"
          },
          "domain": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Domain"
          },
          "email": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Email"
          },
          "ip_address": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Ip Address"
          },
          "is_reseller": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "title": "Is Reseller"
          },
          "package": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/PackageLimits"
              },
              {
                "type": "null"
              }
            ]
          },
          "php_version": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Php Version"
          },
          "plan_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Plan Id"
          },
          "reseller_acl_plan_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Reseller Acl Plan Id"
          },
          "reseller_limits": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/ResellerLimits"
              },
              {
                "type": "null"
              }
            ]
          },
          "reseller_owner": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Reseller Owner"
          },
          "setup_mail_dns": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "title": "Setup Mail Dns"
          },
          "shell_access": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "title": "Shell Access"
          },
          "webserver": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Webserver"
          }
        },
        "title": "AccountUpdate",
        "type": "object"
      },
      "AccountUsage": {
        "properties": {
          "bandwidth_limit_mb": {
            "default": 0,
            "title": "Bandwidth Limit Mb",
            "type": "integer"
          },
          "bandwidth_used_mb": {
            "default": 0.0,
            "title": "Bandwidth Used Mb",
            "type": "number"
          },
          "database_count": {
            "default": 0,
            "title": "Database Count",
            "type": "integer"
          },
          "disk_limit_mb": {
            "default": 0,
            "title": "Disk Limit Mb",
            "type": "integer"
          },
          "disk_used_mb": {
            "default": 0.0,
            "title": "Disk Used Mb",
            "type": "number"
          },
          "domain_count": {
            "default": 0,
            "title": "Domain Count",
            "type": "integer"
          },
          "email_count": {
            "default": 0,
            "title": "Email Count",
            "type": "integer"
          },
          "ftp_count": {
            "default": 0,
            "title": "Ftp Count",
            "type": "integer"
          },
          "resource": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/ResourceUsage"
              },
              {
                "type": "null"
              }
            ]
          }
        },
        "title": "AccountUsage",
        "type": "object"
      },
      "ActivateRequest": {
        "properties": {
          "mode": {
            "default": "free",
            "description": "Activation mode: 'trial', 'license', or 'free'",
            "title": "Mode",
            "type": "string"
          },
          "serial_key": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "License serial key (required when mode is 'license')",
            "title": "Serial Key"
          }
        },
        "title": "ActivateRequest",
        "type": "object"
      },
      "AddonDomainCreate": {
        "properties": {
          "auto_ssl": {
            "default": false,
            "title": "Auto Ssl",
            "type": "boolean"
          },
          "document_root": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Document Root"
          },
          "domain": {
            "title": "Domain",
            "type": "string"
          },
          "setup_dns": {
            "default": true,
            "title": "Setup Dns",
            "type": "boolean"
          }
        },
        "required": [
          "domain"
        ],
        "title": "AddonDomainCreate",
        "type": "object"
      },
      "AddonDomainResponse": {
        "properties": {
          "created_at": {
            "default": "",
            "title": "Created At",
            "type": "string"
          },
          "document_root": {
            "title": "Document Root",
            "type": "string"
          },
          "domain": {
            "title": "Domain",
            "type": "string"
          },
          "ssl_active": {
            "default": false,
            "title": "Ssl Active",
            "type": "boolean"
          },
          "username": {
            "default": "",
            "title": "Username",
            "type": "string"
          }
        },
        "required": [
          "domain",
          "document_root"
        ],
        "title": "AddonDomainResponse",
        "type": "object"
      },
      "AdminLoginRequest": {
        "properties": {
          "identifier": {
            "title": "Identifier",
            "type": "string"
          },
          "password": {
            "title": "Password",
            "type": "string"
          },
          "recaptcha_token": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Recaptcha Token"
          },
          "remember_me": {
            "default": false,
            "title": "Remember Me",
            "type": "boolean"
          }
        },
        "required": [
          "identifier",
          "password"
        ],
        "title": "AdminLoginRequest",
        "type": "object"
      },
      "AdminProfileResponse": {
        "properties": {
          "avatar_url": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Avatar Url"
          },
          "email": {
            "default": "",
            "title": "Email",
            "type": "string"
          },
          "language": {
            "default": "auto",
            "title": "Language",
            "type": "string"
          },
          "last_login": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Last Login"
          },
          "sidebar_collapsed": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "description": "The panel's sidebar choice: true keeps it collapsed, false expanded; null while none was made (the panel then opens collapsed). A sign-in answer carries it so the choice follows the identity to any browser.",
            "title": "Sidebar Collapsed"
          },
          "two_factor_enabled": {
            "default": false,
            "title": "Two Factor Enabled",
            "type": "boolean"
          },
          "two_factor_method": {
            "default": "",
            "title": "Two Factor Method",
            "type": "string"
          },
          "username": {
            "title": "Username",
            "type": "string"
          }
        },
        "required": [
          "username"
        ],
        "title": "AdminProfileResponse",
        "type": "object"
      },
      "AdminProfileUpdate": {
        "properties": {
          "email": {
            "anyOf": [
              {
                "maxLength": 254,
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Email"
          },
          "language": {
            "anyOf": [
              {
                "pattern": "^(auto|[a-z]{2,3}(-[A-Za-z0-9]{2,4})?)$",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Language"
          },
          "sidebar_collapsed": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "description": "The sidebar choice to keep: true collapsed, false expanded.",
            "title": "Sidebar Collapsed"
          }
        },
        "title": "AdminProfileUpdate",
        "type": "object"
      },
      "ApiAccessLogEntry": {
        "description": "Single API access log entry.",
        "properties": {
          "endpoint": {
            "title": "Endpoint",
            "type": "string"
          },
          "ip": {
            "title": "Ip",
            "type": "string"
          },
          "key_id": {
            "title": "Key Id",
            "type": "string"
          },
          "key_name": {
            "title": "Key Name",
            "type": "string"
          },
          "method": {
            "title": "Method",
            "type": "string"
          },
          "status_code": {
            "title": "Status Code",
            "type": "integer"
          },
          "timestamp": {
            "title": "Timestamp",
            "type": "string"
          },
          "user_agent": {
            "title": "User Agent",
            "type": "string"
          }
        },
        "required": [
          "timestamp",
          "key_id",
          "key_name",
          "ip",
          "method",
          "endpoint",
          "status_code",
          "user_agent"
        ],
        "title": "ApiAccessLogEntry",
        "type": "object"
      },
      "ApiKeyCreate": {
        "properties": {
          "allowed_ips": {
            "items": {
              "type": "string"
            },
            "title": "Allowed Ips",
            "type": "array"
          },
          "name": {
            "maxLength": 100,
            "minLength": 1,
            "title": "Name",
            "type": "string"
          },
          "scopes": {
            "items": {
              "type": "string"
            },
            "minItems": 1,
            "title": "Scopes",
            "type": "array"
          }
        },
        "required": [
          "name"
        ],
        "title": "ApiKeyCreate",
        "type": "object"
      },
      "ApiKeyCreateResponse": {
        "description": "Returned only at creation time — contains the plaintext secret.",
        "properties": {
          "allowed_ips": {
            "items": {
              "type": "string"
            },
            "title": "Allowed Ips",
            "type": "array"
          },
          "created_at": {
            "title": "Created At",
            "type": "string"
          },
          "id": {
            "title": "Id",
            "type": "string"
          },
          "key": {
            "title": "Key",
            "type": "string"
          },
          "name": {
            "title": "Name",
            "type": "string"
          },
          "owner": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Owner"
          },
          "scopes": {
            "items": {
              "type": "string"
            },
            "title": "Scopes",
            "type": "array"
          },
          "secret": {
            "title": "Secret",
            "type": "string"
          }
        },
        "required": [
          "id",
          "name",
          "key",
          "secret",
          "created_at"
        ],
        "title": "ApiKeyCreateResponse",
        "type": "object"
      },
      "ApiKeyPublic": {
        "description": "Key entry without the encrypted secret — safe for API responses.",
        "properties": {
          "allowed_ips": {
            "items": {
              "type": "string"
            },
            "title": "Allowed Ips",
            "type": "array"
          },
          "created_at": {
            "title": "Created At",
            "type": "string"
          },
          "id": {
            "title": "Id",
            "type": "string"
          },
          "key": {
            "title": "Key",
            "type": "string"
          },
          "last_used_at": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Last Used At"
          },
          "name": {
            "title": "Name",
            "type": "string"
          },
          "owner": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Owner"
          },
          "scopes": {
            "items": {
              "type": "string"
            },
            "title": "Scopes",
            "type": "array"
          },
          "status": {
            "default": "active",
            "enum": [
              "active",
              "revoked"
            ],
            "title": "Status",
            "type": "string"
          }
        },
        "required": [
          "id",
          "name",
          "key",
          "allowed_ips",
          "created_at"
        ],
        "title": "ApiKeyPublic",
        "type": "object"
      },
      "ApiKeyUpdate": {
        "properties": {
          "allowed_ips": {
            "anyOf": [
              {
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Allowed Ips"
          },
          "name": {
            "anyOf": [
              {
                "maxLength": 100,
                "minLength": 1,
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Name"
          },
          "scopes": {
            "anyOf": [
              {
                "items": {
                  "type": "string"
                },
                "minItems": 1,
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Scopes"
          }
        },
        "title": "ApiKeyUpdate",
        "type": "object"
      },
      "ApiSuccess_AccountDomainsForPHP_": {
        "additionalProperties": true,
        "properties": {
          "data": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/AccountDomainsForPHP"
              },
              {
                "type": "null"
              }
            ]
          },
          "message": {
            "default": "",
            "title": "Message",
            "type": "string"
          },
          "status": {
            "const": "success",
            "default": "success",
            "title": "Status",
            "type": "string"
          },
          "warnings": {
            "anyOf": [
              {
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Warnings"
          }
        },
        "title": "ApiSuccess[AccountDomainsForPHP]",
        "type": "object"
      },
      "ApiSuccess_AccountResponse_": {
        "additionalProperties": true,
        "properties": {
          "data": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/AccountResponse"
              },
              {
                "type": "null"
              }
            ]
          },
          "message": {
            "default": "",
            "title": "Message",
            "type": "string"
          },
          "status": {
            "const": "success",
            "default": "success",
            "title": "Status",
            "type": "string"
          },
          "warnings": {
            "anyOf": [
              {
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Warnings"
          }
        },
        "title": "ApiSuccess[AccountResponse]",
        "type": "object"
      },
      "ApiSuccess_AccountUsage_": {
        "additionalProperties": true,
        "properties": {
          "data": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/AccountUsage"
              },
              {
                "type": "null"
              }
            ]
          },
          "message": {
            "default": "",
            "title": "Message",
            "type": "string"
          },
          "status": {
            "const": "success",
            "default": "success",
            "title": "Status",
            "type": "string"
          },
          "warnings": {
            "anyOf": [
              {
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Warnings"
          }
        },
        "title": "ApiSuccess[AccountUsage]",
        "type": "object"
      },
      "ApiSuccess_AddonDomainResponse_": {
        "additionalProperties": true,
        "properties": {
          "data": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/AddonDomainResponse"
              },
              {
                "type": "null"
              }
            ]
          },
          "message": {
            "default": "",
            "title": "Message",
            "type": "string"
          },
          "status": {
            "const": "success",
            "default": "success",
            "title": "Status",
            "type": "string"
          },
          "warnings": {
            "anyOf": [
              {
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Warnings"
          }
        },
        "title": "ApiSuccess[AddonDomainResponse]",
        "type": "object"
      },
      "ApiSuccess_AdminProfileResponse_": {
        "additionalProperties": true,
        "properties": {
          "data": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/AdminProfileResponse"
              },
              {
                "type": "null"
              }
            ]
          },
          "message": {
            "default": "",
            "title": "Message",
            "type": "string"
          },
          "status": {
            "const": "success",
            "default": "success",
            "title": "Status",
            "type": "string"
          },
          "warnings": {
            "anyOf": [
              {
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Warnings"
          }
        },
        "title": "ApiSuccess[AdminProfileResponse]",
        "type": "object"
      },
      "ApiSuccess_Any_": {
        "additionalProperties": true,
        "properties": {
          "data": {
            "title": "Data"
          },
          "message": {
            "default": "",
            "title": "Message",
            "type": "string"
          },
          "status": {
            "const": "success",
            "default": "success",
            "title": "Status",
            "type": "string"
          },
          "warnings": {
            "anyOf": [
              {
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Warnings"
          }
        },
        "title": "ApiSuccess[Any]",
        "type": "object"
      },
      "ApiSuccess_ApiKeyCreateResponse_": {
        "additionalProperties": true,
        "properties": {
          "data": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/ApiKeyCreateResponse"
              },
              {
                "type": "null"
              }
            ]
          },
          "message": {
            "default": "",
            "title": "Message",
            "type": "string"
          },
          "status": {
            "const": "success",
            "default": "success",
            "title": "Status",
            "type": "string"
          },
          "warnings": {
            "anyOf": [
              {
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Warnings"
          }
        },
        "title": "ApiSuccess[ApiKeyCreateResponse]",
        "type": "object"
      },
      "ApiSuccess_ApiKeyPublic_": {
        "additionalProperties": true,
        "properties": {
          "data": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/ApiKeyPublic"
              },
              {
                "type": "null"
              }
            ]
          },
          "message": {
            "default": "",
            "title": "Message",
            "type": "string"
          },
          "status": {
            "const": "success",
            "default": "success",
            "title": "Status",
            "type": "string"
          },
          "warnings": {
            "anyOf": [
              {
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Warnings"
          }
        },
        "title": "ApiSuccess[ApiKeyPublic]",
        "type": "object"
      },
      "ApiSuccess_AttackModeStatusExtended_": {
        "additionalProperties": true,
        "properties": {
          "data": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/AttackModeStatusExtended"
              },
              {
                "type": "null"
              }
            ]
          },
          "message": {
            "default": "",
            "title": "Message",
            "type": "string"
          },
          "status": {
            "const": "success",
            "default": "success",
            "title": "Status",
            "type": "string"
          },
          "warnings": {
            "anyOf": [
              {
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Warnings"
          }
        },
        "title": "ApiSuccess[AttackModeStatusExtended]",
        "type": "object"
      },
      "ApiSuccess_AutoModeStatus_": {
        "additionalProperties": true,
        "properties": {
          "data": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/AutoModeStatus"
              },
              {
                "type": "null"
              }
            ]
          },
          "message": {
            "default": "",
            "title": "Message",
            "type": "string"
          },
          "status": {
            "const": "success",
            "default": "success",
            "title": "Status",
            "type": "string"
          },
          "warnings": {
            "anyOf": [
              {
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Warnings"
          }
        },
        "title": "ApiSuccess[AutoModeStatus]",
        "type": "object"
      },
      "ApiSuccess_BackupCodesResponse_": {
        "additionalProperties": true,
        "properties": {
          "data": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/BackupCodesResponse"
              },
              {
                "type": "null"
              }
            ]
          },
          "message": {
            "default": "",
            "title": "Message",
            "type": "string"
          },
          "status": {
            "const": "success",
            "default": "success",
            "title": "Status",
            "type": "string"
          },
          "warnings": {
            "anyOf": [
              {
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Warnings"
          }
        },
        "title": "ApiSuccess[BackupCodesResponse]",
        "type": "object"
      },
      "ApiSuccess_BackupResponse_": {
        "additionalProperties": true,
        "properties": {
          "data": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/BackupResponse"
              },
              {
                "type": "null"
              }
            ]
          },
          "message": {
            "default": "",
            "title": "Message",
            "type": "string"
          },
          "status": {
            "const": "success",
            "default": "success",
            "title": "Status",
            "type": "string"
          },
          "warnings": {
            "anyOf": [
              {
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Warnings"
          }
        },
        "title": "ApiSuccess[BackupResponse]",
        "type": "object"
      },
      "ApiSuccess_BackupScheduleResponse_": {
        "additionalProperties": true,
        "properties": {
          "data": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/BackupScheduleResponse"
              },
              {
                "type": "null"
              }
            ]
          },
          "message": {
            "default": "",
            "title": "Message",
            "type": "string"
          },
          "status": {
            "const": "success",
            "default": "success",
            "title": "Status",
            "type": "string"
          },
          "warnings": {
            "anyOf": [
              {
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Warnings"
          }
        },
        "title": "ApiSuccess[BackupScheduleResponse]",
        "type": "object"
      },
      "ApiSuccess_BannedWordCheckResponse_": {
        "additionalProperties": true,
        "properties": {
          "data": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/BannedWordCheckResponse"
              },
              {
                "type": "null"
              }
            ]
          },
          "message": {
            "default": "",
            "title": "Message",
            "type": "string"
          },
          "status": {
            "const": "success",
            "default": "success",
            "title": "Status",
            "type": "string"
          },
          "warnings": {
            "anyOf": [
              {
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Warnings"
          }
        },
        "title": "ApiSuccess[BannedWordCheckResponse]",
        "type": "object"
      },
      "ApiSuccess_BlockedIPResponse_": {
        "additionalProperties": true,
        "properties": {
          "data": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/BlockedIPResponse"
              },
              {
                "type": "null"
              }
            ]
          },
          "message": {
            "default": "",
            "title": "Message",
            "type": "string"
          },
          "status": {
            "const": "success",
            "default": "success",
            "title": "Status",
            "type": "string"
          },
          "warnings": {
            "anyOf": [
              {
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Warnings"
          }
        },
        "title": "ApiSuccess[BlockedIPResponse]",
        "type": "object"
      },
      "ApiSuccess_BulkSSLData_": {
        "additionalProperties": true,
        "properties": {
          "data": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/BulkSSLData"
              },
              {
                "type": "null"
              }
            ]
          },
          "message": {
            "default": "",
            "title": "Message",
            "type": "string"
          },
          "status": {
            "const": "success",
            "default": "success",
            "title": "Status",
            "type": "string"
          },
          "warnings": {
            "anyOf": [
              {
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Warnings"
          }
        },
        "title": "ApiSuccess[BulkSSLData]",
        "type": "object"
      },
      "ApiSuccess_ClearAllResult_": {
        "additionalProperties": true,
        "properties": {
          "data": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/ClearAllResult"
              },
              {
                "type": "null"
              }
            ]
          },
          "message": {
            "default": "",
            "title": "Message",
            "type": "string"
          },
          "status": {
            "const": "success",
            "default": "success",
            "title": "Status",
            "type": "string"
          },
          "warnings": {
            "anyOf": [
              {
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Warnings"
          }
        },
        "title": "ApiSuccess[ClearAllResult]",
        "type": "object"
      },
      "ApiSuccess_CronResponse_": {
        "additionalProperties": true,
        "properties": {
          "data": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/CronResponse"
              },
              {
                "type": "null"
              }
            ]
          },
          "message": {
            "default": "",
            "title": "Message",
            "type": "string"
          },
          "status": {
            "const": "success",
            "default": "success",
            "title": "Status",
            "type": "string"
          },
          "warnings": {
            "anyOf": [
              {
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Warnings"
          }
        },
        "title": "ApiSuccess[CronResponse]",
        "type": "object"
      },
      "ApiSuccess_DNSRecordResponse_": {
        "additionalProperties": true,
        "properties": {
          "data": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/DNSRecordResponse"
              },
              {
                "type": "null"
              }
            ]
          },
          "message": {
            "default": "",
            "title": "Message",
            "type": "string"
          },
          "status": {
            "const": "success",
            "default": "success",
            "title": "Status",
            "type": "string"
          },
          "warnings": {
            "anyOf": [
              {
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Warnings"
          }
        },
        "title": "ApiSuccess[DNSRecordResponse]",
        "type": "object"
      },
      "ApiSuccess_DNSSECStatusResponse_": {
        "additionalProperties": true,
        "properties": {
          "data": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/DNSSECStatusResponse"
              },
              {
                "type": "null"
              }
            ]
          },
          "message": {
            "default": "",
            "title": "Message",
            "type": "string"
          },
          "status": {
            "const": "success",
            "default": "success",
            "title": "Status",
            "type": "string"
          },
          "warnings": {
            "anyOf": [
              {
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Warnings"
          }
        },
        "title": "ApiSuccess[DNSSECStatusResponse]",
        "type": "object"
      },
      "ApiSuccess_DNSZoneResponse_": {
        "additionalProperties": true,
        "properties": {
          "data": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/DNSZoneResponse"
              },
              {
                "type": "null"
              }
            ]
          },
          "message": {
            "default": "",
            "title": "Message",
            "type": "string"
          },
          "status": {
            "const": "success",
            "default": "success",
            "title": "Status",
            "type": "string"
          },
          "warnings": {
            "anyOf": [
              {
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Warnings"
          }
        },
        "title": "ApiSuccess[DNSZoneResponse]",
        "type": "object"
      },
      "ApiSuccess_DatabaseResponse_": {
        "additionalProperties": true,
        "properties": {
          "data": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/DatabaseResponse"
              },
              {
                "type": "null"
              }
            ]
          },
          "message": {
            "default": "",
            "title": "Message",
            "type": "string"
          },
          "status": {
            "const": "success",
            "default": "success",
            "title": "Status",
            "type": "string"
          },
          "warnings": {
            "anyOf": [
              {
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Warnings"
          }
        },
        "title": "ApiSuccess[DatabaseResponse]",
        "type": "object"
      },
      "ApiSuccess_DatabaseUserResponse_": {
        "additionalProperties": true,
        "properties": {
          "data": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/DatabaseUserResponse"
              },
              {
                "type": "null"
              }
            ]
          },
          "message": {
            "default": "",
            "title": "Message",
            "type": "string"
          },
          "status": {
            "const": "success",
            "default": "success",
            "title": "Status",
            "type": "string"
          },
          "warnings": {
            "anyOf": [
              {
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Warnings"
          }
        },
        "title": "ApiSuccess[DatabaseUserResponse]",
        "type": "object"
      },
      "ApiSuccess_DomainPHPConfigResponse_": {
        "additionalProperties": true,
        "properties": {
          "data": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/DomainPHPConfigResponse"
              },
              {
                "type": "null"
              }
            ]
          },
          "message": {
            "default": "",
            "title": "Message",
            "type": "string"
          },
          "status": {
            "const": "success",
            "default": "success",
            "title": "Status",
            "type": "string"
          },
          "warnings": {
            "anyOf": [
              {
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Warnings"
          }
        },
        "title": "ApiSuccess[DomainPHPConfigResponse]",
        "type": "object"
      },
      "ApiSuccess_EmailResponse_": {
        "additionalProperties": true,
        "properties": {
          "data": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/EmailResponse"
              },
              {
                "type": "null"
              }
            ]
          },
          "message": {
            "default": "",
            "title": "Message",
            "type": "string"
          },
          "status": {
            "const": "success",
            "default": "success",
            "title": "Status",
            "type": "string"
          },
          "warnings": {
            "anyOf": [
              {
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Warnings"
          }
        },
        "title": "ApiSuccess[EmailResponse]",
        "type": "object"
      },
      "ApiSuccess_FTPAccountResponse_": {
        "additionalProperties": true,
        "properties": {
          "data": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/FTPAccountResponse"
              },
              {
                "type": "null"
              }
            ]
          },
          "message": {
            "default": "",
            "title": "Message",
            "type": "string"
          },
          "status": {
            "const": "success",
            "default": "success",
            "title": "Status",
            "type": "string"
          },
          "warnings": {
            "anyOf": [
              {
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Warnings"
          }
        },
        "title": "ApiSuccess[FTPAccountResponse]",
        "type": "object"
      },
      "ApiSuccess_FTPOrphanCleanupData_": {
        "additionalProperties": true,
        "properties": {
          "data": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/FTPOrphanCleanupData"
              },
              {
                "type": "null"
              }
            ]
          },
          "message": {
            "default": "",
            "title": "Message",
            "type": "string"
          },
          "status": {
            "const": "success",
            "default": "success",
            "title": "Status",
            "type": "string"
          },
          "warnings": {
            "anyOf": [
              {
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Warnings"
          }
        },
        "title": "ApiSuccess[FTPOrphanCleanupData]",
        "type": "object"
      },
      "ApiSuccess_Fail2BanStatusResponse_": {
        "additionalProperties": true,
        "properties": {
          "data": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/Fail2BanStatusResponse"
              },
              {
                "type": "null"
              }
            ]
          },
          "message": {
            "default": "",
            "title": "Message",
            "type": "string"
          },
          "status": {
            "const": "success",
            "default": "success",
            "title": "Status",
            "type": "string"
          },
          "warnings": {
            "anyOf": [
              {
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Warnings"
          }
        },
        "title": "ApiSuccess[Fail2BanStatusResponse]",
        "type": "object"
      },
      "ApiSuccess_FirewallRuleResponse_": {
        "additionalProperties": true,
        "properties": {
          "data": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/FirewallRuleResponse"
              },
              {
                "type": "null"
              }
            ]
          },
          "message": {
            "default": "",
            "title": "Message",
            "type": "string"
          },
          "status": {
            "const": "success",
            "default": "success",
            "title": "Status",
            "type": "string"
          },
          "warnings": {
            "anyOf": [
              {
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Warnings"
          }
        },
        "title": "ApiSuccess[FirewallRuleResponse]",
        "type": "object"
      },
      "ApiSuccess_FirewallStatusResponse_": {
        "additionalProperties": true,
        "properties": {
          "data": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/FirewallStatusResponse"
              },
              {
                "type": "null"
              }
            ]
          },
          "message": {
            "default": "",
            "title": "Message",
            "type": "string"
          },
          "status": {
            "const": "success",
            "default": "success",
            "title": "Status",
            "type": "string"
          },
          "warnings": {
            "anyOf": [
              {
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Warnings"
          }
        },
        "title": "ApiSuccess[FirewallStatusResponse]",
        "type": "object"
      },
      "ApiSuccess_ForwarderResponse_": {
        "additionalProperties": true,
        "properties": {
          "data": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/ForwarderResponse"
              },
              {
                "type": "null"
              }
            ]
          },
          "message": {
            "default": "",
            "title": "Message",
            "type": "string"
          },
          "status": {
            "const": "success",
            "default": "success",
            "title": "Status",
            "type": "string"
          },
          "warnings": {
            "anyOf": [
              {
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Warnings"
          }
        },
        "title": "ApiSuccess[ForwarderResponse]",
        "type": "object"
      },
      "ApiSuccess_IonCubeStatusResponse_": {
        "additionalProperties": true,
        "properties": {
          "data": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/IonCubeStatusResponse"
              },
              {
                "type": "null"
              }
            ]
          },
          "message": {
            "default": "",
            "title": "Message",
            "type": "string"
          },
          "status": {
            "const": "success",
            "default": "success",
            "title": "Status",
            "type": "string"
          },
          "warnings": {
            "anyOf": [
              {
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Warnings"
          }
        },
        "title": "ApiSuccess[IonCubeStatusResponse]",
        "type": "object"
      },
      "ApiSuccess_JailStatusResponse_": {
        "additionalProperties": true,
        "properties": {
          "data": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/JailStatusResponse"
              },
              {
                "type": "null"
              }
            ]
          },
          "message": {
            "default": "",
            "title": "Message",
            "type": "string"
          },
          "status": {
            "const": "success",
            "default": "success",
            "title": "Status",
            "type": "string"
          },
          "warnings": {
            "anyOf": [
              {
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Warnings"
          }
        },
        "title": "ApiSuccess[JailStatusResponse]",
        "type": "object"
      },
      "ApiSuccess_ManagePyResponse_": {
        "additionalProperties": true,
        "properties": {
          "data": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/ManagePyResponse"
              },
              {
                "type": "null"
              }
            ]
          },
          "message": {
            "default": "",
            "title": "Message",
            "type": "string"
          },
          "status": {
            "const": "success",
            "default": "success",
            "title": "Status",
            "type": "string"
          },
          "warnings": {
            "anyOf": [
              {
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Warnings"
          }
        },
        "title": "ApiSuccess[ManagePyResponse]",
        "type": "object"
      },
      "ApiSuccess_MaxProcessesResponse_": {
        "additionalProperties": true,
        "properties": {
          "data": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/MaxProcessesResponse"
              },
              {
                "type": "null"
              }
            ]
          },
          "message": {
            "default": "",
            "title": "Message",
            "type": "string"
          },
          "status": {
            "const": "success",
            "default": "success",
            "title": "Status",
            "type": "string"
          },
          "warnings": {
            "anyOf": [
              {
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Warnings"
          }
        },
        "title": "ApiSuccess[MaxProcessesResponse]",
        "type": "object"
      },
      "ApiSuccess_MigrationJobResponse_": {
        "additionalProperties": true,
        "properties": {
          "data": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/MigrationJobResponse"
              },
              {
                "type": "null"
              }
            ]
          },
          "message": {
            "default": "",
            "title": "Message",
            "type": "string"
          },
          "status": {
            "const": "success",
            "default": "success",
            "title": "Status",
            "type": "string"
          },
          "warnings": {
            "anyOf": [
              {
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Warnings"
          }
        },
        "title": "ApiSuccess[MigrationJobResponse]",
        "type": "object"
      },
      "ApiSuccess_MigrationScanResult_": {
        "additionalProperties": true,
        "properties": {
          "data": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/MigrationScanResult"
              },
              {
                "type": "null"
              }
            ]
          },
          "message": {
            "default": "",
            "title": "Message",
            "type": "string"
          },
          "status": {
            "const": "success",
            "default": "success",
            "title": "Status",
            "type": "string"
          },
          "warnings": {
            "anyOf": [
              {
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Warnings"
          }
        },
        "title": "ApiSuccess[MigrationScanResult]",
        "type": "object"
      },
      "ApiSuccess_NotificationPreferences_": {
        "additionalProperties": true,
        "properties": {
          "data": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/NotificationPreferences"
              },
              {
                "type": "null"
              }
            ]
          },
          "message": {
            "default": "",
            "title": "Message",
            "type": "string"
          },
          "status": {
            "const": "success",
            "default": "success",
            "title": "Status",
            "type": "string"
          },
          "warnings": {
            "anyOf": [
              {
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Warnings"
          }
        },
        "title": "ApiSuccess[NotificationPreferences]",
        "type": "object"
      },
      "ApiSuccess_OPcacheStatusResponse_": {
        "additionalProperties": true,
        "properties": {
          "data": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/OPcacheStatusResponse"
              },
              {
                "type": "null"
              }
            ]
          },
          "message": {
            "default": "",
            "title": "Message",
            "type": "string"
          },
          "status": {
            "const": "success",
            "default": "success",
            "title": "Status",
            "type": "string"
          },
          "warnings": {
            "anyOf": [
              {
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Warnings"
          }
        },
        "title": "ApiSuccess[OPcacheStatusResponse]",
        "type": "object"
      },
      "ApiSuccess_OsPackageApplyStatus_": {
        "additionalProperties": true,
        "properties": {
          "data": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/OsPackageApplyStatus"
              },
              {
                "type": "null"
              }
            ]
          },
          "message": {
            "default": "",
            "title": "Message",
            "type": "string"
          },
          "status": {
            "const": "success",
            "default": "success",
            "title": "Status",
            "type": "string"
          },
          "warnings": {
            "anyOf": [
              {
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Warnings"
          }
        },
        "title": "ApiSuccess[OsPackageApplyStatus]",
        "type": "object"
      },
      "ApiSuccess_OsPackagesSummary_": {
        "additionalProperties": true,
        "properties": {
          "data": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/OsPackagesSummary"
              },
              {
                "type": "null"
              }
            ]
          },
          "message": {
            "default": "",
            "title": "Message",
            "type": "string"
          },
          "status": {
            "const": "success",
            "default": "success",
            "title": "Status",
            "type": "string"
          },
          "warnings": {
            "anyOf": [
              {
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Warnings"
          }
        },
        "title": "ApiSuccess[OsPackagesSummary]",
        "type": "object"
      },
      "ApiSuccess_PHPDomainVersionData_": {
        "additionalProperties": true,
        "properties": {
          "data": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/PHPDomainVersionData"
              },
              {
                "type": "null"
              }
            ]
          },
          "message": {
            "default": "",
            "title": "Message",
            "type": "string"
          },
          "status": {
            "const": "success",
            "default": "success",
            "title": "Status",
            "type": "string"
          },
          "warnings": {
            "anyOf": [
              {
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Warnings"
          }
        },
        "title": "ApiSuccess[PHPDomainVersionData]",
        "type": "object"
      },
      "ApiSuccess_PHPExtensionsStatusResponse_": {
        "additionalProperties": true,
        "properties": {
          "data": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/PHPExtensionsStatusResponse"
              },
              {
                "type": "null"
              }
            ]
          },
          "message": {
            "default": "",
            "title": "Message",
            "type": "string"
          },
          "status": {
            "const": "success",
            "default": "success",
            "title": "Status",
            "type": "string"
          },
          "warnings": {
            "anyOf": [
              {
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Warnings"
          }
        },
        "title": "ApiSuccess[PHPExtensionsStatusResponse]",
        "type": "object"
      },
      "ApiSuccess_PHPVersionData_": {
        "additionalProperties": true,
        "properties": {
          "data": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/PHPVersionData"
              },
              {
                "type": "null"
              }
            ]
          },
          "message": {
            "default": "",
            "title": "Message",
            "type": "string"
          },
          "status": {
            "const": "success",
            "default": "success",
            "title": "Status",
            "type": "string"
          },
          "warnings": {
            "anyOf": [
              {
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Warnings"
          }
        },
        "title": "ApiSuccess[PHPVersionData]",
        "type": "object"
      },
      "ApiSuccess_PHPVersionListResponse_": {
        "additionalProperties": true,
        "properties": {
          "data": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/PHPVersionListResponse"
              },
              {
                "type": "null"
              }
            ]
          },
          "message": {
            "default": "",
            "title": "Message",
            "type": "string"
          },
          "status": {
            "const": "success",
            "default": "success",
            "title": "Status",
            "type": "string"
          },
          "warnings": {
            "anyOf": [
              {
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Warnings"
          }
        },
        "title": "ApiSuccess[PHPVersionListResponse]",
        "type": "object"
      },
      "ApiSuccess_PackageChangeResponse_": {
        "additionalProperties": true,
        "properties": {
          "data": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/PackageChangeResponse"
              },
              {
                "type": "null"
              }
            ]
          },
          "message": {
            "default": "",
            "title": "Message",
            "type": "string"
          },
          "status": {
            "const": "success",
            "default": "success",
            "title": "Status",
            "type": "string"
          },
          "warnings": {
            "anyOf": [
              {
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Warnings"
          }
        },
        "title": "ApiSuccess[PackageChangeResponse]",
        "type": "object"
      },
      "ApiSuccess_PaginatedAccountsData_": {
        "additionalProperties": true,
        "properties": {
          "data": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/PaginatedAccountsData"
              },
              {
                "type": "null"
              }
            ]
          },
          "message": {
            "default": "",
            "title": "Message",
            "type": "string"
          },
          "status": {
            "const": "success",
            "default": "success",
            "title": "Status",
            "type": "string"
          },
          "warnings": {
            "anyOf": [
              {
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Warnings"
          }
        },
        "title": "ApiSuccess[PaginatedAccountsData]",
        "type": "object"
      },
      "ApiSuccess_PaginatedApiAccessLogsData_": {
        "additionalProperties": true,
        "properties": {
          "data": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/PaginatedApiAccessLogsData"
              },
              {
                "type": "null"
              }
            ]
          },
          "message": {
            "default": "",
            "title": "Message",
            "type": "string"
          },
          "status": {
            "const": "success",
            "default": "success",
            "title": "Status",
            "type": "string"
          },
          "warnings": {
            "anyOf": [
              {
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Warnings"
          }
        },
        "title": "ApiSuccess[PaginatedApiAccessLogsData]",
        "type": "object"
      },
      "ApiSuccess_PaginatedAuditLogsData_": {
        "additionalProperties": true,
        "properties": {
          "data": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/PaginatedAuditLogsData"
              },
              {
                "type": "null"
              }
            ]
          },
          "message": {
            "default": "",
            "title": "Message",
            "type": "string"
          },
          "status": {
            "const": "success",
            "default": "success",
            "title": "Status",
            "type": "string"
          },
          "warnings": {
            "anyOf": [
              {
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Warnings"
          }
        },
        "title": "ApiSuccess[PaginatedAuditLogsData]",
        "type": "object"
      },
      "ApiSuccess_ParkedDomainResponse_": {
        "additionalProperties": true,
        "properties": {
          "data": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/ParkedDomainResponse"
              },
              {
                "type": "null"
              }
            ]
          },
          "message": {
            "default": "",
            "title": "Message",
            "type": "string"
          },
          "status": {
            "const": "success",
            "default": "success",
            "title": "Status",
            "type": "string"
          },
          "warnings": {
            "anyOf": [
              {
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Warnings"
          }
        },
        "title": "ApiSuccess[ParkedDomainResponse]",
        "type": "object"
      },
      "ApiSuccess_PlanResponse_": {
        "additionalProperties": true,
        "properties": {
          "data": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/PlanResponse"
              },
              {
                "type": "null"
              }
            ]
          },
          "message": {
            "default": "",
            "title": "Message",
            "type": "string"
          },
          "status": {
            "const": "success",
            "default": "success",
            "title": "Status",
            "type": "string"
          },
          "warnings": {
            "anyOf": [
              {
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Warnings"
          }
        },
        "title": "ApiSuccess[PlanResponse]",
        "type": "object"
      },
      "ApiSuccess_PythonAppResponse_": {
        "additionalProperties": true,
        "properties": {
          "data": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/PythonAppResponse"
              },
              {
                "type": "null"
              }
            ]
          },
          "message": {
            "default": "",
            "title": "Message",
            "type": "string"
          },
          "status": {
            "const": "success",
            "default": "success",
            "title": "Status",
            "type": "string"
          },
          "warnings": {
            "anyOf": [
              {
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Warnings"
          }
        },
        "title": "ApiSuccess[PythonAppResponse]",
        "type": "object"
      },
      "ApiSuccess_PythonAppStatusResponse_": {
        "additionalProperties": true,
        "properties": {
          "data": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/PythonAppStatusResponse"
              },
              {
                "type": "null"
              }
            ]
          },
          "message": {
            "default": "",
            "title": "Message",
            "type": "string"
          },
          "status": {
            "const": "success",
            "default": "success",
            "title": "Status",
            "type": "string"
          },
          "warnings": {
            "anyOf": [
              {
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Warnings"
          }
        },
        "title": "ApiSuccess[PythonAppStatusResponse]",
        "type": "object"
      },
      "ApiSuccess_QueueSummary_": {
        "additionalProperties": true,
        "properties": {
          "data": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/QueueSummary"
              },
              {
                "type": "null"
              }
            ]
          },
          "message": {
            "default": "",
            "title": "Message",
            "type": "string"
          },
          "status": {
            "const": "success",
            "default": "success",
            "title": "Status",
            "type": "string"
          },
          "warnings": {
            "anyOf": [
              {
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Warnings"
          }
        },
        "title": "ApiSuccess[QueueSummary]",
        "type": "object"
      },
      "ApiSuccess_RateLimitRuleResponse_": {
        "additionalProperties": true,
        "properties": {
          "data": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/RateLimitRuleResponse"
              },
              {
                "type": "null"
              }
            ]
          },
          "message": {
            "default": "",
            "title": "Message",
            "type": "string"
          },
          "status": {
            "const": "success",
            "default": "success",
            "title": "Status",
            "type": "string"
          },
          "warnings": {
            "anyOf": [
              {
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Warnings"
          }
        },
        "title": "ApiSuccess[RateLimitRuleResponse]",
        "type": "object"
      },
      "ApiSuccess_RedirectResponse_": {
        "additionalProperties": true,
        "properties": {
          "data": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/RedirectResponse"
              },
              {
                "type": "null"
              }
            ]
          },
          "message": {
            "default": "",
            "title": "Message",
            "type": "string"
          },
          "status": {
            "const": "success",
            "default": "success",
            "title": "Status",
            "type": "string"
          },
          "warnings": {
            "anyOf": [
              {
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Warnings"
          }
        },
        "title": "ApiSuccess[RedirectResponse]",
        "type": "object"
      },
      "ApiSuccess_RemoteHostResponse_": {
        "additionalProperties": true,
        "properties": {
          "data": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/RemoteHostResponse"
              },
              {
                "type": "null"
              }
            ]
          },
          "message": {
            "default": "",
            "title": "Message",
            "type": "string"
          },
          "status": {
            "const": "success",
            "default": "success",
            "title": "Status",
            "type": "string"
          },
          "warnings": {
            "anyOf": [
              {
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Warnings"
          }
        },
        "title": "ApiSuccess[RemoteHostResponse]",
        "type": "object"
      },
      "ApiSuccess_ResourceBundleData_": {
        "additionalProperties": true,
        "properties": {
          "data": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/ResourceBundleData"
              },
              {
                "type": "null"
              }
            ]
          },
          "message": {
            "default": "",
            "title": "Message",
            "type": "string"
          },
          "status": {
            "const": "success",
            "default": "success",
            "title": "Status",
            "type": "string"
          },
          "warnings": {
            "anyOf": [
              {
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Warnings"
          }
        },
        "title": "ApiSuccess[ResourceBundleData]",
        "type": "object"
      },
      "ApiSuccess_ResourceLimits_": {
        "additionalProperties": true,
        "properties": {
          "data": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/ResourceLimits"
              },
              {
                "type": "null"
              }
            ]
          },
          "message": {
            "default": "",
            "title": "Message",
            "type": "string"
          },
          "status": {
            "const": "success",
            "default": "success",
            "title": "Status",
            "type": "string"
          },
          "warnings": {
            "anyOf": [
              {
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Warnings"
          }
        },
        "title": "ApiSuccess[ResourceLimits]",
        "type": "object"
      },
      "ApiSuccess_SSLResponse_": {
        "additionalProperties": true,
        "properties": {
          "data": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/SSLResponse"
              },
              {
                "type": "null"
              }
            ]
          },
          "message": {
            "default": "",
            "title": "Message",
            "type": "string"
          },
          "status": {
            "const": "success",
            "default": "success",
            "title": "Status",
            "type": "string"
          },
          "warnings": {
            "anyOf": [
              {
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Warnings"
          }
        },
        "title": "ApiSuccess[SSLResponse]",
        "type": "object"
      },
      "ApiSuccess_SentStats_": {
        "additionalProperties": true,
        "properties": {
          "data": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/SentStats"
              },
              {
                "type": "null"
              }
            ]
          },
          "message": {
            "default": "",
            "title": "Message",
            "type": "string"
          },
          "status": {
            "const": "success",
            "default": "success",
            "title": "Status",
            "type": "string"
          },
          "warnings": {
            "anyOf": [
              {
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Warnings"
          }
        },
        "title": "ApiSuccess[SentStats]",
        "type": "object"
      },
      "ApiSuccess_SubdomainResponse_": {
        "additionalProperties": true,
        "properties": {
          "data": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/SubdomainResponse"
              },
              {
                "type": "null"
              }
            ]
          },
          "message": {
            "default": "",
            "title": "Message",
            "type": "string"
          },
          "status": {
            "const": "success",
            "default": "success",
            "title": "Status",
            "type": "string"
          },
          "warnings": {
            "anyOf": [
              {
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Warnings"
          }
        },
        "title": "ApiSuccess[SubdomainResponse]",
        "type": "object"
      },
      "ApiSuccess_SystemIPResponse_": {
        "additionalProperties": true,
        "properties": {
          "data": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/SystemIPResponse"
              },
              {
                "type": "null"
              }
            ]
          },
          "message": {
            "default": "",
            "title": "Message",
            "type": "string"
          },
          "status": {
            "const": "success",
            "default": "success",
            "title": "Status",
            "type": "string"
          },
          "warnings": {
            "anyOf": [
              {
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Warnings"
          }
        },
        "title": "ApiSuccess[SystemIPResponse]",
        "type": "object"
      },
      "ApiSuccess_TwoFASetupResponse_": {
        "additionalProperties": true,
        "properties": {
          "data": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/TwoFASetupResponse"
              },
              {
                "type": "null"
              }
            ]
          },
          "message": {
            "default": "",
            "title": "Message",
            "type": "string"
          },
          "status": {
            "const": "success",
            "default": "success",
            "title": "Status",
            "type": "string"
          },
          "warnings": {
            "anyOf": [
              {
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Warnings"
          }
        },
        "title": "ApiSuccess[TwoFASetupResponse]",
        "type": "object"
      },
      "ApiSuccess_UpdateCheckResult_": {
        "additionalProperties": true,
        "properties": {
          "data": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/UpdateCheckResult"
              },
              {
                "type": "null"
              }
            ]
          },
          "message": {
            "default": "",
            "title": "Message",
            "type": "string"
          },
          "status": {
            "const": "success",
            "default": "success",
            "title": "Status",
            "type": "string"
          },
          "warnings": {
            "anyOf": [
              {
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Warnings"
          }
        },
        "title": "ApiSuccess[UpdateCheckResult]",
        "type": "object"
      },
      "ApiSuccess_UpdateSettings_": {
        "additionalProperties": true,
        "properties": {
          "data": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/UpdateSettings"
              },
              {
                "type": "null"
              }
            ]
          },
          "message": {
            "default": "",
            "title": "Message",
            "type": "string"
          },
          "status": {
            "const": "success",
            "default": "success",
            "title": "Status",
            "type": "string"
          },
          "warnings": {
            "anyOf": [
              {
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Warnings"
          }
        },
        "title": "ApiSuccess[UpdateSettings]",
        "type": "object"
      },
      "ApiSuccess_UpdateStatus_": {
        "additionalProperties": true,
        "properties": {
          "data": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/UpdateStatus"
              },
              {
                "type": "null"
              }
            ]
          },
          "message": {
            "default": "",
            "title": "Message",
            "type": "string"
          },
          "status": {
            "const": "success",
            "default": "success",
            "title": "Status",
            "type": "string"
          },
          "warnings": {
            "anyOf": [
              {
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Warnings"
          }
        },
        "title": "ApiSuccess[UpdateStatus]",
        "type": "object"
      },
      "ApiSuccess_WafAccountStatus_": {
        "additionalProperties": true,
        "properties": {
          "data": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/WafAccountStatus"
              },
              {
                "type": "null"
              }
            ]
          },
          "message": {
            "default": "",
            "title": "Message",
            "type": "string"
          },
          "status": {
            "const": "success",
            "default": "success",
            "title": "Status",
            "type": "string"
          },
          "warnings": {
            "anyOf": [
              {
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Warnings"
          }
        },
        "title": "ApiSuccess[WafAccountStatus]",
        "type": "object"
      },
      "ApiSuccess_WafGlobalStatus_": {
        "additionalProperties": true,
        "properties": {
          "data": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/WafGlobalStatus"
              },
              {
                "type": "null"
              }
            ]
          },
          "message": {
            "default": "",
            "title": "Message",
            "type": "string"
          },
          "status": {
            "const": "success",
            "default": "success",
            "title": "Status",
            "type": "string"
          },
          "warnings": {
            "anyOf": [
              {
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Warnings"
          }
        },
        "title": "ApiSuccess[WafGlobalStatus]",
        "type": "object"
      },
      "ApiSuccess_WafRuleEntry_": {
        "additionalProperties": true,
        "properties": {
          "data": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/WafRuleEntry"
              },
              {
                "type": "null"
              }
            ]
          },
          "message": {
            "default": "",
            "title": "Message",
            "type": "string"
          },
          "status": {
            "const": "success",
            "default": "success",
            "title": "Status",
            "type": "string"
          },
          "warnings": {
            "anyOf": [
              {
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Warnings"
          }
        },
        "title": "ApiSuccess[WafRuleEntry]",
        "type": "object"
      },
      "ApiSuccess_WebmailUrlData_": {
        "additionalProperties": true,
        "properties": {
          "data": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/WebmailUrlData"
              },
              {
                "type": "null"
              }
            ]
          },
          "message": {
            "default": "",
            "title": "Message",
            "type": "string"
          },
          "status": {
            "const": "success",
            "default": "success",
            "title": "Status",
            "type": "string"
          },
          "warnings": {
            "anyOf": [
              {
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Warnings"
          }
        },
        "title": "ApiSuccess[WebmailUrlData]",
        "type": "object"
      },
      "ApiSuccess_WordlistResponse_": {
        "additionalProperties": true,
        "properties": {
          "data": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/WordlistResponse"
              },
              {
                "type": "null"
              }
            ]
          },
          "message": {
            "default": "",
            "title": "Message",
            "type": "string"
          },
          "status": {
            "const": "success",
            "default": "success",
            "title": "Status",
            "type": "string"
          },
          "warnings": {
            "anyOf": [
              {
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Warnings"
          }
        },
        "title": "ApiSuccess[WordlistResponse]",
        "type": "object"
      },
      "ApiSuccess_dict_str__Any__": {
        "additionalProperties": true,
        "properties": {
          "data": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Data"
          },
          "message": {
            "default": "",
            "title": "Message",
            "type": "string"
          },
          "status": {
            "const": "success",
            "default": "success",
            "title": "Status",
            "type": "string"
          },
          "warnings": {
            "anyOf": [
              {
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Warnings"
          }
        },
        "title": "ApiSuccess[dict[str, Any]]",
        "type": "object"
      },
      "ApiSuccess_dict_str__int__": {
        "additionalProperties": true,
        "properties": {
          "data": {
            "anyOf": [
              {
                "additionalProperties": {
                  "type": "integer"
                },
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Data"
          },
          "message": {
            "default": "",
            "title": "Message",
            "type": "string"
          },
          "status": {
            "const": "success",
            "default": "success",
            "title": "Status",
            "type": "string"
          },
          "warnings": {
            "anyOf": [
              {
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Warnings"
          }
        },
        "title": "ApiSuccess[dict[str, int]]",
        "type": "object"
      },
      "ApiSuccess_list_": {
        "additionalProperties": true,
        "properties": {
          "data": {
            "anyOf": [
              {
                "items": {},
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Data"
          },
          "message": {
            "default": "",
            "title": "Message",
            "type": "string"
          },
          "status": {
            "const": "success",
            "default": "success",
            "title": "Status",
            "type": "string"
          },
          "warnings": {
            "anyOf": [
              {
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Warnings"
          }
        },
        "title": "ApiSuccess[list]",
        "type": "object"
      },
      "ApiSuccess_list_AddonDomainResponse__": {
        "additionalProperties": true,
        "properties": {
          "data": {
            "anyOf": [
              {
                "items": {
                  "$ref": "#/components/schemas/AddonDomainResponse"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Data"
          },
          "message": {
            "default": "",
            "title": "Message",
            "type": "string"
          },
          "status": {
            "const": "success",
            "default": "success",
            "title": "Status",
            "type": "string"
          },
          "warnings": {
            "anyOf": [
              {
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Warnings"
          }
        },
        "title": "ApiSuccess[list[AddonDomainResponse]]",
        "type": "object"
      },
      "ApiSuccess_list_ApiKeyPublic__": {
        "additionalProperties": true,
        "properties": {
          "data": {
            "anyOf": [
              {
                "items": {
                  "$ref": "#/components/schemas/ApiKeyPublic"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Data"
          },
          "message": {
            "default": "",
            "title": "Message",
            "type": "string"
          },
          "status": {
            "const": "success",
            "default": "success",
            "title": "Status",
            "type": "string"
          },
          "warnings": {
            "anyOf": [
              {
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Warnings"
          }
        },
        "title": "ApiSuccess[list[ApiKeyPublic]]",
        "type": "object"
      },
      "ApiSuccess_list_BackupResponse__": {
        "additionalProperties": true,
        "properties": {
          "data": {
            "anyOf": [
              {
                "items": {
                  "$ref": "#/components/schemas/BackupResponse"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Data"
          },
          "message": {
            "default": "",
            "title": "Message",
            "type": "string"
          },
          "status": {
            "const": "success",
            "default": "success",
            "title": "Status",
            "type": "string"
          },
          "warnings": {
            "anyOf": [
              {
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Warnings"
          }
        },
        "title": "ApiSuccess[list[BackupResponse]]",
        "type": "object"
      },
      "ApiSuccess_list_BackupScheduleResponse__": {
        "additionalProperties": true,
        "properties": {
          "data": {
            "anyOf": [
              {
                "items": {
                  "$ref": "#/components/schemas/BackupScheduleResponse"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Data"
          },
          "message": {
            "default": "",
            "title": "Message",
            "type": "string"
          },
          "status": {
            "const": "success",
            "default": "success",
            "title": "Status",
            "type": "string"
          },
          "warnings": {
            "anyOf": [
              {
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Warnings"
          }
        },
        "title": "ApiSuccess[list[BackupScheduleResponse]]",
        "type": "object"
      },
      "ApiSuccess_list_BannedIPEntry__": {
        "additionalProperties": true,
        "properties": {
          "data": {
            "anyOf": [
              {
                "items": {
                  "$ref": "#/components/schemas/BannedIPEntry"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Data"
          },
          "message": {
            "default": "",
            "title": "Message",
            "type": "string"
          },
          "status": {
            "const": "success",
            "default": "success",
            "title": "Status",
            "type": "string"
          },
          "warnings": {
            "anyOf": [
              {
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Warnings"
          }
        },
        "title": "ApiSuccess[list[BannedIPEntry]]",
        "type": "object"
      },
      "ApiSuccess_list_BlockedIPResponse__": {
        "additionalProperties": true,
        "properties": {
          "data": {
            "anyOf": [
              {
                "items": {
                  "$ref": "#/components/schemas/BlockedIPResponse"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Data"
          },
          "message": {
            "default": "",
            "title": "Message",
            "type": "string"
          },
          "status": {
            "const": "success",
            "default": "success",
            "title": "Status",
            "type": "string"
          },
          "warnings": {
            "anyOf": [
              {
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Warnings"
          }
        },
        "title": "ApiSuccess[list[BlockedIPResponse]]",
        "type": "object"
      },
      "ApiSuccess_list_CronResponse__": {
        "additionalProperties": true,
        "properties": {
          "data": {
            "anyOf": [
              {
                "items": {
                  "$ref": "#/components/schemas/CronResponse"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Data"
          },
          "message": {
            "default": "",
            "title": "Message",
            "type": "string"
          },
          "status": {
            "const": "success",
            "default": "success",
            "title": "Status",
            "type": "string"
          },
          "warnings": {
            "anyOf": [
              {
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Warnings"
          }
        },
        "title": "ApiSuccess[list[CronResponse]]",
        "type": "object"
      },
      "ApiSuccess_list_DatabaseResponse__": {
        "additionalProperties": true,
        "properties": {
          "data": {
            "anyOf": [
              {
                "items": {
                  "$ref": "#/components/schemas/DatabaseResponse"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Data"
          },
          "message": {
            "default": "",
            "title": "Message",
            "type": "string"
          },
          "status": {
            "const": "success",
            "default": "success",
            "title": "Status",
            "type": "string"
          },
          "warnings": {
            "anyOf": [
              {
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Warnings"
          }
        },
        "title": "ApiSuccess[list[DatabaseResponse]]",
        "type": "object"
      },
      "ApiSuccess_list_DomainResponse__": {
        "additionalProperties": true,
        "properties": {
          "data": {
            "anyOf": [
              {
                "items": {
                  "$ref": "#/components/schemas/DomainResponse"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Data"
          },
          "message": {
            "default": "",
            "title": "Message",
            "type": "string"
          },
          "status": {
            "const": "success",
            "default": "success",
            "title": "Status",
            "type": "string"
          },
          "warnings": {
            "anyOf": [
              {
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Warnings"
          }
        },
        "title": "ApiSuccess[list[DomainResponse]]",
        "type": "object"
      },
      "ApiSuccess_list_DomainSummary__": {
        "additionalProperties": true,
        "properties": {
          "data": {
            "anyOf": [
              {
                "items": {
                  "$ref": "#/components/schemas/DomainSummary"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Data"
          },
          "message": {
            "default": "",
            "title": "Message",
            "type": "string"
          },
          "status": {
            "const": "success",
            "default": "success",
            "title": "Status",
            "type": "string"
          },
          "warnings": {
            "anyOf": [
              {
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Warnings"
          }
        },
        "title": "ApiSuccess[list[DomainSummary]]",
        "type": "object"
      },
      "ApiSuccess_list_EmailResponse__": {
        "additionalProperties": true,
        "properties": {
          "data": {
            "anyOf": [
              {
                "items": {
                  "$ref": "#/components/schemas/EmailResponse"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Data"
          },
          "message": {
            "default": "",
            "title": "Message",
            "type": "string"
          },
          "status": {
            "const": "success",
            "default": "success",
            "title": "Status",
            "type": "string"
          },
          "warnings": {
            "anyOf": [
              {
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Warnings"
          }
        },
        "title": "ApiSuccess[list[EmailResponse]]",
        "type": "object"
      },
      "ApiSuccess_list_FTPAccountResponse__": {
        "additionalProperties": true,
        "properties": {
          "data": {
            "anyOf": [
              {
                "items": {
                  "$ref": "#/components/schemas/FTPAccountResponse"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Data"
          },
          "message": {
            "default": "",
            "title": "Message",
            "type": "string"
          },
          "status": {
            "const": "success",
            "default": "success",
            "title": "Status",
            "type": "string"
          },
          "warnings": {
            "anyOf": [
              {
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Warnings"
          }
        },
        "title": "ApiSuccess[list[FTPAccountResponse]]",
        "type": "object"
      },
      "ApiSuccess_list_FirewallRuleResponse__": {
        "additionalProperties": true,
        "properties": {
          "data": {
            "anyOf": [
              {
                "items": {
                  "$ref": "#/components/schemas/FirewallRuleResponse"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Data"
          },
          "message": {
            "default": "",
            "title": "Message",
            "type": "string"
          },
          "status": {
            "const": "success",
            "default": "success",
            "title": "Status",
            "type": "string"
          },
          "warnings": {
            "anyOf": [
              {
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Warnings"
          }
        },
        "title": "ApiSuccess[list[FirewallRuleResponse]]",
        "type": "object"
      },
      "ApiSuccess_list_ForwarderResponse__": {
        "additionalProperties": true,
        "properties": {
          "data": {
            "anyOf": [
              {
                "items": {
                  "$ref": "#/components/schemas/ForwarderResponse"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Data"
          },
          "message": {
            "default": "",
            "title": "Message",
            "type": "string"
          },
          "status": {
            "const": "success",
            "default": "success",
            "title": "Status",
            "type": "string"
          },
          "warnings": {
            "anyOf": [
              {
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Warnings"
          }
        },
        "title": "ApiSuccess[list[ForwarderResponse]]",
        "type": "object"
      },
      "ApiSuccess_list_JailStatusResponse__": {
        "additionalProperties": true,
        "properties": {
          "data": {
            "anyOf": [
              {
                "items": {
                  "$ref": "#/components/schemas/JailStatusResponse"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Data"
          },
          "message": {
            "default": "",
            "title": "Message",
            "type": "string"
          },
          "status": {
            "const": "success",
            "default": "success",
            "title": "Status",
            "type": "string"
          },
          "warnings": {
            "anyOf": [
              {
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Warnings"
          }
        },
        "title": "ApiSuccess[list[JailStatusResponse]]",
        "type": "object"
      },
      "ApiSuccess_list_MigrationHistoryEntry__": {
        "additionalProperties": true,
        "properties": {
          "data": {
            "anyOf": [
              {
                "items": {
                  "$ref": "#/components/schemas/MigrationHistoryEntry"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Data"
          },
          "message": {
            "default": "",
            "title": "Message",
            "type": "string"
          },
          "status": {
            "const": "success",
            "default": "success",
            "title": "Status",
            "type": "string"
          },
          "warnings": {
            "anyOf": [
              {
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Warnings"
          }
        },
        "title": "ApiSuccess[list[MigrationHistoryEntry]]",
        "type": "object"
      },
      "ApiSuccess_list_OPcacheStatusResponse__": {
        "additionalProperties": true,
        "properties": {
          "data": {
            "anyOf": [
              {
                "items": {
                  "$ref": "#/components/schemas/OPcacheStatusResponse"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Data"
          },
          "message": {
            "default": "",
            "title": "Message",
            "type": "string"
          },
          "status": {
            "const": "success",
            "default": "success",
            "title": "Status",
            "type": "string"
          },
          "warnings": {
            "anyOf": [
              {
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Warnings"
          }
        },
        "title": "ApiSuccess[list[OPcacheStatusResponse]]",
        "type": "object"
      },
      "ApiSuccess_list_OsPackageApplyHistoryEntry__": {
        "additionalProperties": true,
        "properties": {
          "data": {
            "anyOf": [
              {
                "items": {
                  "$ref": "#/components/schemas/OsPackageApplyHistoryEntry"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Data"
          },
          "message": {
            "default": "",
            "title": "Message",
            "type": "string"
          },
          "status": {
            "const": "success",
            "default": "success",
            "title": "Status",
            "type": "string"
          },
          "warnings": {
            "anyOf": [
              {
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Warnings"
          }
        },
        "title": "ApiSuccess[list[OsPackageApplyHistoryEntry]]",
        "type": "object"
      },
      "ApiSuccess_list_OsPackageUpdate__": {
        "additionalProperties": true,
        "properties": {
          "data": {
            "anyOf": [
              {
                "items": {
                  "$ref": "#/components/schemas/OsPackageUpdate"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Data"
          },
          "message": {
            "default": "",
            "title": "Message",
            "type": "string"
          },
          "status": {
            "const": "success",
            "default": "success",
            "title": "Status",
            "type": "string"
          },
          "warnings": {
            "anyOf": [
              {
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Warnings"
          }
        },
        "title": "ApiSuccess[list[OsPackageUpdate]]",
        "type": "object"
      },
      "ApiSuccess_list_PanelNotification__": {
        "additionalProperties": true,
        "properties": {
          "data": {
            "anyOf": [
              {
                "items": {
                  "$ref": "#/components/schemas/PanelNotification"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Data"
          },
          "message": {
            "default": "",
            "title": "Message",
            "type": "string"
          },
          "status": {
            "const": "success",
            "default": "success",
            "title": "Status",
            "type": "string"
          },
          "warnings": {
            "anyOf": [
              {
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Warnings"
          }
        },
        "title": "ApiSuccess[list[PanelNotification]]",
        "type": "object"
      },
      "ApiSuccess_list_ParkedDomainResponse__": {
        "additionalProperties": true,
        "properties": {
          "data": {
            "anyOf": [
              {
                "items": {
                  "$ref": "#/components/schemas/ParkedDomainResponse"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Data"
          },
          "message": {
            "default": "",
            "title": "Message",
            "type": "string"
          },
          "status": {
            "const": "success",
            "default": "success",
            "title": "Status",
            "type": "string"
          },
          "warnings": {
            "anyOf": [
              {
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Warnings"
          }
        },
        "title": "ApiSuccess[list[ParkedDomainResponse]]",
        "type": "object"
      },
      "ApiSuccess_list_PipPackageEntry__": {
        "additionalProperties": true,
        "properties": {
          "data": {
            "anyOf": [
              {
                "items": {
                  "$ref": "#/components/schemas/PipPackageEntry"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Data"
          },
          "message": {
            "default": "",
            "title": "Message",
            "type": "string"
          },
          "status": {
            "const": "success",
            "default": "success",
            "title": "Status",
            "type": "string"
          },
          "warnings": {
            "anyOf": [
              {
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Warnings"
          }
        },
        "title": "ApiSuccess[list[PipPackageEntry]]",
        "type": "object"
      },
      "ApiSuccess_list_PlanResponse__": {
        "additionalProperties": true,
        "properties": {
          "data": {
            "anyOf": [
              {
                "items": {
                  "$ref": "#/components/schemas/PlanResponse"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Data"
          },
          "message": {
            "default": "",
            "title": "Message",
            "type": "string"
          },
          "status": {
            "const": "success",
            "default": "success",
            "title": "Status",
            "type": "string"
          },
          "warnings": {
            "anyOf": [
              {
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Warnings"
          }
        },
        "title": "ApiSuccess[list[PlanResponse]]",
        "type": "object"
      },
      "ApiSuccess_list_PythonAppResponse__": {
        "additionalProperties": true,
        "properties": {
          "data": {
            "anyOf": [
              {
                "items": {
                  "$ref": "#/components/schemas/PythonAppResponse"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Data"
          },
          "message": {
            "default": "",
            "title": "Message",
            "type": "string"
          },
          "status": {
            "const": "success",
            "default": "success",
            "title": "Status",
            "type": "string"
          },
          "warnings": {
            "anyOf": [
              {
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Warnings"
          }
        },
        "title": "ApiSuccess[list[PythonAppResponse]]",
        "type": "object"
      },
      "ApiSuccess_list_QueueEntry__": {
        "additionalProperties": true,
        "properties": {
          "data": {
            "anyOf": [
              {
                "items": {
                  "$ref": "#/components/schemas/QueueEntry"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Data"
          },
          "message": {
            "default": "",
            "title": "Message",
            "type": "string"
          },
          "status": {
            "const": "success",
            "default": "success",
            "title": "Status",
            "type": "string"
          },
          "warnings": {
            "anyOf": [
              {
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Warnings"
          }
        },
        "title": "ApiSuccess[list[QueueEntry]]",
        "type": "object"
      },
      "ApiSuccess_list_RateLimitRuleResponse__": {
        "additionalProperties": true,
        "properties": {
          "data": {
            "anyOf": [
              {
                "items": {
                  "$ref": "#/components/schemas/RateLimitRuleResponse"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Data"
          },
          "message": {
            "default": "",
            "title": "Message",
            "type": "string"
          },
          "status": {
            "const": "success",
            "default": "success",
            "title": "Status",
            "type": "string"
          },
          "warnings": {
            "anyOf": [
              {
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Warnings"
          }
        },
        "title": "ApiSuccess[list[RateLimitRuleResponse]]",
        "type": "object"
      },
      "ApiSuccess_list_RedirectResponse__": {
        "additionalProperties": true,
        "properties": {
          "data": {
            "anyOf": [
              {
                "items": {
                  "$ref": "#/components/schemas/RedirectResponse"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Data"
          },
          "message": {
            "default": "",
            "title": "Message",
            "type": "string"
          },
          "status": {
            "const": "success",
            "default": "success",
            "title": "Status",
            "type": "string"
          },
          "warnings": {
            "anyOf": [
              {
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Warnings"
          }
        },
        "title": "ApiSuccess[list[RedirectResponse]]",
        "type": "object"
      },
      "ApiSuccess_list_RemoteHostResponse__": {
        "additionalProperties": true,
        "properties": {
          "data": {
            "anyOf": [
              {
                "items": {
                  "$ref": "#/components/schemas/RemoteHostResponse"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Data"
          },
          "message": {
            "default": "",
            "title": "Message",
            "type": "string"
          },
          "status": {
            "const": "success",
            "default": "success",
            "title": "Status",
            "type": "string"
          },
          "warnings": {
            "anyOf": [
              {
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Warnings"
          }
        },
        "title": "ApiSuccess[list[RemoteHostResponse]]",
        "type": "object"
      },
      "ApiSuccess_list_SentRecord__": {
        "additionalProperties": true,
        "properties": {
          "data": {
            "anyOf": [
              {
                "items": {
                  "$ref": "#/components/schemas/SentRecord"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Data"
          },
          "message": {
            "default": "",
            "title": "Message",
            "type": "string"
          },
          "status": {
            "const": "success",
            "default": "success",
            "title": "Status",
            "type": "string"
          },
          "warnings": {
            "anyOf": [
              {
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Warnings"
          }
        },
        "title": "ApiSuccess[list[SentRecord]]",
        "type": "object"
      },
      "ApiSuccess_list_SubdomainResponse__": {
        "additionalProperties": true,
        "properties": {
          "data": {
            "anyOf": [
              {
                "items": {
                  "$ref": "#/components/schemas/SubdomainResponse"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Data"
          },
          "message": {
            "default": "",
            "title": "Message",
            "type": "string"
          },
          "status": {
            "const": "success",
            "default": "success",
            "title": "Status",
            "type": "string"
          },
          "warnings": {
            "anyOf": [
              {
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Warnings"
          }
        },
        "title": "ApiSuccess[list[SubdomainResponse]]",
        "type": "object"
      },
      "ApiSuccess_list_UpdateHistoryEntry__": {
        "additionalProperties": true,
        "properties": {
          "data": {
            "anyOf": [
              {
                "items": {
                  "$ref": "#/components/schemas/UpdateHistoryEntry"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Data"
          },
          "message": {
            "default": "",
            "title": "Message",
            "type": "string"
          },
          "status": {
            "const": "success",
            "default": "success",
            "title": "Status",
            "type": "string"
          },
          "warnings": {
            "anyOf": [
              {
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Warnings"
          }
        },
        "title": "ApiSuccess[list[UpdateHistoryEntry]]",
        "type": "object"
      },
      "ApiSuccess_list_WafAuditLogEntry__": {
        "additionalProperties": true,
        "properties": {
          "data": {
            "anyOf": [
              {
                "items": {
                  "$ref": "#/components/schemas/WafAuditLogEntry"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Data"
          },
          "message": {
            "default": "",
            "title": "Message",
            "type": "string"
          },
          "status": {
            "const": "success",
            "default": "success",
            "title": "Status",
            "type": "string"
          },
          "warnings": {
            "anyOf": [
              {
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Warnings"
          }
        },
        "title": "ApiSuccess[list[WafAuditLogEntry]]",
        "type": "object"
      },
      "ApiSuccess_list_WafRuleEntry__": {
        "additionalProperties": true,
        "properties": {
          "data": {
            "anyOf": [
              {
                "items": {
                  "$ref": "#/components/schemas/WafRuleEntry"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Data"
          },
          "message": {
            "default": "",
            "title": "Message",
            "type": "string"
          },
          "status": {
            "const": "success",
            "default": "success",
            "title": "Status",
            "type": "string"
          },
          "warnings": {
            "anyOf": [
              {
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Warnings"
          }
        },
        "title": "ApiSuccess[list[WafRuleEntry]]",
        "type": "object"
      },
      "ApiSuccess_list_WafRuleExclusionEntry__": {
        "additionalProperties": true,
        "properties": {
          "data": {
            "anyOf": [
              {
                "items": {
                  "$ref": "#/components/schemas/WafRuleExclusionEntry"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Data"
          },
          "message": {
            "default": "",
            "title": "Message",
            "type": "string"
          },
          "status": {
            "const": "success",
            "default": "success",
            "title": "Status",
            "type": "string"
          },
          "warnings": {
            "anyOf": [
              {
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Warnings"
          }
        },
        "title": "ApiSuccess[list[WafRuleExclusionEntry]]",
        "type": "object"
      },
      "ApiSuccess_list_WhitelistEntryResponse__": {
        "additionalProperties": true,
        "properties": {
          "data": {
            "anyOf": [
              {
                "items": {
                  "$ref": "#/components/schemas/WhitelistEntryResponse"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Data"
          },
          "message": {
            "default": "",
            "title": "Message",
            "type": "string"
          },
          "status": {
            "const": "success",
            "default": "success",
            "title": "Status",
            "type": "string"
          },
          "warnings": {
            "anyOf": [
              {
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Warnings"
          }
        },
        "title": "ApiSuccess[list[WhitelistEntryResponse]]",
        "type": "object"
      },
      "ApiSuccess_list_WordlistResponse__": {
        "additionalProperties": true,
        "properties": {
          "data": {
            "anyOf": [
              {
                "items": {
                  "$ref": "#/components/schemas/WordlistResponse"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Data"
          },
          "message": {
            "default": "",
            "title": "Message",
            "type": "string"
          },
          "status": {
            "const": "success",
            "default": "success",
            "title": "Status",
            "type": "string"
          },
          "warnings": {
            "anyOf": [
              {
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Warnings"
          }
        },
        "title": "ApiSuccess[list[WordlistResponse]]",
        "type": "object"
      },
      "ApiSuccess_list_dict_str__Any___": {
        "additionalProperties": true,
        "properties": {
          "data": {
            "anyOf": [
              {
                "items": {
                  "additionalProperties": true,
                  "type": "object"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Data"
          },
          "message": {
            "default": "",
            "title": "Message",
            "type": "string"
          },
          "status": {
            "const": "success",
            "default": "success",
            "title": "Status",
            "type": "string"
          },
          "warnings": {
            "anyOf": [
              {
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Warnings"
          }
        },
        "title": "ApiSuccess[list[dict[str, Any]]]",
        "type": "object"
      },
      "ApiSuccess_list_str__": {
        "additionalProperties": true,
        "properties": {
          "data": {
            "anyOf": [
              {
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Data"
          },
          "message": {
            "default": "",
            "title": "Message",
            "type": "string"
          },
          "status": {
            "const": "success",
            "default": "success",
            "title": "Status",
            "type": "string"
          },
          "warnings": {
            "anyOf": [
              {
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Warnings"
          }
        },
        "title": "ApiSuccess[list[str]]",
        "type": "object"
      },
      "AttackModeStatusExtended": {
        "description": "Extended AttackModeStatus that includes auto_mode info.",
        "properties": {
          "active": {
            "title": "Active",
            "type": "boolean"
          },
          "auto_mode": {
            "$ref": "#/components/schemas/AutoModeStatus"
          },
          "enabled_at": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Enabled At"
          },
          "optimizations": {
            "items": {
              "type": "string"
            },
            "title": "Optimizations",
            "type": "array"
          }
        },
        "required": [
          "active"
        ],
        "title": "AttackModeStatusExtended",
        "type": "object"
      },
      "AuditEventType": {
        "enum": [
          "account_created",
          "account_deleted",
          "account_suspended",
          "account_resumed",
          "account_updated",
          "account_package_changed",
          "password_changed",
          "settings_updated",
          "service_restarted",
          "service_started",
          "service_stopped",
          "service_reloaded",
          "service_action_failed",
          "apache_mod_status_enabled",
          "ssl_issued",
          "ssl_renewed",
          "ssl_replaced",
          "ssl_deleted",
          "ssl_bulk_issued",
          "ssl_failed",
          "backup_completed",
          "backup_failed",
          "backup_created",
          "backup_restored",
          "backup_restore_failed",
          "backup_deleted",
          "backup_schedule_created",
          "backup_schedule_updated",
          "backup_schedule_deleted",
          "backup_settings_updated",
          "backup_remote_dest_added",
          "backup_remote_dest_updated",
          "backup_remote_dest_deleted",
          "backup_remote_dest_toggled",
          "login_failed",
          "login_success",
          "logout",
          "log_read",
          "2fa_enabled",
          "2fa_disabled",
          "root_password_changed",
          "impersonation_token_minted",
          "impersonation_session_started",
          "api_key_created",
          "api_key_updated",
          "api_key_revoked",
          "api_key_deleted",
          "system_ip_added",
          "system_ip_updated",
          "system_ip_removed",
          "notification_settings_updated",
          "notifications_cleared",
          "notification_test_email_sent",
          "notification_test_email_failed",
          "notification_email_failed",
          "plan_created",
          "plan_updated",
          "plan_deleted",
          "acl_plan_created",
          "acl_plan_updated",
          "acl_plan_deleted",
          "addon_domain_created",
          "addon_domain_deleted",
          "subdomain_created",
          "subdomain_updated",
          "subdomain_deleted",
          "parked_domain_created",
          "parked_domain_deleted",
          "redirect_created",
          "redirect_updated",
          "redirect_deleted",
          "vhost_config_updated",
          "vhost_config_deleted",
          "database_created",
          "database_deleted",
          "database_admin_dropped",
          "database_user_created",
          "database_user_deleted",
          "database_user_password_changed",
          "database_user_granted",
          "database_user_revoked",
          "database_remote_host_added",
          "database_remote_host_removed",
          "database_pma_sso_minted",
          "email_account_created",
          "email_account_updated",
          "email_account_deleted",
          "email_password_changed",
          "email_forwarder_created",
          "email_forwarder_deleted",
          "email_webmail_sso_minted",
          "ftp_account_created",
          "ftp_account_updated",
          "ftp_password_changed",
          "ftp_account_deleted",
          "migration_scanned",
          "migration_started",
          "migration_completed",
          "migration_failed",
          "migration_cancelled",
          "migration_backup_restored",
          "dns_zone_created",
          "dns_record_add",
          "dns_record_update",
          "dns_record_delete",
          "dnssec_enabled",
          "dnssec_disabled",
          "mail_queue_flushed",
          "mail_queue_message_deleted",
          "mail_queue_all_deleted",
          "mail_queue_message_held",
          "mail_queue_message_released",
          "php_defaults_updated",
          "php_version_toggled",
          "php_version_changed",
          "php_domain_version_changed",
          "php_config_updated",
          "php_domain_config_updated",
          "php_domain_config_reset",
          "php_extension_toggled",
          "php_system_extension_toggled",
          "php_ioncube_toggled",
          "php_max_processes_updated",
          "php_opcache_cleared",
          "php_opcache_config_updated",
          "cron_job_created",
          "cron_job_updated",
          "cron_job_deleted",
          "cron_job_executed",
          "firewall_enabled",
          "firewall_disabled",
          "firewall_rule_added",
          "firewall_rule_updated",
          "firewall_rule_deleted",
          "firewall_ip_blocked",
          "firewall_ip_unblocked",
          "firewall_blocked_cleared",
          "firewall_logs_cleared",
          "firewall_whitelist_added",
          "firewall_whitelist_removed",
          "rate_limit_rule_created",
          "rate_limit_rule_updated",
          "rate_limit_rule_deleted",
          "rate_limit_ip_unbanned",
          "attack_mode_enabled",
          "attack_mode_disabled",
          "attack_mode_auto_toggled",
          "fail2ban_jail_enabled",
          "fail2ban_jail_disabled",
          "fail2ban_jail_updated",
          "fail2ban_ip_banned",
          "fail2ban_ip_unbanned",
          "fail2ban_all_unbanned",
          "fail2ban_whitelist_added",
          "fail2ban_whitelist_removed",
          "waf_config_updated",
          "waf_rule_enabled",
          "waf_rule_disabled",
          "waf_account_enabled",
          "waf_account_disabled",
          "waf_rule_exclusion_added",
          "waf_rule_exclusion_removed",
          "spam_config_updated",
          "spam_whitelist_added",
          "spam_whitelist_removed",
          "spam_blacklist_added",
          "spam_blacklist_removed",
          "file_created",
          "file_edited",
          "file_deleted",
          "file_moved",
          "file_copied",
          "file_uploaded",
          "file_extracted",
          "file_compressed",
          "file_permissions_changed",
          "banned_wordlist_created",
          "banned_wordlist_updated",
          "banned_wordlist_deleted",
          "plugin_activated",
          "plugin_deactivated",
          "plugin_updated",
          "plugin_state_reset",
          "update_install_started",
          "update_installed",
          "update_failed",
          "security_settings_updated",
          "node_app_created",
          "node_app_deleted",
          "node_app_deployed",
          "node_app_started",
          "node_app_stopped",
          "node_app_restarted",
          "node_app_updated",
          "node_app_env_updated",
          "node_app_npm_changed",
          "node_app_script_run",
          "python_app_created",
          "python_app_deleted",
          "python_app_deployed",
          "python_app_started",
          "python_app_stopped",
          "python_app_restarted",
          "python_app_updated",
          "python_app_env_updated",
          "python_app_pip_changed",
          "python_app_manage_run"
        ],
        "title": "AuditEventType",
        "type": "string"
      },
      "AuditLog": {
        "properties": {
          "actor": {
            "default": "admin",
            "title": "Actor",
            "type": "string"
          },
          "description": {
            "title": "Description",
            "type": "string"
          },
          "event_type": {
            "$ref": "#/components/schemas/AuditEventType"
          },
          "extra": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Extra"
          },
          "id": {
            "title": "Id",
            "type": "string"
          },
          "ip_address": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Ip Address"
          },
          "timestamp": {
            "title": "Timestamp",
            "type": "string"
          },
          "username": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Username"
          }
        },
        "required": [
          "id",
          "timestamp",
          "event_type",
          "description"
        ],
        "title": "AuditLog",
        "type": "object"
      },
      "AutoModeStatus": {
        "properties": {
          "auto_enabled_at": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Auto Enabled At"
          },
          "enabled": {
            "default": false,
            "title": "Enabled",
            "type": "boolean"
          },
          "last_score": {
            "default": 0,
            "title": "Last Score",
            "type": "integer"
          },
          "last_triggered_at": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Last Triggered At"
          }
        },
        "title": "AutoModeStatus",
        "type": "object"
      },
      "AvailableLog": {
        "properties": {
          "domain": {
            "description": "Domain name; empty string for account-level logs (php)",
            "title": "Domain",
            "type": "string"
          },
          "filename": {
            "description": "Log filename within the account logs directory",
            "title": "Filename",
            "type": "string"
          },
          "type": {
            "description": "Log type",
            "enum": [
              "access",
              "error",
              "php"
            ],
            "title": "Type",
            "type": "string"
          }
        },
        "required": [
          "domain",
          "type",
          "filename"
        ],
        "title": "AvailableLog",
        "type": "object"
      },
      "AvailableLogsResponse": {
        "properties": {
          "data": {
            "items": {
              "$ref": "#/components/schemas/AvailableLog"
            },
            "title": "Data",
            "type": "array"
          },
          "status": {
            "const": "success",
            "title": "Status",
            "type": "string"
          }
        },
        "required": [
          "status",
          "data"
        ],
        "title": "AvailableLogsResponse",
        "type": "object"
      },
      "BackupCodesResponse": {
        "properties": {
          "codes": {
            "items": {
              "type": "string"
            },
            "title": "Codes",
            "type": "array"
          }
        },
        "required": [
          "codes"
        ],
        "title": "BackupCodesResponse",
        "type": "object"
      },
      "BackupCreate": {
        "properties": {
          "include_databases": {
            "default": true,
            "title": "Include Databases",
            "type": "boolean"
          },
          "include_emails": {
            "default": true,
            "title": "Include Emails",
            "type": "boolean"
          },
          "include_files": {
            "default": true,
            "title": "Include Files",
            "type": "boolean"
          },
          "remote_destination_id": {
            "anyOf": [
              {
                "maxLength": 64,
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Remote Destination Id"
          }
        },
        "title": "BackupCreate",
        "type": "object"
      },
      "BackupResponse": {
        "properties": {
          "created_at": {
            "title": "Created At",
            "type": "string"
          },
          "filename": {
            "title": "Filename",
            "type": "string"
          },
          "id": {
            "title": "Id",
            "type": "string"
          },
          "includes_databases": {
            "default": true,
            "title": "Includes Databases",
            "type": "boolean"
          },
          "includes_emails": {
            "default": true,
            "title": "Includes Emails",
            "type": "boolean"
          },
          "includes_files": {
            "default": true,
            "title": "Includes Files",
            "type": "boolean"
          },
          "remote_destination_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Remote Destination Id"
          },
          "remote_upload_error": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Remote Upload Error"
          },
          "size_mb": {
            "default": 0.0,
            "title": "Size Mb",
            "type": "number"
          },
          "status": {
            "default": "ready",
            "enum": [
              "ready",
              "restoring",
              "restored"
            ],
            "title": "Status",
            "type": "string"
          },
          "username": {
            "title": "Username",
            "type": "string"
          }
        },
        "required": [
          "id",
          "username",
          "filename",
          "created_at"
        ],
        "title": "BackupResponse",
        "type": "object"
      },
      "BackupScheduleCreate": {
        "properties": {
          "day_of_month": {
            "anyOf": [
              {
                "maximum": 31.0,
                "minimum": 1.0,
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Day Of Month"
          },
          "day_of_week": {
            "anyOf": [
              {
                "maximum": 6.0,
                "minimum": 0.0,
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Day Of Week"
          },
          "enabled": {
            "default": true,
            "title": "Enabled",
            "type": "boolean"
          },
          "frequency": {
            "enum": [
              "daily",
              "weekly",
              "monthly"
            ],
            "title": "Frequency",
            "type": "string"
          },
          "include_databases": {
            "default": true,
            "title": "Include Databases",
            "type": "boolean"
          },
          "include_emails": {
            "default": true,
            "title": "Include Emails",
            "type": "boolean"
          },
          "include_files": {
            "default": true,
            "title": "Include Files",
            "type": "boolean"
          },
          "remote_destination_id": {
            "anyOf": [
              {
                "maxLength": 64,
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Remote Destination Id"
          },
          "retention_count": {
            "default": 5,
            "maximum": 100.0,
            "minimum": 0.0,
            "title": "Retention Count",
            "type": "integer"
          },
          "time": {
            "pattern": "^([01]\\d|2[0-3]):[0-5]\\d$",
            "title": "Time",
            "type": "string"
          }
        },
        "required": [
          "frequency",
          "time"
        ],
        "title": "BackupScheduleCreate",
        "type": "object"
      },
      "BackupScheduleResponse": {
        "properties": {
          "created_at": {
            "title": "Created At",
            "type": "string"
          },
          "day_of_month": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Day Of Month"
          },
          "day_of_week": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Day Of Week"
          },
          "enabled": {
            "default": true,
            "title": "Enabled",
            "type": "boolean"
          },
          "frequency": {
            "title": "Frequency",
            "type": "string"
          },
          "id": {
            "title": "Id",
            "type": "string"
          },
          "include_databases": {
            "default": true,
            "title": "Include Databases",
            "type": "boolean"
          },
          "include_emails": {
            "default": true,
            "title": "Include Emails",
            "type": "boolean"
          },
          "include_files": {
            "default": true,
            "title": "Include Files",
            "type": "boolean"
          },
          "last_run": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Last Run"
          },
          "next_run": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Next Run"
          },
          "remote_destination_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Remote Destination Id"
          },
          "retention_count": {
            "default": 5,
            "title": "Retention Count",
            "type": "integer"
          },
          "time": {
            "title": "Time",
            "type": "string"
          },
          "username": {
            "title": "Username",
            "type": "string"
          }
        },
        "required": [
          "id",
          "username",
          "frequency",
          "time",
          "created_at"
        ],
        "title": "BackupScheduleResponse",
        "type": "object"
      },
      "BackupScheduleUpdate": {
        "properties": {
          "day_of_month": {
            "anyOf": [
              {
                "maximum": 31.0,
                "minimum": 1.0,
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Day Of Month"
          },
          "day_of_week": {
            "anyOf": [
              {
                "maximum": 6.0,
                "minimum": 0.0,
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Day Of Week"
          },
          "enabled": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "title": "Enabled"
          },
          "frequency": {
            "anyOf": [
              {
                "enum": [
                  "daily",
                  "weekly",
                  "monthly"
                ],
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Frequency"
          },
          "include_databases": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "title": "Include Databases"
          },
          "include_emails": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "title": "Include Emails"
          },
          "include_files": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "title": "Include Files"
          },
          "remote_destination_id": {
            "anyOf": [
              {
                "maxLength": 64,
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Remote Destination Id"
          },
          "retention_count": {
            "anyOf": [
              {
                "maximum": 100.0,
                "minimum": 0.0,
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Retention Count"
          },
          "time": {
            "anyOf": [
              {
                "pattern": "^([01]\\d|2[0-3]):[0-5]\\d$",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Time"
          }
        },
        "title": "BackupScheduleUpdate",
        "type": "object"
      },
      "BackupSettingsUpdate": {
        "properties": {
          "enabled": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "title": "Enabled"
          },
          "retention_days": {
            "anyOf": [
              {
                "maximum": 365.0,
                "minimum": 1.0,
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Retention Days"
          },
          "schedule_enabled": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "title": "Schedule Enabled"
          },
          "schedule_max_per_account": {
            "anyOf": [
              {
                "maximum": 20.0,
                "minimum": 1.0,
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Schedule Max Per Account"
          }
        },
        "title": "BackupSettingsUpdate",
        "type": "object"
      },
      "BanRequest": {
        "properties": {
          "ip": {
            "title": "Ip",
            "type": "string"
          },
          "jail_name": {
            "title": "Jail Name",
            "type": "string"
          }
        },
        "required": [
          "ip",
          "jail_name"
        ],
        "title": "BanRequest",
        "type": "object"
      },
      "BannedIPEntry": {
        "properties": {
          "ip": {
            "title": "Ip",
            "type": "string"
          },
          "jail": {
            "title": "Jail",
            "type": "string"
          }
        },
        "required": [
          "ip",
          "jail"
        ],
        "title": "BannedIPEntry",
        "type": "object"
      },
      "BannedWordCheckRequest": {
        "properties": {
          "value": {
            "maxLength": 1000,
            "minLength": 1,
            "title": "Value",
            "type": "string"
          }
        },
        "required": [
          "value"
        ],
        "title": "BannedWordCheckRequest",
        "type": "object"
      },
      "BannedWordCheckResponse": {
        "properties": {
          "banned": {
            "title": "Banned",
            "type": "boolean"
          },
          "matched_word": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Matched Word"
          },
          "matched_wordlist": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Matched Wordlist"
          }
        },
        "required": [
          "banned"
        ],
        "title": "BannedWordCheckResponse",
        "type": "object"
      },
      "BlockedIPCreate": {
        "properties": {
          "comment": {
            "anyOf": [
              {
                "maxLength": 255,
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Comment"
          },
          "ip": {
            "description": "IP address or CIDR block to block",
            "title": "Ip",
            "type": "string"
          }
        },
        "required": [
          "ip"
        ],
        "title": "BlockedIPCreate",
        "type": "object"
      },
      "BlockedIPResponse": {
        "properties": {
          "comment": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Comment"
          },
          "id": {
            "title": "Id",
            "type": "string"
          },
          "ip": {
            "title": "Ip",
            "type": "string"
          }
        },
        "required": [
          "id",
          "ip"
        ],
        "title": "BlockedIPResponse",
        "type": "object"
      },
      "Body_analyze_node_project_api_v1_accounts__username__node_apps_analyze_post": {
        "properties": {
          "archive": {
            "anyOf": [
              {
                "contentMediaType": "application/octet-stream",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Archive"
          },
          "server_path": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Server Path"
          }
        },
        "title": "Body_analyze_node_project_api_v1_accounts__username__node_apps_analyze_post",
        "type": "object"
      },
      "Body_analyze_python_project_api_v1_accounts__username__python_apps_analyze_post": {
        "properties": {
          "archive": {
            "anyOf": [
              {
                "contentMediaType": "application/octet-stream",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Archive"
          },
          "server_path": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Server Path"
          }
        },
        "title": "Body_analyze_python_project_api_v1_accounts__username__python_apps_analyze_post",
        "type": "object"
      },
      "Body_client_analyze_api_v1_client_node_apps_analyze_post": {
        "properties": {
          "archive": {
            "anyOf": [
              {
                "contentMediaType": "application/octet-stream",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Archive"
          },
          "server_path": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Server Path"
          }
        },
        "title": "Body_client_analyze_api_v1_client_node_apps_analyze_post",
        "type": "object"
      },
      "Body_client_analyze_python_project_api_v1_client_python_apps_analyze_post": {
        "properties": {
          "archive": {
            "anyOf": [
              {
                "contentMediaType": "application/octet-stream",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Archive"
          },
          "server_path": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Server Path"
          }
        },
        "title": "Body_client_analyze_python_project_api_v1_client_python_apps_analyze_post",
        "type": "object"
      },
      "Body_client_upload_file_api_v1_client_files_upload_post": {
        "properties": {
          "file": {
            "contentMediaType": "application/octet-stream",
            "title": "File",
            "type": "string"
          }
        },
        "required": [
          "file"
        ],
        "title": "Body_client_upload_file_api_v1_client_files_upload_post",
        "type": "object"
      },
      "Body_upload_admin_avatar_api_v1_admin_profile_avatar_post": {
        "properties": {
          "avatar": {
            "contentMediaType": "application/octet-stream",
            "title": "Avatar",
            "type": "string"
          }
        },
        "required": [
          "avatar"
        ],
        "title": "Body_upload_admin_avatar_api_v1_admin_profile_avatar_post",
        "type": "object"
      },
      "Body_upload_file_api_v1_accounts__username__files_upload_post": {
        "properties": {
          "file": {
            "contentMediaType": "application/octet-stream",
            "title": "File",
            "type": "string"
          }
        },
        "required": [
          "file"
        ],
        "title": "Body_upload_file_api_v1_accounts__username__files_upload_post",
        "type": "object"
      },
      "Body_upload_login_video_api_v1_system_whitelabel_login_video__page__post": {
        "properties": {
          "poster": {
            "anyOf": [
              {
                "contentMediaType": "application/octet-stream",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Poster"
          },
          "video": {
            "anyOf": [
              {
                "contentMediaType": "application/octet-stream",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Video"
          }
        },
        "title": "Body_upload_login_video_api_v1_system_whitelabel_login_video__page__post",
        "type": "object"
      },
      "Body_upload_migration_assets_api_v1_accounts__username__python_apps_migration_upload_post": {
        "properties": {
          "media_archive": {
            "anyOf": [
              {
                "contentMediaType": "application/octet-stream",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Media Archive"
          },
          "sql_dump": {
            "anyOf": [
              {
                "contentMediaType": "application/octet-stream",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Sql Dump"
          }
        },
        "title": "Body_upload_migration_assets_api_v1_accounts__username__python_apps_migration_upload_post",
        "type": "object"
      },
      "Body_upload_whitelabel_logo_api_v1_system_whitelabel_logo_post": {
        "properties": {
          "favicon": {
            "anyOf": [
              {
                "contentMediaType": "application/octet-stream",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Favicon"
          },
          "favicon_dark": {
            "anyOf": [
              {
                "contentMediaType": "application/octet-stream",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Favicon Dark"
          },
          "logo_dark": {
            "anyOf": [
              {
                "contentMediaType": "application/octet-stream",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Logo Dark"
          },
          "logo_light": {
            "anyOf": [
              {
                "contentMediaType": "application/octet-stream",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Logo Light"
          }
        },
        "title": "Body_upload_whitelabel_logo_api_v1_system_whitelabel_logo_post",
        "type": "object"
      },
      "BulkSSLData": {
        "description": "Response data for `POST /ssl/bulk-letsencrypt`.",
        "properties": {
          "results": {
            "items": {
              "$ref": "#/components/schemas/BulkSSLResultEntry"
            },
            "title": "Results",
            "type": "array"
          },
          "summary": {
            "$ref": "#/components/schemas/BulkSSLSummary"
          }
        },
        "required": [
          "summary"
        ],
        "title": "BulkSSLData",
        "type": "object"
      },
      "BulkSSLDomainEntry": {
        "properties": {
          "domain": {
            "title": "Domain",
            "type": "string"
          },
          "username": {
            "title": "Username",
            "type": "string"
          }
        },
        "required": [
          "username",
          "domain"
        ],
        "title": "BulkSSLDomainEntry",
        "type": "object"
      },
      "BulkSSLRequest": {
        "properties": {
          "domains": {
            "items": {
              "$ref": "#/components/schemas/BulkSSLDomainEntry"
            },
            "maxItems": 20,
            "minItems": 1,
            "title": "Domains",
            "type": "array"
          }
        },
        "required": [
          "domains"
        ],
        "title": "BulkSSLRequest",
        "type": "object"
      },
      "BulkSSLResultEntry": {
        "properties": {
          "domain": {
            "title": "Domain",
            "type": "string"
          },
          "error": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Error"
          },
          "ssl_type": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Ssl Type"
          },
          "success": {
            "title": "Success",
            "type": "boolean"
          },
          "username": {
            "title": "Username",
            "type": "string"
          },
          "valid_to": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Valid To"
          }
        },
        "required": [
          "domain",
          "username",
          "success"
        ],
        "title": "BulkSSLResultEntry",
        "type": "object"
      },
      "BulkSSLSummary": {
        "description": "Summary block returned alongside per-entry results in bulk SSL ops.",
        "properties": {
          "aborted": {
            "default": false,
            "title": "Aborted",
            "type": "boolean"
          },
          "failed": {
            "minimum": 0.0,
            "title": "Failed",
            "type": "integer"
          },
          "processed": {
            "minimum": 0.0,
            "title": "Processed",
            "type": "integer"
          },
          "success": {
            "minimum": 0.0,
            "title": "Success",
            "type": "integer"
          },
          "total": {
            "minimum": 0.0,
            "title": "Total",
            "type": "integer"
          }
        },
        "required": [
          "total",
          "processed",
          "success",
          "failed"
        ],
        "title": "BulkSSLSummary",
        "type": "object"
      },
      "BunnyAccountKeyRequest": {
        "properties": {
          "account_api_key": {
            "title": "Account Api Key",
            "type": "string"
          }
        },
        "required": [
          "account_api_key"
        ],
        "title": "BunnyAccountKeyRequest",
        "type": "object"
      },
      "ClearAllResult": {
        "properties": {
          "fail2ban_jails": {
            "default": 0,
            "title": "Fail2Ban Jails",
            "type": "integer"
          },
          "http_bans": {
            "default": 0,
            "title": "Http Bans",
            "type": "integer"
          },
          "rate_limit_bans": {
            "default": 0,
            "title": "Rate Limit Bans",
            "type": "integer"
          },
          "removed": {
            "default": 0,
            "title": "Removed",
            "type": "integer"
          },
          "ufw_rules": {
            "default": 0,
            "title": "Ufw Rules",
            "type": "integer"
          }
        },
        "title": "ClearAllResult",
        "type": "object"
      },
      "ClientLoginRequest": {
        "properties": {
          "identifier": {
            "title": "Identifier",
            "type": "string"
          },
          "password": {
            "title": "Password",
            "type": "string"
          },
          "recaptcha_token": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Recaptcha Token"
          },
          "remember_me": {
            "default": false,
            "title": "Remember Me",
            "type": "boolean"
          }
        },
        "required": [
          "identifier",
          "password"
        ],
        "title": "ClientLoginRequest",
        "type": "object"
      },
      "ClientNotificationPreferencesUpdate": {
        "additionalProperties": false,
        "description": "The toggles one account may set for itself.\n\nThe SMTP block, the event matrix and the templates are server-wide and are\ndeliberately absent: an account's save must not be able to reach them.",
        "properties": {
          "email_categories": {
            "anyOf": [
              {
                "items": {
                  "type": "string"
                },
                "maxItems": 64,
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Email Categories"
          },
          "email_enabled": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "title": "Email Enabled"
          },
          "panel_categories": {
            "anyOf": [
              {
                "items": {
                  "type": "string"
                },
                "maxItems": 64,
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Panel Categories"
          },
          "panel_enabled": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "title": "Panel Enabled"
          }
        },
        "title": "ClientNotificationPreferencesUpdate",
        "type": "object"
      },
      "ClientPasswordChange": {
        "properties": {
          "current_password": {
            "minLength": 1,
            "title": "Current Password",
            "type": "string"
          },
          "new_password": {
            "description": "At least 8 characters and at most 72 bytes when UTF-8 encoded.",
            "maxLength": 128,
            "minLength": 8,
            "title": "New Password",
            "type": "string"
          }
        },
        "required": [
          "current_password",
          "new_password"
        ],
        "title": "ClientPasswordChange",
        "type": "object"
      },
      "ClientProfileUpdate": {
        "additionalProperties": false,
        "properties": {
          "email": {
            "anyOf": [
              {
                "maxLength": 254,
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Email"
          },
          "sidebar_collapsed": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "description": "The sidebar choice to keep: true collapsed, false expanded. A session opened by impersonation leaves the account's choice as it is.",
            "title": "Sidebar Collapsed"
          }
        },
        "title": "ClientProfileUpdate",
        "type": "object"
      },
      "CronCreate": {
        "properties": {
          "command": {
            "maxLength": 1024,
            "title": "Command",
            "type": "string"
          },
          "day": {
            "default": "*",
            "maxLength": 120,
            "title": "Day",
            "type": "string"
          },
          "enabled": {
            "default": true,
            "title": "Enabled",
            "type": "boolean"
          },
          "hour": {
            "default": "*",
            "maxLength": 120,
            "title": "Hour",
            "type": "string"
          },
          "minute": {
            "default": "*",
            "maxLength": 120,
            "title": "Minute",
            "type": "string"
          },
          "month": {
            "default": "*",
            "maxLength": 120,
            "title": "Month",
            "type": "string"
          },
          "weekday": {
            "default": "*",
            "maxLength": 120,
            "title": "Weekday",
            "type": "string"
          }
        },
        "required": [
          "command"
        ],
        "title": "CronCreate",
        "type": "object"
      },
      "CronResponse": {
        "properties": {
          "command": {
            "title": "Command",
            "type": "string"
          },
          "day": {
            "title": "Day",
            "type": "string"
          },
          "enabled": {
            "title": "Enabled",
            "type": "boolean"
          },
          "hour": {
            "title": "Hour",
            "type": "string"
          },
          "id": {
            "title": "Id",
            "type": "string"
          },
          "last_run": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Last Run"
          },
          "minute": {
            "title": "Minute",
            "type": "string"
          },
          "month": {
            "title": "Month",
            "type": "string"
          },
          "schedule": {
            "title": "Schedule",
            "type": "string"
          },
          "weekday": {
            "title": "Weekday",
            "type": "string"
          }
        },
        "required": [
          "id",
          "minute",
          "hour",
          "day",
          "month",
          "weekday",
          "command",
          "enabled",
          "schedule"
        ],
        "title": "CronResponse",
        "type": "object"
      },
      "CronUpdate": {
        "properties": {
          "command": {
            "anyOf": [
              {
                "maxLength": 1024,
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Command"
          },
          "day": {
            "anyOf": [
              {
                "maxLength": 120,
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Day"
          },
          "enabled": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "title": "Enabled"
          },
          "hour": {
            "anyOf": [
              {
                "maxLength": 120,
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Hour"
          },
          "minute": {
            "anyOf": [
              {
                "maxLength": 120,
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Minute"
          },
          "month": {
            "anyOf": [
              {
                "maxLength": 120,
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Month"
          },
          "weekday": {
            "anyOf": [
              {
                "maxLength": 120,
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Weekday"
          }
        },
        "title": "CronUpdate",
        "type": "object"
      },
      "DNSRecordCreate": {
        "properties": {
          "content": {
            "title": "Content",
            "type": "string"
          },
          "name": {
            "title": "Name",
            "type": "string"
          },
          "port": {
            "anyOf": [
              {
                "maximum": 65535.0,
                "minimum": 0.0,
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Port"
          },
          "priority": {
            "anyOf": [
              {
                "maximum": 65535.0,
                "minimum": 0.0,
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Priority"
          },
          "record_type": {
            "$ref": "#/components/schemas/DNSRecordType"
          },
          "ttl": {
            "default": 3600,
            "maximum": 86400.0,
            "minimum": 60.0,
            "title": "Ttl",
            "type": "integer"
          },
          "weight": {
            "anyOf": [
              {
                "maximum": 65535.0,
                "minimum": 0.0,
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Weight"
          }
        },
        "required": [
          "name",
          "record_type",
          "content"
        ],
        "title": "DNSRecordCreate",
        "type": "object"
      },
      "DNSRecordResponse": {
        "properties": {
          "content": {
            "title": "Content",
            "type": "string"
          },
          "id": {
            "title": "Id",
            "type": "integer"
          },
          "name": {
            "title": "Name",
            "type": "string"
          },
          "port": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Port"
          },
          "priority": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Priority"
          },
          "record_type": {
            "$ref": "#/components/schemas/DNSRecordType"
          },
          "ttl": {
            "title": "Ttl",
            "type": "integer"
          },
          "weight": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Weight"
          }
        },
        "required": [
          "id",
          "name",
          "record_type",
          "content",
          "ttl"
        ],
        "title": "DNSRecordResponse",
        "type": "object"
      },
      "DNSRecordType": {
        "enum": [
          "A",
          "AAAA",
          "CNAME",
          "MX",
          "TXT",
          "NS",
          "SRV",
          "CAA",
          "SOA",
          "PTR"
        ],
        "title": "DNSRecordType",
        "type": "string"
      },
      "DNSRecordUpdate": {
        "properties": {
          "content": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Content"
          },
          "port": {
            "anyOf": [
              {
                "maximum": 65535.0,
                "minimum": 0.0,
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Port"
          },
          "priority": {
            "anyOf": [
              {
                "maximum": 65535.0,
                "minimum": 0.0,
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Priority"
          },
          "ttl": {
            "anyOf": [
              {
                "maximum": 86400.0,
                "minimum": 60.0,
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Ttl"
          },
          "weight": {
            "anyOf": [
              {
                "maximum": 65535.0,
                "minimum": 0.0,
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Weight"
          }
        },
        "title": "DNSRecordUpdate",
        "type": "object"
      },
      "DNSSECKeyResponse": {
        "properties": {
          "active": {
            "default": false,
            "title": "Active",
            "type": "boolean"
          },
          "algorithm": {
            "title": "Algorithm",
            "type": "string"
          },
          "bits": {
            "default": 0,
            "title": "Bits",
            "type": "integer"
          },
          "dnskey": {
            "default": "",
            "title": "Dnskey",
            "type": "string"
          },
          "ds": {
            "items": {
              "type": "string"
            },
            "title": "Ds",
            "type": "array"
          },
          "id": {
            "title": "Id",
            "type": "integer"
          },
          "keytype": {
            "title": "Keytype",
            "type": "string"
          }
        },
        "required": [
          "id",
          "keytype",
          "algorithm"
        ],
        "title": "DNSSECKeyResponse",
        "type": "object"
      },
      "DNSSECStatusResponse": {
        "properties": {
          "domain": {
            "title": "Domain",
            "type": "string"
          },
          "ds_records": {
            "items": {
              "type": "string"
            },
            "title": "Ds Records",
            "type": "array"
          },
          "enabled": {
            "default": false,
            "title": "Enabled",
            "type": "boolean"
          },
          "keys": {
            "items": {
              "$ref": "#/components/schemas/DNSSECKeyResponse"
            },
            "title": "Keys",
            "type": "array"
          }
        },
        "required": [
          "domain"
        ],
        "title": "DNSSECStatusResponse",
        "type": "object"
      },
      "DNSZoneResponse": {
        "properties": {
          "domain": {
            "title": "Domain",
            "type": "string"
          },
          "records": {
            "items": {
              "$ref": "#/components/schemas/DNSRecordResponse"
            },
            "title": "Records",
            "type": "array"
          },
          "serial": {
            "default": 0,
            "title": "Serial",
            "type": "integer"
          }
        },
        "required": [
          "domain"
        ],
        "title": "DNSZoneResponse",
        "type": "object"
      },
      "DatabaseCreate": {
        "properties": {
          "charset": {
            "default": "utf8mb4",
            "title": "Charset",
            "type": "string"
          },
          "collation": {
            "default": "utf8mb4_unicode_ci",
            "title": "Collation",
            "type": "string"
          },
          "name": {
            "maxLength": 47,
            "minLength": 1,
            "pattern": "^[a-z][a-z0-9_]{0,46}$",
            "title": "Name",
            "type": "string"
          }
        },
        "required": [
          "name"
        ],
        "title": "DatabaseCreate",
        "type": "object"
      },
      "DatabaseResponse": {
        "properties": {
          "charset": {
            "default": "utf8mb4",
            "title": "Charset",
            "type": "string"
          },
          "collation": {
            "default": "utf8mb4_unicode_ci",
            "title": "Collation",
            "type": "string"
          },
          "name": {
            "title": "Name",
            "type": "string"
          },
          "remote_hosts": {
            "items": {
              "$ref": "#/components/schemas/RemoteHostResponse"
            },
            "title": "Remote Hosts",
            "type": "array"
          },
          "size_mb": {
            "default": 0.0,
            "title": "Size Mb",
            "type": "number"
          },
          "users": {
            "items": {
              "$ref": "#/components/schemas/DatabaseUserResponse"
            },
            "title": "Users",
            "type": "array"
          }
        },
        "required": [
          "name"
        ],
        "title": "DatabaseResponse",
        "type": "object"
      },
      "DatabaseUserCreate": {
        "properties": {
          "host": {
            "default": "localhost",
            "title": "Host",
            "type": "string"
          },
          "password": {
            "title": "Password",
            "type": "string"
          },
          "privileges": {
            "items": {
              "type": "string"
            },
            "minItems": 1,
            "title": "Privileges",
            "type": "array"
          },
          "username": {
            "maxLength": 15,
            "minLength": 1,
            "pattern": "^[a-z][a-z0-9_]{0,14}$",
            "title": "Username",
            "type": "string"
          }
        },
        "required": [
          "username",
          "password"
        ],
        "title": "DatabaseUserCreate",
        "type": "object"
      },
      "DatabaseUserGrant": {
        "properties": {
          "privileges": {
            "items": {
              "type": "string"
            },
            "minItems": 1,
            "title": "Privileges",
            "type": "array"
          }
        },
        "title": "DatabaseUserGrant",
        "type": "object"
      },
      "DatabaseUserResponse": {
        "properties": {
          "host": {
            "title": "Host",
            "type": "string"
          },
          "privileges": {
            "items": {
              "type": "string"
            },
            "title": "Privileges",
            "type": "array"
          },
          "username": {
            "title": "Username",
            "type": "string"
          }
        },
        "required": [
          "username",
          "host"
        ],
        "title": "DatabaseUserResponse",
        "type": "object"
      },
      "DatabaseUserUpdate": {
        "properties": {
          "password": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Password"
          }
        },
        "title": "DatabaseUserUpdate",
        "type": "object"
      },
      "DiscoveredPlan": {
        "properties": {
          "bandwidth_mb": {
            "default": 0,
            "title": "Bandwidth Mb",
            "type": "integer"
          },
          "disk_mb": {
            "default": 0,
            "title": "Disk Mb",
            "type": "integer"
          },
          "max_databases": {
            "default": 0,
            "title": "Max Databases",
            "type": "integer"
          },
          "max_domains": {
            "default": 0,
            "title": "Max Domains",
            "type": "integer"
          },
          "max_email_accounts": {
            "default": 0,
            "title": "Max Email Accounts",
            "type": "integer"
          },
          "name": {
            "title": "Name",
            "type": "string"
          }
        },
        "required": [
          "name"
        ],
        "title": "DiscoveredPlan",
        "type": "object"
      },
      "DomainPHPConfigResponse": {
        "properties": {
          "display_errors": {
            "default": false,
            "title": "Display Errors",
            "type": "boolean"
          },
          "document_root": {
            "title": "Document Root",
            "type": "string"
          },
          "domain": {
            "title": "Domain",
            "type": "string"
          },
          "domain_type": {
            "title": "Domain Type",
            "type": "string"
          },
          "is_custom": {
            "default": false,
            "title": "Is Custom",
            "type": "boolean"
          },
          "max_execution_time": {
            "default": 300,
            "title": "Max Execution Time",
            "type": "integer"
          },
          "max_input_time": {
            "default": 300,
            "title": "Max Input Time",
            "type": "integer"
          },
          "max_input_vars": {
            "default": 1000,
            "title": "Max Input Vars",
            "type": "integer"
          },
          "memory_limit": {
            "default": "256M",
            "title": "Memory Limit",
            "type": "string"
          },
          "post_max_size": {
            "default": "64M",
            "title": "Post Max Size",
            "type": "string"
          },
          "upload_max_filesize": {
            "default": "64M",
            "title": "Upload Max Filesize",
            "type": "string"
          }
        },
        "required": [
          "domain",
          "domain_type",
          "document_root"
        ],
        "title": "DomainPHPConfigResponse",
        "type": "object"
      },
      "DomainPHPConfigUpdate": {
        "properties": {
          "display_errors": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "title": "Display Errors"
          },
          "max_execution_time": {
            "anyOf": [
              {
                "maximum": 86400.0,
                "minimum": 0.0,
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Max Execution Time"
          },
          "max_input_time": {
            "anyOf": [
              {
                "maximum": 86400.0,
                "minimum": -1.0,
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Max Input Time"
          },
          "max_input_vars": {
            "anyOf": [
              {
                "maximum": 1000000.0,
                "minimum": 1.0,
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Max Input Vars"
          },
          "memory_limit": {
            "anyOf": [
              {
                "pattern": "^(-1|\\d+[KMG]?)$",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Memory Limit"
          },
          "post_max_size": {
            "anyOf": [
              {
                "pattern": "^\\d+[KMG]?$",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Post Max Size"
          },
          "upload_max_filesize": {
            "anyOf": [
              {
                "pattern": "^\\d+[KMG]?$",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Upload Max Filesize"
          }
        },
        "title": "DomainPHPConfigUpdate",
        "type": "object"
      },
      "DomainResponse": {
        "properties": {
          "created_at": {
            "default": "",
            "title": "Created At",
            "type": "string"
          },
          "document_root": {
            "title": "Document Root",
            "type": "string"
          },
          "domain": {
            "title": "Domain",
            "type": "string"
          },
          "ssl_active": {
            "default": false,
            "title": "Ssl Active",
            "type": "boolean"
          },
          "type": {
            "default": "primary",
            "enum": [
              "primary",
              "addon"
            ],
            "title": "Type",
            "type": "string"
          },
          "username": {
            "default": "",
            "title": "Username",
            "type": "string"
          }
        },
        "required": [
          "domain",
          "document_root"
        ],
        "title": "DomainResponse",
        "type": "object"
      },
      "DomainSummary": {
        "description": "Per-domain/user delivery aggregate (cPanel-style mail report).",
        "properties": {
          "data_sent": {
            "default": 0,
            "title": "Data Sent",
            "type": "integer"
          },
          "deferrals": {
            "default": 0,
            "title": "Deferrals",
            "type": "integer"
          },
          "domain": {
            "default": "",
            "title": "Domain",
            "type": "string"
          },
          "failed_and_deferred": {
            "default": 0,
            "title": "Failed And Deferred",
            "type": "integer"
          },
          "failures": {
            "default": 0,
            "title": "Failures",
            "type": "integer"
          },
          "sent": {
            "default": 0,
            "title": "Sent",
            "type": "integer"
          },
          "total_messages": {
            "default": 0,
            "title": "Total Messages",
            "type": "integer"
          },
          "user": {
            "default": "",
            "title": "User",
            "type": "string"
          }
        },
        "title": "DomainSummary",
        "type": "object"
      },
      "DomainVersionChange": {
        "properties": {
          "version": {
            "pattern": "^\\d+\\.\\d+$",
            "title": "Version",
            "type": "string"
          }
        },
        "required": [
          "version"
        ],
        "title": "DomainVersionChange",
        "type": "object"
      },
      "EmailCreate": {
        "properties": {
          "address": {
            "maxLength": 254,
            "minLength": 3,
            "title": "Address",
            "type": "string"
          },
          "password": {
            "maxLength": 256,
            "minLength": 8,
            "title": "Password",
            "type": "string"
          },
          "quota_mb": {
            "default": 250,
            "maximum": 51200.0,
            "minimum": 0.0,
            "title": "Quota Mb",
            "type": "integer"
          }
        },
        "required": [
          "address",
          "password"
        ],
        "title": "EmailCreate",
        "type": "object"
      },
      "EmailPasswordChange": {
        "properties": {
          "password": {
            "maxLength": 256,
            "minLength": 8,
            "title": "Password",
            "type": "string"
          }
        },
        "required": [
          "password"
        ],
        "title": "EmailPasswordChange",
        "type": "object"
      },
      "EmailResponse": {
        "properties": {
          "active": {
            "default": true,
            "title": "Active",
            "type": "boolean"
          },
          "address": {
            "title": "Address",
            "type": "string"
          },
          "quota_mb": {
            "title": "Quota Mb",
            "type": "integer"
          },
          "used_mb": {
            "default": 0.0,
            "title": "Used Mb",
            "type": "number"
          }
        },
        "required": [
          "address",
          "quota_mb"
        ],
        "title": "EmailResponse",
        "type": "object"
      },
      "EmailUpdate": {
        "properties": {
          "active": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "title": "Active"
          },
          "quota_mb": {
            "anyOf": [
              {
                "maximum": 51200.0,
                "minimum": 0.0,
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Quota Mb"
          }
        },
        "title": "EmailUpdate",
        "type": "object"
      },
      "FTPAccountCreate": {
        "properties": {
          "directory": {
            "default": "/",
            "maxLength": 255,
            "minLength": 1,
            "pattern": "^/[a-zA-Z0-9/_.\\-]*$",
            "title": "Directory",
            "type": "string"
          },
          "password": {
            "maxLength": 128,
            "minLength": 8,
            "title": "Password",
            "type": "string"
          },
          "quota_mb": {
            "default": 0,
            "maximum": 999999.0,
            "minimum": 0.0,
            "title": "Quota Mb",
            "type": "integer"
          },
          "username": {
            "maxLength": 32,
            "minLength": 1,
            "title": "Username",
            "type": "string"
          }
        },
        "required": [
          "username",
          "password"
        ],
        "title": "FTPAccountCreate",
        "type": "object"
      },
      "FTPAccountResponse": {
        "properties": {
          "account": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Account"
          },
          "created_at": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Created At"
          },
          "directory": {
            "title": "Directory",
            "type": "string"
          },
          "is_orphan": {
            "default": false,
            "title": "Is Orphan",
            "type": "boolean"
          },
          "quota_mb": {
            "title": "Quota Mb",
            "type": "integer"
          },
          "status": {
            "default": "active",
            "title": "Status",
            "type": "string"
          },
          "username": {
            "title": "Username",
            "type": "string"
          }
        },
        "required": [
          "username",
          "directory",
          "quota_mb"
        ],
        "title": "FTPAccountResponse",
        "type": "object"
      },
      "FTPAccountUpdate": {
        "properties": {
          "directory": {
            "anyOf": [
              {
                "maxLength": 255,
                "minLength": 1,
                "pattern": "^/[a-zA-Z0-9/_.\\-]*$",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Directory"
          },
          "password": {
            "anyOf": [
              {
                "maxLength": 128,
                "minLength": 8,
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Password"
          },
          "quota_mb": {
            "anyOf": [
              {
                "maximum": 999999.0,
                "minimum": 0.0,
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Quota Mb"
          }
        },
        "title": "FTPAccountUpdate",
        "type": "object"
      },
      "FTPOrphanCleanupData": {
        "description": "Response data shape for bulk orphan cleanup.",
        "properties": {
          "count": {
            "default": 0,
            "title": "Count",
            "type": "integer"
          },
          "deleted": {
            "default": [],
            "items": {
              "type": "string"
            },
            "title": "Deleted",
            "type": "array"
          }
        },
        "title": "FTPOrphanCleanupData",
        "type": "object"
      },
      "Fail2BanStatusResponse": {
        "properties": {
          "active": {
            "title": "Active",
            "type": "boolean"
          },
          "jail_count": {
            "default": 0,
            "title": "Jail Count",
            "type": "integer"
          },
          "jails": {
            "items": {
              "$ref": "#/components/schemas/JailStatusResponse"
            },
            "title": "Jails",
            "type": "array"
          },
          "total_banned": {
            "default": 0,
            "title": "Total Banned",
            "type": "integer"
          },
          "version": {
            "default": "",
            "title": "Version",
            "type": "string"
          }
        },
        "required": [
          "active"
        ],
        "title": "Fail2BanStatusResponse",
        "type": "object"
      },
      "FileCompressRequest": {
        "properties": {
          "destination": {
            "title": "Destination",
            "type": "string"
          },
          "format": {
            "default": "tar.gz",
            "title": "Format",
            "type": "string"
          },
          "paths": {
            "items": {
              "type": "string"
            },
            "title": "Paths",
            "type": "array"
          }
        },
        "required": [
          "paths",
          "destination"
        ],
        "title": "FileCompressRequest",
        "type": "object"
      },
      "FileCopyRequest": {
        "properties": {
          "destination": {
            "title": "Destination",
            "type": "string"
          },
          "overwrite": {
            "default": false,
            "title": "Overwrite",
            "type": "boolean"
          },
          "source": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Source"
          },
          "sources": {
            "anyOf": [
              {
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Sources"
          }
        },
        "required": [
          "destination"
        ],
        "title": "FileCopyRequest",
        "type": "object"
      },
      "FileCreateRequest": {
        "properties": {
          "content": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Content"
          },
          "path": {
            "title": "Path",
            "type": "string"
          },
          "type": {
            "default": "file",
            "enum": [
              "file",
              "directory"
            ],
            "title": "Type",
            "type": "string"
          }
        },
        "required": [
          "path"
        ],
        "title": "FileCreateRequest",
        "type": "object"
      },
      "FileDeleteRequest": {
        "properties": {
          "paths": {
            "items": {
              "type": "string"
            },
            "title": "Paths",
            "type": "array"
          }
        },
        "required": [
          "paths"
        ],
        "title": "FileDeleteRequest",
        "type": "object"
      },
      "FileEditRequest": {
        "properties": {
          "content": {
            "title": "Content",
            "type": "string"
          },
          "create_backup": {
            "default": false,
            "title": "Create Backup",
            "type": "boolean"
          },
          "encoding": {
            "default": "utf-8",
            "enum": [
              "utf-8",
              "latin-1"
            ],
            "title": "Encoding",
            "type": "string"
          },
          "path": {
            "title": "Path",
            "type": "string"
          }
        },
        "required": [
          "path",
          "content"
        ],
        "title": "FileEditRequest",
        "type": "object"
      },
      "FileExtractRequest": {
        "properties": {
          "destination": {
            "default": ".",
            "title": "Destination",
            "type": "string"
          },
          "path": {
            "title": "Path",
            "type": "string"
          }
        },
        "required": [
          "path"
        ],
        "title": "FileExtractRequest",
        "type": "object"
      },
      "FileMoveRequest": {
        "properties": {
          "destination": {
            "title": "Destination",
            "type": "string"
          },
          "overwrite": {
            "default": false,
            "title": "Overwrite",
            "type": "boolean"
          },
          "source": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Source"
          },
          "sources": {
            "anyOf": [
              {
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Sources"
          }
        },
        "required": [
          "destination"
        ],
        "title": "FileMoveRequest",
        "type": "object"
      },
      "FilePermissionsRequest": {
        "properties": {
          "mode": {
            "title": "Mode",
            "type": "string"
          },
          "path": {
            "title": "Path",
            "type": "string"
          },
          "recursive": {
            "default": false,
            "title": "Recursive",
            "type": "boolean"
          }
        },
        "required": [
          "path",
          "mode"
        ],
        "title": "FilePermissionsRequest",
        "type": "object"
      },
      "FirewallRuleCreate": {
        "properties": {
          "action": {
            "default": "allow",
            "enum": [
              "allow",
              "deny"
            ],
            "title": "Action",
            "type": "string"
          },
          "port": {
            "description": "Port number or range (e.g. '80', '8000:8080')",
            "title": "Port",
            "type": "string"
          },
          "protocol": {
            "default": "tcp",
            "enum": [
              "tcp",
              "udp"
            ],
            "title": "Protocol",
            "type": "string"
          },
          "source_ip": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "Restrict rule to a specific source IP or CIDR (optional)",
            "title": "Source Ip"
          }
        },
        "required": [
          "port"
        ],
        "title": "FirewallRuleCreate",
        "type": "object"
      },
      "FirewallRuleResponse": {
        "properties": {
          "action": {
            "title": "Action",
            "type": "string"
          },
          "comment": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Comment"
          },
          "id": {
            "title": "Id",
            "type": "string"
          },
          "port": {
            "title": "Port",
            "type": "string"
          },
          "protocol": {
            "title": "Protocol",
            "type": "string"
          },
          "source_ip": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Source Ip"
          }
        },
        "required": [
          "id",
          "port",
          "protocol",
          "action"
        ],
        "title": "FirewallRuleResponse",
        "type": "object"
      },
      "FirewallStatusResponse": {
        "properties": {
          "active": {
            "title": "Active",
            "type": "boolean"
          },
          "backend": {
            "title": "Backend",
            "type": "string"
          },
          "blocked_count": {
            "default": 0,
            "title": "Blocked Count",
            "type": "integer"
          },
          "output": {
            "default": "",
            "title": "Output",
            "type": "string"
          },
          "rules_count": {
            "default": 0,
            "title": "Rules Count",
            "type": "integer"
          }
        },
        "required": [
          "backend",
          "active"
        ],
        "title": "FirewallStatusResponse",
        "type": "object"
      },
      "ForgotPasswordRequest": {
        "properties": {
          "email": {
            "title": "Email",
            "type": "string"
          }
        },
        "required": [
          "email"
        ],
        "title": "ForgotPasswordRequest",
        "type": "object"
      },
      "ForwarderCreate": {
        "properties": {
          "destination": {
            "maxLength": 254,
            "minLength": 3,
            "title": "Destination",
            "type": "string"
          }
        },
        "required": [
          "destination"
        ],
        "title": "ForwarderCreate",
        "type": "object"
      },
      "ForwarderResponse": {
        "properties": {
          "active": {
            "default": true,
            "title": "Active",
            "type": "boolean"
          },
          "destination": {
            "title": "Destination",
            "type": "string"
          },
          "id": {
            "title": "Id",
            "type": "integer"
          },
          "source": {
            "title": "Source",
            "type": "string"
          }
        },
        "required": [
          "id",
          "source",
          "destination"
        ],
        "title": "ForwarderResponse",
        "type": "object"
      },
      "GeneralSettingsUpdate": {
        "additionalProperties": false,
        "properties": {
          "auto_ssl": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "title": "Auto Ssl"
          },
          "available_timezones": {
            "anyOf": [
              {
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Available Timezones"
          },
          "client_features": {
            "anyOf": [
              {
                "additionalProperties": {
                  "type": "boolean"
                },
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Client Features"
          },
          "db_buffer_pool_size": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Db Buffer Pool Size"
          },
          "db_connect_timeout": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Db Connect Timeout"
          },
          "db_interactive_timeout": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Db Interactive Timeout"
          },
          "db_max_allowed_packet": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Db Max Allowed Packet"
          },
          "db_max_connections": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Db Max Connections"
          },
          "db_read_buffer_size": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Db Read Buffer Size"
          },
          "db_sort_buffer_size": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Db Sort Buffer Size"
          },
          "db_wait_timeout": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Db Wait Timeout"
          },
          "default_email_limit": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Default Email Limit"
          },
          "default_language": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Default Language"
          },
          "default_php_version": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Default Php Version"
          },
          "default_webserver": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Default Webserver"
          },
          "force_ssl": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "title": "Force Ssl"
          },
          "ftp_bandwidth_limit": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Ftp Bandwidth Limit"
          },
          "ftp_max_clients": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Ftp Max Clients"
          },
          "ftp_max_per_ip": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Ftp Max Per Ip"
          },
          "ftp_passive_mode": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "title": "Ftp Passive Mode"
          },
          "ftp_passive_ports": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Ftp Passive Ports"
          },
          "hostname": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Hostname"
          },
          "installed_php_versions": {
            "anyOf": [
              {
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Installed Php Versions"
          },
          "keepalive_timeout": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Keepalive Timeout"
          },
          "max_clients": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Max Clients"
          },
          "max_email_size": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Max Email Size"
          },
          "ns1": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Ns1"
          },
          "ns2": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Ns2"
          },
          "ns3": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Ns3"
          },
          "ns4": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Ns4"
          },
          "server_ip": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Server Ip"
          },
          "server_time": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Server Time"
          },
          "server_timezone": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Server Timezone"
          },
          "ssl_email": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Ssl Email"
          }
        },
        "title": "GeneralSettingsUpdate",
        "type": "object"
      },
      "GoogleDriveAuthRequest": {
        "properties": {
          "client_id": {
            "title": "Client Id",
            "type": "string"
          },
          "client_secret": {
            "title": "Client Secret",
            "type": "string"
          },
          "redirect_uri": {
            "title": "Redirect Uri",
            "type": "string"
          }
        },
        "required": [
          "client_id",
          "client_secret",
          "redirect_uri"
        ],
        "title": "GoogleDriveAuthRequest",
        "type": "object"
      },
      "GoogleDriveExchangeRequest": {
        "properties": {
          "client_id": {
            "title": "Client Id",
            "type": "string"
          },
          "client_secret": {
            "title": "Client Secret",
            "type": "string"
          },
          "code": {
            "title": "Code",
            "type": "string"
          },
          "redirect_uri": {
            "title": "Redirect Uri",
            "type": "string"
          },
          "state": {
            "default": "",
            "title": "State",
            "type": "string"
          }
        },
        "required": [
          "code",
          "client_id",
          "client_secret",
          "redirect_uri"
        ],
        "title": "GoogleDriveExchangeRequest",
        "type": "object"
      },
      "HTTPValidationError": {
        "properties": {
          "detail": {
            "items": {
              "$ref": "#/components/schemas/ValidationError"
            },
            "title": "Detail",
            "type": "array"
          }
        },
        "title": "HTTPValidationError",
        "type": "object"
      },
      "HostnameUpdate": {
        "properties": {
          "hostname": {
            "title": "Hostname",
            "type": "string"
          }
        },
        "required": [
          "hostname"
        ],
        "title": "HostnameUpdate",
        "type": "object"
      },
      "IonCubeStatusResponse": {
        "properties": {
          "enabled": {
            "title": "Enabled",
            "type": "boolean"
          },
          "loader_installed": {
            "title": "Loader Installed",
            "type": "boolean"
          },
          "php_version": {
            "title": "Php Version",
            "type": "string"
          }
        },
        "required": [
          "enabled",
          "php_version",
          "loader_installed"
        ],
        "title": "IonCubeStatusResponse",
        "type": "object"
      },
      "IonCubeToggle": {
        "properties": {
          "enabled": {
            "title": "Enabled",
            "type": "boolean"
          }
        },
        "required": [
          "enabled"
        ],
        "title": "IonCubeToggle",
        "type": "object"
      },
      "JailStatusResponse": {
        "properties": {
          "banned_ips": {
            "items": {
              "type": "string"
            },
            "title": "Banned Ips",
            "type": "array"
          },
          "bantime": {
            "title": "Bantime",
            "type": "integer"
          },
          "currently_banned": {
            "title": "Currently Banned",
            "type": "integer"
          },
          "enabled": {
            "title": "Enabled",
            "type": "boolean"
          },
          "filter": {
            "title": "Filter",
            "type": "string"
          },
          "findtime": {
            "title": "Findtime",
            "type": "integer"
          },
          "logpath": {
            "title": "Logpath",
            "type": "string"
          },
          "maxretry": {
            "title": "Maxretry",
            "type": "integer"
          },
          "name": {
            "title": "Name",
            "type": "string"
          },
          "total_banned": {
            "title": "Total Banned",
            "type": "integer"
          }
        },
        "required": [
          "name",
          "enabled",
          "filter",
          "logpath",
          "bantime",
          "findtime",
          "maxretry",
          "currently_banned",
          "total_banned"
        ],
        "title": "JailStatusResponse",
        "type": "object"
      },
      "JailUpdateRequest": {
        "properties": {
          "bantime": {
            "anyOf": [
              {
                "maximum": 604800.0,
                "minimum": 60.0,
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Bantime"
          },
          "findtime": {
            "anyOf": [
              {
                "maximum": 86400.0,
                "minimum": 60.0,
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Findtime"
          },
          "maxretry": {
            "anyOf": [
              {
                "maximum": 100.0,
                "minimum": 1.0,
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Maxretry"
          }
        },
        "title": "JailUpdateRequest",
        "type": "object"
      },
      "LicenseActivateRequest": {
        "description": "POST /api/v1/license/activate request body.",
        "properties": {
          "license_key": {
            "title": "License Key",
            "type": "string"
          }
        },
        "required": [
          "license_key"
        ],
        "title": "LicenseActivateRequest",
        "type": "object"
      },
      "LogContent": {
        "properties": {
          "content": {
            "description": "Log lines (most recent last)",
            "items": {
              "type": "string"
            },
            "title": "Content",
            "type": "array"
          },
          "domain": {
            "description": "Domain name; empty string for php log",
            "title": "Domain",
            "type": "string"
          },
          "lines": {
            "description": "Number of lines returned",
            "minimum": 0.0,
            "title": "Lines",
            "type": "integer"
          },
          "log_type": {
            "description": "Log type",
            "enum": [
              "access",
              "error",
              "php"
            ],
            "title": "Log Type",
            "type": "string"
          }
        },
        "required": [
          "log_type",
          "domain",
          "lines",
          "content"
        ],
        "title": "LogContent",
        "type": "object"
      },
      "LogContentResponse": {
        "properties": {
          "data": {
            "$ref": "#/components/schemas/LogContent"
          },
          "status": {
            "const": "success",
            "title": "Status",
            "type": "string"
          }
        },
        "required": [
          "status",
          "data"
        ],
        "title": "LogContentResponse",
        "type": "object"
      },
      "ManagePyRequest": {
        "description": "Request body for running a Django manage.py command.",
        "properties": {
          "args": {
            "items": {
              "type": "string"
            },
            "title": "Args",
            "type": "array"
          },
          "command": {
            "maxLength": 50,
            "minLength": 1,
            "pattern": "^[a-z_]+$",
            "title": "Command",
            "type": "string"
          }
        },
        "required": [
          "command"
        ],
        "title": "ManagePyRequest",
        "type": "object"
      },
      "ManagePyResponse": {
        "description": "Result of running a manage.py command.",
        "properties": {
          "command": {
            "title": "Command",
            "type": "string"
          },
          "exit_code": {
            "title": "Exit Code",
            "type": "integer"
          },
          "stderr": {
            "title": "Stderr",
            "type": "string"
          },
          "stdout": {
            "title": "Stdout",
            "type": "string"
          }
        },
        "required": [
          "command",
          "exit_code",
          "stdout",
          "stderr"
        ],
        "title": "ManagePyResponse",
        "type": "object"
      },
      "MaxProcessesResponse": {
        "properties": {
          "auto_calculated": {
            "title": "Auto Calculated",
            "type": "integer"
          },
          "effective": {
            "title": "Effective",
            "type": "integer"
          },
          "is_overridden": {
            "default": false,
            "title": "Is Overridden",
            "type": "boolean"
          },
          "max_value": {
            "default": 500,
            "title": "Max Value",
            "type": "integer"
          },
          "min_value": {
            "default": 1,
            "title": "Min Value",
            "type": "integer"
          },
          "override": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Override"
          },
          "php_version": {
            "title": "Php Version",
            "type": "string"
          }
        },
        "required": [
          "effective",
          "auto_calculated",
          "php_version"
        ],
        "title": "MaxProcessesResponse",
        "type": "object"
      },
      "MaxProcessesUpdate": {
        "properties": {
          "max_children": {
            "anyOf": [
              {
                "maximum": 500.0,
                "minimum": 1.0,
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Max Children"
          }
        },
        "title": "MaxProcessesUpdate",
        "type": "object"
      },
      "MessageResponse": {
        "additionalProperties": true,
        "description": "Action-only response (no `data` field). Used by delete / suspend /\nunsuspend / password-change and similar endpoints whose only contract\nis a confirmation string.",
        "properties": {
          "message": {
            "title": "Message",
            "type": "string"
          },
          "status": {
            "const": "success",
            "default": "success",
            "title": "Status",
            "type": "string"
          }
        },
        "required": [
          "message"
        ],
        "title": "MessageResponse",
        "type": "object"
      },
      "MigrationHistoryEntry": {
        "properties": {
          "completed_accounts": {
            "default": 0,
            "title": "Completed Accounts",
            "type": "integer"
          },
          "completed_at": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Completed At"
          },
          "failed_accounts": {
            "default": 0,
            "title": "Failed Accounts",
            "type": "integer"
          },
          "job_id": {
            "title": "Job Id",
            "type": "string"
          },
          "panel_type": {
            "title": "Panel Type",
            "type": "string"
          },
          "server_hostname": {
            "title": "Server Hostname",
            "type": "string"
          },
          "started_at": {
            "title": "Started At",
            "type": "string"
          },
          "status": {
            "title": "Status",
            "type": "string"
          },
          "total_accounts": {
            "default": 0,
            "title": "Total Accounts",
            "type": "integer"
          }
        },
        "required": [
          "job_id",
          "panel_type",
          "server_hostname",
          "status",
          "started_at"
        ],
        "title": "MigrationHistoryEntry",
        "type": "object"
      },
      "MigrationJobResponse": {
        "properties": {
          "accounts": {
            "items": {
              "$ref": "#/components/schemas/AccountMigrationProgress"
            },
            "title": "Accounts",
            "type": "array"
          },
          "completed_accounts": {
            "default": 0,
            "title": "Completed Accounts",
            "type": "integer"
          },
          "completed_at": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Completed At"
          },
          "error": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Error"
          },
          "failed_accounts": {
            "default": 0,
            "title": "Failed Accounts",
            "type": "integer"
          },
          "job_id": {
            "title": "Job Id",
            "type": "string"
          },
          "panel_type": {
            "default": "",
            "title": "Panel Type",
            "type": "string"
          },
          "progress": {
            "default": 0,
            "title": "Progress",
            "type": "integer"
          },
          "scan_result": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/MigrationScanResult"
              },
              {
                "type": "null"
              }
            ]
          },
          "server_hostname": {
            "title": "Server Hostname",
            "type": "string"
          },
          "started_at": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Started At"
          },
          "status": {
            "default": "pending",
            "title": "Status",
            "type": "string"
          },
          "total_accounts": {
            "default": 0,
            "title": "Total Accounts",
            "type": "integer"
          }
        },
        "required": [
          "job_id",
          "server_hostname"
        ],
        "title": "MigrationJobResponse",
        "type": "object"
      },
      "MigrationScanRequest": {
        "properties": {
          "api_key": {
            "default": "",
            "maxLength": 256,
            "title": "Api Key",
            "type": "string"
          },
          "api_secret": {
            "default": "",
            "maxLength": 256,
            "title": "Api Secret",
            "type": "string"
          },
          "host": {
            "maxLength": 255,
            "minLength": 1,
            "pattern": "^[a-zA-Z0-9][a-zA-Z0-9.:_-]*$",
            "title": "Host",
            "type": "string"
          },
          "panel_type": {
            "anyOf": [
              {
                "enum": [
                  "cpanel",
                  "directadmin",
                  "plesk",
                  "whost",
                  "cyberpanel",
                  "hestiacp",
                  "cloudpanel",
                  "cwp"
                ],
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Panel Type"
          },
          "password": {
            "default": "",
            "maxLength": 512,
            "title": "Password",
            "type": "string"
          },
          "port": {
            "default": 22,
            "maximum": 65535.0,
            "minimum": 1.0,
            "title": "Port",
            "type": "integer"
          },
          "ssh_key": {
            "default": "",
            "maxLength": 16384,
            "title": "Ssh Key",
            "type": "string"
          },
          "username": {
            "default": "root",
            "maxLength": 64,
            "pattern": "^[A-Za-z0-9._-]{1,64}$",
            "title": "Username",
            "type": "string"
          },
          "verify_ssl": {
            "default": true,
            "title": "Verify Ssl",
            "type": "boolean"
          }
        },
        "required": [
          "host"
        ],
        "title": "MigrationScanRequest",
        "type": "object"
      },
      "MigrationScanResult": {
        "properties": {
          "accounts": {
            "items": {
              "$ref": "#/components/schemas/ScannedAccount"
            },
            "title": "Accounts",
            "type": "array"
          },
          "job_id": {
            "default": "",
            "title": "Job Id",
            "type": "string"
          },
          "panel_type": {
            "title": "Panel Type",
            "type": "string"
          },
          "panel_version": {
            "default": "",
            "title": "Panel Version",
            "type": "string"
          },
          "plans": {
            "items": {
              "$ref": "#/components/schemas/DiscoveredPlan"
            },
            "title": "Plans",
            "type": "array"
          },
          "scan_duration_seconds": {
            "default": 0,
            "title": "Scan Duration Seconds",
            "type": "number"
          },
          "server_hostname": {
            "default": "",
            "title": "Server Hostname",
            "type": "string"
          },
          "source_webserver": {
            "default": "",
            "title": "Source Webserver",
            "type": "string"
          },
          "total_accounts": {
            "default": 0,
            "title": "Total Accounts",
            "type": "integer"
          },
          "total_disk_mb": {
            "default": 0,
            "title": "Total Disk Mb",
            "type": "integer"
          }
        },
        "required": [
          "panel_type"
        ],
        "title": "MigrationScanResult",
        "type": "object"
      },
      "MigrationStartRequest": {
        "properties": {
          "accounts": {
            "anyOf": [
              {
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Accounts"
          },
          "job_id": {
            "maxLength": 200,
            "minLength": 1,
            "pattern": "^[a-zA-Z0-9._-]+$",
            "title": "Job Id",
            "type": "string"
          },
          "overwrite_existing": {
            "default": false,
            "title": "Overwrite Existing",
            "type": "boolean"
          },
          "php_overrides": {
            "additionalProperties": {
              "type": "string"
            },
            "title": "Php Overrides",
            "type": "object"
          },
          "plan_mapping": {
            "additionalProperties": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ]
            },
            "title": "Plan Mapping",
            "type": "object"
          },
          "skip_databases": {
            "default": false,
            "title": "Skip Databases",
            "type": "boolean"
          },
          "skip_dns": {
            "default": false,
            "title": "Skip Dns",
            "type": "boolean"
          },
          "skip_email": {
            "default": false,
            "title": "Skip Email",
            "type": "boolean"
          }
        },
        "required": [
          "job_id"
        ],
        "title": "MigrationStartRequest",
        "type": "object"
      },
      "MultiDownloadRequest": {
        "properties": {
          "paths": {
            "items": {
              "type": "string"
            },
            "title": "Paths",
            "type": "array"
          }
        },
        "required": [
          "paths"
        ],
        "title": "MultiDownloadRequest",
        "type": "object"
      },
      "NodeAppCreate": {
        "description": "Request body for creating a new Node.js application.",
        "properties": {
          "app_name": {
            "description": "Application identifier (slug)",
            "pattern": "^[a-z][a-z0-9_-]{1,30}$",
            "title": "App Name",
            "type": "string"
          },
          "app_type": {
            "default": "express",
            "description": "Framework type",
            "pattern": "^(express|fastify|nestjs|nextjs|custom)$",
            "title": "App Type",
            "type": "string"
          },
          "auto_restart": {
            "default": true,
            "description": "Restart on failure (systemd Restart=on-failure)",
            "title": "Auto Restart",
            "type": "boolean"
          },
          "display_name": {
            "description": "Human-readable name",
            "maxLength": 100,
            "minLength": 1,
            "title": "Display Name",
            "type": "string"
          },
          "domain": {
            "description": "Associated domain",
            "maxLength": 253,
            "minLength": 3,
            "title": "Domain",
            "type": "string"
          },
          "entry_point": {
            "description": "Relative path to startup file (e.g. server.js)",
            "maxLength": 200,
            "minLength": 1,
            "title": "Entry Point",
            "type": "string"
          },
          "env": {
            "default": "production",
            "description": "NODE_ENV value",
            "pattern": "^(production|development)$",
            "title": "Env",
            "type": "string"
          },
          "env_vars": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Environment variables",
            "title": "Env Vars",
            "type": "object"
          },
          "instances": {
            "default": 1,
            "description": "Cluster worker count; 0 = auto (cpu count), 1 = single proc",
            "maximum": 16.0,
            "minimum": 0.0,
            "title": "Instances",
            "type": "integer"
          },
          "max_memory_mb": {
            "default": 0,
            "description": "Per-app memory cap (NODE_OPTIONS + cgroup); 0 = unlimited",
            "maximum": 8192.0,
            "minimum": 0.0,
            "title": "Max Memory Mb",
            "type": "integer"
          },
          "node_version": {
            "description": "Node.js major version",
            "pattern": "^(18|20|22)$",
            "title": "Node Version",
            "type": "string"
          },
          "package_manager": {
            "default": "npm",
            "description": "Package manager",
            "pattern": "^(npm|pnpm|yarn)$",
            "title": "Package Manager",
            "type": "string"
          },
          "websocket": {
            "default": true,
            "description": "Enable WebSocket support in nginx upstream",
            "title": "Websocket",
            "type": "boolean"
          }
        },
        "required": [
          "app_name",
          "display_name",
          "node_version",
          "entry_point",
          "domain"
        ],
        "title": "NodeAppCreate",
        "type": "object"
      },
      "NodeAppUpdate": {
        "description": "Request body for updating a Node.js application (all fields optional).",
        "properties": {
          "app_type": {
            "anyOf": [
              {
                "pattern": "^(express|fastify|nestjs|nextjs|custom)$",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "App Type"
          },
          "auto_restart": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "title": "Auto Restart"
          },
          "display_name": {
            "anyOf": [
              {
                "maxLength": 100,
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Display Name"
          },
          "domain": {
            "anyOf": [
              {
                "maxLength": 253,
                "minLength": 3,
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Domain"
          },
          "entry_point": {
            "anyOf": [
              {
                "maxLength": 200,
                "minLength": 1,
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Entry Point"
          },
          "env": {
            "anyOf": [
              {
                "pattern": "^(production|development)$",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Env"
          },
          "instances": {
            "anyOf": [
              {
                "maximum": 16.0,
                "minimum": 0.0,
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Instances"
          },
          "max_memory_mb": {
            "anyOf": [
              {
                "maximum": 8192.0,
                "minimum": 0.0,
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Max Memory Mb"
          },
          "node_version": {
            "anyOf": [
              {
                "pattern": "^(18|20|22)$",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Node Version"
          },
          "package_manager": {
            "anyOf": [
              {
                "pattern": "^(npm|pnpm|yarn)$",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Package Manager"
          },
          "websocket": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "title": "Websocket"
          }
        },
        "title": "NodeAppUpdate",
        "type": "object"
      },
      "NotificationCreate": {
        "properties": {
          "category": {
            "default": "system",
            "enum": [
              "account",
              "disk",
              "ssl",
              "backup",
              "service",
              "login",
              "2fa",
              "firewall",
              "email",
              "database",
              "update",
              "license",
              "system"
            ],
            "title": "Category",
            "type": "string"
          },
          "level": {
            "default": "info",
            "enum": [
              "info",
              "warning",
              "critical"
            ],
            "title": "Level",
            "type": "string"
          },
          "message": {
            "maxLength": 4096,
            "minLength": 1,
            "title": "Message",
            "type": "string"
          },
          "target": {
            "default": "admin",
            "enum": [
              "admin",
              "client",
              "all"
            ],
            "title": "Target",
            "type": "string"
          },
          "title": {
            "maxLength": 255,
            "minLength": 1,
            "title": "Title",
            "type": "string"
          },
          "username": {
            "default": "",
            "pattern": "^([a-z][a-z0-9]{2,15})?$",
            "title": "Username",
            "type": "string"
          }
        },
        "required": [
          "title",
          "message"
        ],
        "title": "NotificationCreate",
        "type": "object"
      },
      "NotificationEventUpdate": {
        "properties": {
          "admin_email": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "title": "Admin Email"
          },
          "admin_panel": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "title": "Admin Panel"
          },
          "client_email": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "title": "Client Email"
          },
          "client_panel": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "title": "Client Panel"
          },
          "id": {
            "title": "Id",
            "type": "string"
          }
        },
        "required": [
          "id"
        ],
        "title": "NotificationEventUpdate",
        "type": "object"
      },
      "NotificationPreferences": {
        "properties": {
          "email_categories": {
            "items": {
              "type": "string"
            },
            "title": "Email Categories",
            "type": "array"
          },
          "email_enabled": {
            "default": true,
            "title": "Email Enabled",
            "type": "boolean"
          },
          "events": {
            "items": {
              "additionalProperties": true,
              "type": "object"
            },
            "title": "Events",
            "type": "array"
          },
          "panel_categories": {
            "items": {
              "type": "string"
            },
            "title": "Panel Categories",
            "type": "array"
          },
          "panel_enabled": {
            "default": true,
            "title": "Panel Enabled",
            "type": "boolean"
          }
        },
        "title": "NotificationPreferences",
        "type": "object"
      },
      "NotificationPreferencesUpdate": {
        "properties": {
          "email_categories": {
            "anyOf": [
              {
                "items": {
                  "type": "string"
                },
                "maxItems": 64,
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Email Categories"
          },
          "email_enabled": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "title": "Email Enabled"
          },
          "events": {
            "anyOf": [
              {
                "items": {
                  "$ref": "#/components/schemas/NotificationEventUpdate"
                },
                "maxItems": 64,
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Events"
          },
          "panel_categories": {
            "anyOf": [
              {
                "items": {
                  "type": "string"
                },
                "maxItems": 64,
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Panel Categories"
          },
          "panel_enabled": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "title": "Panel Enabled"
          },
          "smtp": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/SmtpSettingsUpdate"
              },
              {
                "type": "null"
              }
            ]
          },
          "templates": {
            "anyOf": [
              {
                "items": {
                  "$ref": "#/components/schemas/NotificationTemplateUpdate"
                },
                "maxItems": 64,
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Templates"
          }
        },
        "title": "NotificationPreferencesUpdate",
        "type": "object"
      },
      "NotificationTemplateUpdate": {
        "properties": {
          "body": {
            "default": "",
            "maxLength": 32768,
            "title": "Body",
            "type": "string"
          },
          "event": {
            "maxLength": 64,
            "title": "Event",
            "type": "string"
          },
          "id": {
            "default": "",
            "maxLength": 64,
            "title": "Id",
            "type": "string"
          },
          "name": {
            "default": "",
            "maxLength": 128,
            "title": "Name",
            "type": "string"
          },
          "subject": {
            "default": "",
            "maxLength": 512,
            "title": "Subject",
            "type": "string"
          },
          "variables": {
            "items": {
              "additionalProperties": true,
              "type": "object"
            },
            "maxItems": 64,
            "title": "Variables",
            "type": "array"
          }
        },
        "required": [
          "event"
        ],
        "title": "NotificationTemplateUpdate",
        "type": "object"
      },
      "NpmInstallRequest": {
        "description": "Request body for installing npm packages.",
        "properties": {
          "dev": {
            "default": false,
            "description": "Install as devDependency",
            "title": "Dev",
            "type": "boolean"
          },
          "packages": {
            "items": {
              "type": "string"
            },
            "minItems": 1,
            "title": "Packages",
            "type": "array"
          }
        },
        "required": [
          "packages"
        ],
        "title": "NpmInstallRequest",
        "type": "object"
      },
      "NpmScriptRequest": {
        "description": "Request body for running an npm script (`npm run <script>`).\n\nThe script name is sanity-checked here; the service layer additionally\nenforces ``config.node.allowed_npm_scripts`` whitelist.",
        "properties": {
          "script": {
            "maxLength": 40,
            "minLength": 1,
            "title": "Script",
            "type": "string"
          }
        },
        "required": [
          "script"
        ],
        "title": "NpmScriptRequest",
        "type": "object"
      },
      "NpmUninstallRequest": {
        "description": "Request body for uninstalling npm packages.",
        "properties": {
          "packages": {
            "items": {
              "type": "string"
            },
            "minItems": 1,
            "title": "Packages",
            "type": "array"
          }
        },
        "required": [
          "packages"
        ],
        "title": "NpmUninstallRequest",
        "type": "object"
      },
      "OPcacheConfigUpdate": {
        "properties": {
          "max_accelerated_files": {
            "anyOf": [
              {
                "maximum": 100000.0,
                "minimum": 200.0,
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Max Accelerated Files"
          },
          "memory_consumption": {
            "anyOf": [
              {
                "maximum": 512.0,
                "minimum": 16.0,
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Memory Consumption"
          },
          "revalidate_freq": {
            "anyOf": [
              {
                "maximum": 3600.0,
                "minimum": 0.0,
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Revalidate Freq"
          },
          "save_comments": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "title": "Save Comments"
          },
          "validate_timestamps": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "title": "Validate Timestamps"
          }
        },
        "title": "OPcacheConfigUpdate",
        "type": "object"
      },
      "OPcacheStatusResponse": {
        "properties": {
          "cached_files": {
            "default": 0,
            "title": "Cached Files",
            "type": "integer"
          },
          "enabled": {
            "default": false,
            "title": "Enabled",
            "type": "boolean"
          },
          "hit_rate": {
            "default": 0,
            "title": "Hit Rate",
            "type": "number"
          },
          "hits": {
            "default": 0,
            "title": "Hits",
            "type": "integer"
          },
          "max_cached_files": {
            "default": 0,
            "title": "Max Cached Files",
            "type": "integer"
          },
          "memory_total_mb": {
            "default": 128,
            "title": "Memory Total Mb",
            "type": "number"
          },
          "memory_usage_mb": {
            "default": 0,
            "title": "Memory Usage Mb",
            "type": "number"
          },
          "memory_used_percent": {
            "default": 0,
            "title": "Memory Used Percent",
            "type": "number"
          },
          "misses": {
            "default": 0,
            "title": "Misses",
            "type": "integer"
          },
          "php_version": {
            "default": "",
            "title": "Php Version",
            "type": "string"
          },
          "revalidate_freq": {
            "default": 2,
            "title": "Revalidate Freq",
            "type": "integer"
          },
          "validate_timestamps": {
            "default": true,
            "title": "Validate Timestamps",
            "type": "boolean"
          }
        },
        "title": "OPcacheStatusResponse",
        "type": "object"
      },
      "OneDriveAuthRequest": {
        "properties": {
          "client_id": {
            "title": "Client Id",
            "type": "string"
          },
          "client_secret": {
            "title": "Client Secret",
            "type": "string"
          },
          "redirect_uri": {
            "title": "Redirect Uri",
            "type": "string"
          }
        },
        "required": [
          "client_id",
          "client_secret",
          "redirect_uri"
        ],
        "title": "OneDriveAuthRequest",
        "type": "object"
      },
      "OneDriveExchangeRequest": {
        "properties": {
          "client_id": {
            "title": "Client Id",
            "type": "string"
          },
          "client_secret": {
            "title": "Client Secret",
            "type": "string"
          },
          "code": {
            "title": "Code",
            "type": "string"
          },
          "redirect_uri": {
            "title": "Redirect Uri",
            "type": "string"
          },
          "state": {
            "default": "",
            "title": "State",
            "type": "string"
          }
        },
        "required": [
          "code",
          "client_id",
          "client_secret",
          "redirect_uri"
        ],
        "title": "OneDriveExchangeRequest",
        "type": "object"
      },
      "OsPackageApplyHistoryEntry": {
        "description": "One persisted record per upgrade attempt — written to\n`/var/whost/os_packages_history.json`.",
        "properties": {
          "completed_at": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Completed At"
          },
          "error_message": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Error Message"
          },
          "id": {
            "title": "Id",
            "type": "string"
          },
          "security_only": {
            "title": "Security Only",
            "type": "boolean"
          },
          "started_at": {
            "title": "Started At",
            "type": "string"
          },
          "status": {
            "enum": [
              "completed",
              "failed"
            ],
            "title": "Status",
            "type": "string"
          },
          "target_packages": {
            "items": {
              "type": "string"
            },
            "title": "Target Packages",
            "type": "array"
          },
          "upgraded": {
            "items": {
              "type": "string"
            },
            "title": "Upgraded",
            "type": "array"
          }
        },
        "required": [
          "id",
          "started_at",
          "status",
          "security_only"
        ],
        "title": "OsPackageApplyHistoryEntry",
        "type": "object"
      },
      "OsPackageApplyStatus": {
        "description": "Live status of the most recent (or in-flight) `apt-get upgrade` job.\n\nThe whost-agent process holds a single instance in memory; the upgrade\nruns as a FastAPI BackgroundTask so the HTTP request returns immediately.\nFrontend polls `/system/packages/upgrade/status` to render progress and\nsurvives navigation away / browser close — the apply continues serverside\nregardless of client state.",
        "properties": {
          "completed_at": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Completed At"
          },
          "error": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Error"
          },
          "message": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Message"
          },
          "output_tail": {
            "default": "",
            "title": "Output Tail",
            "type": "string"
          },
          "progress": {
            "default": 0,
            "maximum": 100.0,
            "minimum": 0.0,
            "title": "Progress",
            "type": "integer"
          },
          "security_only": {
            "default": false,
            "title": "Security Only",
            "type": "boolean"
          },
          "stage": {
            "default": "idle",
            "enum": [
              "idle",
              "running",
              "completed",
              "failed"
            ],
            "title": "Stage",
            "type": "string"
          },
          "started_at": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Started At"
          },
          "target_packages": {
            "items": {
              "type": "string"
            },
            "title": "Target Packages",
            "type": "array"
          },
          "upgraded": {
            "items": {
              "type": "string"
            },
            "title": "Upgraded",
            "type": "array"
          }
        },
        "title": "OsPackageApplyStatus",
        "type": "object"
      },
      "OsPackageUpdate": {
        "properties": {
          "category": {
            "default": "other",
            "enum": [
              "security",
              "feature",
              "bugfix",
              "other"
            ],
            "title": "Category",
            "type": "string"
          },
          "current_version": {
            "title": "Current Version",
            "type": "string"
          },
          "name": {
            "title": "Name",
            "type": "string"
          },
          "new_version": {
            "title": "New Version",
            "type": "string"
          }
        },
        "required": [
          "name",
          "current_version",
          "new_version"
        ],
        "title": "OsPackageUpdate",
        "type": "object"
      },
      "OsPackagesSummary": {
        "description": "Cached snapshot of pending OS package updates.\n\nPopulated by AutoUpdateScheduler in the background. Consumed by the\n`/system/packages/summary` endpoint (UI badge, banner) — much cheaper\nthan running apt-get on every page load.",
        "properties": {
          "last_checked": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Last Checked"
          },
          "reboot_required": {
            "default": false,
            "title": "Reboot Required",
            "type": "boolean"
          },
          "security_count": {
            "default": 0,
            "title": "Security Count",
            "type": "integer"
          },
          "total": {
            "default": 0,
            "title": "Total",
            "type": "integer"
          },
          "updates": {
            "items": {
              "$ref": "#/components/schemas/OsPackageUpdate"
            },
            "title": "Updates",
            "type": "array"
          }
        },
        "title": "OsPackagesSummary",
        "type": "object"
      },
      "OsPackagesUpgradeRequest": {
        "properties": {
          "package_names": {
            "anyOf": [
              {
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "description": "Package names to upgrade. Each must match [a-z0-9][a-z0-9.+\\-]*",
            "title": "Package Names"
          },
          "security_only": {
            "default": true,
            "title": "Security Only",
            "type": "boolean"
          }
        },
        "title": "OsPackagesUpgradeRequest",
        "type": "object"
      },
      "PHPConfigUpdate": {
        "properties": {
          "display_errors": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "title": "Display Errors"
          },
          "error_reporting": {
            "anyOf": [
              {
                "maxLength": 256,
                "pattern": "^[A-Z_0-9 &~|!()]+$",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Error Reporting"
          },
          "max_execution_time": {
            "anyOf": [
              {
                "maximum": 86400.0,
                "minimum": 0.0,
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Max Execution Time"
          },
          "max_input_time": {
            "anyOf": [
              {
                "maximum": 86400.0,
                "minimum": -1.0,
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Max Input Time"
          },
          "max_input_vars": {
            "anyOf": [
              {
                "maximum": 1000000.0,
                "minimum": 1.0,
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Max Input Vars"
          },
          "memory_limit": {
            "anyOf": [
              {
                "pattern": "^(-1|\\d+[KMG]?)$",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Memory Limit"
          },
          "post_max_size": {
            "anyOf": [
              {
                "pattern": "^\\d+[KMG]?$",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Post Max Size"
          },
          "upload_max_filesize": {
            "anyOf": [
              {
                "pattern": "^\\d+[KMG]?$",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Upload Max Filesize"
          }
        },
        "title": "PHPConfigUpdate",
        "type": "object"
      },
      "PHPDefaultsUpdate": {
        "properties": {
          "default_display_errors": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "title": "Default Display Errors"
          },
          "default_max_execution_time": {
            "anyOf": [
              {
                "maximum": 86400.0,
                "minimum": 0.0,
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Default Max Execution Time"
          },
          "default_max_input_time": {
            "anyOf": [
              {
                "maximum": 86400.0,
                "minimum": -1.0,
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Default Max Input Time"
          },
          "default_max_input_vars": {
            "anyOf": [
              {
                "maximum": 1000000.0,
                "minimum": 1.0,
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Default Max Input Vars"
          },
          "default_memory_limit": {
            "anyOf": [
              {
                "pattern": "^(-1|\\d+[KMG]?)$",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Default Memory Limit"
          },
          "default_post_max_size": {
            "anyOf": [
              {
                "pattern": "^\\d+[KMG]?$",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Default Post Max Size"
          },
          "default_upload_max_filesize": {
            "anyOf": [
              {
                "pattern": "^\\d+[KMG]?$",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Default Upload Max Filesize"
          },
          "default_version": {
            "anyOf": [
              {
                "pattern": "^\\d+\\.\\d+$",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Default Version"
          }
        },
        "title": "PHPDefaultsUpdate",
        "type": "object"
      },
      "PHPDomainVersionData": {
        "description": "Response shape for `PUT /domains/{domain}/php/version`.",
        "properties": {
          "domain": {
            "title": "Domain",
            "type": "string"
          },
          "version": {
            "title": "Version",
            "type": "string"
          }
        },
        "required": [
          "domain",
          "version"
        ],
        "title": "PHPDomainVersionData",
        "type": "object"
      },
      "PHPExtensionEntry": {
        "properties": {
          "display_name": {
            "title": "Display Name",
            "type": "string"
          },
          "enabled": {
            "title": "Enabled",
            "type": "boolean"
          },
          "ext_type": {
            "default": "extension",
            "title": "Ext Type",
            "type": "string"
          },
          "installed": {
            "title": "Installed",
            "type": "boolean"
          },
          "name": {
            "title": "Name",
            "type": "string"
          }
        },
        "required": [
          "name",
          "display_name",
          "enabled",
          "installed"
        ],
        "title": "PHPExtensionEntry",
        "type": "object"
      },
      "PHPExtensionToggle": {
        "properties": {
          "enabled": {
            "title": "Enabled",
            "type": "boolean"
          },
          "extension": {
            "pattern": "^[a-z][a-z0-9_]{0,31}$",
            "title": "Extension",
            "type": "string"
          }
        },
        "required": [
          "extension",
          "enabled"
        ],
        "title": "PHPExtensionToggle",
        "type": "object"
      },
      "PHPExtensionsStatusResponse": {
        "properties": {
          "extensions": {
            "items": {
              "$ref": "#/components/schemas/PHPExtensionEntry"
            },
            "title": "Extensions",
            "type": "array"
          },
          "php_version": {
            "title": "Php Version",
            "type": "string"
          }
        },
        "required": [
          "extensions",
          "php_version"
        ],
        "title": "PHPExtensionsStatusResponse",
        "type": "object"
      },
      "PHPVersionChange": {
        "properties": {
          "version": {
            "pattern": "^\\d+\\.\\d+$",
            "title": "Version",
            "type": "string"
          }
        },
        "required": [
          "version"
        ],
        "title": "PHPVersionChange",
        "type": "object"
      },
      "PHPVersionData": {
        "description": "Tiny response shape for endpoints that only return the active version.",
        "properties": {
          "version": {
            "title": "Version",
            "type": "string"
          }
        },
        "required": [
          "version"
        ],
        "title": "PHPVersionData",
        "type": "object"
      },
      "PHPVersionListResponse": {
        "properties": {
          "default": {
            "title": "Default",
            "type": "string"
          },
          "installed": {
            "items": {
              "type": "string"
            },
            "title": "Installed",
            "type": "array"
          },
          "versions": {
            "items": {
              "$ref": "#/components/schemas/PHPVersionStatus"
            },
            "title": "Versions",
            "type": "array"
          }
        },
        "required": [
          "installed",
          "default"
        ],
        "title": "PHPVersionListResponse",
        "type": "object"
      },
      "PHPVersionStatus": {
        "properties": {
          "domain_count": {
            "default": 0,
            "title": "Domain Count",
            "type": "integer"
          },
          "enabled": {
            "default": false,
            "title": "Enabled",
            "type": "boolean"
          },
          "installed": {
            "default": false,
            "title": "Installed",
            "type": "boolean"
          },
          "is_default": {
            "default": false,
            "title": "Is Default",
            "type": "boolean"
          },
          "version": {
            "title": "Version",
            "type": "string"
          }
        },
        "required": [
          "version"
        ],
        "title": "PHPVersionStatus",
        "type": "object"
      },
      "PHPVersionToggle": {
        "properties": {
          "enabled": {
            "title": "Enabled",
            "type": "boolean"
          },
          "version": {
            "pattern": "^\\d+\\.\\d+$",
            "title": "Version",
            "type": "string"
          }
        },
        "required": [
          "version",
          "enabled"
        ],
        "title": "PHPVersionToggle",
        "type": "object"
      },
      "PackageChangeRequest": {
        "properties": {
          "plan_id": {
            "minLength": 1,
            "title": "Plan Id",
            "type": "string"
          }
        },
        "required": [
          "plan_id"
        ],
        "title": "PackageChangeRequest",
        "type": "object"
      },
      "PackageChangeResponse": {
        "properties": {
          "changes_applied": {
            "items": {
              "type": "string"
            },
            "title": "Changes Applied",
            "type": "array"
          },
          "new_package": {
            "$ref": "#/components/schemas/PackageLimits"
          },
          "new_plan_id": {
            "title": "New Plan Id",
            "type": "string"
          },
          "old_package": {
            "$ref": "#/components/schemas/PackageLimits"
          },
          "old_plan_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Old Plan Id"
          },
          "username": {
            "title": "Username",
            "type": "string"
          }
        },
        "required": [
          "username",
          "old_plan_id",
          "new_plan_id",
          "old_package",
          "new_package",
          "changes_applied"
        ],
        "title": "PackageChangeResponse",
        "type": "object"
      },
      "PackageLimits": {
        "properties": {
          "bandwidth_mb": {
            "default": 10240,
            "maximum": 1073741824.0,
            "minimum": 0.0,
            "title": "Bandwidth Mb",
            "type": "integer"
          },
          "disk_mb": {
            "default": 1024,
            "maximum": 104857600.0,
            "minimum": 0.0,
            "title": "Disk Mb",
            "type": "integer"
          },
          "email_hourly_limit": {
            "default": 100,
            "maximum": 100000.0,
            "minimum": 0.0,
            "title": "Email Hourly Limit",
            "type": "integer"
          },
          "max_databases": {
            "default": 1,
            "maximum": 100000.0,
            "minimum": 0.0,
            "title": "Max Databases",
            "type": "integer"
          },
          "max_domains": {
            "default": 1,
            "maximum": 100000.0,
            "minimum": 0.0,
            "title": "Max Domains",
            "type": "integer"
          },
          "max_email_accounts": {
            "default": 5,
            "maximum": 100000.0,
            "minimum": 0.0,
            "title": "Max Email Accounts",
            "type": "integer"
          },
          "max_ftp_accounts": {
            "default": 5,
            "maximum": 100000.0,
            "minimum": 0.0,
            "title": "Max Ftp Accounts",
            "type": "integer"
          },
          "max_node_apps": {
            "default": 0,
            "maximum": 100000.0,
            "minimum": 0.0,
            "title": "Max Node Apps",
            "type": "integer"
          },
          "max_parked_domains": {
            "default": 1,
            "maximum": 100000.0,
            "minimum": 0.0,
            "title": "Max Parked Domains",
            "type": "integer"
          },
          "max_python_apps": {
            "default": 0,
            "maximum": 100000.0,
            "minimum": 0.0,
            "title": "Max Python Apps",
            "type": "integer"
          },
          "max_subdomains": {
            "default": 5,
            "maximum": 100000.0,
            "minimum": 0.0,
            "title": "Max Subdomains",
            "type": "integer"
          },
          "node_max_memory_mb": {
            "default": 0,
            "maximum": 1048576.0,
            "minimum": 0.0,
            "title": "Node Max Memory Mb",
            "type": "integer"
          },
          "node_workers_limit": {
            "default": 4,
            "maximum": 100000.0,
            "minimum": 0.0,
            "title": "Node Workers Limit",
            "type": "integer"
          },
          "python_workers_limit": {
            "default": 4,
            "maximum": 100000.0,
            "minimum": 0.0,
            "title": "Python Workers Limit",
            "type": "integer"
          },
          "resource": {
            "$ref": "#/components/schemas/ResourceLimits"
          }
        },
        "title": "PackageLimits",
        "type": "object"
      },
      "PaginatedAccountsData": {
        "description": "Response data shape for `GET /accounts`. Uses `accounts` (not the\ngeneric `items`) because that field name is part of v1 and consumed\nby the frontend api-client.",
        "properties": {
          "accounts": {
            "items": {
              "$ref": "#/components/schemas/AccountResponse"
            },
            "title": "Accounts",
            "type": "array"
          },
          "limit": {
            "minimum": 1.0,
            "title": "Limit",
            "type": "integer"
          },
          "offset": {
            "minimum": 0.0,
            "title": "Offset",
            "type": "integer"
          },
          "total": {
            "minimum": 0.0,
            "title": "Total",
            "type": "integer"
          }
        },
        "required": [
          "accounts",
          "total",
          "limit",
          "offset"
        ],
        "title": "PaginatedAccountsData",
        "type": "object"
      },
      "PaginatedApiAccessLogsData": {
        "description": "Response data shape for `GET /system/api-keys/logs`.",
        "properties": {
          "logs": {
            "items": {
              "$ref": "#/components/schemas/ApiAccessLogEntry"
            },
            "title": "Logs",
            "type": "array"
          },
          "total": {
            "title": "Total",
            "type": "integer"
          }
        },
        "required": [
          "logs",
          "total"
        ],
        "title": "PaginatedApiAccessLogsData",
        "type": "object"
      },
      "PaginatedAuditLogsData": {
        "description": "Response data shape for `GET /audit-logs`. v1: `logs` key (not `items`).",
        "properties": {
          "limit": {
            "title": "Limit",
            "type": "integer"
          },
          "logs": {
            "items": {
              "$ref": "#/components/schemas/AuditLog"
            },
            "title": "Logs",
            "type": "array"
          },
          "offset": {
            "title": "Offset",
            "type": "integer"
          },
          "total": {
            "title": "Total",
            "type": "integer"
          }
        },
        "required": [
          "logs",
          "total",
          "limit",
          "offset"
        ],
        "title": "PaginatedAuditLogsData",
        "type": "object"
      },
      "PanelNotification": {
        "properties": {
          "category": {
            "default": "firewall",
            "title": "Category",
            "type": "string"
          },
          "id": {
            "title": "Id",
            "type": "string"
          },
          "level": {
            "enum": [
              "info",
              "warning",
              "critical"
            ],
            "title": "Level",
            "type": "string"
          },
          "message": {
            "title": "Message",
            "type": "string"
          },
          "read": {
            "default": false,
            "title": "Read",
            "type": "boolean"
          },
          "target": {
            "anyOf": [
              {
                "enum": [
                  "admin",
                  "client",
                  "all"
                ],
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Target"
          },
          "timestamp": {
            "title": "Timestamp",
            "type": "string"
          },
          "title": {
            "title": "Title",
            "type": "string"
          },
          "username": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Username"
          }
        },
        "required": [
          "id",
          "timestamp",
          "level",
          "title",
          "message"
        ],
        "title": "PanelNotification",
        "type": "object"
      },
      "ParkedDomainCreate": {
        "properties": {
          "domain": {
            "title": "Domain",
            "type": "string"
          },
          "target_domain": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Target Domain"
          }
        },
        "required": [
          "domain"
        ],
        "title": "ParkedDomainCreate",
        "type": "object"
      },
      "ParkedDomainResponse": {
        "properties": {
          "created_at": {
            "default": "",
            "title": "Created At",
            "type": "string"
          },
          "domain": {
            "title": "Domain",
            "type": "string"
          },
          "target_domain": {
            "title": "Target Domain",
            "type": "string"
          },
          "username": {
            "default": "",
            "title": "Username",
            "type": "string"
          }
        },
        "required": [
          "domain",
          "target_domain"
        ],
        "title": "ParkedDomainResponse",
        "type": "object"
      },
      "PipInstallRequest": {
        "description": "Request body for installing pip packages.",
        "properties": {
          "packages": {
            "items": {
              "type": "string"
            },
            "minItems": 1,
            "title": "Packages",
            "type": "array"
          }
        },
        "required": [
          "packages"
        ],
        "title": "PipInstallRequest",
        "type": "object"
      },
      "PipPackageEntry": {
        "description": "Single installed pip package.",
        "properties": {
          "name": {
            "title": "Name",
            "type": "string"
          },
          "version": {
            "title": "Version",
            "type": "string"
          }
        },
        "required": [
          "name",
          "version"
        ],
        "title": "PipPackageEntry",
        "type": "object"
      },
      "PipUninstallRequest": {
        "description": "Request body for uninstalling pip packages.",
        "properties": {
          "packages": {
            "items": {
              "type": "string"
            },
            "minItems": 1,
            "title": "Packages",
            "type": "array"
          }
        },
        "required": [
          "packages"
        ],
        "title": "PipUninstallRequest",
        "type": "object"
      },
      "PlanCreate": {
        "properties": {
          "description": {
            "default": "",
            "maxLength": 500,
            "title": "Description",
            "type": "string"
          },
          "name": {
            "maxLength": 100,
            "minLength": 1,
            "title": "Name",
            "type": "string"
          },
          "owner_username": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Owner Username"
          },
          "package": {
            "$ref": "#/components/schemas/PackageLimits"
          },
          "sort_order": {
            "default": 0,
            "minimum": 0.0,
            "title": "Sort Order",
            "type": "integer"
          },
          "visible": {
            "default": true,
            "title": "Visible",
            "type": "boolean"
          }
        },
        "required": [
          "name"
        ],
        "title": "PlanCreate",
        "type": "object"
      },
      "PlanResponse": {
        "properties": {
          "account_count": {
            "default": 0,
            "title": "Account Count",
            "type": "integer"
          },
          "created_at": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Created At"
          },
          "description": {
            "default": "",
            "title": "Description",
            "type": "string"
          },
          "id": {
            "title": "Id",
            "type": "string"
          },
          "name": {
            "title": "Name",
            "type": "string"
          },
          "owner_username": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Owner Username"
          },
          "package": {
            "$ref": "#/components/schemas/PackageLimits"
          },
          "sort_order": {
            "default": 0,
            "title": "Sort Order",
            "type": "integer"
          },
          "updated_at": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Updated At"
          },
          "visible": {
            "default": true,
            "title": "Visible",
            "type": "boolean"
          }
        },
        "required": [
          "id",
          "name",
          "package"
        ],
        "title": "PlanResponse",
        "type": "object"
      },
      "PlanUpdate": {
        "properties": {
          "description": {
            "anyOf": [
              {
                "maxLength": 500,
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Description"
          },
          "name": {
            "anyOf": [
              {
                "maxLength": 100,
                "minLength": 1,
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Name"
          },
          "package": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/PackageLimits"
              },
              {
                "type": "null"
              }
            ]
          },
          "sort_order": {
            "anyOf": [
              {
                "minimum": 0.0,
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Sort Order"
          },
          "visible": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "title": "Visible"
          }
        },
        "title": "PlanUpdate",
        "type": "object"
      },
      "PythonAppCreate": {
        "description": "Request body for creating a new Python application.",
        "properties": {
          "app_name": {
            "description": "Application identifier (slug)",
            "pattern": "^[a-z][a-z0-9_-]{1,30}$",
            "title": "App Name",
            "type": "string"
          },
          "app_type": {
            "default": "django",
            "description": "Framework type: django | flask | fastapi | custom",
            "pattern": "^(django|flask|fastapi|custom)$",
            "title": "App Type",
            "type": "string"
          },
          "auto_restart": {
            "default": true,
            "description": "Auto-restart on failure",
            "title": "Auto Restart",
            "type": "boolean"
          },
          "display_name": {
            "description": "Human-readable name",
            "maxLength": 100,
            "minLength": 1,
            "title": "Display Name",
            "type": "string"
          },
          "domain": {
            "description": "Associated domain",
            "maxLength": 253,
            "minLength": 3,
            "title": "Domain",
            "type": "string"
          },
          "entry_point": {
            "description": "WSGI/ASGI entry point (e.g. myapp.wsgi:application)",
            "maxLength": 200,
            "minLength": 3,
            "title": "Entry Point",
            "type": "string"
          },
          "env_vars": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Environment variables",
            "title": "Env Vars",
            "type": "object"
          },
          "media_dir": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "Media files directory (relative to app)",
            "title": "Media Dir"
          },
          "media_url": {
            "default": "/media/",
            "description": "Media files URL prefix",
            "title": "Media Url",
            "type": "string"
          },
          "python_version": {
            "description": "Python version (e.g. 3.12)",
            "pattern": "^3\\.\\d{1,2}$",
            "title": "Python Version",
            "type": "string"
          },
          "server_type": {
            "default": "gunicorn",
            "description": "Application server: gunicorn | uvicorn",
            "pattern": "^(gunicorn|uvicorn)$",
            "title": "Server Type",
            "type": "string"
          },
          "static_dir": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "Static files directory (relative to app)",
            "title": "Static Dir"
          },
          "static_url": {
            "default": "/static/",
            "description": "Static files URL prefix",
            "title": "Static Url",
            "type": "string"
          },
          "websocket": {
            "default": false,
            "description": "Enable WebSocket support (ASGI)",
            "title": "Websocket",
            "type": "boolean"
          },
          "worker_class": {
            "default": "sync",
            "description": "Worker class: sync | gthread | uvicorn.workers.UvicornWorker",
            "pattern": "^(sync|gthread|uvicorn\\.workers\\.UvicornWorker)$",
            "title": "Worker Class",
            "type": "string"
          },
          "workers": {
            "default": 2,
            "description": "Number of workers",
            "maximum": 16.0,
            "minimum": 1.0,
            "title": "Workers",
            "type": "integer"
          }
        },
        "required": [
          "app_name",
          "display_name",
          "python_version",
          "entry_point",
          "domain"
        ],
        "title": "PythonAppCreate",
        "type": "object"
      },
      "PythonAppDeployRequest": {
        "description": "Request body for the Smart Deploy pipeline (analyze → deploy).\n\nThe nested ``create`` payload is fully validated by PythonAppCreate.\n``source_path`` is additionally bound to the caller's home / a WHost\nstaging dir at the router layer (it depends on the path username) and\nre-jailed with realpath in the deployer.",
        "properties": {
          "cleanup_source": {
            "default": true,
            "title": "Cleanup Source",
            "type": "boolean"
          },
          "create": {
            "$ref": "#/components/schemas/PythonAppCreate"
          },
          "include_secrets": {
            "default": false,
            "title": "Include Secrets",
            "type": "boolean"
          },
          "media_archive_path": {
            "anyOf": [
              {
                "maxLength": 4096,
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Media Archive Path"
          },
          "overwrite": {
            "default": false,
            "title": "Overwrite",
            "type": "boolean"
          },
          "project_root_in_source": {
            "default": "",
            "maxLength": 1024,
            "title": "Project Root In Source",
            "type": "string"
          },
          "run_collectstatic": {
            "default": true,
            "title": "Run Collectstatic",
            "type": "boolean"
          },
          "run_migrations": {
            "default": true,
            "title": "Run Migrations",
            "type": "boolean"
          },
          "source_path": {
            "maxLength": 4096,
            "minLength": 1,
            "title": "Source Path",
            "type": "string"
          },
          "sql_dump_path": {
            "anyOf": [
              {
                "maxLength": 4096,
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Sql Dump Path"
          }
        },
        "required": [
          "create",
          "source_path"
        ],
        "title": "PythonAppDeployRequest",
        "type": "object"
      },
      "PythonAppResponse": {
        "description": "Full Python application details returned by API.",
        "properties": {
          "app_dir": {
            "title": "App Dir",
            "type": "string"
          },
          "app_name": {
            "title": "App Name",
            "type": "string"
          },
          "app_type": {
            "title": "App Type",
            "type": "string"
          },
          "auto_restart": {
            "default": true,
            "title": "Auto Restart",
            "type": "boolean"
          },
          "created_at": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Created At"
          },
          "display_name": {
            "title": "Display Name",
            "type": "string"
          },
          "domain": {
            "title": "Domain",
            "type": "string"
          },
          "entry_point": {
            "title": "Entry Point",
            "type": "string"
          },
          "env_vars": {
            "additionalProperties": {
              "type": "string"
            },
            "title": "Env Vars",
            "type": "object"
          },
          "media_dir": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Media Dir"
          },
          "media_url": {
            "title": "Media Url",
            "type": "string"
          },
          "python_version": {
            "title": "Python Version",
            "type": "string"
          },
          "server_type": {
            "title": "Server Type",
            "type": "string"
          },
          "socket_path": {
            "title": "Socket Path",
            "type": "string"
          },
          "static_dir": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Static Dir"
          },
          "static_url": {
            "title": "Static Url",
            "type": "string"
          },
          "status": {
            "default": "unknown",
            "title": "Status",
            "type": "string"
          },
          "username": {
            "title": "Username",
            "type": "string"
          },
          "venv_dir": {
            "title": "Venv Dir",
            "type": "string"
          },
          "websocket": {
            "default": false,
            "title": "Websocket",
            "type": "boolean"
          },
          "worker_class": {
            "title": "Worker Class",
            "type": "string"
          },
          "workers": {
            "title": "Workers",
            "type": "integer"
          }
        },
        "required": [
          "app_name",
          "display_name",
          "username",
          "python_version",
          "app_type",
          "server_type",
          "entry_point",
          "domain",
          "workers",
          "worker_class",
          "socket_path",
          "app_dir",
          "venv_dir",
          "static_url",
          "media_url"
        ],
        "title": "PythonAppResponse",
        "type": "object"
      },
      "PythonAppStatusResponse": {
        "description": "Application runtime status.",
        "properties": {
          "app_name": {
            "title": "App Name",
            "type": "string"
          },
          "memory_mb": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "title": "Memory Mb"
          },
          "pid": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Pid"
          },
          "status": {
            "title": "Status",
            "type": "string"
          },
          "uptime": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Uptime"
          }
        },
        "required": [
          "app_name",
          "status"
        ],
        "title": "PythonAppStatusResponse",
        "type": "object"
      },
      "PythonAppUpdate": {
        "description": "Request body for updating a Python application (all fields optional).",
        "properties": {
          "auto_restart": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "title": "Auto Restart"
          },
          "display_name": {
            "anyOf": [
              {
                "maxLength": 100,
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Display Name"
          },
          "domain": {
            "anyOf": [
              {
                "maxLength": 253,
                "minLength": 3,
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Domain"
          },
          "entry_point": {
            "anyOf": [
              {
                "maxLength": 200,
                "minLength": 3,
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Entry Point"
          },
          "media_dir": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Media Dir"
          },
          "media_url": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Media Url"
          },
          "python_version": {
            "anyOf": [
              {
                "pattern": "^3\\.\\d{1,2}$",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Python Version"
          },
          "static_dir": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Static Dir"
          },
          "static_url": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Static Url"
          },
          "websocket": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "title": "Websocket"
          },
          "worker_class": {
            "anyOf": [
              {
                "pattern": "^(sync|gthread|uvicorn\\.workers\\.UvicornWorker)$",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Worker Class"
          },
          "workers": {
            "anyOf": [
              {
                "maximum": 16.0,
                "minimum": 1.0,
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Workers"
          }
        },
        "title": "PythonAppUpdate",
        "type": "object"
      },
      "QueueEntry": {
        "properties": {
          "arrival_time": {
            "default": 0,
            "title": "Arrival Time",
            "type": "integer"
          },
          "message_size": {
            "default": 0,
            "title": "Message Size",
            "type": "integer"
          },
          "queue_id": {
            "title": "Queue Id",
            "type": "string"
          },
          "queue_name": {
            "default": "",
            "title": "Queue Name",
            "type": "string"
          },
          "recipients": {
            "items": {
              "$ref": "#/components/schemas/QueueRecipient"
            },
            "title": "Recipients",
            "type": "array"
          },
          "sender": {
            "default": "",
            "title": "Sender",
            "type": "string"
          },
          "status": {
            "default": "deferred",
            "enum": [
              "active",
              "deferred",
              "hold"
            ],
            "title": "Status",
            "type": "string"
          }
        },
        "required": [
          "queue_id"
        ],
        "title": "QueueEntry",
        "type": "object"
      },
      "QueueRecipient": {
        "properties": {
          "address": {
            "title": "Address",
            "type": "string"
          },
          "delay_reason": {
            "default": "",
            "title": "Delay Reason",
            "type": "string"
          }
        },
        "required": [
          "address"
        ],
        "title": "QueueRecipient",
        "type": "object"
      },
      "QueueSummary": {
        "properties": {
          "active": {
            "default": 0,
            "title": "Active",
            "type": "integer"
          },
          "deferred": {
            "default": 0,
            "title": "Deferred",
            "type": "integer"
          },
          "hold": {
            "default": 0,
            "title": "Hold",
            "type": "integer"
          },
          "total": {
            "default": 0,
            "title": "Total",
            "type": "integer"
          },
          "total_size": {
            "default": 0,
            "title": "Total Size",
            "type": "integer"
          }
        },
        "title": "QueueSummary",
        "type": "object"
      },
      "RateLimitRuleCreate": {
        "properties": {
          "ban_duration": {
            "description": "Ban duration in seconds (0 = permanent)",
            "maximum": 604800.0,
            "minimum": 0.0,
            "title": "Ban Duration",
            "type": "integer"
          },
          "name": {
            "maxLength": 100,
            "minLength": 1,
            "title": "Name",
            "type": "string"
          },
          "port": {
            "default": "any",
            "description": "Port, comma-separated ports, range (e.g. '80', '80,443', '8000:9000'), or 'any'",
            "title": "Port",
            "type": "string"
          },
          "protocol": {
            "default": "tcp",
            "enum": [
              "tcp",
              "udp",
              "all"
            ],
            "title": "Protocol",
            "type": "string"
          },
          "threshold": {
            "description": "Max new connections one source address may open in the time window",
            "maximum": 100000.0,
            "minimum": 1.0,
            "title": "Threshold",
            "type": "integer"
          },
          "window_seconds": {
            "description": "Time window in seconds",
            "maximum": 86400.0,
            "minimum": 1.0,
            "title": "Window Seconds",
            "type": "integer"
          }
        },
        "required": [
          "name",
          "threshold",
          "window_seconds",
          "ban_duration"
        ],
        "title": "RateLimitRuleCreate",
        "type": "object"
      },
      "RateLimitRuleResponse": {
        "properties": {
          "ban_duration": {
            "title": "Ban Duration",
            "type": "integer"
          },
          "created_at": {
            "title": "Created At",
            "type": "string"
          },
          "enabled": {
            "title": "Enabled",
            "type": "boolean"
          },
          "id": {
            "title": "Id",
            "type": "string"
          },
          "name": {
            "title": "Name",
            "type": "string"
          },
          "port": {
            "title": "Port",
            "type": "string"
          },
          "protocol": {
            "title": "Protocol",
            "type": "string"
          },
          "threshold": {
            "title": "Threshold",
            "type": "integer"
          },
          "window_seconds": {
            "title": "Window Seconds",
            "type": "integer"
          }
        },
        "required": [
          "id",
          "name",
          "port",
          "protocol",
          "threshold",
          "window_seconds",
          "ban_duration",
          "enabled",
          "created_at"
        ],
        "title": "RateLimitRuleResponse",
        "type": "object"
      },
      "RateLimitRuleUpdate": {
        "properties": {
          "ban_duration": {
            "anyOf": [
              {
                "maximum": 604800.0,
                "minimum": 0.0,
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Ban Duration"
          },
          "enabled": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "title": "Enabled"
          },
          "name": {
            "anyOf": [
              {
                "maxLength": 100,
                "minLength": 1,
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Name"
          },
          "port": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Port"
          },
          "protocol": {
            "anyOf": [
              {
                "enum": [
                  "tcp",
                  "udp",
                  "all"
                ],
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Protocol"
          },
          "threshold": {
            "anyOf": [
              {
                "maximum": 100000.0,
                "minimum": 1.0,
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Threshold"
          },
          "window_seconds": {
            "anyOf": [
              {
                "maximum": 86400.0,
                "minimum": 1.0,
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Window Seconds"
          }
        },
        "title": "RateLimitRuleUpdate",
        "type": "object"
      },
      "RedirectCreate": {
        "properties": {
          "destination_url": {
            "maxLength": 2048,
            "minLength": 1,
            "title": "Destination Url",
            "type": "string"
          },
          "domain": {
            "title": "Domain",
            "type": "string"
          },
          "source_path": {
            "maxLength": 2048,
            "minLength": 1,
            "title": "Source Path",
            "type": "string"
          },
          "type": {
            "default": "301",
            "enum": [
              "301",
              "302"
            ],
            "title": "Type",
            "type": "string"
          }
        },
        "required": [
          "domain",
          "source_path",
          "destination_url"
        ],
        "title": "RedirectCreate",
        "type": "object"
      },
      "RedirectResponse": {
        "properties": {
          "created_at": {
            "default": "",
            "title": "Created At",
            "type": "string"
          },
          "destination_url": {
            "title": "Destination Url",
            "type": "string"
          },
          "domain": {
            "title": "Domain",
            "type": "string"
          },
          "id": {
            "title": "Id",
            "type": "string"
          },
          "source_path": {
            "title": "Source Path",
            "type": "string"
          },
          "type": {
            "title": "Type",
            "type": "string"
          },
          "username": {
            "default": "",
            "title": "Username",
            "type": "string"
          }
        },
        "required": [
          "id",
          "domain",
          "source_path",
          "destination_url",
          "type"
        ],
        "title": "RedirectResponse",
        "type": "object"
      },
      "RedirectUpdate": {
        "properties": {
          "destination_url": {
            "anyOf": [
              {
                "maxLength": 2048,
                "minLength": 1,
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Destination Url"
          },
          "source_path": {
            "anyOf": [
              {
                "maxLength": 2048,
                "minLength": 1,
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Source Path"
          },
          "type": {
            "anyOf": [
              {
                "enum": [
                  "301",
                  "302"
                ],
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Type"
          }
        },
        "title": "RedirectUpdate",
        "type": "object"
      },
      "RemoteDestinationCreate": {
        "properties": {
          "api_key": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Api Key"
          },
          "base_path": {
            "anyOf": [
              {
                "maxLength": 1024,
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Base Path"
          },
          "credentials_file": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Credentials File"
          },
          "credentials_json": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Credentials Json"
          },
          "dest_id": {
            "anyOf": [
              {
                "maxLength": 64,
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Dest Id"
          },
          "folder_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Folder Id"
          },
          "google_client_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Google Client Id"
          },
          "google_client_secret": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Google Client Secret"
          },
          "google_email": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Google Email"
          },
          "google_refresh_token": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Google Refresh Token"
          },
          "host": {
            "anyOf": [
              {
                "maxLength": 253,
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Host"
          },
          "name": {
            "maxLength": 100,
            "minLength": 1,
            "title": "Name",
            "type": "string"
          },
          "oauth_token": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Oauth Token"
          },
          "onedrive_client_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Onedrive Client Id"
          },
          "onedrive_client_secret": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Onedrive Client Secret"
          },
          "onedrive_email": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Onedrive Email"
          },
          "onedrive_folder_path": {
            "anyOf": [
              {
                "maxLength": 1024,
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Onedrive Folder Path"
          },
          "onedrive_refresh_token": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Onedrive Refresh Token"
          },
          "password": {
            "anyOf": [
              {
                "maxLength": 1024,
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Password"
          },
          "port": {
            "anyOf": [
              {
                "maximum": 65535.0,
                "minimum": 1.0,
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Port"
          },
          "region": {
            "anyOf": [
              {
                "maxLength": 8,
                "pattern": "^[a-z]*$",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Region"
          },
          "remote_dir": {
            "anyOf": [
              {
                "maxLength": 1024,
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Remote Dir"
          },
          "reset_server_identity": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "title": "Reset Server Identity"
          },
          "storage_zone": {
            "anyOf": [
              {
                "maxLength": 64,
                "pattern": "^(?:[A-Za-z0-9][A-Za-z0-9-]*)?$",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Storage Zone"
          },
          "tls_accept_unverified": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "title": "Tls Accept Unverified"
          },
          "type": {
            "enum": [
              "ftp",
              "sftp",
              "google_drive",
              "bunny_storage",
              "yandex_disk",
              "onedrive"
            ],
            "title": "Type",
            "type": "string"
          },
          "use_sftp": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "title": "Use Sftp"
          },
          "username": {
            "anyOf": [
              {
                "maxLength": 255,
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Username"
          },
          "validated": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "title": "Validated"
          },
          "yandex_client_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Yandex Client Id"
          },
          "yandex_client_secret": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Yandex Client Secret"
          },
          "yandex_login": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Yandex Login"
          },
          "yandex_refresh_token": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Yandex Refresh Token"
          }
        },
        "required": [
          "name",
          "type"
        ],
        "title": "RemoteDestinationCreate",
        "type": "object"
      },
      "RemoteDestinationToggle": {
        "properties": {
          "enabled": {
            "default": true,
            "title": "Enabled",
            "type": "boolean"
          }
        },
        "title": "RemoteDestinationToggle",
        "type": "object"
      },
      "RemoteHostCreate": {
        "properties": {
          "host": {
            "title": "Host",
            "type": "string"
          },
          "note": {
            "default": "",
            "title": "Note",
            "type": "string"
          }
        },
        "required": [
          "host"
        ],
        "title": "RemoteHostCreate",
        "type": "object"
      },
      "RemoteHostResponse": {
        "properties": {
          "host": {
            "title": "Host",
            "type": "string"
          },
          "note": {
            "default": "",
            "title": "Note",
            "type": "string"
          },
          "users": {
            "items": {
              "type": "string"
            },
            "title": "Users",
            "type": "array"
          }
        },
        "required": [
          "host"
        ],
        "title": "RemoteHostResponse",
        "type": "object"
      },
      "ResellerACLCreate": {
        "properties": {
          "description": {
            "anyOf": [
              {
                "maxLength": 500,
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Description"
          },
          "name": {
            "maxLength": 100,
            "minLength": 1,
            "title": "Name",
            "type": "string"
          },
          "permissions": {
            "$ref": "#/components/schemas/ResellerACLPermissions"
          }
        },
        "required": [
          "name"
        ],
        "title": "ResellerACLCreate",
        "type": "object"
      },
      "ResellerACLPermissions": {
        "properties": {
          "account_create": {
            "default": true,
            "title": "Account Create",
            "type": "boolean"
          },
          "account_ip_change": {
            "default": false,
            "title": "Account Ip Change",
            "type": "boolean"
          },
          "account_password_change": {
            "default": true,
            "title": "Account Password Change",
            "type": "boolean"
          },
          "account_plan_change": {
            "default": true,
            "title": "Account Plan Change",
            "type": "boolean"
          },
          "account_suspend": {
            "default": true,
            "title": "Account Suspend",
            "type": "boolean"
          },
          "account_terminate": {
            "default": true,
            "title": "Account Terminate",
            "type": "boolean"
          },
          "api_access": {
            "default": false,
            "title": "Api Access",
            "type": "boolean"
          },
          "backup_create": {
            "default": true,
            "title": "Backup Create",
            "type": "boolean"
          },
          "backup_download": {
            "default": true,
            "title": "Backup Download",
            "type": "boolean"
          },
          "backup_remote": {
            "default": false,
            "title": "Backup Remote",
            "type": "boolean"
          },
          "backup_restore": {
            "default": true,
            "title": "Backup Restore",
            "type": "boolean"
          },
          "client_sso": {
            "default": true,
            "title": "Client Sso",
            "type": "boolean"
          },
          "cron_manage": {
            "default": true,
            "title": "Cron Manage",
            "type": "boolean"
          },
          "database_manage": {
            "default": true,
            "title": "Database Manage",
            "type": "boolean"
          },
          "database_phpmyadmin": {
            "default": true,
            "title": "Database Phpmyadmin",
            "type": "boolean"
          },
          "database_remote_access": {
            "default": false,
            "title": "Database Remote Access",
            "type": "boolean"
          },
          "dns_dnssec": {
            "default": false,
            "title": "Dns Dnssec",
            "type": "boolean"
          },
          "dns_manage": {
            "default": true,
            "title": "Dns Manage",
            "type": "boolean"
          },
          "dns_zone_edit": {
            "default": true,
            "title": "Dns Zone Edit",
            "type": "boolean"
          },
          "email_manage": {
            "default": true,
            "title": "Email Manage",
            "type": "boolean"
          },
          "email_webmail": {
            "default": true,
            "title": "Email Webmail",
            "type": "boolean"
          },
          "file_manager": {
            "default": true,
            "title": "File Manager",
            "type": "boolean"
          },
          "file_manager_edit": {
            "default": true,
            "title": "File Manager Edit",
            "type": "boolean"
          },
          "ftp_manage": {
            "default": true,
            "title": "Ftp Manage",
            "type": "boolean"
          },
          "log_access": {
            "default": true,
            "title": "Log Access",
            "type": "boolean"
          },
          "modsecurity_manage": {
            "default": false,
            "title": "Modsecurity Manage",
            "type": "boolean"
          },
          "php_extensions_manage": {
            "default": false,
            "title": "Php Extensions Manage",
            "type": "boolean"
          },
          "php_version_change": {
            "default": true,
            "title": "Php Version Change",
            "type": "boolean"
          },
          "resource_usage_view": {
            "default": true,
            "title": "Resource Usage View",
            "type": "boolean"
          },
          "shell_access": {
            "default": false,
            "title": "Shell Access",
            "type": "boolean"
          },
          "ssl_install_custom": {
            "default": false,
            "title": "Ssl Install Custom",
            "type": "boolean"
          },
          "ssl_manage": {
            "default": true,
            "title": "Ssl Manage",
            "type": "boolean"
          }
        },
        "title": "ResellerACLPermissions",
        "type": "object"
      },
      "ResellerACLUpdate": {
        "properties": {
          "description": {
            "anyOf": [
              {
                "maxLength": 500,
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Description"
          },
          "name": {
            "anyOf": [
              {
                "maxLength": 100,
                "minLength": 1,
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Name"
          },
          "permissions": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/ResellerACLPermissions"
              },
              {
                "type": "null"
              }
            ]
          }
        },
        "title": "ResellerACLUpdate",
        "type": "object"
      },
      "ResellerLimits": {
        "properties": {
          "max_accounts": {
            "default": 10,
            "maximum": 100000.0,
            "minimum": 0.0,
            "title": "Max Accounts",
            "type": "integer"
          },
          "max_bandwidth_mb": {
            "default": 102400,
            "maximum": 1073741824.0,
            "minimum": 0.0,
            "title": "Max Bandwidth Mb",
            "type": "integer"
          },
          "max_databases": {
            "default": 10,
            "maximum": 100000.0,
            "minimum": 0.0,
            "title": "Max Databases",
            "type": "integer"
          },
          "max_disk_mb": {
            "default": 10240,
            "maximum": 104857600.0,
            "minimum": 0.0,
            "title": "Max Disk Mb",
            "type": "integer"
          },
          "max_domains": {
            "default": 10,
            "maximum": 100000.0,
            "minimum": 0.0,
            "title": "Max Domains",
            "type": "integer"
          },
          "max_email_accounts": {
            "default": 50,
            "maximum": 100000.0,
            "minimum": 0.0,
            "title": "Max Email Accounts",
            "type": "integer"
          },
          "max_ftp_accounts": {
            "default": 10,
            "maximum": 100000.0,
            "minimum": 0.0,
            "title": "Max Ftp Accounts",
            "type": "integer"
          },
          "overselling": {
            "default": false,
            "title": "Overselling",
            "type": "boolean"
          }
        },
        "title": "ResellerLimits",
        "type": "object"
      },
      "ResetPasswordRequest": {
        "properties": {
          "new_password": {
            "title": "New Password",
            "type": "string"
          },
          "token": {
            "title": "Token",
            "type": "string"
          }
        },
        "required": [
          "token",
          "new_password"
        ],
        "title": "ResetPasswordRequest",
        "type": "object"
      },
      "ResourceBundleData": {
        "description": "Response data shape for `GET /accounts/{username}/resources` —\nbundles current limits, live usage snapshot, and the cgroup support\nflag the panel uses to decide whether to render the usage chart.",
        "properties": {
          "cgroup_supported": {
            "title": "Cgroup Supported",
            "type": "boolean"
          },
          "limits": {
            "$ref": "#/components/schemas/ResourceLimits"
          },
          "usage": {
            "$ref": "#/components/schemas/ResourceUsage"
          }
        },
        "required": [
          "limits",
          "usage",
          "cgroup_supported"
        ],
        "title": "ResourceBundleData",
        "type": "object"
      },
      "ResourceLimits": {
        "properties": {
          "cpu_limit": {
            "default": 100,
            "maximum": 800.0,
            "minimum": 0.0,
            "title": "Cpu Limit",
            "type": "integer"
          },
          "io_read_mbps": {
            "default": 20,
            "maximum": 100000.0,
            "minimum": 0.0,
            "title": "Io Read Mbps",
            "type": "integer"
          },
          "io_write_mbps": {
            "default": 10,
            "maximum": 100000.0,
            "minimum": 0.0,
            "title": "Io Write Mbps",
            "type": "integer"
          },
          "iops_read": {
            "default": 1024,
            "maximum": 10000000.0,
            "minimum": 0.0,
            "title": "Iops Read",
            "type": "integer"
          },
          "iops_write": {
            "default": 512,
            "maximum": 10000000.0,
            "minimum": 0.0,
            "title": "Iops Write",
            "type": "integer"
          },
          "memory_mb": {
            "default": 512,
            "maximum": 1048576.0,
            "minimum": 0.0,
            "title": "Memory Mb",
            "type": "integer"
          },
          "nproc": {
            "default": 50,
            "maximum": 100000.0,
            "minimum": 0.0,
            "title": "Nproc",
            "type": "integer"
          }
        },
        "title": "ResourceLimits",
        "type": "object"
      },
      "ResourceLimitsUpdate": {
        "properties": {
          "cpu_limit": {
            "anyOf": [
              {
                "maximum": 800.0,
                "minimum": 0.0,
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Cpu Limit"
          },
          "io_read_mbps": {
            "anyOf": [
              {
                "maximum": 100000.0,
                "minimum": 0.0,
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Io Read Mbps"
          },
          "io_write_mbps": {
            "anyOf": [
              {
                "maximum": 100000.0,
                "minimum": 0.0,
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Io Write Mbps"
          },
          "iops_read": {
            "anyOf": [
              {
                "maximum": 10000000.0,
                "minimum": 0.0,
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Iops Read"
          },
          "iops_write": {
            "anyOf": [
              {
                "maximum": 10000000.0,
                "minimum": 0.0,
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Iops Write"
          },
          "memory_mb": {
            "anyOf": [
              {
                "maximum": 1048576.0,
                "minimum": 0.0,
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Memory Mb"
          },
          "nproc": {
            "anyOf": [
              {
                "maximum": 100000.0,
                "minimum": 0.0,
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Nproc"
          }
        },
        "title": "ResourceLimitsUpdate",
        "type": "object"
      },
      "ResourceUsage": {
        "properties": {
          "cpu_limit_percent": {
            "default": 0,
            "title": "Cpu Limit Percent",
            "type": "integer"
          },
          "cpu_usage_percent": {
            "default": 0.0,
            "title": "Cpu Usage Percent",
            "type": "number"
          },
          "io_read_bytes": {
            "default": 0,
            "title": "Io Read Bytes",
            "type": "integer"
          },
          "io_write_bytes": {
            "default": 0,
            "title": "Io Write Bytes",
            "type": "integer"
          },
          "memory_limit_mb": {
            "default": 0,
            "title": "Memory Limit Mb",
            "type": "integer"
          },
          "memory_used_mb": {
            "default": 0.0,
            "title": "Memory Used Mb",
            "type": "number"
          },
          "process_count": {
            "default": 0,
            "title": "Process Count",
            "type": "integer"
          },
          "process_limit": {
            "default": 0,
            "title": "Process Limit",
            "type": "integer"
          }
        },
        "title": "ResourceUsage",
        "type": "object"
      },
      "RootPasswordChange": {
        "description": "Request body for changing the Linux root password.",
        "properties": {
          "new_password": {
            "title": "New Password",
            "type": "string"
          }
        },
        "required": [
          "new_password"
        ],
        "title": "RootPasswordChange",
        "type": "object"
      },
      "SSLCustomUpload": {
        "properties": {
          "ca_bundle": {
            "anyOf": [
              {
                "maxLength": 131072,
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Ca Bundle"
          },
          "certificate": {
            "maxLength": 65536,
            "minLength": 1,
            "title": "Certificate",
            "type": "string"
          },
          "force": {
            "default": false,
            "title": "Force",
            "type": "boolean"
          },
          "private_key": {
            "maxLength": 65536,
            "minLength": 1,
            "title": "Private Key",
            "type": "string"
          }
        },
        "required": [
          "certificate",
          "private_key"
        ],
        "title": "SSLCustomUpload",
        "type": "object"
      },
      "SSLLetsEncryptRequest": {
        "properties": {
          "force": {
            "default": false,
            "title": "Force",
            "type": "boolean"
          },
          "force_renew": {
            "default": false,
            "title": "Force Renew",
            "type": "boolean"
          }
        },
        "title": "SSLLetsEncryptRequest",
        "type": "object"
      },
      "SSLResponse": {
        "properties": {
          "auto_renew": {
            "default": false,
            "title": "Auto Renew",
            "type": "boolean"
          },
          "certificate_path": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Certificate Path"
          },
          "chain_path": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Chain Path"
          },
          "domain": {
            "title": "Domain",
            "type": "string"
          },
          "issuer": {
            "default": "",
            "title": "Issuer",
            "type": "string"
          },
          "key_path": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Key Path"
          },
          "ssl_type": {
            "$ref": "#/components/schemas/SSLType",
            "default": "letsencrypt"
          },
          "valid_from": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Valid From"
          },
          "valid_to": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Valid To"
          },
          "warnings": {
            "items": {
              "type": "string"
            },
            "title": "Warnings",
            "type": "array"
          }
        },
        "required": [
          "domain"
        ],
        "title": "SSLResponse",
        "type": "object"
      },
      "SSLType": {
        "enum": [
          "letsencrypt",
          "custom"
        ],
        "title": "SSLType",
        "type": "string"
      },
      "SSOTokenRequest": {
        "description": "Values minted into an SSO payload the signon script then acts on.\n\n`db_host` reaches phpMyAdmin as the host it connects to, so it is bound to\na host shape here and, at the endpoint, to the panel's own MariaDB host:\nwhatever is minted is what a browser session will use.",
        "properties": {
          "db_host": {
            "default": "localhost",
            "maxLength": 255,
            "pattern": "^(?:[A-Za-z0-9](?:[A-Za-z0-9-]{0,61}[A-Za-z0-9])?(?:\\.[A-Za-z0-9](?:[A-Za-z0-9-]{0,61}[A-Za-z0-9])?)*|\\d{1,3}(?:\\.\\d{1,3}){3})$",
            "title": "Db Host",
            "type": "string"
          },
          "db_password": {
            "title": "Db Password",
            "type": "string"
          },
          "db_user": {
            "maxLength": 64,
            "minLength": 1,
            "pattern": "^[A-Za-z0-9_][A-Za-z0-9_.-]*$",
            "title": "Db User",
            "type": "string"
          }
        },
        "required": [
          "db_user",
          "db_password"
        ],
        "title": "SSOTokenRequest",
        "type": "object"
      },
      "ScannedAccount": {
        "properties": {
          "addon_domains": {
            "default": 0,
            "title": "Addon Domains",
            "type": "integer"
          },
          "database_count": {
            "default": 0,
            "title": "Database Count",
            "type": "integer"
          },
          "disk_used_mb": {
            "default": 0,
            "title": "Disk Used Mb",
            "type": "integer"
          },
          "domain": {
            "default": "",
            "title": "Domain",
            "type": "string"
          },
          "email_count": {
            "default": 0,
            "title": "Email Count",
            "type": "integer"
          },
          "php_version": {
            "default": "",
            "title": "Php Version",
            "type": "string"
          },
          "plan": {
            "default": "",
            "title": "Plan",
            "type": "string"
          },
          "subdomain_php_versions": {
            "additionalProperties": {
              "type": "string"
            },
            "title": "Subdomain Php Versions",
            "type": "object"
          },
          "subdomains": {
            "default": 0,
            "title": "Subdomains",
            "type": "integer"
          },
          "suspended": {
            "default": false,
            "title": "Suspended",
            "type": "boolean"
          },
          "username": {
            "title": "Username",
            "type": "string"
          }
        },
        "required": [
          "username"
        ],
        "title": "ScannedAccount",
        "type": "object"
      },
      "SecuritySettingsUpdate": {
        "additionalProperties": false,
        "properties": {
          "admin_allowed_ips": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Admin Allowed Ips"
          },
          "auto_configure_dkim": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "title": "Auto Configure Dkim"
          },
          "auto_configure_dmarc": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "title": "Auto Configure Dmarc"
          },
          "auto_configure_spf": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "title": "Auto Configure Spf"
          },
          "captcha_enabled": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "title": "Captcha Enabled"
          },
          "captcha_hcaptcha_secret_key": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Captcha Hcaptcha Secret Key"
          },
          "captcha_hcaptcha_site_key": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Captcha Hcaptcha Site Key"
          },
          "captcha_provider": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Captcha Provider"
          },
          "captcha_recaptcha_secret_key": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Captcha Recaptcha Secret Key"
          },
          "captcha_recaptcha_site_key": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Captcha Recaptcha Site Key"
          },
          "captcha_threshold": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "title": "Captcha Threshold"
          },
          "captcha_turnstile_secret_key": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Captcha Turnstile Secret Key"
          },
          "captcha_turnstile_site_key": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Captcha Turnstile Site Key"
          },
          "client_ip": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Client Ip"
          },
          "dmarc_policy": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Dmarc Policy"
          },
          "force": {
            "default": false,
            "title": "Force",
            "type": "boolean"
          },
          "session_timeout_minutes": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Session Timeout Minutes"
          },
          "ssh_allowed_ips": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Ssh Allowed Ips"
          },
          "ssh_key_auth": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "title": "Ssh Key Auth"
          },
          "ssh_password_auth": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "title": "Ssh Password Auth"
          },
          "ssh_port": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Ssh Port"
          },
          "ssh_root_login": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "title": "Ssh Root Login"
          },
          "two_factor_enforcement": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "title": "Two Factor Enforcement"
          },
          "two_factor_method": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Two Factor Method"
          }
        },
        "title": "SecuritySettingsUpdate",
        "type": "object"
      },
      "SentRecord": {
        "description": "A single Postfix delivery record parsed from the mail log.",
        "properties": {
          "component": {
            "default": "",
            "title": "Component",
            "type": "string"
          },
          "delay": {
            "default": "",
            "title": "Delay",
            "type": "string"
          },
          "dsn": {
            "default": "",
            "title": "Dsn",
            "type": "string"
          },
          "queue_id": {
            "title": "Queue Id",
            "type": "string"
          },
          "recipient": {
            "default": "",
            "title": "Recipient",
            "type": "string"
          },
          "relay": {
            "default": "",
            "title": "Relay",
            "type": "string"
          },
          "sender": {
            "default": "",
            "title": "Sender",
            "type": "string"
          },
          "size": {
            "default": 0,
            "title": "Size",
            "type": "integer"
          },
          "status": {
            "default": "",
            "title": "Status",
            "type": "string"
          },
          "status_detail": {
            "default": "",
            "title": "Status Detail",
            "type": "string"
          },
          "timestamp": {
            "default": "",
            "title": "Timestamp",
            "type": "string"
          }
        },
        "required": [
          "queue_id"
        ],
        "title": "SentRecord",
        "type": "object"
      },
      "SentStats": {
        "description": "Aggregate delivery counters from the mail log.",
        "properties": {
          "bounced": {
            "default": 0,
            "title": "Bounced",
            "type": "integer"
          },
          "deferred": {
            "default": 0,
            "title": "Deferred",
            "type": "integer"
          },
          "other": {
            "default": 0,
            "title": "Other",
            "type": "integer"
          },
          "rejected": {
            "default": 0,
            "title": "Rejected",
            "type": "integer"
          },
          "sent": {
            "default": 0,
            "title": "Sent",
            "type": "integer"
          },
          "total": {
            "default": 0,
            "title": "Total",
            "type": "integer"
          },
          "total_size": {
            "default": 0,
            "title": "Total Size",
            "type": "integer"
          },
          "unique_recipients": {
            "default": 0,
            "title": "Unique Recipients",
            "type": "integer"
          },
          "unique_senders": {
            "default": 0,
            "title": "Unique Senders",
            "type": "integer"
          }
        },
        "title": "SentStats",
        "type": "object"
      },
      "ServerIPUpdate": {
        "properties": {
          "ip": {
            "title": "Ip",
            "type": "string"
          }
        },
        "required": [
          "ip"
        ],
        "title": "ServerIPUpdate",
        "type": "object"
      },
      "SmtpSettingsUpdate": {
        "description": "Strict schema for the SMTP block of a settings PUT.\n\n`password` accepts both real passwords and the masked sentinel echo from\nthe UI; the service layer decides what to persist.",
        "properties": {
          "encryption": {
            "anyOf": [
              {
                "pattern": "^(none|tls|ssl)$",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Encryption"
          },
          "from_email": {
            "anyOf": [
              {
                "maxLength": 255,
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "From Email"
          },
          "from_name": {
            "anyOf": [
              {
                "maxLength": 255,
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "From Name"
          },
          "host": {
            "anyOf": [
              {
                "maxLength": 255,
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Host"
          },
          "password": {
            "anyOf": [
              {
                "maxLength": 512,
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Password"
          },
          "port": {
            "anyOf": [
              {
                "maximum": 65535.0,
                "minimum": 1.0,
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Port"
          },
          "username": {
            "anyOf": [
              {
                "maxLength": 255,
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Username"
          }
        },
        "title": "SmtpSettingsUpdate",
        "type": "object"
      },
      "SmtpTestRequest": {
        "properties": {
          "encryption": {
            "default": "tls",
            "pattern": "^(none|tls|ssl)$",
            "title": "Encryption",
            "type": "string"
          },
          "from_email": {
            "default": "",
            "maxLength": 255,
            "title": "From Email",
            "type": "string"
          },
          "from_name": {
            "default": "WHost",
            "maxLength": 255,
            "title": "From Name",
            "type": "string"
          },
          "host": {
            "default": "",
            "maxLength": 255,
            "title": "Host",
            "type": "string"
          },
          "password": {
            "default": "",
            "maxLength": 255,
            "title": "Password",
            "type": "string"
          },
          "port": {
            "default": 587,
            "maximum": 65535.0,
            "minimum": 1.0,
            "title": "Port",
            "type": "integer"
          },
          "to_email": {
            "anyOf": [
              {
                "maxLength": 255,
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "To Email"
          },
          "username": {
            "default": "",
            "maxLength": 255,
            "title": "Username",
            "type": "string"
          }
        },
        "title": "SmtpTestRequest",
        "type": "object"
      },
      "SpamConfigUpdate": {
        "properties": {
          "add_header_score": {
            "anyOf": [
              {
                "maximum": 999.0,
                "minimum": 1.0,
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "title": "Add Header Score"
          },
          "greylist_score": {
            "anyOf": [
              {
                "maximum": 999.0,
                "minimum": 1.0,
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "title": "Greylist Score"
          },
          "reject_score": {
            "anyOf": [
              {
                "maximum": 999.0,
                "minimum": 1.0,
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "title": "Reject Score"
          }
        },
        "title": "SpamConfigUpdate",
        "type": "object"
      },
      "SpamListEntry": {
        "properties": {
          "entry": {
            "maxLength": 255,
            "minLength": 1,
            "title": "Entry",
            "type": "string"
          }
        },
        "required": [
          "entry"
        ],
        "title": "SpamListEntry",
        "type": "object"
      },
      "SubdomainCreate": {
        "properties": {
          "document_root": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Document Root"
          },
          "parent_domain": {
            "title": "Parent Domain",
            "type": "string"
          },
          "php_version": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Php Version"
          },
          "subdomain": {
            "title": "Subdomain",
            "type": "string"
          }
        },
        "required": [
          "subdomain",
          "parent_domain"
        ],
        "title": "SubdomainCreate",
        "type": "object"
      },
      "SubdomainResponse": {
        "properties": {
          "created_at": {
            "default": "",
            "title": "Created At",
            "type": "string"
          },
          "document_root": {
            "title": "Document Root",
            "type": "string"
          },
          "full_domain": {
            "title": "Full Domain",
            "type": "string"
          },
          "parent_domain": {
            "title": "Parent Domain",
            "type": "string"
          },
          "php_version": {
            "default": "",
            "title": "Php Version",
            "type": "string"
          },
          "subdomain": {
            "title": "Subdomain",
            "type": "string"
          },
          "username": {
            "default": "",
            "title": "Username",
            "type": "string"
          }
        },
        "required": [
          "subdomain",
          "full_domain",
          "parent_domain",
          "document_root"
        ],
        "title": "SubdomainResponse",
        "type": "object"
      },
      "SubdomainUpdate": {
        "properties": {
          "document_root": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Document Root"
          },
          "php_version": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Php Version"
          },
          "subdomain": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Subdomain"
          }
        },
        "title": "SubdomainUpdate",
        "type": "object"
      },
      "SuspendRequest": {
        "properties": {
          "reason": {
            "anyOf": [
              {
                "maxLength": 500,
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Reason"
          }
        },
        "title": "SuspendRequest",
        "type": "object"
      },
      "SystemIPCreate": {
        "properties": {
          "interface": {
            "anyOf": [
              {
                "maxLength": 32,
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Interface"
          },
          "ip": {
            "maxLength": 45,
            "minLength": 7,
            "title": "Ip",
            "type": "string"
          },
          "netmask": {
            "default": "255.255.255.0",
            "maxLength": 45,
            "title": "Netmask",
            "type": "string"
          },
          "type": {
            "default": "shared",
            "enum": [
              "shared",
              "dedicated"
            ],
            "title": "Type",
            "type": "string"
          }
        },
        "required": [
          "ip"
        ],
        "title": "SystemIPCreate",
        "type": "object"
      },
      "SystemIPResponse": {
        "properties": {
          "account_count": {
            "default": 0,
            "title": "Account Count",
            "type": "integer"
          },
          "accounts": {
            "items": {
              "type": "string"
            },
            "title": "Accounts",
            "type": "array"
          },
          "bound": {
            "default": true,
            "title": "Bound",
            "type": "boolean"
          },
          "cidr": {
            "default": 24,
            "title": "Cidr",
            "type": "integer"
          },
          "interface": {
            "default": "",
            "title": "Interface",
            "type": "string"
          },
          "ip": {
            "title": "Ip",
            "type": "string"
          },
          "is_primary": {
            "default": false,
            "title": "Is Primary",
            "type": "boolean"
          },
          "netmask": {
            "default": "",
            "title": "Netmask",
            "type": "string"
          },
          "type": {
            "default": "shared",
            "enum": [
              "shared",
              "dedicated"
            ],
            "title": "Type",
            "type": "string"
          }
        },
        "required": [
          "ip"
        ],
        "title": "SystemIPResponse",
        "type": "object"
      },
      "SystemIPUpdate": {
        "properties": {
          "type": {
            "enum": [
              "shared",
              "dedicated"
            ],
            "title": "Type",
            "type": "string"
          }
        },
        "required": [
          "type"
        ],
        "title": "SystemIPUpdate",
        "type": "object"
      },
      "SystemLog": {
        "properties": {
          "exists": {
            "description": "Whether the log file currently exists",
            "title": "Exists",
            "type": "boolean"
          },
          "id": {
            "description": "Unique identifier for the system log",
            "title": "Id",
            "type": "string"
          },
          "name": {
            "description": "Human-readable display name",
            "title": "Name",
            "type": "string"
          },
          "path": {
            "description": "Absolute path on the server",
            "title": "Path",
            "type": "string"
          },
          "size_bytes": {
            "description": "File size in bytes; 0 if not exists",
            "minimum": 0.0,
            "title": "Size Bytes",
            "type": "integer"
          }
        },
        "required": [
          "id",
          "name",
          "path",
          "exists",
          "size_bytes"
        ],
        "title": "SystemLog",
        "type": "object"
      },
      "SystemLogContent": {
        "properties": {
          "content": {
            "items": {
              "type": "string"
            },
            "title": "Content",
            "type": "array"
          },
          "id": {
            "title": "Id",
            "type": "string"
          },
          "lines": {
            "minimum": 0.0,
            "title": "Lines",
            "type": "integer"
          },
          "name": {
            "title": "Name",
            "type": "string"
          },
          "path": {
            "title": "Path",
            "type": "string"
          }
        },
        "required": [
          "id",
          "name",
          "path",
          "lines",
          "content"
        ],
        "title": "SystemLogContent",
        "type": "object"
      },
      "SystemLogContentResponse": {
        "properties": {
          "data": {
            "$ref": "#/components/schemas/SystemLogContent"
          },
          "status": {
            "const": "success",
            "title": "Status",
            "type": "string"
          }
        },
        "required": [
          "status",
          "data"
        ],
        "title": "SystemLogContentResponse",
        "type": "object"
      },
      "SystemLogsListResponse": {
        "properties": {
          "data": {
            "items": {
              "$ref": "#/components/schemas/SystemLog"
            },
            "title": "Data",
            "type": "array"
          },
          "status": {
            "const": "success",
            "title": "Status",
            "type": "string"
          }
        },
        "required": [
          "status",
          "data"
        ],
        "title": "SystemLogsListResponse",
        "type": "object"
      },
      "TwoFADisableRequest": {
        "properties": {
          "password": {
            "minLength": 1,
            "title": "Password",
            "type": "string"
          }
        },
        "required": [
          "password"
        ],
        "title": "TwoFADisableRequest",
        "type": "object"
      },
      "TwoFAEnableRequest": {
        "properties": {
          "code": {
            "maxLength": 6,
            "minLength": 6,
            "pattern": "^\\d{6}$",
            "title": "Code",
            "type": "string"
          }
        },
        "required": [
          "code"
        ],
        "title": "TwoFAEnableRequest",
        "type": "object"
      },
      "TwoFASetupRequest": {
        "properties": {
          "method": {
            "default": "totp",
            "pattern": "^(totp|email)$",
            "title": "Method",
            "type": "string"
          }
        },
        "title": "TwoFASetupRequest",
        "type": "object"
      },
      "TwoFASetupResponse": {
        "properties": {
          "masked_email": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Masked Email"
          },
          "method": {
            "default": "totp",
            "title": "Method",
            "type": "string"
          },
          "otpauth_uri": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Otpauth Uri"
          },
          "secret": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Secret"
          }
        },
        "title": "TwoFASetupResponse",
        "type": "object"
      },
      "TwoFactorRequest": {
        "properties": {
          "code": {
            "title": "Code",
            "type": "string"
          }
        },
        "required": [
          "code"
        ],
        "title": "TwoFactorRequest",
        "type": "object"
      },
      "UpdateCheckResult": {
        "description": "Returned by GET /system/update/check.",
        "properties": {
          "beta_denied": {
            "default": false,
            "title": "Beta Denied",
            "type": "boolean"
          },
          "changelog": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Changelog"
          },
          "channel": {
            "title": "Channel",
            "type": "string"
          },
          "current_version": {
            "title": "Current Version",
            "type": "string"
          },
          "error": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Error"
          },
          "is_mandatory": {
            "default": false,
            "title": "Is Mandatory",
            "type": "boolean"
          },
          "last_checked": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Last Checked"
          },
          "latest_version": {
            "title": "Latest Version",
            "type": "string"
          },
          "min_version": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Min Version"
          },
          "requires_restart": {
            "default": true,
            "title": "Requires Restart",
            "type": "boolean"
          },
          "size_bytes": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Size Bytes"
          },
          "update_available": {
            "title": "Update Available",
            "type": "boolean"
          }
        },
        "required": [
          "current_version",
          "latest_version",
          "update_available",
          "channel"
        ],
        "title": "UpdateCheckResult",
        "type": "object"
      },
      "UpdateHistoryEntry": {
        "description": "Single record in /var/whost/update_history.json.",
        "properties": {
          "backup_path": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Backup Path"
          },
          "completed_at": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Completed At"
          },
          "error_message": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Error Message"
          },
          "from_version": {
            "title": "From Version",
            "type": "string"
          },
          "id": {
            "title": "Id",
            "type": "string"
          },
          "recipes_delivered": {
            "items": {
              "type": "string"
            },
            "title": "Recipes Delivered",
            "type": "array"
          },
          "started_at": {
            "title": "Started At",
            "type": "string"
          },
          "status": {
            "enum": [
              "completed",
              "failed",
              "rolled_back"
            ],
            "title": "Status",
            "type": "string"
          },
          "to_version": {
            "title": "To Version",
            "type": "string"
          },
          "type": {
            "enum": [
              "manual",
              "automatic"
            ],
            "title": "Type",
            "type": "string"
          }
        },
        "required": [
          "id",
          "from_version",
          "to_version",
          "started_at",
          "status",
          "type"
        ],
        "title": "UpdateHistoryEntry",
        "type": "object"
      },
      "UpdateSettings": {
        "description": "Persisted in /etc/whost/update_settings.json (the only source the\nagent reads; agent.conf carries no update block).\n\nDefaults follow the cPanel / Windows Update friendly-out-of-the-box model:\nfresh installs auto-apply vendor-flagged critical security updates so the\npanel stays patched without admin intervention. Compliance-strict\ndeployments can disable any of these toggles in the Settings tab.",
        "properties": {
          "allow_vendor_critical_override": {
            "default": true,
            "title": "Allow Vendor Critical Override",
            "type": "boolean"
          },
          "auto_update": {
            "default": true,
            "title": "Auto Update",
            "type": "boolean"
          },
          "auto_update_type": {
            "default": "security",
            "enum": [
              "all",
              "patch",
              "minor",
              "security"
            ],
            "title": "Auto Update Type",
            "type": "string"
          },
          "backup_before_update": {
            "default": true,
            "title": "Backup Before Update",
            "type": "boolean"
          },
          "channel": {
            "default": "stable",
            "enum": [
              "stable",
              "beta"
            ],
            "title": "Channel",
            "type": "string"
          },
          "notify_available": {
            "default": true,
            "title": "Notify Available",
            "type": "boolean"
          },
          "notify_installed": {
            "default": true,
            "title": "Notify Installed",
            "type": "boolean"
          },
          "os_packages_check_enabled": {
            "default": true,
            "title": "Os Packages Check Enabled",
            "type": "boolean"
          },
          "os_packages_notify_security": {
            "default": true,
            "title": "Os Packages Notify Security",
            "type": "boolean"
          }
        },
        "title": "UpdateSettings",
        "type": "object"
      },
      "UpdateSettingsUpdate": {
        "additionalProperties": false,
        "description": "Partial settings change. A switch is a JSON boolean (a string such as\n\"yes\" is refused, not coerced) and a field the model does not know is\nrefused rather than dropped, so a misspelt key never saves as a no-op.",
        "properties": {
          "allow_vendor_critical_override": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "title": "Allow Vendor Critical Override"
          },
          "auto_update": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "title": "Auto Update"
          },
          "auto_update_type": {
            "anyOf": [
              {
                "enum": [
                  "all",
                  "patch",
                  "minor",
                  "security"
                ],
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Auto Update Type"
          },
          "backup_before_update": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "title": "Backup Before Update"
          },
          "channel": {
            "anyOf": [
              {
                "enum": [
                  "stable",
                  "beta"
                ],
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Channel"
          },
          "notify_available": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "title": "Notify Available"
          },
          "notify_installed": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "title": "Notify Installed"
          },
          "os_packages_check_enabled": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "title": "Os Packages Check Enabled"
          },
          "os_packages_notify_security": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "title": "Os Packages Notify Security"
          }
        },
        "title": "UpdateSettingsUpdate",
        "type": "object"
      },
      "UpdateStatus": {
        "description": "Returned by GET /system/update/status (and SSE stream).",
        "properties": {
          "channel": {
            "default": "stable",
            "title": "Channel",
            "type": "string"
          },
          "completed_at": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Completed At"
          },
          "current_version": {
            "title": "Current Version",
            "type": "string"
          },
          "error": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Error"
          },
          "last_checked": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Last Checked"
          },
          "latest_version": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Latest Version"
          },
          "message": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Message"
          },
          "progress": {
            "default": 0,
            "maximum": 100.0,
            "minimum": 0.0,
            "title": "Progress",
            "type": "integer"
          },
          "stage": {
            "default": "idle",
            "enum": [
              "idle",
              "backup",
              "downloading",
              "verifying",
              "extracting",
              "migrating",
              "applying",
              "restarting",
              "health_check",
              "completed",
              "failed",
              "rolling_back",
              "rolled_back"
            ],
            "title": "Stage",
            "type": "string"
          },
          "started_at": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Started At"
          },
          "update_available": {
            "default": false,
            "title": "Update Available",
            "type": "boolean"
          }
        },
        "required": [
          "current_version"
        ],
        "title": "UpdateStatus",
        "type": "object"
      },
      "UserSpamSettingsUpdate": {
        "description": "Entries are sender addresses or domains (a domain covers its subdomains);\nthe service lower-cases, de-duplicates and caps each list at 100.",
        "properties": {
          "blacklist": {
            "items": {
              "type": "string"
            },
            "maxItems": 1000,
            "title": "Blacklist",
            "type": "array"
          },
          "spam_enabled": {
            "default": true,
            "title": "Spam Enabled",
            "type": "boolean"
          },
          "whitelist": {
            "items": {
              "type": "string"
            },
            "maxItems": 1000,
            "title": "Whitelist",
            "type": "array"
          }
        },
        "title": "UserSpamSettingsUpdate",
        "type": "object"
      },
      "ValidationError": {
        "properties": {
          "ctx": {
            "title": "Context",
            "type": "object"
          },
          "input": {
            "title": "Input"
          },
          "loc": {
            "items": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "integer"
                }
              ]
            },
            "title": "Location",
            "type": "array"
          },
          "msg": {
            "title": "Message",
            "type": "string"
          },
          "type": {
            "title": "Error Type",
            "type": "string"
          }
        },
        "required": [
          "loc",
          "msg",
          "type"
        ],
        "title": "ValidationError",
        "type": "object"
      },
      "VhostCustomConfigUpdate": {
        "properties": {
          "apache_config": {
            "anyOf": [
              {
                "maxLength": 65536,
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "Custom Apache directives injected into the VirtualHost block",
            "title": "Apache Config"
          },
          "nginx_config": {
            "anyOf": [
              {
                "maxLength": 65536,
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "Custom Nginx directives injected into the server block",
            "title": "Nginx Config"
          },
          "ols_config": {
            "anyOf": [
              {
                "maxLength": 65536,
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "Custom OLS directives injected into vhconf.conf",
            "title": "Ols Config"
          }
        },
        "title": "VhostCustomConfigUpdate",
        "type": "object"
      },
      "WafAccountStatus": {
        "properties": {
          "rule_exclusions": {
            "items": {
              "$ref": "#/components/schemas/WafRuleExclusionEntry"
            },
            "title": "Rule Exclusions",
            "type": "array"
          },
          "username": {
            "title": "Username",
            "type": "string"
          },
          "waf_enabled": {
            "title": "Waf Enabled",
            "type": "boolean"
          }
        },
        "required": [
          "username",
          "waf_enabled"
        ],
        "title": "WafAccountStatus",
        "type": "object"
      },
      "WafAuditLogEntry": {
        "properties": {
          "action": {
            "default": "",
            "title": "Action",
            "type": "string"
          },
          "client_ip": {
            "title": "Client Ip",
            "type": "string"
          },
          "host": {
            "default": "",
            "title": "Host",
            "type": "string"
          },
          "request_uri": {
            "title": "Request Uri",
            "type": "string"
          },
          "rule_id": {
            "default": 0,
            "title": "Rule Id",
            "type": "integer"
          },
          "rule_message": {
            "default": "",
            "title": "Rule Message",
            "type": "string"
          },
          "severity": {
            "default": "",
            "title": "Severity",
            "type": "string"
          },
          "timestamp": {
            "title": "Timestamp",
            "type": "string"
          }
        },
        "required": [
          "timestamp",
          "client_ip",
          "request_uri"
        ],
        "title": "WafAuditLogEntry",
        "type": "object"
      },
      "WafGlobalConfigUpdate": {
        "properties": {
          "audit_log": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "title": "Audit Log"
          },
          "crs_paranoia_level": {
            "anyOf": [
              {
                "maximum": 4.0,
                "minimum": 1.0,
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Crs Paranoia Level"
          },
          "engine_mode": {
            "anyOf": [
              {
                "pattern": "^(on|off|detection_only)$",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Engine Mode"
          }
        },
        "title": "WafGlobalConfigUpdate",
        "type": "object"
      },
      "WafGlobalStatus": {
        "properties": {
          "active": {
            "title": "Active",
            "type": "boolean"
          },
          "audit_log": {
            "default": false,
            "title": "Audit Log",
            "type": "boolean"
          },
          "crs_paranoia_level": {
            "default": 1,
            "title": "Crs Paranoia Level",
            "type": "integer"
          },
          "disabled_rules": {
            "default": 0,
            "title": "Disabled Rules",
            "type": "integer"
          },
          "engine_mode": {
            "default": "off",
            "title": "Engine Mode",
            "type": "string"
          },
          "installed": {
            "title": "Installed",
            "type": "boolean"
          },
          "owasp_crs": {
            "default": false,
            "title": "Owasp Crs",
            "type": "boolean"
          },
          "rules_loaded": {
            "default": false,
            "title": "Rules Loaded",
            "type": "boolean"
          },
          "total_rules": {
            "default": 0,
            "title": "Total Rules",
            "type": "integer"
          },
          "webserver": {
            "default": "",
            "title": "Webserver",
            "type": "string"
          },
          "webserver_supported": {
            "default": true,
            "title": "Webserver Supported",
            "type": "boolean"
          }
        },
        "required": [
          "installed",
          "active"
        ],
        "title": "WafGlobalStatus",
        "type": "object"
      },
      "WafRuleEntry": {
        "properties": {
          "description": {
            "default": "",
            "title": "Description",
            "type": "string"
          },
          "enabled": {
            "default": true,
            "title": "Enabled",
            "type": "boolean"
          },
          "file": {
            "default": "",
            "title": "File",
            "type": "string"
          },
          "rule_id": {
            "title": "Rule Id",
            "type": "integer"
          }
        },
        "required": [
          "rule_id"
        ],
        "title": "WafRuleEntry",
        "type": "object"
      },
      "WafRuleExclusionEntry": {
        "properties": {
          "description": {
            "default": "",
            "title": "Description",
            "type": "string"
          },
          "rule_id": {
            "title": "Rule Id",
            "type": "integer"
          },
          "uri": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Uri"
          }
        },
        "required": [
          "rule_id"
        ],
        "title": "WafRuleExclusionEntry",
        "type": "object"
      },
      "WafRuleExclusionRequest": {
        "properties": {
          "description": {
            "anyOf": [
              {
                "maxLength": 255,
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Description"
          },
          "rule_id": {
            "maximum": 999999.0,
            "minimum": 900000.0,
            "title": "Rule Id",
            "type": "integer"
          },
          "uri": {
            "anyOf": [
              {
                "maxLength": 512,
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Uri"
          }
        },
        "required": [
          "rule_id"
        ],
        "title": "WafRuleExclusionRequest",
        "type": "object"
      },
      "WafRuleToggleRequest": {
        "properties": {
          "enabled": {
            "title": "Enabled",
            "type": "boolean"
          }
        },
        "required": [
          "enabled"
        ],
        "title": "WafRuleToggleRequest",
        "type": "object"
      },
      "WafToggleRequest": {
        "properties": {
          "enabled": {
            "title": "Enabled",
            "type": "boolean"
          }
        },
        "required": [
          "enabled"
        ],
        "title": "WafToggleRequest",
        "type": "object"
      },
      "WebhookEndpointCreate": {
        "description": "Payload accepted by ``POST /system/webhooks``.",
        "properties": {
          "description": {
            "default": "",
            "title": "Description",
            "type": "string"
          },
          "enabled": {
            "default": true,
            "title": "Enabled",
            "type": "boolean"
          },
          "events": {
            "items": {
              "type": "string"
            },
            "title": "Events",
            "type": "array"
          },
          "secret": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Secret"
          },
          "url": {
            "title": "Url",
            "type": "string"
          }
        },
        "required": [
          "url"
        ],
        "title": "WebhookEndpointCreate",
        "type": "object"
      },
      "WebhookEndpointUpdate": {
        "description": "Partial update payload for ``PUT /system/webhooks/{id}``.",
        "properties": {
          "description": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Description"
          },
          "enabled": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "title": "Enabled"
          },
          "events": {
            "anyOf": [
              {
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Events"
          },
          "muted_until": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Muted Until"
          },
          "secret": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Secret"
          },
          "url": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Url"
          }
        },
        "title": "WebhookEndpointUpdate",
        "type": "object"
      },
      "WebmailSSORequest": {
        "description": "The address a webmail session is minted for.\n\nThe value ends up in the SSO payload the Roundcube plugin logs in with, so\nit is held to the same address shape as every other mailbox field.",
        "properties": {
          "email": {
            "maxLength": 254,
            "minLength": 3,
            "title": "Email",
            "type": "string"
          }
        },
        "required": [
          "email"
        ],
        "title": "WebmailSSORequest",
        "type": "object"
      },
      "WebmailUrlData": {
        "description": "Response data shape for the Roundcube SSO URL mint endpoint.",
        "properties": {
          "login_url": {
            "title": "Login Url",
            "type": "string"
          }
        },
        "required": [
          "login_url"
        ],
        "title": "WebmailUrlData",
        "type": "object"
      },
      "WhitelabelSettingsUpdate": {
        "properties": {
          "company_name": {
            "anyOf": [
              {
                "maxLength": 100,
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Company Name"
          },
          "enabled": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "title": "Enabled"
          },
          "hide_login_branding": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "title": "Hide Login Branding"
          },
          "nav_color": {
            "anyOf": [
              {
                "maxLength": 30,
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Nav Color"
          },
          "nav_color_dark": {
            "anyOf": [
              {
                "maxLength": 30,
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Nav Color Dark"
          },
          "primary_color": {
            "anyOf": [
              {
                "maxLength": 30,
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Primary Color"
          },
          "primary_color_dark": {
            "anyOf": [
              {
                "maxLength": 30,
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Primary Color Dark"
          },
          "secondary_color": {
            "anyOf": [
              {
                "maxLength": 30,
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Secondary Color"
          },
          "secondary_color_dark": {
            "anyOf": [
              {
                "maxLength": 30,
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Secondary Color Dark"
          }
        },
        "title": "WhitelabelSettingsUpdate",
        "type": "object"
      },
      "WhitelistAddRequest": {
        "properties": {
          "ip": {
            "title": "Ip",
            "type": "string"
          }
        },
        "required": [
          "ip"
        ],
        "title": "WhitelistAddRequest",
        "type": "object"
      },
      "WhitelistEntryResponse": {
        "properties": {
          "applied": {
            "default": true,
            "title": "Applied",
            "type": "boolean"
          },
          "comment": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Comment"
          },
          "ip": {
            "title": "Ip",
            "type": "string"
          }
        },
        "required": [
          "ip"
        ],
        "title": "WhitelistEntryResponse",
        "type": "object"
      },
      "WordlistCategory": {
        "enum": [
          "illegal",
          "adult",
          "gambling",
          "phishing",
          "malware",
          "trademark",
          "custom"
        ],
        "title": "WordlistCategory",
        "type": "string"
      },
      "WordlistCreate": {
        "properties": {
          "category": {
            "$ref": "#/components/schemas/WordlistCategory",
            "default": "custom"
          },
          "description": {
            "default": "",
            "maxLength": 500,
            "title": "Description",
            "type": "string"
          },
          "enabled": {
            "default": true,
            "title": "Enabled",
            "type": "boolean"
          },
          "name": {
            "maxLength": 100,
            "minLength": 1,
            "title": "Name",
            "type": "string"
          },
          "words": {
            "items": {
              "type": "string"
            },
            "title": "Words",
            "type": "array"
          }
        },
        "required": [
          "name"
        ],
        "title": "WordlistCreate",
        "type": "object"
      },
      "WordlistResponse": {
        "properties": {
          "built_in": {
            "default": false,
            "title": "Built In",
            "type": "boolean"
          },
          "category": {
            "default": "custom",
            "title": "Category",
            "type": "string"
          },
          "created_at": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Created At"
          },
          "description": {
            "default": "",
            "title": "Description",
            "type": "string"
          },
          "enabled": {
            "default": true,
            "title": "Enabled",
            "type": "boolean"
          },
          "id": {
            "title": "Id",
            "type": "string"
          },
          "name": {
            "title": "Name",
            "type": "string"
          },
          "updated_at": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Updated At"
          },
          "word_count": {
            "default": 0,
            "title": "Word Count",
            "type": "integer"
          },
          "words": {
            "items": {
              "type": "string"
            },
            "title": "Words",
            "type": "array"
          }
        },
        "required": [
          "id",
          "name"
        ],
        "title": "WordlistResponse",
        "type": "object"
      },
      "WordlistUpdate": {
        "properties": {
          "category": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/WordlistCategory"
              },
              {
                "type": "null"
              }
            ]
          },
          "description": {
            "anyOf": [
              {
                "maxLength": 500,
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Description"
          },
          "enabled": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "title": "Enabled"
          },
          "name": {
            "anyOf": [
              {
                "maxLength": 100,
                "minLength": 1,
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Name"
          },
          "words": {
            "anyOf": [
              {
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Words"
          }
        },
        "title": "WordlistUpdate",
        "type": "object"
      },
      "YandexAuthRequest": {
        "properties": {
          "client_id": {
            "title": "Client Id",
            "type": "string"
          },
          "client_secret": {
            "title": "Client Secret",
            "type": "string"
          },
          "redirect_uri": {
            "title": "Redirect Uri",
            "type": "string"
          }
        },
        "required": [
          "client_id",
          "client_secret",
          "redirect_uri"
        ],
        "title": "YandexAuthRequest",
        "type": "object"
      },
      "YandexExchangeRequest": {
        "properties": {
          "client_id": {
            "title": "Client Id",
            "type": "string"
          },
          "client_secret": {
            "title": "Client Secret",
            "type": "string"
          },
          "code": {
            "title": "Code",
            "type": "string"
          },
          "state": {
            "default": "",
            "title": "State",
            "type": "string"
          }
        },
        "required": [
          "code",
          "client_id",
          "client_secret"
        ],
        "title": "YandexExchangeRequest",
        "type": "object"
      },
      "_OAuthCredentials": {
        "properties": {
          "client_id": {
            "title": "Client Id",
            "type": "string"
          },
          "client_secret": {
            "title": "Client Secret",
            "type": "string"
          },
          "redirect_uri": {
            "title": "Redirect Uri",
            "type": "string"
          }
        },
        "required": [
          "client_id",
          "client_secret",
          "redirect_uri"
        ],
        "title": "_OAuthCredentials",
        "type": "object"
      },
      "_OAuthExchange": {
        "properties": {
          "client_id": {
            "title": "Client Id",
            "type": "string"
          },
          "client_secret": {
            "title": "Client Secret",
            "type": "string"
          },
          "code": {
            "title": "Code",
            "type": "string"
          },
          "redirect_uri": {
            "default": "",
            "title": "Redirect Uri",
            "type": "string"
          },
          "state": {
            "default": "",
            "title": "State",
            "type": "string"
          }
        },
        "required": [
          "code",
          "client_id",
          "client_secret"
        ],
        "title": "_OAuthExchange",
        "type": "object"
      },
      "whost_agent__models__account__PasswordChange": {
        "properties": {
          "password": {
            "description": "At least 8 characters and at most 72 bytes when UTF-8 encoded.",
            "title": "Password",
            "type": "string"
          }
        },
        "required": [
          "password"
        ],
        "title": "PasswordChange",
        "type": "object"
      },
      "whost_agent__models__node_app__EnvVarsUpdate": {
        "description": "Request body for replacing the environment variable set wholesale.",
        "properties": {
          "env_vars": {
            "additionalProperties": {
              "type": "string"
            },
            "title": "Env Vars",
            "type": "object"
          }
        },
        "required": [
          "env_vars"
        ],
        "title": "EnvVarsUpdate",
        "type": "object"
      },
      "whost_agent__models__profile__PasswordChange": {
        "properties": {
          "current_password": {
            "minLength": 1,
            "title": "Current Password",
            "type": "string"
          },
          "new_password": {
            "description": "At least 8 characters and at most 72 bytes when UTF-8 encoded.",
            "maxLength": 128,
            "minLength": 8,
            "title": "New Password",
            "type": "string"
          }
        },
        "required": [
          "current_password",
          "new_password"
        ],
        "title": "PasswordChange",
        "type": "object"
      },
      "whost_agent__models__python_app__EnvVarsUpdate": {
        "description": "Request body for updating environment variables.",
        "properties": {
          "env_vars": {
            "additionalProperties": {
              "type": "string"
            },
            "title": "Env Vars",
            "type": "object"
          }
        },
        "required": [
          "env_vars"
        ],
        "title": "EnvVarsUpdate",
        "type": "object"
      }
    }
  },
  "info": {
    "description": "WHost Agent REST API. Anonymous discovery is disabled — every endpoint requires HMAC-SHA256 or an admin session cookie. See docs/integration/versioning-policy.md for the v1 stability promise.",
    "title": "WHost Agent",
    "version": "0.1.0-beta.28"
  },
  "openapi": "3.1.0",
  "paths": {
    "/api/v1/accounts": {
      "get": {
        "description": "Paginated list of accounts with optional status / search / reseller-only filtering. Returns the standard `{status, data}` envelope where `data` is `{accounts, total, limit, offset}`.",
        "operationId": "list_accounts_api_v1_accounts_get",
        "parameters": [
          {
            "in": "query",
            "name": "limit",
            "required": false,
            "schema": {
              "default": 20,
              "maximum": 1000,
              "minimum": 1,
              "title": "Limit",
              "type": "integer"
            }
          },
          {
            "in": "query",
            "name": "offset",
            "required": false,
            "schema": {
              "default": 0,
              "minimum": 0,
              "title": "Offset",
              "type": "integer"
            }
          },
          {
            "in": "query",
            "name": "sort",
            "required": false,
            "schema": {
              "default": "created_at",
              "pattern": "^(created_at|username)$",
              "title": "Sort",
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "order",
            "required": false,
            "schema": {
              "default": "desc",
              "pattern": "^(asc|desc)$",
              "title": "Order",
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "status",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "pattern": "^(active|suspended|terminated)$",
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Status"
            }
          },
          {
            "in": "query",
            "name": "search",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "maxLength": 100,
                  "minLength": 2,
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Search"
            }
          },
          {
            "in": "query",
            "name": "is_reseller",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "boolean"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Is Reseller"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_PaginatedAccountsData_"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "List hosting accounts",
        "tags": [
          "accounts"
        ]
      },
      "post": {
        "description": "Provision a new account with the requested plan and primary domain. Returns the persisted account record on success.",
        "operationId": "create_account_api_v1_accounts_post",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/AccountCreate"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_AccountResponse_"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Create hosting account",
        "tags": [
          "accounts"
        ]
      }
    },
    "/api/v1/accounts/{username}": {
      "delete": {
        "description": "Permanently delete an account: removes home directory, Linux user, databases, FTP users, virtual hosts and metadata. Not reversible.",
        "operationId": "delete_account_api_v1_accounts__username__delete",
        "parameters": [
          {
            "in": "path",
            "name": "username",
            "required": true,
            "schema": {
              "title": "Username",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MessageResponse"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Terminate account",
        "tags": [
          "accounts"
        ]
      },
      "get": {
        "description": "Fetch a single account's full record.",
        "operationId": "get_account_api_v1_accounts__username__get",
        "parameters": [
          {
            "in": "path",
            "name": "username",
            "required": true,
            "schema": {
              "title": "Username",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_AccountResponse_"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Get account by username",
        "tags": [
          "accounts"
        ]
      },
      "put": {
        "description": "Partially update an account (only fields present in the body are mutated). May emit `warnings[]` for non-fatal advisories such as partial config rollback notices.",
        "operationId": "update_account_api_v1_accounts__username__put",
        "parameters": [
          {
            "in": "path",
            "name": "username",
            "required": true,
            "schema": {
              "title": "Username",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/AccountUpdate"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_AccountResponse_"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Update account",
        "tags": [
          "accounts"
        ]
      }
    },
    "/api/v1/accounts/{username}/addon-domains": {
      "get": {
        "description": "Returns every addon domain attached to the account.",
        "operationId": "list_addon_domains_api_v1_accounts__username__addon_domains_get",
        "parameters": [
          {
            "in": "path",
            "name": "username",
            "required": true,
            "schema": {
              "title": "Username",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_list_AddonDomainResponse__"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "List addon domains",
        "tags": [
          "domains"
        ]
      },
      "post": {
        "description": "Attach a new domain to the account: provisions a vhost, DNS zone, Apache/Nginx config and Pure-FTPd entries. Enforces the plan's `max_domains` cap. Refused 403 `ACCOUNT_SUSPENDED` while the account is suspended.",
        "operationId": "create_addon_domain_api_v1_accounts__username__addon_domains_post",
        "parameters": [
          {
            "in": "path",
            "name": "username",
            "required": true,
            "schema": {
              "title": "Username",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/AddonDomainCreate"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_AddonDomainResponse_"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Create addon domain",
        "tags": [
          "domains"
        ]
      }
    },
    "/api/v1/accounts/{username}/addon-domains/{domain}": {
      "delete": {
        "description": "Remove the addon domain with its vhost, DNS zone, certificate files, the subdomains under it and the parked domains pointing at it.",
        "operationId": "delete_addon_domain_api_v1_accounts__username__addon_domains__domain__delete",
        "parameters": [
          {
            "in": "path",
            "name": "username",
            "required": true,
            "schema": {
              "title": "Username",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "domain",
            "required": true,
            "schema": {
              "title": "Domain",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MessageResponse"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Delete addon domain",
        "tags": [
          "domains"
        ]
      }
    },
    "/api/v1/accounts/{username}/backups": {
      "get": {
        "description": "Returns every backup tarball recorded for this account, newest first.",
        "operationId": "list_backups_api_v1_accounts__username__backups_get",
        "parameters": [
          {
            "in": "path",
            "name": "username",
            "required": true,
            "schema": {
              "title": "Username",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_list_BackupResponse__"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "List account backups",
        "tags": [
          "backups"
        ]
      },
      "post": {
        "description": "Snapshot the account's files / databases / mailboxes into a tar.gz tarball. Optionally upload to a configured remote destination. Refused 409 `UPDATE_IN_PROGRESS` while an update is being installed: the update ends in a restart of the agent that would cut the backup.",
        "operationId": "create_backup_api_v1_accounts__username__backups_post",
        "parameters": [
          {
            "in": "path",
            "name": "username",
            "required": true,
            "schema": {
              "title": "Username",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/BackupCreate"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_BackupResponse_"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Create backup",
        "tags": [
          "backups"
        ]
      }
    },
    "/api/v1/accounts/{username}/backups/schedules": {
      "get": {
        "description": "Returns every recurring backup schedule for the account.",
        "operationId": "list_schedules_api_v1_accounts__username__backups_schedules_get",
        "parameters": [
          {
            "in": "path",
            "name": "username",
            "required": true,
            "schema": {
              "title": "Username",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_list_BackupScheduleResponse__"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "List backup schedules",
        "tags": [
          "backups"
        ]
      },
      "post": {
        "description": "Define a recurring backup (daily / weekly / monthly + time + retention count). Schedules run via the agent's internal cron loop, not the OS crontab.",
        "operationId": "create_schedule_api_v1_accounts__username__backups_schedules_post",
        "parameters": [
          {
            "in": "path",
            "name": "username",
            "required": true,
            "schema": {
              "title": "Username",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/BackupScheduleCreate"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_BackupScheduleResponse_"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Create backup schedule",
        "tags": [
          "backups"
        ]
      }
    },
    "/api/v1/accounts/{username}/backups/schedules/{schedule_id}": {
      "delete": {
        "description": "Remove a recurring backup definition. Existing tarballs are kept.",
        "operationId": "delete_schedule_api_v1_accounts__username__backups_schedules__schedule_id__delete",
        "parameters": [
          {
            "in": "path",
            "name": "username",
            "required": true,
            "schema": {
              "title": "Username",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "schedule_id",
            "required": true,
            "schema": {
              "title": "Schedule Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MessageResponse"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Delete backup schedule",
        "tags": [
          "backups"
        ]
      },
      "get": {
        "description": "Fetch one schedule by id.",
        "operationId": "get_schedule_api_v1_accounts__username__backups_schedules__schedule_id__get",
        "parameters": [
          {
            "in": "path",
            "name": "username",
            "required": true,
            "schema": {
              "title": "Username",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "schedule_id",
            "required": true,
            "schema": {
              "title": "Schedule Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_BackupScheduleResponse_"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Get backup schedule",
        "tags": [
          "backups"
        ]
      },
      "put": {
        "description": "Patch frequency / time / retention / enabled flag for an existing schedule.",
        "operationId": "update_schedule_api_v1_accounts__username__backups_schedules__schedule_id__put",
        "parameters": [
          {
            "in": "path",
            "name": "username",
            "required": true,
            "schema": {
              "title": "Username",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "schedule_id",
            "required": true,
            "schema": {
              "title": "Schedule Id",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/BackupScheduleUpdate"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_BackupScheduleResponse_"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Update backup schedule",
        "tags": [
          "backups"
        ]
      }
    },
    "/api/v1/accounts/{username}/backups/{backup_id}": {
      "delete": {
        "description": "Remove a backup tarball from disk and (if applicable) the remote destination.",
        "operationId": "delete_backup_api_v1_accounts__username__backups__backup_id__delete",
        "parameters": [
          {
            "in": "path",
            "name": "username",
            "required": true,
            "schema": {
              "title": "Username",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "backup_id",
            "required": true,
            "schema": {
              "title": "Backup Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MessageResponse"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Delete backup",
        "tags": [
          "backups"
        ]
      }
    },
    "/api/v1/accounts/{username}/backups/{backup_id}/download": {
      "get": {
        "description": "Streams the tar.gz file. Binary response — no JSON envelope.",
        "operationId": "download_backup_api_v1_accounts__username__backups__backup_id__download_get",
        "parameters": [
          {
            "in": "path",
            "name": "username",
            "required": true,
            "schema": {
              "title": "Username",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "backup_id",
            "required": true,
            "schema": {
              "title": "Backup Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Download backup tarball",
        "tags": [
          "backups"
        ]
      }
    },
    "/api/v1/accounts/{username}/backups/{backup_id}/restore": {
      "post": {
        "description": "Restore account files / databases / mailboxes from the given backup tarball. Overwrites current state — destructive. Refused 409 `UPDATE_IN_PROGRESS` while an update is being installed: the update ends in a restart of the agent that would cut the restore.",
        "operationId": "restore_backup_api_v1_accounts__username__backups__backup_id__restore_post",
        "parameters": [
          {
            "in": "path",
            "name": "username",
            "required": true,
            "schema": {
              "title": "Username",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "backup_id",
            "required": true,
            "schema": {
              "title": "Backup Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MessageResponse"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Restore backup",
        "tags": [
          "backups"
        ]
      }
    },
    "/api/v1/accounts/{username}/change-package": {
      "post": {
        "description": "Move an account onto a different plan. Idempotent: changing to the same plan is a no-op (no 422). Returns old vs new package limits + the list of changes applied.",
        "operationId": "change_package_api_v1_accounts__username__change_package_post",
        "parameters": [
          {
            "in": "path",
            "name": "username",
            "required": true,
            "schema": {
              "title": "Username",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PackageChangeRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_PackageChangeResponse_"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Change account plan",
        "tags": [
          "accounts"
        ]
      }
    },
    "/api/v1/accounts/{username}/cron": {
      "get": {
        "description": "Returns every cron job defined for the account.",
        "operationId": "list_cron_jobs_api_v1_accounts__username__cron_get",
        "parameters": [
          {
            "in": "path",
            "name": "username",
            "required": true,
            "schema": {
              "title": "Username",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_list_CronResponse__"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "List cron jobs",
        "tags": [
          "cron"
        ]
      },
      "post": {
        "description": "Define a new cron entry under the account's crontab.",
        "operationId": "create_cron_job_api_v1_accounts__username__cron_post",
        "parameters": [
          {
            "in": "path",
            "name": "username",
            "required": true,
            "schema": {
              "title": "Username",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CronCreate"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_CronResponse_"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Create cron job",
        "tags": [
          "cron"
        ]
      }
    },
    "/api/v1/accounts/{username}/cron/{cron_id}": {
      "delete": {
        "description": "Remove a cron entry by id.",
        "operationId": "delete_cron_job_api_v1_accounts__username__cron__cron_id__delete",
        "parameters": [
          {
            "in": "path",
            "name": "username",
            "required": true,
            "schema": {
              "title": "Username",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "cron_id",
            "required": true,
            "schema": {
              "title": "Cron Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MessageResponse"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Delete cron job",
        "tags": [
          "cron"
        ]
      },
      "put": {
        "description": "Patch the schedule / command / enabled flag of an existing cron entry.",
        "operationId": "update_cron_job_api_v1_accounts__username__cron__cron_id__put",
        "parameters": [
          {
            "in": "path",
            "name": "username",
            "required": true,
            "schema": {
              "title": "Username",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "cron_id",
            "required": true,
            "schema": {
              "title": "Cron Id",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CronUpdate"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_CronResponse_"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Update cron job",
        "tags": [
          "cron"
        ]
      }
    },
    "/api/v1/accounts/{username}/cron/{cron_id}/run": {
      "post": {
        "description": "Execute the cron command immediately. Response data is the exec result (exit_code, success, stdout/stderr).",
        "operationId": "run_cron_job_api_v1_accounts__username__cron__cron_id__run_post",
        "parameters": [
          {
            "in": "path",
            "name": "username",
            "required": true,
            "schema": {
              "title": "Username",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "cron_id",
            "required": true,
            "schema": {
              "title": "Cron Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_dict_str__Any__"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Run cron job manually",
        "tags": [
          "cron"
        ]
      }
    },
    "/api/v1/accounts/{username}/databases": {
      "get": {
        "description": "Returns every database owned by the given account.",
        "operationId": "list_databases_api_v1_accounts__username__databases_get",
        "parameters": [
          {
            "in": "path",
            "name": "username",
            "required": true,
            "schema": {
              "title": "Username",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_list_DatabaseResponse__"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "List databases for an account",
        "tags": [
          "databases"
        ]
      },
      "post": {
        "description": "Create a new MariaDB database for the account, auto-prefixed with `{username}_`. Enforces the plan's `max_databases` cap.",
        "operationId": "create_database_api_v1_accounts__username__databases_post",
        "parameters": [
          {
            "in": "path",
            "name": "username",
            "required": true,
            "schema": {
              "title": "Username",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/DatabaseCreate"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_DatabaseResponse_"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Create database",
        "tags": [
          "databases"
        ]
      }
    },
    "/api/v1/accounts/{username}/databases/{db_name}": {
      "delete": {
        "description": "Drop the database and remove its user/grant entries.",
        "operationId": "delete_database_api_v1_accounts__username__databases__db_name__delete",
        "parameters": [
          {
            "in": "path",
            "name": "username",
            "required": true,
            "schema": {
              "title": "Username",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "db_name",
            "required": true,
            "schema": {
              "title": "Db Name",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MessageResponse"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Delete database",
        "tags": [
          "databases"
        ]
      }
    },
    "/api/v1/accounts/{username}/databases/{db_name}/phpmyadmin-url": {
      "get": {
        "description": "Returns a short-lived SSO login URL for the panel's embedded phpMyAdmin. Returns a 200 with `error_code=PMA_NOT_INSTALLED` when phpMyAdmin is not present — handle both shapes client-side.",
        "operationId": "get_phpmyadmin_url_api_v1_accounts__username__databases__db_name__phpmyadmin_url_get",
        "parameters": [
          {
            "in": "path",
            "name": "username",
            "required": true,
            "schema": {
              "title": "Username",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "db_name",
            "required": true,
            "schema": {
              "title": "Db Name",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": true,
                  "title": "Response Get Phpmyadmin Url Api V1 Accounts  Username  Databases  Db Name  Phpmyadmin Url Get",
                  "type": "object"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Mint phpMyAdmin SSO URL",
        "tags": [
          "databases"
        ]
      }
    },
    "/api/v1/accounts/{username}/databases/{db_name}/remote-hosts": {
      "get": {
        "description": "Returns the IPs / patterns currently allowed to connect to this database.",
        "operationId": "list_remote_hosts_api_v1_accounts__username__databases__db_name__remote_hosts_get",
        "parameters": [
          {
            "in": "path",
            "name": "username",
            "required": true,
            "schema": {
              "title": "Username",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "db_name",
            "required": true,
            "schema": {
              "title": "Db Name",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_list_RemoteHostResponse__"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "List remote hosts",
        "tags": [
          "databases"
        ]
      },
      "post": {
        "description": "Whitelist a host/IP pattern for remote database access.",
        "operationId": "add_remote_host_api_v1_accounts__username__databases__db_name__remote_hosts_post",
        "parameters": [
          {
            "in": "path",
            "name": "username",
            "required": true,
            "schema": {
              "title": "Username",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "db_name",
            "required": true,
            "schema": {
              "title": "Db Name",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/RemoteHostCreate"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_RemoteHostResponse_"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Add remote host",
        "tags": [
          "databases"
        ]
      }
    },
    "/api/v1/accounts/{username}/databases/{db_name}/remote-hosts/{host}": {
      "delete": {
        "description": "Revoke remote access for the given host pattern.",
        "operationId": "remove_remote_host_api_v1_accounts__username__databases__db_name__remote_hosts__host__delete",
        "parameters": [
          {
            "in": "path",
            "name": "username",
            "required": true,
            "schema": {
              "title": "Username",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "db_name",
            "required": true,
            "schema": {
              "title": "Db Name",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "host",
            "required": true,
            "schema": {
              "title": "Host",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MessageResponse"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Remove remote host",
        "tags": [
          "databases"
        ]
      }
    },
    "/api/v1/accounts/{username}/databases/{db_name}/users": {
      "post": {
        "description": "Create a new MariaDB user and grant it access to this database.",
        "operationId": "create_database_user_api_v1_accounts__username__databases__db_name__users_post",
        "parameters": [
          {
            "in": "path",
            "name": "username",
            "required": true,
            "schema": {
              "title": "Username",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "db_name",
            "required": true,
            "schema": {
              "title": "Db Name",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/DatabaseUserCreate"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_DatabaseUserResponse_"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Create database user",
        "tags": [
          "databases"
        ]
      }
    },
    "/api/v1/accounts/{username}/databases/{db_name}/users/{db_user}": {
      "delete": {
        "description": "Revoke + drop the MariaDB user.",
        "operationId": "delete_database_user_api_v1_accounts__username__databases__db_name__users__db_user__delete",
        "parameters": [
          {
            "in": "path",
            "name": "username",
            "required": true,
            "schema": {
              "title": "Username",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "db_name",
            "required": true,
            "schema": {
              "title": "Db Name",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "db_user",
            "required": true,
            "schema": {
              "title": "Db User",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MessageResponse"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Delete database user",
        "tags": [
          "databases"
        ]
      },
      "put": {
        "description": "Currently only rotates the MariaDB password for an existing user.",
        "operationId": "update_database_user_api_v1_accounts__username__databases__db_name__users__db_user__put",
        "parameters": [
          {
            "in": "path",
            "name": "username",
            "required": true,
            "schema": {
              "title": "Username",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "db_name",
            "required": true,
            "schema": {
              "title": "Db Name",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "db_user",
            "required": true,
            "schema": {
              "title": "Db User",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/DatabaseUserUpdate"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MessageResponse"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Update database user (password reset)",
        "tags": [
          "databases"
        ]
      }
    },
    "/api/v1/accounts/{username}/databases/{db_name}/users/{db_user}/grants": {
      "delete": {
        "description": "Removes the user's privileges on this database only. The user keeps its grants on other databases and is dropped when none remain.",
        "operationId": "revoke_database_user_api_v1_accounts__username__databases__db_name__users__db_user__grants_delete",
        "parameters": [
          {
            "in": "path",
            "name": "username",
            "required": true,
            "schema": {
              "title": "Username",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "db_name",
            "required": true,
            "schema": {
              "title": "Db Name",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "db_user",
            "required": true,
            "schema": {
              "title": "Db User",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MessageResponse"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Revoke a user's access to this database",
        "tags": [
          "databases"
        ]
      },
      "post": {
        "description": "Used by the panel's 'Assign User' flow when the user already exists on a different DB — issues a GRANT only (no CREATE USER).",
        "operationId": "grant_database_user_api_v1_accounts__username__databases__db_name__users__db_user__grants_post",
        "parameters": [
          {
            "in": "path",
            "name": "username",
            "required": true,
            "schema": {
              "title": "Username",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "db_name",
            "required": true,
            "schema": {
              "title": "Db Name",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "db_user",
            "required": true,
            "schema": {
              "title": "Db User",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/DatabaseUserGrant"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_DatabaseUserResponse_"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Grant existing user access to another database",
        "tags": [
          "databases"
        ]
      }
    },
    "/api/v1/accounts/{username}/dns/{domain}": {
      "get": {
        "description": "Returns the full DNS zone including all records for an owned domain.",
        "operationId": "get_zone_api_v1_accounts__username__dns__domain__get",
        "parameters": [
          {
            "in": "path",
            "name": "username",
            "required": true,
            "schema": {
              "title": "Username",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "domain",
            "required": true,
            "schema": {
              "title": "Domain",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_DNSZoneResponse_"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Get DNS zone for a domain",
        "tags": [
          "dns"
        ]
      }
    },
    "/api/v1/accounts/{username}/dns/{domain}/dnssec": {
      "get": {
        "description": "Returns whether DNSSEC is active and the public DS / DNSKEY material.",
        "operationId": "get_dnssec_status_api_v1_accounts__username__dns__domain__dnssec_get",
        "parameters": [
          {
            "in": "path",
            "name": "username",
            "required": true,
            "schema": {
              "title": "Username",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "domain",
            "required": true,
            "schema": {
              "title": "Domain",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_DNSSECStatusResponse_"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Get DNSSEC status",
        "tags": [
          "dns"
        ]
      }
    },
    "/api/v1/accounts/{username}/dns/{domain}/dnssec/disable": {
      "post": {
        "description": "Remove the signing keys and revert the zone to unsigned.",
        "operationId": "disable_dnssec_api_v1_accounts__username__dns__domain__dnssec_disable_post",
        "parameters": [
          {
            "in": "path",
            "name": "username",
            "required": true,
            "schema": {
              "title": "Username",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "domain",
            "required": true,
            "schema": {
              "title": "Domain",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_DNSSECStatusResponse_"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Disable DNSSEC",
        "tags": [
          "dns"
        ]
      }
    },
    "/api/v1/accounts/{username}/dns/{domain}/dnssec/enable": {
      "post": {
        "description": "Generate a KSK + ZSK with ECDSA-P256-SHA256 and activate signing.",
        "operationId": "enable_dnssec_api_v1_accounts__username__dns__domain__dnssec_enable_post",
        "parameters": [
          {
            "in": "path",
            "name": "username",
            "required": true,
            "schema": {
              "title": "Username",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "domain",
            "required": true,
            "schema": {
              "title": "Domain",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_DNSSECStatusResponse_"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Enable DNSSEC",
        "tags": [
          "dns"
        ]
      }
    },
    "/api/v1/accounts/{username}/dns/{domain}/records": {
      "post": {
        "description": "Insert a new A / AAAA / CNAME / MX / TXT / SRV / CAA record.",
        "operationId": "add_record_api_v1_accounts__username__dns__domain__records_post",
        "parameters": [
          {
            "in": "path",
            "name": "username",
            "required": true,
            "schema": {
              "title": "Username",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "domain",
            "required": true,
            "schema": {
              "title": "Domain",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/DNSRecordCreate"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_DNSRecordResponse_"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Add DNS record",
        "tags": [
          "dns"
        ]
      }
    },
    "/api/v1/accounts/{username}/dns/{domain}/records/{record_id}": {
      "delete": {
        "description": "Remove a record by id. Returns a confirmation message only.",
        "operationId": "delete_record_api_v1_accounts__username__dns__domain__records__record_id__delete",
        "parameters": [
          {
            "in": "path",
            "name": "username",
            "required": true,
            "schema": {
              "title": "Username",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "domain",
            "required": true,
            "schema": {
              "title": "Domain",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "record_id",
            "required": true,
            "schema": {
              "title": "Record Id",
              "type": "integer"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MessageResponse"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Delete DNS record",
        "tags": [
          "dns"
        ]
      },
      "put": {
        "description": "Modify content / TTL / priority for an existing record id.",
        "operationId": "update_record_api_v1_accounts__username__dns__domain__records__record_id__put",
        "parameters": [
          {
            "in": "path",
            "name": "username",
            "required": true,
            "schema": {
              "title": "Username",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "domain",
            "required": true,
            "schema": {
              "title": "Domain",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "record_id",
            "required": true,
            "schema": {
              "title": "Record Id",
              "type": "integer"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/DNSRecordUpdate"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_DNSRecordResponse_"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Update DNS record",
        "tags": [
          "dns"
        ]
      }
    },
    "/api/v1/accounts/{username}/dns/{domain}/zone": {
      "post": {
        "description": "Idempotent: re-runs on a provisioned zone return the existing records. A zone created here is signed with DNSSEC like a zone created with the account; its mail records follow the account's `setup_mail_dns` switch. Used by the panel's 'Create Zone' CTA when a 404 `DNS_ZONE_NOT_FOUND` is detected (e.g. migration imports).",
        "operationId": "create_zone_api_v1_accounts__username__dns__domain__zone_post",
        "parameters": [
          {
            "in": "path",
            "name": "username",
            "required": true,
            "schema": {
              "title": "Username",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "domain",
            "required": true,
            "schema": {
              "title": "Domain",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_DNSZoneResponse_"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Create / bootstrap DNS zone for a domain",
        "tags": [
          "dns"
        ]
      }
    },
    "/api/v1/accounts/{username}/domains": {
      "get": {
        "description": "Returns primary, addon, subdomain and parked domains in a unified shape.",
        "operationId": "list_domains_api_v1_accounts__username__domains_get",
        "parameters": [
          {
            "in": "path",
            "name": "username",
            "required": true,
            "schema": {
              "title": "Username",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_list_DomainResponse__"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "List every domain on an account",
        "tags": [
          "domains"
        ]
      }
    },
    "/api/v1/accounts/{username}/domains/{domain}/php/config": {
      "delete": {
        "description": "Removes the domain-scope overrides — the domain reverts to account-level PHP settings.",
        "operationId": "reset_domain_php_config_api_v1_accounts__username__domains__domain__php_config_delete",
        "parameters": [
          {
            "in": "path",
            "name": "username",
            "required": true,
            "schema": {
              "title": "Username",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "domain",
            "required": true,
            "schema": {
              "title": "Domain",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_DomainPHPConfigResponse_"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Reset domain PHP overrides to account defaults",
        "tags": [
          "php"
        ]
      },
      "get": {
        "description": "Returns the `php.ini` overrides applied to this single domain.",
        "operationId": "get_domain_php_config_api_v1_accounts__username__domains__domain__php_config_get",
        "parameters": [
          {
            "in": "path",
            "name": "username",
            "required": true,
            "schema": {
              "title": "Username",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "domain",
            "required": true,
            "schema": {
              "title": "Domain",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_DomainPHPConfigResponse_"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Get domain-scope PHP ini overrides",
        "tags": [
          "php"
        ]
      },
      "put": {
        "description": "Patch the per-domain `php.ini` overrides — only present fields are touched.",
        "operationId": "update_domain_php_config_api_v1_accounts__username__domains__domain__php_config_put",
        "parameters": [
          {
            "in": "path",
            "name": "username",
            "required": true,
            "schema": {
              "title": "Username",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "domain",
            "required": true,
            "schema": {
              "title": "Domain",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/DomainPHPConfigUpdate"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_DomainPHPConfigResponse_"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Update domain-scope PHP ini overrides",
        "tags": [
          "php"
        ]
      }
    },
    "/api/v1/accounts/{username}/domains/{domain}/php/version": {
      "put": {
        "description": "Override the account-level PHP version for one specific domain.",
        "operationId": "change_domain_php_version_api_v1_accounts__username__domains__domain__php_version_put",
        "parameters": [
          {
            "in": "path",
            "name": "username",
            "required": true,
            "schema": {
              "title": "Username",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "domain",
            "required": true,
            "schema": {
              "title": "Domain",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/DomainVersionChange"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_PHPDomainVersionData_"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Change PHP version for a single domain",
        "tags": [
          "php"
        ]
      }
    },
    "/api/v1/accounts/{username}/domains/{domain}/vhost-config": {
      "delete": {
        "operationId": "delete_vhost_config_api_v1_accounts__username__domains__domain__vhost_config_delete",
        "parameters": [
          {
            "in": "path",
            "name": "username",
            "required": true,
            "schema": {
              "title": "Username",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "domain",
            "required": true,
            "schema": {
              "title": "Domain",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": true,
                  "title": "Response Delete Vhost Config Api V1 Accounts  Username  Domains  Domain  Vhost Config Delete",
                  "type": "object"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Delete Vhost Config",
        "tags": [
          "vhost-config"
        ]
      },
      "get": {
        "operationId": "get_vhost_config_api_v1_accounts__username__domains__domain__vhost_config_get",
        "parameters": [
          {
            "in": "path",
            "name": "username",
            "required": true,
            "schema": {
              "title": "Username",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "domain",
            "required": true,
            "schema": {
              "title": "Domain",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": true,
                  "title": "Response Get Vhost Config Api V1 Accounts  Username  Domains  Domain  Vhost Config Get",
                  "type": "object"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Get Vhost Config",
        "tags": [
          "vhost-config"
        ]
      },
      "put": {
        "operationId": "update_vhost_config_api_v1_accounts__username__domains__domain__vhost_config_put",
        "parameters": [
          {
            "in": "path",
            "name": "username",
            "required": true,
            "schema": {
              "title": "Username",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "domain",
            "required": true,
            "schema": {
              "title": "Domain",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/VhostCustomConfigUpdate"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": true,
                  "title": "Response Update Vhost Config Api V1 Accounts  Username  Domains  Domain  Vhost Config Put",
                  "type": "object"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Update Vhost Config",
        "tags": [
          "vhost-config"
        ]
      }
    },
    "/api/v1/accounts/{username}/emails": {
      "get": {
        "description": "Returns every mailbox owned by the given hosting account.",
        "operationId": "list_emails_api_v1_accounts__username__emails_get",
        "parameters": [
          {
            "in": "path",
            "name": "username",
            "required": true,
            "schema": {
              "title": "Username",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_list_EmailResponse__"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "List email accounts",
        "tags": [
          "emails"
        ]
      },
      "post": {
        "description": "Provision a new mailbox. The local-part is derived from `address`; the domain must already be registered to this hosting account.",
        "operationId": "create_email_api_v1_accounts__username__emails_post",
        "parameters": [
          {
            "in": "path",
            "name": "username",
            "required": true,
            "schema": {
              "title": "Username",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/EmailCreate"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_EmailResponse_"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Create email account",
        "tags": [
          "emails"
        ]
      }
    },
    "/api/v1/accounts/{username}/emails/{email}": {
      "delete": {
        "description": "Remove the mailbox row and permanently delete its maildir contents. This cannot be undone.",
        "operationId": "delete_email_api_v1_accounts__username__emails__email__delete",
        "parameters": [
          {
            "in": "path",
            "name": "username",
            "required": true,
            "schema": {
              "title": "Username",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "email",
            "required": true,
            "schema": {
              "title": "Email",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MessageResponse"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Delete email account",
        "tags": [
          "emails"
        ]
      },
      "put": {
        "description": "Patch the mailbox quota or active flag.",
        "operationId": "update_email_api_v1_accounts__username__emails__email__put",
        "parameters": [
          {
            "in": "path",
            "name": "username",
            "required": true,
            "schema": {
              "title": "Username",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "email",
            "required": true,
            "schema": {
              "title": "Email",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/EmailUpdate"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_EmailResponse_"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Update email account",
        "tags": [
          "emails"
        ]
      }
    },
    "/api/v1/accounts/{username}/emails/{email}/forwarders": {
      "get": {
        "description": "Returns every forward destination configured for this mailbox.",
        "operationId": "list_forwarders_api_v1_accounts__username__emails__email__forwarders_get",
        "parameters": [
          {
            "in": "path",
            "name": "username",
            "required": true,
            "schema": {
              "title": "Username",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "email",
            "required": true,
            "schema": {
              "title": "Email",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_list_ForwarderResponse__"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "List email forwarders",
        "tags": [
          "emails"
        ]
      },
      "post": {
        "description": "Add a destination address that receives a copy of inbound mail.",
        "operationId": "create_forwarder_api_v1_accounts__username__emails__email__forwarders_post",
        "parameters": [
          {
            "in": "path",
            "name": "username",
            "required": true,
            "schema": {
              "title": "Username",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "email",
            "required": true,
            "schema": {
              "title": "Email",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ForwarderCreate"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_ForwarderResponse_"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Create email forwarder",
        "tags": [
          "emails"
        ]
      }
    },
    "/api/v1/accounts/{username}/emails/{email}/forwarders/{forwarder_id}": {
      "delete": {
        "description": "Remove a forwarder by id.",
        "operationId": "delete_forwarder_api_v1_accounts__username__emails__email__forwarders__forwarder_id__delete",
        "parameters": [
          {
            "in": "path",
            "name": "username",
            "required": true,
            "schema": {
              "title": "Username",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "email",
            "required": true,
            "schema": {
              "title": "Email",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "forwarder_id",
            "required": true,
            "schema": {
              "title": "Forwarder Id",
              "type": "integer"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MessageResponse"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Delete email forwarder",
        "tags": [
          "emails"
        ]
      }
    },
    "/api/v1/accounts/{username}/emails/{email}/password": {
      "post": {
        "description": "Rotate the mailbox login password (stored as a salted SHA-256 hash that Dovecot verifies); open IMAP/POP3 sessions are closed.",
        "operationId": "change_email_password_api_v1_accounts__username__emails__email__password_post",
        "parameters": [
          {
            "in": "path",
            "name": "username",
            "required": true,
            "schema": {
              "title": "Username",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "email",
            "required": true,
            "schema": {
              "title": "Email",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/EmailPasswordChange"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MessageResponse"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Change email password",
        "tags": [
          "emails"
        ]
      }
    },
    "/api/v1/accounts/{username}/emails/{email}/webmail-url": {
      "get": {
        "description": "Returns a short-lived SSO URL for the panel's embedded Roundcube. Responds 409 `EMAIL_INACTIVE` for a deactivated mailbox and 503 `WEBMAIL_NOT_INSTALLED` when Roundcube is absent.",
        "operationId": "get_webmail_url_api_v1_accounts__username__emails__email__webmail_url_get",
        "parameters": [
          {
            "in": "path",
            "name": "username",
            "required": true,
            "schema": {
              "title": "Username",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "email",
            "required": true,
            "schema": {
              "title": "Email",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_WebmailUrlData_"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Mint Roundcube webmail SSO URL",
        "tags": [
          "emails"
        ]
      }
    },
    "/api/v1/accounts/{username}/files": {
      "delete": {
        "description": "Delete a single file or directory. The `path` query parameter is required.",
        "operationId": "delete_file_api_v1_accounts__username__files_delete",
        "parameters": [
          {
            "in": "path",
            "name": "username",
            "required": true,
            "schema": {
              "title": "Username",
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "path",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Path"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_dict_str__Any__"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Delete file",
        "tags": [
          "files"
        ]
      },
      "get": {
        "description": "List files and directories under the account's home tree.",
        "operationId": "list_files_api_v1_accounts__username__files_get",
        "parameters": [
          {
            "in": "path",
            "name": "username",
            "required": true,
            "schema": {
              "title": "Username",
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "path",
            "required": false,
            "schema": {
              "default": "/",
              "title": "Path",
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "show_hidden",
            "required": false,
            "schema": {
              "default": false,
              "title": "Show Hidden",
              "type": "boolean"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_dict_str__Any__"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "List files",
        "tags": [
          "files"
        ]
      },
      "post": {
        "description": "Create a new file (with optional content) or directory.",
        "operationId": "create_file_api_v1_accounts__username__files_post",
        "parameters": [
          {
            "in": "path",
            "name": "username",
            "required": true,
            "schema": {
              "title": "Username",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/FileCreateRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_dict_str__Any__"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Create file or directory",
        "tags": [
          "files"
        ]
      },
      "put": {
        "description": "Overwrite a file's content, optionally creating a backup beforehand.",
        "operationId": "edit_file_api_v1_accounts__username__files_put",
        "parameters": [
          {
            "in": "path",
            "name": "username",
            "required": true,
            "schema": {
              "title": "Username",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/FileEditRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_dict_str__Any__"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Edit file",
        "tags": [
          "files"
        ]
      }
    },
    "/api/v1/accounts/{username}/files/compress": {
      "post": {
        "description": "Compress one or more paths into a tar.gz or zip archive.",
        "operationId": "compress_files_api_v1_accounts__username__files_compress_post",
        "parameters": [
          {
            "in": "path",
            "name": "username",
            "required": true,
            "schema": {
              "title": "Username",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/FileCompressRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_dict_str__Any__"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Compress files",
        "tags": [
          "files"
        ]
      }
    },
    "/api/v1/accounts/{username}/files/content": {
      "get": {
        "description": "Return the textual content and metadata of a file.",
        "operationId": "read_file_api_v1_accounts__username__files_content_get",
        "parameters": [
          {
            "in": "path",
            "name": "username",
            "required": true,
            "schema": {
              "title": "Username",
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "path",
            "required": true,
            "schema": {
              "title": "Path",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_dict_str__Any__"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Read file content",
        "tags": [
          "files"
        ]
      }
    },
    "/api/v1/accounts/{username}/files/copy": {
      "post": {
        "description": "Copy a file or directory (single via `source`, batch via `sources`).",
        "operationId": "copy_file_api_v1_accounts__username__files_copy_post",
        "parameters": [
          {
            "in": "path",
            "name": "username",
            "required": true,
            "schema": {
              "title": "Username",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/FileCopyRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_Any_"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Copy file",
        "tags": [
          "files"
        ]
      }
    },
    "/api/v1/accounts/{username}/files/delete": {
      "post": {
        "description": "Delete multiple files or directories in one request; returns per-path results.",
        "operationId": "delete_batch_api_v1_accounts__username__files_delete_post",
        "parameters": [
          {
            "in": "path",
            "name": "username",
            "required": true,
            "schema": {
              "title": "Username",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/FileDeleteRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_Any_"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Batch delete",
        "tags": [
          "files"
        ]
      }
    },
    "/api/v1/accounts/{username}/files/download": {
      "get": {
        "operationId": "download_file_api_v1_accounts__username__files_download_get",
        "parameters": [
          {
            "in": "path",
            "name": "username",
            "required": true,
            "schema": {
              "title": "Username",
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "path",
            "required": true,
            "schema": {
              "title": "Path",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {}
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Download File",
        "tags": [
          "files"
        ]
      },
      "post": {
        "operationId": "download_multi_api_v1_accounts__username__files_download_post",
        "parameters": [
          {
            "in": "path",
            "name": "username",
            "required": true,
            "schema": {
              "title": "Username",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/MultiDownloadRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {}
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Download Multi",
        "tags": [
          "files"
        ]
      }
    },
    "/api/v1/accounts/{username}/files/extract": {
      "post": {
        "description": "Extract a tar/zip archive into the account's home tree.",
        "operationId": "extract_archive_api_v1_accounts__username__files_extract_post",
        "parameters": [
          {
            "in": "path",
            "name": "username",
            "required": true,
            "schema": {
              "title": "Username",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/FileExtractRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_dict_str__Any__"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Extract archive",
        "tags": [
          "files"
        ]
      }
    },
    "/api/v1/accounts/{username}/files/info": {
      "get": {
        "description": "Return detailed file/directory metadata (stat, permissions, owner) without reading content.",
        "operationId": "file_info_api_v1_accounts__username__files_info_get",
        "parameters": [
          {
            "in": "path",
            "name": "username",
            "required": true,
            "schema": {
              "title": "Username",
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "path",
            "required": true,
            "schema": {
              "title": "Path",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_dict_str__Any__"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "File info",
        "tags": [
          "files"
        ]
      }
    },
    "/api/v1/accounts/{username}/files/move": {
      "post": {
        "description": "Move/rename a file or directory (single via `source`, batch via `sources`).",
        "operationId": "move_file_api_v1_accounts__username__files_move_post",
        "parameters": [
          {
            "in": "path",
            "name": "username",
            "required": true,
            "schema": {
              "title": "Username",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/FileMoveRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_Any_"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Move file",
        "tags": [
          "files"
        ]
      }
    },
    "/api/v1/accounts/{username}/files/permissions": {
      "post": {
        "description": "Change file or directory permissions (chmod), optionally recursively.",
        "operationId": "set_permissions_api_v1_accounts__username__files_permissions_post",
        "parameters": [
          {
            "in": "path",
            "name": "username",
            "required": true,
            "schema": {
              "title": "Username",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/FilePermissionsRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_dict_str__Any__"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Set permissions",
        "tags": [
          "files"
        ]
      }
    },
    "/api/v1/accounts/{username}/files/search": {
      "get": {
        "description": "Search the account's home tree by filename, extension, or file content.",
        "operationId": "search_files_api_v1_accounts__username__files_search_get",
        "parameters": [
          {
            "in": "path",
            "name": "username",
            "required": true,
            "schema": {
              "title": "Username",
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "query",
            "required": false,
            "schema": {
              "default": "",
              "title": "Query",
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "path",
            "required": false,
            "schema": {
              "default": "/",
              "title": "Path",
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "type",
            "required": false,
            "schema": {
              "default": "all",
              "title": "Type",
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "extension",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Extension"
            }
          },
          {
            "in": "query",
            "name": "case_sensitive",
            "required": false,
            "schema": {
              "default": false,
              "title": "Case Sensitive",
              "type": "boolean"
            }
          },
          {
            "in": "query",
            "name": "max_depth",
            "required": false,
            "schema": {
              "default": 10,
              "maximum": 50,
              "minimum": 1,
              "title": "Max Depth",
              "type": "integer"
            }
          },
          {
            "in": "query",
            "name": "content_query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Content Query"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_dict_str__Any__"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Search files",
        "tags": [
          "files"
        ]
      }
    },
    "/api/v1/accounts/{username}/files/upload": {
      "post": {
        "description": "Upload a single file (multipart/form-data) to the account's home tree.",
        "operationId": "upload_file_api_v1_accounts__username__files_upload_post",
        "parameters": [
          {
            "in": "path",
            "name": "username",
            "required": true,
            "schema": {
              "title": "Username",
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "path",
            "required": true,
            "schema": {
              "title": "Path",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "multipart/form-data": {
              "schema": {
                "$ref": "#/components/schemas/Body_upload_file_api_v1_accounts__username__files_upload_post"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_dict_str__Any__"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Upload file",
        "tags": [
          "files"
        ]
      }
    },
    "/api/v1/accounts/{username}/firewall/blocked-ips": {
      "get": {
        "description": "The server-wide blocked list; there is no per-account scoping, so it is identical for every account. An unknown account answers 404 ACCOUNT_NOT_FOUND.",
        "operationId": "list_account_blocked_ips_api_v1_accounts__username__firewall_blocked_ips_get",
        "parameters": [
          {
            "in": "path",
            "name": "username",
            "required": true,
            "schema": {
              "pattern": "^[a-z][a-z0-9]{2,15}$",
              "title": "Username",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_list_BlockedIPResponse__"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "List IPs blocked from one account",
        "tags": [
          "firewall"
        ]
      },
      "post": {
        "description": "Blocks the address on the server firewall. There is no per-account scoping: the block affects every site on the server and the response says so in `warnings`. An unknown account answers 404 ACCOUNT_NOT_FOUND.",
        "operationId": "block_account_ip_api_v1_accounts__username__firewall_blocked_ips_post",
        "parameters": [
          {
            "in": "path",
            "name": "username",
            "required": true,
            "schema": {
              "pattern": "^[a-z][a-z0-9]{2,15}$",
              "title": "Username",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/BlockedIPCreate"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_dict_str__Any__"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Block IP for one account",
        "tags": [
          "firewall"
        ]
      }
    },
    "/api/v1/accounts/{username}/firewall/blocked-ips/{ip}": {
      "delete": {
        "description": "Removes the block from the server firewall — the same rule the server-wide endpoint manages. An unknown account answers 404 ACCOUNT_NOT_FOUND, an address that is not blocked 404 NOT_FOUND.",
        "operationId": "unblock_account_ip_api_v1_accounts__username__firewall_blocked_ips__ip__delete",
        "parameters": [
          {
            "in": "path",
            "name": "username",
            "required": true,
            "schema": {
              "pattern": "^[a-z][a-z0-9]{2,15}$",
              "title": "Username",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "ip",
            "required": true,
            "schema": {
              "title": "Ip",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MessageResponse"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Unblock IP for one account",
        "tags": [
          "firewall"
        ]
      }
    },
    "/api/v1/accounts/{username}/ftp": {
      "get": {
        "description": "Returns every Pure-FTPd user owned by the given account.",
        "operationId": "list_ftp_accounts_api_v1_accounts__username__ftp_get",
        "parameters": [
          {
            "in": "path",
            "name": "username",
            "required": true,
            "schema": {
              "title": "Username",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_list_FTPAccountResponse__"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "List FTP accounts for a hosting account",
        "tags": [
          "ftp"
        ]
      },
      "post": {
        "description": "Create a chrooted Pure-FTPd user under the hosting account's home directory. Enforces the plan's `max_ftp_accounts` cap.",
        "operationId": "create_ftp_account_api_v1_accounts__username__ftp_post",
        "parameters": [
          {
            "in": "path",
            "name": "username",
            "required": true,
            "schema": {
              "title": "Username",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/FTPAccountCreate"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_FTPAccountResponse_"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Create FTP account",
        "tags": [
          "ftp"
        ]
      }
    },
    "/api/v1/accounts/{username}/ftp/{ftp_user}": {
      "delete": {
        "description": "Remove the Pure-FTPd user and its DB record.",
        "operationId": "delete_ftp_account_api_v1_accounts__username__ftp__ftp_user__delete",
        "parameters": [
          {
            "in": "path",
            "name": "username",
            "required": true,
            "schema": {
              "title": "Username",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "ftp_user",
            "required": true,
            "schema": {
              "title": "Ftp User",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MessageResponse"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Delete FTP account",
        "tags": [
          "ftp"
        ]
      },
      "put": {
        "description": "Change password, target directory or quota for an existing FTP user. Fields equal to the stored values are not a change; a request that changes nothing writes no audit entry.",
        "operationId": "update_ftp_account_api_v1_accounts__username__ftp__ftp_user__put",
        "parameters": [
          {
            "in": "path",
            "name": "username",
            "required": true,
            "schema": {
              "title": "Username",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "ftp_user",
            "required": true,
            "schema": {
              "title": "Ftp User",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/FTPAccountUpdate"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_FTPAccountResponse_"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Update FTP account",
        "tags": [
          "ftp"
        ]
      }
    },
    "/api/v1/accounts/{username}/logs": {
      "get": {
        "operationId": "list_logs_api_v1_accounts__username__logs_get",
        "parameters": [
          {
            "in": "path",
            "name": "username",
            "required": true,
            "schema": {
              "title": "Username",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AvailableLogsResponse"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "List Logs",
        "tags": [
          "logs"
        ]
      }
    },
    "/api/v1/accounts/{username}/logs/access": {
      "get": {
        "operationId": "read_access_log_api_v1_accounts__username__logs_access_get",
        "parameters": [
          {
            "in": "path",
            "name": "username",
            "required": true,
            "schema": {
              "title": "Username",
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "domain",
            "required": true,
            "schema": {
              "title": "Domain",
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "lines",
            "required": false,
            "schema": {
              "default": 100,
              "maximum": 5000,
              "minimum": 1,
              "title": "Lines",
              "type": "integer"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LogContentResponse"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Read Access Log",
        "tags": [
          "logs"
        ]
      }
    },
    "/api/v1/accounts/{username}/logs/error": {
      "get": {
        "operationId": "read_error_log_api_v1_accounts__username__logs_error_get",
        "parameters": [
          {
            "in": "path",
            "name": "username",
            "required": true,
            "schema": {
              "title": "Username",
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "domain",
            "required": true,
            "schema": {
              "title": "Domain",
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "lines",
            "required": false,
            "schema": {
              "default": 100,
              "maximum": 5000,
              "minimum": 1,
              "title": "Lines",
              "type": "integer"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LogContentResponse"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Read Error Log",
        "tags": [
          "logs"
        ]
      }
    },
    "/api/v1/accounts/{username}/logs/php": {
      "get": {
        "operationId": "read_php_error_log_api_v1_accounts__username__logs_php_get",
        "parameters": [
          {
            "in": "path",
            "name": "username",
            "required": true,
            "schema": {
              "title": "Username",
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "lines",
            "required": false,
            "schema": {
              "default": 100,
              "maximum": 5000,
              "minimum": 1,
              "title": "Lines",
              "type": "integer"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LogContentResponse"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Read Php Error Log",
        "tags": [
          "logs"
        ]
      }
    },
    "/api/v1/accounts/{username}/metrics": {
      "get": {
        "description": "Get historical resource usage metrics for an account.",
        "operationId": "get_account_metrics_api_v1_accounts__username__metrics_get",
        "parameters": [
          {
            "in": "path",
            "name": "username",
            "required": true,
            "schema": {
              "title": "Username",
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "period",
            "required": false,
            "schema": {
              "default": "24h",
              "pattern": "^(24h|7d|30d)$",
              "title": "Period",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": true,
                  "title": "Response Get Account Metrics Api V1 Accounts  Username  Metrics Get",
                  "type": "object"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Get Account Metrics",
        "tags": [
          "metrics"
        ]
      }
    },
    "/api/v1/accounts/{username}/node-apps": {
      "get": {
        "description": "List Node.js applications for an account.",
        "operationId": "list_node_apps_api_v1_accounts__username__node_apps_get",
        "parameters": [
          {
            "in": "path",
            "name": "username",
            "required": true,
            "schema": {
              "pattern": "^[a-z][a-z0-9]{2,15}$",
              "title": "Username",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_list_dict_str__Any___"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "List Node apps",
        "tags": [
          "node-apps"
        ]
      },
      "post": {
        "description": "Create a new Node.js application for an account.",
        "operationId": "create_node_app_api_v1_accounts__username__node_apps_post",
        "parameters": [
          {
            "in": "path",
            "name": "username",
            "required": true,
            "schema": {
              "pattern": "^[a-z][a-z0-9]{2,15}$",
              "title": "Username",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/NodeAppCreate"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_dict_str__Any__"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Create Node app",
        "tags": [
          "node-apps"
        ]
      }
    },
    "/api/v1/accounts/{username}/node-apps/analyze": {
      "post": {
        "description": "Analyze an uploaded archive or server-side path; returns framework + entry point + warnings.",
        "operationId": "analyze_node_project_api_v1_accounts__username__node_apps_analyze_post",
        "parameters": [
          {
            "in": "path",
            "name": "username",
            "required": true,
            "schema": {
              "pattern": "^[a-z][a-z0-9]{2,15}$",
              "title": "Username",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "multipart/form-data": {
              "schema": {
                "$ref": "#/components/schemas/Body_analyze_node_project_api_v1_accounts__username__node_apps_analyze_post"
              }
            }
          }
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_dict_str__Any__"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Analyze Node project",
        "tags": [
          "node-apps"
        ]
      }
    },
    "/api/v1/accounts/{username}/node-apps/deploy": {
      "post": {
        "description": "Kick off the deploy pipeline. Returns a task_id for SSE subscription.",
        "operationId": "deploy_node_project_api_v1_accounts__username__node_apps_deploy_post",
        "parameters": [
          {
            "in": "path",
            "name": "username",
            "required": true,
            "schema": {
              "pattern": "^[a-z][a-z0-9]{2,15}$",
              "title": "Username",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_dict_str__Any__"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Deploy Node project",
        "tags": [
          "node-apps"
        ]
      }
    },
    "/api/v1/accounts/{username}/node-apps/deploy/{task_id}": {
      "get": {
        "description": "Snapshot of a deploy task (for polling fallback when SSE is unavailable).",
        "operationId": "deploy_status_api_v1_accounts__username__node_apps_deploy__task_id__get",
        "parameters": [
          {
            "in": "path",
            "name": "username",
            "required": true,
            "schema": {
              "pattern": "^[a-z][a-z0-9]{2,15}$",
              "title": "Username",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "task_id",
            "required": true,
            "schema": {
              "title": "Task Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_dict_str__Any__"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Deploy task status",
        "tags": [
          "node-apps"
        ]
      }
    },
    "/api/v1/accounts/{username}/node-apps/deploy/{task_id}/events": {
      "get": {
        "description": "SSE stream of a running deploy task.",
        "operationId": "deploy_events_api_v1_accounts__username__node_apps_deploy__task_id__events_get",
        "parameters": [
          {
            "in": "path",
            "name": "username",
            "required": true,
            "schema": {
              "pattern": "^[a-z][a-z0-9]{2,15}$",
              "title": "Username",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "task_id",
            "required": true,
            "schema": {
              "title": "Task Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {}
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Deploy Events",
        "tags": [
          "node-apps"
        ]
      }
    },
    "/api/v1/accounts/{username}/node-apps/{app_name}": {
      "delete": {
        "description": "Delete a Node.js application.",
        "operationId": "delete_node_app_api_v1_accounts__username__node_apps__app_name__delete",
        "parameters": [
          {
            "in": "path",
            "name": "username",
            "required": true,
            "schema": {
              "pattern": "^[a-z][a-z0-9]{2,15}$",
              "title": "Username",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "app_name",
            "required": true,
            "schema": {
              "pattern": "^[a-z][a-z0-9_-]{1,30}$",
              "title": "App Name",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MessageResponse"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Delete Node app",
        "tags": [
          "node-apps"
        ]
      },
      "get": {
        "description": "Get details of a Node.js application.",
        "operationId": "get_node_app_api_v1_accounts__username__node_apps__app_name__get",
        "parameters": [
          {
            "in": "path",
            "name": "username",
            "required": true,
            "schema": {
              "pattern": "^[a-z][a-z0-9]{2,15}$",
              "title": "Username",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "app_name",
            "required": true,
            "schema": {
              "pattern": "^[a-z][a-z0-9_-]{1,30}$",
              "title": "App Name",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_dict_str__Any__"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Get Node app",
        "tags": [
          "node-apps"
        ]
      },
      "put": {
        "description": "Update a Node.js application's configuration.",
        "operationId": "update_node_app_api_v1_accounts__username__node_apps__app_name__put",
        "parameters": [
          {
            "in": "path",
            "name": "username",
            "required": true,
            "schema": {
              "pattern": "^[a-z][a-z0-9]{2,15}$",
              "title": "Username",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "app_name",
            "required": true,
            "schema": {
              "pattern": "^[a-z][a-z0-9_-]{1,30}$",
              "title": "App Name",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/NodeAppUpdate"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_dict_str__Any__"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Update Node app",
        "tags": [
          "node-apps"
        ]
      }
    },
    "/api/v1/accounts/{username}/node-apps/{app_name}/env": {
      "get": {
        "description": "Get environment variables for a Node.js application.",
        "operationId": "get_node_env_api_v1_accounts__username__node_apps__app_name__env_get",
        "parameters": [
          {
            "in": "path",
            "name": "username",
            "required": true,
            "schema": {
              "pattern": "^[a-z][a-z0-9]{2,15}$",
              "title": "Username",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "app_name",
            "required": true,
            "schema": {
              "pattern": "^[a-z][a-z0-9_-]{1,30}$",
              "title": "App Name",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_dict_str__Any__"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Get env vars",
        "tags": [
          "node-apps"
        ]
      },
      "put": {
        "description": "Replace environment variables for a Node.js application.",
        "operationId": "set_node_env_api_v1_accounts__username__node_apps__app_name__env_put",
        "parameters": [
          {
            "in": "path",
            "name": "username",
            "required": true,
            "schema": {
              "pattern": "^[a-z][a-z0-9]{2,15}$",
              "title": "Username",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "app_name",
            "required": true,
            "schema": {
              "pattern": "^[a-z][a-z0-9_-]{1,30}$",
              "title": "App Name",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/whost_agent__models__node_app__EnvVarsUpdate"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_dict_str__Any__"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Set env vars",
        "tags": [
          "node-apps"
        ]
      }
    },
    "/api/v1/accounts/{username}/node-apps/{app_name}/logs": {
      "get": {
        "description": "Tail stdout/stderr/access/error logs for a Node.js application.",
        "operationId": "get_node_logs_api_v1_accounts__username__node_apps__app_name__logs_get",
        "parameters": [
          {
            "in": "path",
            "name": "username",
            "required": true,
            "schema": {
              "pattern": "^[a-z][a-z0-9]{2,15}$",
              "title": "Username",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "app_name",
            "required": true,
            "schema": {
              "pattern": "^[a-z][a-z0-9_-]{1,30}$",
              "title": "App Name",
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "lines",
            "required": false,
            "schema": {
              "default": 100,
              "maximum": 5000,
              "minimum": 1,
              "title": "Lines",
              "type": "integer"
            }
          },
          {
            "in": "query",
            "name": "log_type",
            "required": false,
            "schema": {
              "default": "stderr",
              "pattern": "^(stdout|stderr|access|error)$",
              "title": "Log Type",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_dict_str__Any__"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Get app logs",
        "tags": [
          "node-apps"
        ]
      }
    },
    "/api/v1/accounts/{username}/node-apps/{app_name}/npm": {
      "get": {
        "description": "List installed npm packages for a Node app.",
        "operationId": "list_npm_packages_api_v1_accounts__username__node_apps__app_name__npm_get",
        "parameters": [
          {
            "in": "path",
            "name": "username",
            "required": true,
            "schema": {
              "pattern": "^[a-z][a-z0-9]{2,15}$",
              "title": "Username",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "app_name",
            "required": true,
            "schema": {
              "pattern": "^[a-z][a-z0-9_-]{1,30}$",
              "title": "App Name",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_list_dict_str__Any___"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "List npm packages",
        "tags": [
          "node-apps"
        ]
      }
    },
    "/api/v1/accounts/{username}/node-apps/{app_name}/npm/ci": {
      "post": {
        "description": "Install dependencies from the project's lock/manifest file (`npm ci` equivalent).",
        "operationId": "npm_install_dependencies_api_v1_accounts__username__node_apps__app_name__npm_ci_post",
        "parameters": [
          {
            "in": "path",
            "name": "username",
            "required": true,
            "schema": {
              "pattern": "^[a-z][a-z0-9]{2,15}$",
              "title": "Username",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "app_name",
            "required": true,
            "schema": {
              "pattern": "^[a-z][a-z0-9_-]{1,30}$",
              "title": "App Name",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_dict_str__Any__"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "npm install (lock-file)",
        "tags": [
          "node-apps"
        ]
      }
    },
    "/api/v1/accounts/{username}/node-apps/{app_name}/npm/install": {
      "post": {
        "description": "Install one or more npm packages (production or dev).",
        "operationId": "npm_install_packages_api_v1_accounts__username__node_apps__app_name__npm_install_post",
        "parameters": [
          {
            "in": "path",
            "name": "username",
            "required": true,
            "schema": {
              "pattern": "^[a-z][a-z0-9]{2,15}$",
              "title": "Username",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "app_name",
            "required": true,
            "schema": {
              "pattern": "^[a-z][a-z0-9_-]{1,30}$",
              "title": "App Name",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/NpmInstallRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_dict_str__Any__"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Install npm packages",
        "tags": [
          "node-apps"
        ]
      }
    },
    "/api/v1/accounts/{username}/node-apps/{app_name}/npm/uninstall": {
      "post": {
        "description": "Uninstall one or more npm packages.",
        "operationId": "npm_uninstall_packages_api_v1_accounts__username__node_apps__app_name__npm_uninstall_post",
        "parameters": [
          {
            "in": "path",
            "name": "username",
            "required": true,
            "schema": {
              "pattern": "^[a-z][a-z0-9]{2,15}$",
              "title": "Username",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "app_name",
            "required": true,
            "schema": {
              "pattern": "^[a-z][a-z0-9_-]{1,30}$",
              "title": "App Name",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/NpmUninstallRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_dict_str__Any__"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Uninstall npm packages",
        "tags": [
          "node-apps"
        ]
      }
    },
    "/api/v1/accounts/{username}/node-apps/{app_name}/restart": {
      "post": {
        "description": "Restart a Node.js application.",
        "operationId": "restart_node_app_api_v1_accounts__username__node_apps__app_name__restart_post",
        "parameters": [
          {
            "in": "path",
            "name": "username",
            "required": true,
            "schema": {
              "pattern": "^[a-z][a-z0-9]{2,15}$",
              "title": "Username",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "app_name",
            "required": true,
            "schema": {
              "pattern": "^[a-z][a-z0-9_-]{1,30}$",
              "title": "App Name",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_dict_str__Any__"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Restart Node app",
        "tags": [
          "node-apps"
        ]
      }
    },
    "/api/v1/accounts/{username}/node-apps/{app_name}/script": {
      "post": {
        "description": "Run a declared npm script (e.g. `build`, `test`).",
        "operationId": "run_npm_script_api_v1_accounts__username__node_apps__app_name__script_post",
        "parameters": [
          {
            "in": "path",
            "name": "username",
            "required": true,
            "schema": {
              "pattern": "^[a-z][a-z0-9]{2,15}$",
              "title": "Username",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "app_name",
            "required": true,
            "schema": {
              "pattern": "^[a-z][a-z0-9_-]{1,30}$",
              "title": "App Name",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/NpmScriptRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_dict_str__Any__"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Run npm script",
        "tags": [
          "node-apps"
        ]
      }
    },
    "/api/v1/accounts/{username}/node-apps/{app_name}/start": {
      "post": {
        "description": "Start a Node.js application.",
        "operationId": "start_node_app_api_v1_accounts__username__node_apps__app_name__start_post",
        "parameters": [
          {
            "in": "path",
            "name": "username",
            "required": true,
            "schema": {
              "pattern": "^[a-z][a-z0-9]{2,15}$",
              "title": "Username",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "app_name",
            "required": true,
            "schema": {
              "pattern": "^[a-z][a-z0-9_-]{1,30}$",
              "title": "App Name",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_dict_str__Any__"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Start Node app",
        "tags": [
          "node-apps"
        ]
      }
    },
    "/api/v1/accounts/{username}/node-apps/{app_name}/status": {
      "get": {
        "description": "Get runtime status of a Node.js application.",
        "operationId": "get_node_app_status_api_v1_accounts__username__node_apps__app_name__status_get",
        "parameters": [
          {
            "in": "path",
            "name": "username",
            "required": true,
            "schema": {
              "pattern": "^[a-z][a-z0-9]{2,15}$",
              "title": "Username",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "app_name",
            "required": true,
            "schema": {
              "pattern": "^[a-z][a-z0-9_-]{1,30}$",
              "title": "App Name",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_dict_str__Any__"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Node app status",
        "tags": [
          "node-apps"
        ]
      }
    },
    "/api/v1/accounts/{username}/node-apps/{app_name}/stop": {
      "post": {
        "description": "Stop a Node.js application.",
        "operationId": "stop_node_app_api_v1_accounts__username__node_apps__app_name__stop_post",
        "parameters": [
          {
            "in": "path",
            "name": "username",
            "required": true,
            "schema": {
              "pattern": "^[a-z][a-z0-9]{2,15}$",
              "title": "Username",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "app_name",
            "required": true,
            "schema": {
              "pattern": "^[a-z][a-z0-9_-]{1,30}$",
              "title": "App Name",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_dict_str__Any__"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Stop Node app",
        "tags": [
          "node-apps"
        ]
      }
    },
    "/api/v1/accounts/{username}/parked-domains": {
      "get": {
        "description": "Returns every parked (alias) domain — points DNS+HTTP at the primary domain.",
        "operationId": "list_parked_domains_api_v1_accounts__username__parked_domains_get",
        "parameters": [
          {
            "in": "path",
            "name": "username",
            "required": true,
            "schema": {
              "title": "Username",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_list_ParkedDomainResponse__"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "List parked domains",
        "tags": [
          "domains"
        ]
      },
      "post": {
        "description": "Add an alias domain that resolves to the primary domain. Enforces the plan's `max_parked_domains` cap. Refused 403 `ACCOUNT_SUSPENDED` while the account is suspended.",
        "operationId": "create_parked_domain_api_v1_accounts__username__parked_domains_post",
        "parameters": [
          {
            "in": "path",
            "name": "username",
            "required": true,
            "schema": {
              "title": "Username",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ParkedDomainCreate"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_ParkedDomainResponse_"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Create parked domain",
        "tags": [
          "domains"
        ]
      }
    },
    "/api/v1/accounts/{username}/parked-domains/{domain}": {
      "delete": {
        "description": "Remove the alias domain and its DNS zone.",
        "operationId": "delete_parked_domain_api_v1_accounts__username__parked_domains__domain__delete",
        "parameters": [
          {
            "in": "path",
            "name": "username",
            "required": true,
            "schema": {
              "title": "Username",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "domain",
            "required": true,
            "schema": {
              "title": "Domain",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MessageResponse"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Delete parked domain",
        "tags": [
          "domains"
        ]
      }
    },
    "/api/v1/accounts/{username}/password": {
      "patch": {
        "description": "Reset the account's login password. **Session-cookie auth required** — HMAC API keys are rejected with 403 `HMAC_FORBIDDEN_FOR_CREDENTIAL_MUTATION` to keep credential mutation out of machine-to-machine credentials' reach.",
        "operationId": "change_password_api_v1_accounts__username__password_patch",
        "parameters": [
          {
            "in": "path",
            "name": "username",
            "required": true,
            "schema": {
              "title": "Username",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/whost_agent__models__account__PasswordChange"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MessageResponse"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Change account password",
        "tags": [
          "accounts"
        ]
      }
    },
    "/api/v1/accounts/{username}/php": {
      "get": {
        "description": "Returns the account's currently configured PHP-FPM version.",
        "operationId": "get_php_version_api_v1_accounts__username__php_get",
        "parameters": [
          {
            "in": "path",
            "name": "username",
            "required": true,
            "schema": {
              "title": "Username",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_PHPVersionData_"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Get active PHP version",
        "tags": [
          "php"
        ]
      }
    },
    "/api/v1/accounts/{username}/php/config": {
      "get": {
        "description": "Returns the effective `php.ini` overrides for this account.",
        "operationId": "get_php_config_api_v1_accounts__username__php_config_get",
        "parameters": [
          {
            "in": "path",
            "name": "username",
            "required": true,
            "schema": {
              "title": "Username",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_dict_str__Any__"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Get account PHP ini values",
        "tags": [
          "php"
        ]
      },
      "put": {
        "description": "Patch the account's `php.ini` overrides — only fields present in the body are mutated.",
        "operationId": "update_php_config_api_v1_accounts__username__php_config_put",
        "parameters": [
          {
            "in": "path",
            "name": "username",
            "required": true,
            "schema": {
              "title": "Username",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PHPConfigUpdate"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_dict_str__Any__"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Update account PHP ini values",
        "tags": [
          "php"
        ]
      }
    },
    "/api/v1/accounts/{username}/php/domains": {
      "get": {
        "description": "Returns every domain owned by the account with its effective PHP version and override status.",
        "operationId": "list_domains_php_api_v1_accounts__username__php_domains_get",
        "parameters": [
          {
            "in": "path",
            "name": "username",
            "required": true,
            "schema": {
              "title": "Username",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_AccountDomainsForPHP_"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "List domain-level PHP overrides for an account",
        "tags": [
          "php"
        ]
      }
    },
    "/api/v1/accounts/{username}/php/extensions": {
      "get": {
        "description": "Lists every PHP extension on the host and whether it is enabled for this account.",
        "operationId": "get_extensions_status_api_v1_accounts__username__php_extensions_get",
        "parameters": [
          {
            "in": "path",
            "name": "username",
            "required": true,
            "schema": {
              "title": "Username",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_PHPExtensionsStatusResponse_"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Get PHP extension status for the account",
        "tags": [
          "php"
        ]
      },
      "put": {
        "description": "Enable or disable a single PHP extension at the account scope.",
        "operationId": "set_extension_status_api_v1_accounts__username__php_extensions_put",
        "parameters": [
          {
            "in": "path",
            "name": "username",
            "required": true,
            "schema": {
              "title": "Username",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PHPExtensionToggle"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_PHPExtensionsStatusResponse_"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Toggle PHP extension for the account",
        "tags": [
          "php"
        ]
      }
    },
    "/api/v1/accounts/{username}/php/ioncube": {
      "get": {
        "description": "Reports whether the IonCube Loader is enabled for this account.",
        "operationId": "get_ioncube_status_api_v1_accounts__username__php_ioncube_get",
        "parameters": [
          {
            "in": "path",
            "name": "username",
            "required": true,
            "schema": {
              "title": "Username",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_IonCubeStatusResponse_"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Get IonCube Loader status",
        "tags": [
          "php"
        ]
      },
      "put": {
        "description": "Enable or disable the IonCube Loader extension for this account's PHP.",
        "operationId": "set_ioncube_status_api_v1_accounts__username__php_ioncube_put",
        "parameters": [
          {
            "in": "path",
            "name": "username",
            "required": true,
            "schema": {
              "title": "Username",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/IonCubeToggle"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_IonCubeStatusResponse_"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Toggle IonCube Loader",
        "tags": [
          "php"
        ]
      }
    },
    "/api/v1/accounts/{username}/php/max-processes": {
      "get": {
        "description": "Returns the configured `pm.max_children` and the auto-derived default.",
        "operationId": "get_max_processes_api_v1_accounts__username__php_max_processes_get",
        "parameters": [
          {
            "in": "path",
            "name": "username",
            "required": true,
            "schema": {
              "title": "Username",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_MaxProcessesResponse_"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Get PHP-FPM pool max-processes",
        "tags": [
          "php"
        ]
      },
      "put": {
        "description": "Override `pm.max_children` for this account, or pass null to revert to auto-calculated default.",
        "operationId": "set_max_processes_api_v1_accounts__username__php_max_processes_put",
        "parameters": [
          {
            "in": "path",
            "name": "username",
            "required": true,
            "schema": {
              "title": "Username",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/MaxProcessesUpdate"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_MaxProcessesResponse_"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Set PHP-FPM pool max-processes",
        "tags": [
          "php"
        ]
      }
    },
    "/api/v1/accounts/{username}/php/opcache": {
      "get": {
        "description": "Returns memory usage, hit/miss counters, cached file count and runtime config flags.",
        "operationId": "get_opcache_status_api_v1_accounts__username__php_opcache_get",
        "parameters": [
          {
            "in": "path",
            "name": "username",
            "required": true,
            "schema": {
              "title": "Username",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_OPcacheStatusResponse_"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Get OPcache status for the account's PHP version",
        "tags": [
          "php"
        ]
      }
    },
    "/api/v1/accounts/{username}/php/opcache/clear": {
      "post": {
        "description": "Restarts the PHP-FPM pool serving this account — invalidates every cached opcode.",
        "operationId": "clear_opcache_api_v1_accounts__username__php_opcache_clear_post",
        "parameters": [
          {
            "in": "path",
            "name": "username",
            "required": true,
            "schema": {
              "title": "Username",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MessageResponse"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Clear OPcache (account scope)",
        "tags": [
          "php"
        ]
      }
    },
    "/api/v1/accounts/{username}/php/opcache/config": {
      "put": {
        "description": "Patch OPcache runtime config (memory, file cap, revalidate frequency, etc.) for the account's PHP version.",
        "operationId": "update_opcache_config_api_v1_accounts__username__php_opcache_config_put",
        "parameters": [
          {
            "in": "path",
            "name": "username",
            "required": true,
            "schema": {
              "title": "Username",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/OPcacheConfigUpdate"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_OPcacheStatusResponse_"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Update OPcache config",
        "tags": [
          "php"
        ]
      }
    },
    "/api/v1/accounts/{username}/php/version": {
      "put": {
        "description": "Swap the account's PHP-FPM version. Pool conf is regenerated and reloaded.",
        "operationId": "change_php_version_api_v1_accounts__username__php_version_put",
        "parameters": [
          {
            "in": "path",
            "name": "username",
            "required": true,
            "schema": {
              "title": "Username",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PHPVersionChange"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_PHPVersionData_"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Change account PHP version",
        "tags": [
          "php"
        ]
      }
    },
    "/api/v1/accounts/{username}/python-apps": {
      "get": {
        "description": "List all Python applications for an account.",
        "operationId": "list_python_apps_api_v1_accounts__username__python_apps_get",
        "parameters": [
          {
            "in": "path",
            "name": "username",
            "required": true,
            "schema": {
              "pattern": "^[a-z][a-z0-9]{2,15}$",
              "title": "Username",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_list_PythonAppResponse__"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "List Python apps",
        "tags": [
          "python-apps"
        ]
      },
      "post": {
        "description": "Create a new Python application for an account.",
        "operationId": "create_python_app_api_v1_accounts__username__python_apps_post",
        "parameters": [
          {
            "in": "path",
            "name": "username",
            "required": true,
            "schema": {
              "pattern": "^[a-z][a-z0-9]{2,15}$",
              "title": "Username",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PythonAppCreate"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_PythonAppResponse_"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Create Python app",
        "tags": [
          "python-apps"
        ]
      }
    },
    "/api/v1/accounts/{username}/python-apps/analyze": {
      "post": {
        "description": "Analyze an uploaded archive or server-side path; returns framework + entry point + warnings.",
        "operationId": "analyze_python_project_api_v1_accounts__username__python_apps_analyze_post",
        "parameters": [
          {
            "in": "path",
            "name": "username",
            "required": true,
            "schema": {
              "pattern": "^[a-z][a-z0-9]{2,15}$",
              "title": "Username",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "multipart/form-data": {
              "schema": {
                "$ref": "#/components/schemas/Body_analyze_python_project_api_v1_accounts__username__python_apps_analyze_post"
              }
            }
          }
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_dict_str__Any__"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Analyze Python project",
        "tags": [
          "python-apps"
        ]
      }
    },
    "/api/v1/accounts/{username}/python-apps/deploy": {
      "post": {
        "description": "Kick off the deploy pipeline. Returns a task_id for SSE subscription.",
        "operationId": "deploy_python_project_api_v1_accounts__username__python_apps_deploy_post",
        "parameters": [
          {
            "in": "path",
            "name": "username",
            "required": true,
            "schema": {
              "pattern": "^[a-z][a-z0-9]{2,15}$",
              "title": "Username",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PythonAppDeployRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_dict_str__Any__"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Deploy Python project",
        "tags": [
          "python-apps"
        ]
      }
    },
    "/api/v1/accounts/{username}/python-apps/deploy/{task_id}": {
      "get": {
        "description": "Snapshot of a deploy task (for polling fallback when SSE is unavailable).",
        "operationId": "deploy_status_api_v1_accounts__username__python_apps_deploy__task_id__get",
        "parameters": [
          {
            "in": "path",
            "name": "username",
            "required": true,
            "schema": {
              "pattern": "^[a-z][a-z0-9]{2,15}$",
              "title": "Username",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "task_id",
            "required": true,
            "schema": {
              "title": "Task Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_dict_str__Any__"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Deploy task status",
        "tags": [
          "python-apps"
        ]
      }
    },
    "/api/v1/accounts/{username}/python-apps/deploy/{task_id}/events": {
      "get": {
        "description": "Server-Sent Events stream for a running deploy task.\n\nRate limiting is intentionally skipped here — the client holds an\nopen connection for the task's lifetime.",
        "operationId": "deploy_events_api_v1_accounts__username__python_apps_deploy__task_id__events_get",
        "parameters": [
          {
            "in": "path",
            "name": "username",
            "required": true,
            "schema": {
              "pattern": "^[a-z][a-z0-9]{2,15}$",
              "title": "Username",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "task_id",
            "required": true,
            "schema": {
              "title": "Task Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {}
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Deploy Events",
        "tags": [
          "python-apps"
        ]
      }
    },
    "/api/v1/accounts/{username}/python-apps/migration/upload": {
      "post": {
        "description": "Stage an existing-installation SQL dump and/or media archive for the next deploy.",
        "operationId": "upload_migration_assets_api_v1_accounts__username__python_apps_migration_upload_post",
        "parameters": [
          {
            "in": "path",
            "name": "username",
            "required": true,
            "schema": {
              "pattern": "^[a-z][a-z0-9]{2,15}$",
              "title": "Username",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "multipart/form-data": {
              "schema": {
                "$ref": "#/components/schemas/Body_upload_migration_assets_api_v1_accounts__username__python_apps_migration_upload_post"
              }
            }
          }
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_dict_str__Any__"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Upload migration assets",
        "tags": [
          "python-apps"
        ]
      }
    },
    "/api/v1/accounts/{username}/python-apps/{app_name}": {
      "delete": {
        "description": "Delete a Python application.",
        "operationId": "delete_python_app_api_v1_accounts__username__python_apps__app_name__delete",
        "parameters": [
          {
            "in": "path",
            "name": "username",
            "required": true,
            "schema": {
              "pattern": "^[a-z][a-z0-9]{2,15}$",
              "title": "Username",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "app_name",
            "required": true,
            "schema": {
              "pattern": "^[a-z][a-z0-9_-]{1,30}$",
              "title": "App Name",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MessageResponse"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Delete Python app",
        "tags": [
          "python-apps"
        ]
      },
      "get": {
        "description": "Get details of a Python application.",
        "operationId": "get_python_app_api_v1_accounts__username__python_apps__app_name__get",
        "parameters": [
          {
            "in": "path",
            "name": "username",
            "required": true,
            "schema": {
              "pattern": "^[a-z][a-z0-9]{2,15}$",
              "title": "Username",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "app_name",
            "required": true,
            "schema": {
              "pattern": "^[a-z][a-z0-9_-]{1,30}$",
              "title": "App Name",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_PythonAppResponse_"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Get Python app",
        "tags": [
          "python-apps"
        ]
      },
      "put": {
        "description": "Update a Python application's configuration.",
        "operationId": "update_python_app_api_v1_accounts__username__python_apps__app_name__put",
        "parameters": [
          {
            "in": "path",
            "name": "username",
            "required": true,
            "schema": {
              "pattern": "^[a-z][a-z0-9]{2,15}$",
              "title": "Username",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "app_name",
            "required": true,
            "schema": {
              "pattern": "^[a-z][a-z0-9_-]{1,30}$",
              "title": "App Name",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PythonAppUpdate"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_PythonAppResponse_"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Update Python app",
        "tags": [
          "python-apps"
        ]
      }
    },
    "/api/v1/accounts/{username}/python-apps/{app_name}/env": {
      "get": {
        "description": "Get environment variables for a Python app.",
        "operationId": "get_env_vars_api_v1_accounts__username__python_apps__app_name__env_get",
        "parameters": [
          {
            "in": "path",
            "name": "username",
            "required": true,
            "schema": {
              "pattern": "^[a-z][a-z0-9]{2,15}$",
              "title": "Username",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "app_name",
            "required": true,
            "schema": {
              "pattern": "^[a-z][a-z0-9_-]{1,30}$",
              "title": "App Name",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_dict_str__Any__"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Get env vars",
        "tags": [
          "python-apps"
        ]
      },
      "put": {
        "description": "Set environment variables for a Python app.",
        "operationId": "set_env_vars_api_v1_accounts__username__python_apps__app_name__env_put",
        "parameters": [
          {
            "in": "path",
            "name": "username",
            "required": true,
            "schema": {
              "pattern": "^[a-z][a-z0-9]{2,15}$",
              "title": "Username",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "app_name",
            "required": true,
            "schema": {
              "pattern": "^[a-z][a-z0-9_-]{1,30}$",
              "title": "App Name",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/whost_agent__models__python_app__EnvVarsUpdate"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_dict_str__Any__"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Set env vars",
        "tags": [
          "python-apps"
        ]
      }
    },
    "/api/v1/accounts/{username}/python-apps/{app_name}/logs": {
      "get": {
        "description": "Tail the application's error/access logs.",
        "operationId": "get_python_app_logs_api_v1_accounts__username__python_apps__app_name__logs_get",
        "parameters": [
          {
            "in": "path",
            "name": "username",
            "required": true,
            "schema": {
              "pattern": "^[a-z][a-z0-9]{2,15}$",
              "title": "Username",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "app_name",
            "required": true,
            "schema": {
              "pattern": "^[a-z][a-z0-9_-]{1,30}$",
              "title": "App Name",
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "lines",
            "required": false,
            "schema": {
              "default": 100,
              "maximum": 5000,
              "minimum": 1,
              "title": "Lines",
              "type": "integer"
            }
          },
          {
            "in": "query",
            "name": "log_type",
            "required": false,
            "schema": {
              "default": "error",
              "pattern": "^(error|access)$",
              "title": "Log Type",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_dict_str__Any__"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Get app logs",
        "tags": [
          "python-apps"
        ]
      }
    },
    "/api/v1/accounts/{username}/python-apps/{app_name}/manage": {
      "post": {
        "description": "Run a Django manage.py command on the app's virtualenv.",
        "operationId": "run_manage_py_api_v1_accounts__username__python_apps__app_name__manage_post",
        "parameters": [
          {
            "in": "path",
            "name": "username",
            "required": true,
            "schema": {
              "pattern": "^[a-z][a-z0-9]{2,15}$",
              "title": "Username",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "app_name",
            "required": true,
            "schema": {
              "pattern": "^[a-z][a-z0-9_-]{1,30}$",
              "title": "App Name",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ManagePyRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_ManagePyResponse_"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Run manage.py",
        "tags": [
          "python-apps"
        ]
      }
    },
    "/api/v1/accounts/{username}/python-apps/{app_name}/pip": {
      "get": {
        "description": "List installed pip packages.",
        "operationId": "list_pip_packages_api_v1_accounts__username__python_apps__app_name__pip_get",
        "parameters": [
          {
            "in": "path",
            "name": "username",
            "required": true,
            "schema": {
              "pattern": "^[a-z][a-z0-9]{2,15}$",
              "title": "Username",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "app_name",
            "required": true,
            "schema": {
              "pattern": "^[a-z][a-z0-9_-]{1,30}$",
              "title": "App Name",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_list_PipPackageEntry__"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "List pip packages",
        "tags": [
          "python-apps"
        ]
      }
    },
    "/api/v1/accounts/{username}/python-apps/{app_name}/pip/install": {
      "post": {
        "description": "Install pip packages.",
        "operationId": "install_pip_packages_api_v1_accounts__username__python_apps__app_name__pip_install_post",
        "parameters": [
          {
            "in": "path",
            "name": "username",
            "required": true,
            "schema": {
              "pattern": "^[a-z][a-z0-9]{2,15}$",
              "title": "Username",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "app_name",
            "required": true,
            "schema": {
              "pattern": "^[a-z][a-z0-9_-]{1,30}$",
              "title": "App Name",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PipInstallRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_dict_str__Any__"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Install pip packages",
        "tags": [
          "python-apps"
        ]
      }
    },
    "/api/v1/accounts/{username}/python-apps/{app_name}/pip/requirements": {
      "post": {
        "description": "Install packages declared in the project's requirements.txt.",
        "operationId": "install_from_requirements_api_v1_accounts__username__python_apps__app_name__pip_requirements_post",
        "parameters": [
          {
            "in": "path",
            "name": "username",
            "required": true,
            "schema": {
              "pattern": "^[a-z][a-z0-9]{2,15}$",
              "title": "Username",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "app_name",
            "required": true,
            "schema": {
              "pattern": "^[a-z][a-z0-9_-]{1,30}$",
              "title": "App Name",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_dict_str__Any__"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Install from requirements.txt",
        "tags": [
          "python-apps"
        ]
      }
    },
    "/api/v1/accounts/{username}/python-apps/{app_name}/pip/uninstall": {
      "post": {
        "description": "Uninstall pip packages.",
        "operationId": "uninstall_pip_packages_api_v1_accounts__username__python_apps__app_name__pip_uninstall_post",
        "parameters": [
          {
            "in": "path",
            "name": "username",
            "required": true,
            "schema": {
              "pattern": "^[a-z][a-z0-9]{2,15}$",
              "title": "Username",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "app_name",
            "required": true,
            "schema": {
              "pattern": "^[a-z][a-z0-9_-]{1,30}$",
              "title": "App Name",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PipUninstallRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_dict_str__Any__"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Uninstall pip packages",
        "tags": [
          "python-apps"
        ]
      }
    },
    "/api/v1/accounts/{username}/python-apps/{app_name}/restart": {
      "post": {
        "description": "Restart a Python application.",
        "operationId": "restart_python_app_api_v1_accounts__username__python_apps__app_name__restart_post",
        "parameters": [
          {
            "in": "path",
            "name": "username",
            "required": true,
            "schema": {
              "pattern": "^[a-z][a-z0-9]{2,15}$",
              "title": "Username",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "app_name",
            "required": true,
            "schema": {
              "pattern": "^[a-z][a-z0-9_-]{1,30}$",
              "title": "App Name",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_dict_str__Any__"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Restart Python app",
        "tags": [
          "python-apps"
        ]
      }
    },
    "/api/v1/accounts/{username}/python-apps/{app_name}/start": {
      "post": {
        "description": "Start a Python application.",
        "operationId": "start_python_app_api_v1_accounts__username__python_apps__app_name__start_post",
        "parameters": [
          {
            "in": "path",
            "name": "username",
            "required": true,
            "schema": {
              "pattern": "^[a-z][a-z0-9]{2,15}$",
              "title": "Username",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "app_name",
            "required": true,
            "schema": {
              "pattern": "^[a-z][a-z0-9_-]{1,30}$",
              "title": "App Name",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_dict_str__Any__"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Start Python app",
        "tags": [
          "python-apps"
        ]
      }
    },
    "/api/v1/accounts/{username}/python-apps/{app_name}/status": {
      "get": {
        "description": "Get runtime status of a Python application.",
        "operationId": "get_python_app_status_api_v1_accounts__username__python_apps__app_name__status_get",
        "parameters": [
          {
            "in": "path",
            "name": "username",
            "required": true,
            "schema": {
              "pattern": "^[a-z][a-z0-9]{2,15}$",
              "title": "Username",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "app_name",
            "required": true,
            "schema": {
              "pattern": "^[a-z][a-z0-9_-]{1,30}$",
              "title": "App Name",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_PythonAppStatusResponse_"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Python app status",
        "tags": [
          "python-apps"
        ]
      }
    },
    "/api/v1/accounts/{username}/python-apps/{app_name}/stop": {
      "post": {
        "description": "Stop a Python application.",
        "operationId": "stop_python_app_api_v1_accounts__username__python_apps__app_name__stop_post",
        "parameters": [
          {
            "in": "path",
            "name": "username",
            "required": true,
            "schema": {
              "pattern": "^[a-z][a-z0-9]{2,15}$",
              "title": "Username",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "app_name",
            "required": true,
            "schema": {
              "pattern": "^[a-z][a-z0-9_-]{1,30}$",
              "title": "App Name",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_dict_str__Any__"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Stop Python app",
        "tags": [
          "python-apps"
        ]
      }
    },
    "/api/v1/accounts/{username}/redirects": {
      "get": {
        "description": "Returns every HTTP redirect rule configured for the account's domains.",
        "operationId": "list_redirects_api_v1_accounts__username__redirects_get",
        "parameters": [
          {
            "in": "path",
            "name": "username",
            "required": true,
            "schema": {
              "title": "Username",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_list_RedirectResponse__"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "List URL redirects",
        "tags": [
          "domains"
        ]
      },
      "post": {
        "description": "Add a 301/302 redirect rule (source path on owned domain → target URL).",
        "operationId": "create_redirect_api_v1_accounts__username__redirects_post",
        "parameters": [
          {
            "in": "path",
            "name": "username",
            "required": true,
            "schema": {
              "title": "Username",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/RedirectCreate"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_RedirectResponse_"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Create URL redirect",
        "tags": [
          "domains"
        ]
      }
    },
    "/api/v1/accounts/{username}/redirects/{redirect_id}": {
      "delete": {
        "description": "Remove a redirect rule by id.",
        "operationId": "delete_redirect_api_v1_accounts__username__redirects__redirect_id__delete",
        "parameters": [
          {
            "in": "path",
            "name": "username",
            "required": true,
            "schema": {
              "title": "Username",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "redirect_id",
            "required": true,
            "schema": {
              "title": "Redirect Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MessageResponse"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Delete URL redirect",
        "tags": [
          "domains"
        ]
      },
      "put": {
        "description": "Modify the source path, destination or type of an existing redirect rule.",
        "operationId": "update_redirect_api_v1_accounts__username__redirects__redirect_id__put",
        "parameters": [
          {
            "in": "path",
            "name": "username",
            "required": true,
            "schema": {
              "title": "Username",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "redirect_id",
            "required": true,
            "schema": {
              "title": "Redirect Id",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/RedirectUpdate"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_RedirectResponse_"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Update URL redirect",
        "tags": [
          "domains"
        ]
      }
    },
    "/api/v1/accounts/{username}/resources": {
      "get": {
        "description": "Bundles the account's current cgroup limits, a live usage snapshot, and the `cgroup_supported` flag the panel uses to decide whether to render the usage chart.",
        "operationId": "get_resource_usage_api_v1_accounts__username__resources_get",
        "parameters": [
          {
            "in": "path",
            "name": "username",
            "required": true,
            "schema": {
              "title": "Username",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_ResourceBundleData_"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Get account resource limits + live usage",
        "tags": [
          "accounts"
        ]
      },
      "put": {
        "description": "Patch one or more cgroup limits (CPU %, memory MB, I/O Mbps, IOPS, process count). Only fields present in the body are modified; others retain their current value.",
        "operationId": "update_resource_limits_api_v1_accounts__username__resources_put",
        "parameters": [
          {
            "in": "path",
            "name": "username",
            "required": true,
            "schema": {
              "title": "Username",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ResourceLimitsUpdate"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_ResourceLimits_"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Update resource limits",
        "tags": [
          "accounts"
        ]
      }
    },
    "/api/v1/accounts/{username}/spam/{email}": {
      "delete": {
        "description": "Removes the per-user overrides. The mailbox falls back to global Rspamd config.",
        "operationId": "delete_user_spam_settings_api_v1_accounts__username__spam__email__delete",
        "parameters": [
          {
            "in": "path",
            "name": "username",
            "required": true,
            "schema": {
              "title": "Username",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "email",
            "required": true,
            "schema": {
              "title": "Email",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_dict_str__Any__"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Delete per-mailbox spam settings",
        "tags": [
          "account-spam"
        ]
      },
      "get": {
        "description": "Spam score overrides + per-user white / black lists for the specified mailbox.",
        "operationId": "get_user_spam_settings_api_v1_accounts__username__spam__email__get",
        "parameters": [
          {
            "in": "path",
            "name": "username",
            "required": true,
            "schema": {
              "title": "Username",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "email",
            "required": true,
            "schema": {
              "title": "Email",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_dict_str__Any__"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Get per-mailbox spam settings",
        "tags": [
          "account-spam"
        ]
      },
      "put": {
        "description": "Patch the mailbox's per-user overrides — score thresholds, white / black entries.",
        "operationId": "update_user_spam_settings_api_v1_accounts__username__spam__email__put",
        "parameters": [
          {
            "in": "path",
            "name": "username",
            "required": true,
            "schema": {
              "title": "Username",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "email",
            "required": true,
            "schema": {
              "title": "Email",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UserSpamSettingsUpdate"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_dict_str__Any__"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Update per-mailbox spam settings",
        "tags": [
          "account-spam"
        ]
      }
    },
    "/api/v1/accounts/{username}/ssl/{domain}": {
      "delete": {
        "description": "Remove the certificate, disable SSL on the vhost and reload the webserver.",
        "operationId": "delete_certificate_api_v1_accounts__username__ssl__domain__delete",
        "parameters": [
          {
            "in": "path",
            "name": "username",
            "required": true,
            "schema": {
              "title": "Username",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "domain",
            "required": true,
            "schema": {
              "title": "Domain",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MessageResponse"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Delete SSL certificate",
        "tags": [
          "ssl"
        ]
      },
      "get": {
        "description": "Returns issuer, validity window, type, file paths and renewal flag.",
        "operationId": "get_certificate_api_v1_accounts__username__ssl__domain__get",
        "parameters": [
          {
            "in": "path",
            "name": "username",
            "required": true,
            "schema": {
              "title": "Username",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "domain",
            "required": true,
            "schema": {
              "title": "Domain",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_SSLResponse_"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Get SSL certificate metadata",
        "tags": [
          "ssl"
        ]
      }
    },
    "/api/v1/accounts/{username}/ssl/{domain}/custom": {
      "post": {
        "description": "Install an externally-issued certificate (PEM-encoded cert + key + optional chain).",
        "operationId": "upload_custom_certificate_api_v1_accounts__username__ssl__domain__custom_post",
        "parameters": [
          {
            "in": "path",
            "name": "username",
            "required": true,
            "schema": {
              "title": "Username",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "domain",
            "required": true,
            "schema": {
              "title": "Domain",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SSLCustomUpload"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_SSLResponse_"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Upload custom SSL certificate",
        "tags": [
          "ssl"
        ]
      }
    },
    "/api/v1/accounts/{username}/ssl/{domain}/letsencrypt": {
      "post": {
        "description": "Runs certbot for the owned domain. Idempotent: re-issuing an already-valid certificate is a no-op unless `force_renew` or `force` is set in the body.",
        "operationId": "request_letsencrypt_api_v1_accounts__username__ssl__domain__letsencrypt_post",
        "parameters": [
          {
            "in": "path",
            "name": "username",
            "required": true,
            "schema": {
              "title": "Username",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "domain",
            "required": true,
            "schema": {
              "title": "Domain",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "anyOf": [
                  {
                    "$ref": "#/components/schemas/SSLLetsEncryptRequest"
                  },
                  {
                    "type": "null"
                  }
                ],
                "title": "Data"
              }
            }
          }
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_SSLResponse_"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Issue / renew Let's Encrypt certificate",
        "tags": [
          "ssl"
        ]
      }
    },
    "/api/v1/accounts/{username}/subdomains": {
      "get": {
        "description": "Returns every subdomain under the account's owned domains.",
        "operationId": "list_subdomains_api_v1_accounts__username__subdomains_get",
        "parameters": [
          {
            "in": "path",
            "name": "username",
            "required": true,
            "schema": {
              "title": "Username",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_list_SubdomainResponse__"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "List subdomains",
        "tags": [
          "domains"
        ]
      },
      "post": {
        "description": "Provision a subdomain pointing at a folder under the account's docroot. Enforces `max_subdomains`. Refused 403 `ACCOUNT_SUSPENDED` while the account is suspended.",
        "operationId": "create_subdomain_api_v1_accounts__username__subdomains_post",
        "parameters": [
          {
            "in": "path",
            "name": "username",
            "required": true,
            "schema": {
              "title": "Username",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SubdomainCreate"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_SubdomainResponse_"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Create subdomain",
        "tags": [
          "domains"
        ]
      }
    },
    "/api/v1/accounts/{username}/subdomains/{subdomain}": {
      "delete": {
        "description": "Remove the subdomain's DNS record and vhost; the subdomain's own folder under the account home is renamed <folder>-removed-<timestamp> (nothing is deleted).",
        "operationId": "delete_subdomain_api_v1_accounts__username__subdomains__subdomain__delete",
        "parameters": [
          {
            "in": "path",
            "name": "username",
            "required": true,
            "schema": {
              "title": "Username",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "subdomain",
            "required": true,
            "schema": {
              "title": "Subdomain",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MessageResponse"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Delete subdomain",
        "tags": [
          "domains"
        ]
      },
      "put": {
        "description": "Rename a subdomain or change its document root or PHP version.",
        "operationId": "update_subdomain_api_v1_accounts__username__subdomains__subdomain__put",
        "parameters": [
          {
            "in": "path",
            "name": "username",
            "required": true,
            "schema": {
              "title": "Username",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "subdomain",
            "required": true,
            "schema": {
              "title": "Subdomain",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SubdomainUpdate"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_SubdomainResponse_"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Update subdomain",
        "tags": [
          "domains"
        ]
      }
    },
    "/api/v1/accounts/{username}/suspend": {
      "post": {
        "description": "Suspend an account: disables web/mail/ftp/db access and stops outbound mail. Reversible via `/unsuspend`. Optional `reason` is recorded in the audit log.",
        "operationId": "suspend_account_api_v1_accounts__username__suspend_post",
        "parameters": [
          {
            "in": "path",
            "name": "username",
            "required": true,
            "schema": {
              "title": "Username",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "anyOf": [
                  {
                    "$ref": "#/components/schemas/SuspendRequest"
                  },
                  {
                    "type": "null"
                  }
                ],
                "title": "Data"
              }
            }
          }
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MessageResponse"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Suspend account",
        "tags": [
          "accounts"
        ]
      }
    },
    "/api/v1/accounts/{username}/unsuspend": {
      "post": {
        "description": "Re-enable a previously suspended account.",
        "operationId": "unsuspend_account_api_v1_accounts__username__unsuspend_post",
        "parameters": [
          {
            "in": "path",
            "name": "username",
            "required": true,
            "schema": {
              "title": "Username",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MessageResponse"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Unsuspend account",
        "tags": [
          "accounts"
        ]
      }
    },
    "/api/v1/accounts/{username}/usage": {
      "get": {
        "description": "Live usage snapshot: disk, bandwidth, domain / database / email / ftp counts, plus a cgroup-derived `resource` block when supported.",
        "operationId": "get_usage_api_v1_accounts__username__usage_get",
        "parameters": [
          {
            "in": "path",
            "name": "username",
            "required": true,
            "schema": {
              "title": "Username",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_AccountUsage_"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Get account usage",
        "tags": [
          "accounts"
        ]
      }
    },
    "/api/v1/accounts/{username}/waf/audit-log": {
      "get": {
        "description": "The newest audit entries whose Host header names one of the account's own domains.",
        "operationId": "get_account_audit_log_api_v1_accounts__username__waf_audit_log_get",
        "parameters": [
          {
            "in": "path",
            "name": "username",
            "required": true,
            "schema": {
              "title": "Username",
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "limit",
            "required": false,
            "schema": {
              "default": 100,
              "maximum": 1000,
              "minimum": 1,
              "title": "Limit",
              "type": "integer"
            }
          },
          {
            "in": "query",
            "name": "offset",
            "required": false,
            "schema": {
              "default": 0,
              "minimum": 0,
              "title": "Offset",
              "type": "integer"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_list_WafAuditLogEntry__"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "ModSecurity audit log (account-scope)",
        "tags": [
          "waf"
        ]
      }
    },
    "/api/v1/accounts/{username}/waf/rules": {
      "get": {
        "description": "The rules excluded for this account's vhosts, each with its optional URI scope.",
        "operationId": "get_account_rule_exclusions_api_v1_accounts__username__waf_rules_get",
        "parameters": [
          {
            "in": "path",
            "name": "username",
            "required": true,
            "schema": {
              "title": "Username",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_list_WafRuleExclusionEntry__"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "List the account's rule exclusions",
        "tags": [
          "waf"
        ]
      }
    },
    "/api/v1/accounts/{username}/waf/rules/exclude": {
      "post": {
        "description": "Add an account-scope exclusion — the named rule no longer triggers for this account's vhosts (or for the given URI only). The rule must be in the loaded rule set; an exclusion already present is answered without a write. Answers 409 FEATURE_DISABLED while modsecurity.per_account_overrides is off.",
        "operationId": "add_rule_exclusion_api_v1_accounts__username__waf_rules_exclude_post",
        "parameters": [
          {
            "in": "path",
            "name": "username",
            "required": true,
            "schema": {
              "title": "Username",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/WafRuleExclusionRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_WafAccountStatus_"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Exclude a CRS rule for one account",
        "tags": [
          "waf"
        ]
      }
    },
    "/api/v1/accounts/{username}/waf/rules/exclude/{rule_id}": {
      "delete": {
        "description": "Removes the exclusion of the rule without a URI scope, or — with `uri` — the exclusion scoped to that URI. The rule resumes triggering for the account. Answers 409 FEATURE_DISABLED while modsecurity.per_account_overrides is off.",
        "operationId": "remove_rule_exclusion_api_v1_accounts__username__waf_rules_exclude__rule_id__delete",
        "parameters": [
          {
            "in": "path",
            "name": "username",
            "required": true,
            "schema": {
              "title": "Username",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "rule_id",
            "required": true,
            "schema": {
              "title": "Rule Id",
              "type": "integer"
            }
          },
          {
            "in": "query",
            "name": "uri",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "maxLength": 512,
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Uri"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_WafAccountStatus_"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Remove rule exclusion",
        "tags": [
          "waf"
        ]
      }
    },
    "/api/v1/accounts/{username}/waf/status": {
      "get": {
        "description": "Account-scope: WAF on/off flag + the account's rule exclusions. An account that does not exist answers 404.",
        "operationId": "get_account_waf_status_api_v1_accounts__username__waf_status_get",
        "parameters": [
          {
            "in": "path",
            "name": "username",
            "required": true,
            "schema": {
              "title": "Username",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_WafAccountStatus_"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "ModSecurity per-account status",
        "tags": [
          "waf"
        ]
      }
    },
    "/api/v1/accounts/{username}/waf/toggle": {
      "put": {
        "description": "Per-account override — bypass WAF entirely for the named account's vhosts. A change reloads the webserver; the state already in force is answered without a write. Answers 409 FEATURE_DISABLED while modsecurity.per_account_overrides is off.",
        "operationId": "toggle_account_waf_api_v1_accounts__username__waf_toggle_put",
        "parameters": [
          {
            "in": "path",
            "name": "username",
            "required": true,
            "schema": {
              "title": "Username",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/WafToggleRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_WafAccountStatus_"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Toggle ModSecurity for account",
        "tags": [
          "waf"
        ]
      }
    },
    "/api/v1/admin/notifications": {
      "delete": {
        "description": "Bulk operation behind the inbox's \"Clear All\": removes every record the operator's inbox holds (admin-targeted and broadcast; a tenant's own records stay). Response data: `{deleted: <count>}`.",
        "operationId": "delete_all_notifications_api_v1_admin_notifications_delete",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_dict_str__Any__"
                }
              }
            },
            "description": "Successful Response"
          }
        },
        "summary": "Delete every admin notification",
        "tags": [
          "notifications"
        ]
      },
      "get": {
        "description": "Returns the admin notification inbox. Response data shape: `{notifications: [...], total, unread_count}` — `total` is the size of the inbox, not of the page.",
        "operationId": "list_notifications_api_v1_admin_notifications_get",
        "parameters": [
          {
            "in": "query",
            "name": "limit",
            "required": false,
            "schema": {
              "default": 50,
              "maximum": 200,
              "minimum": 1,
              "title": "Limit",
              "type": "integer"
            }
          },
          {
            "in": "query",
            "name": "unread_only",
            "required": false,
            "schema": {
              "default": false,
              "title": "Unread Only",
              "type": "boolean"
            }
          },
          {
            "in": "query",
            "name": "category",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Category"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_dict_str__Any__"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "List admin notifications",
        "tags": [
          "notifications"
        ]
      },
      "post": {
        "description": "Create a notification visible in the admin inbox. Response data: `{id, stored}` — `stored` is false and `id` null when the panel switch or the event matrix suppresses the record.",
        "operationId": "create_notification_api_v1_admin_notifications_post",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/NotificationCreate"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_dict_str__Any__"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Push admin notification",
        "tags": [
          "notifications"
        ]
      }
    },
    "/api/v1/admin/notifications/read-all": {
      "post": {
        "description": "Bulk operation. Response data: `{marked: <count>}`.",
        "operationId": "mark_all_read_api_v1_admin_notifications_read_all_post",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_dict_str__Any__"
                }
              }
            },
            "description": "Successful Response"
          }
        },
        "summary": "Mark every admin notification as read",
        "tags": [
          "notifications"
        ]
      }
    },
    "/api/v1/admin/notifications/settings": {
      "get": {
        "description": "Returns panel + email toggles per category, SMTP settings (with password masked), the event matrix and every event's e-mail template. Each `templates` entry carries the subject and body in force, `customized` (true when the operator's own copy replaces the default; `default_subject` / `default_body` then hold the default) and `variables` — the keys the event fills in, each with a `sample` value for previews. `general_variables` lists the keys every template can use. SMTP password is redacted to a `••••` sentinel — pass the same sentinel back on save to keep the stored value untouched.",
        "operationId": "get_preferences_api_v1_admin_notifications_settings_get",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_dict_str__Any__"
                }
              }
            },
            "description": "Successful Response"
          }
        },
        "summary": "Get admin notification preferences",
        "tags": [
          "notifications"
        ]
      },
      "put": {
        "description": "Patch panel/email category toggles, SMTP block, event templates.",
        "operationId": "update_preferences_api_v1_admin_notifications_settings_put",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/NotificationPreferencesUpdate"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_NotificationPreferences_"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Update admin notification preferences",
        "tags": [
          "notifications"
        ]
      }
    },
    "/api/v1/admin/notifications/test-email": {
      "post": {
        "description": "Send a one-shot test email using the SMTP block in the body (or the persisted settings if the body sends the masked sentinel).",
        "operationId": "send_test_email_api_v1_admin_notifications_test_email_post",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SmtpTestRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MessageResponse"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Send test email",
        "tags": [
          "notifications"
        ]
      }
    },
    "/api/v1/admin/notifications/unread-count": {
      "get": {
        "description": "Lightweight endpoint for the topbar bell badge. Response data: `{unread_count}`.",
        "operationId": "get_unread_count_api_v1_admin_notifications_unread_count_get",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_dict_str__Any__"
                }
              }
            },
            "description": "Successful Response"
          }
        },
        "summary": "Get unread admin notifications count",
        "tags": [
          "notifications"
        ]
      }
    },
    "/api/v1/admin/notifications/{notif_id}": {
      "delete": {
        "description": "Remove a single notification from the inbox (no soft-delete).",
        "operationId": "delete_notification_api_v1_admin_notifications__notif_id__delete",
        "parameters": [
          {
            "in": "path",
            "name": "notif_id",
            "required": true,
            "schema": {
              "title": "Notif Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MessageResponse"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Delete notification",
        "tags": [
          "notifications"
        ]
      }
    },
    "/api/v1/admin/notifications/{notif_id}/read": {
      "post": {
        "description": "Flip the unread → read flag for one notification.",
        "operationId": "mark_read_api_v1_admin_notifications__notif_id__read_post",
        "parameters": [
          {
            "in": "path",
            "name": "notif_id",
            "required": true,
            "schema": {
              "title": "Notif Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MessageResponse"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Mark notification as read",
        "tags": [
          "notifications"
        ]
      }
    },
    "/api/v1/admin/profile": {
      "get": {
        "description": "Returns the current admin's profile (username, email, language, avatar URL, 2FA state).",
        "operationId": "get_admin_profile_api_v1_admin_profile_get",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_AdminProfileResponse_"
                }
              }
            },
            "description": "Successful Response"
          }
        },
        "summary": "Get admin profile",
        "tags": [
          "admin-profile"
        ]
      },
      "put": {
        "description": "Patch email, language and/or the sidebar choice. Session-only — HMAC keys cannot mutate admin credentials. The sidebar choice is kept in the agent's admin state file, not in agent.conf.",
        "operationId": "update_admin_profile_api_v1_admin_profile_put",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/AdminProfileUpdate"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_AdminProfileResponse_"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Update admin profile",
        "tags": [
          "admin-profile"
        ]
      }
    },
    "/api/v1/admin/profile/2fa/backup-codes/regenerate": {
      "post": {
        "description": "Issues a fresh batch of one-time backup codes. Old codes are invalidated.",
        "operationId": "regenerate_admin_backup_codes_api_v1_admin_profile_2fa_backup_codes_regenerate_post",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_BackupCodesResponse_"
                }
              }
            },
            "description": "Successful Response"
          }
        },
        "summary": "Regenerate backup codes",
        "tags": [
          "admin-profile"
        ]
      }
    },
    "/api/v1/admin/profile/2fa/disable": {
      "post": {
        "description": "Requires the current admin password. Clears stored TOTP secret + backup codes.",
        "operationId": "disable_admin_2fa_api_v1_admin_profile_2fa_disable_post",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/TwoFADisableRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MessageResponse"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Disable 2FA",
        "tags": [
          "admin-profile"
        ]
      }
    },
    "/api/v1/admin/profile/2fa/enable": {
      "post": {
        "description": "Verifies the OTP from `/2fa/setup` and activates 2FA. **Returns the one-time backup codes** — they cannot be retrieved later. Anti-replay: rejects re-use of the same TOTP step.",
        "operationId": "enable_admin_2fa_api_v1_admin_profile_2fa_enable_post",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/TwoFAEnableRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_BackupCodesResponse_"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Verify OTP and enable 2FA",
        "tags": [
          "admin-profile"
        ]
      }
    },
    "/api/v1/admin/profile/2fa/resend-code": {
      "post": {
        "description": "Only valid mid-setup when `method=email`. Response data: `{masked_email}`.",
        "operationId": "resend_admin_2fa_code_api_v1_admin_profile_2fa_resend_code_post",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_dict_str__Any__"
                }
              }
            },
            "description": "Successful Response"
          }
        },
        "summary": "Resend email 2FA code",
        "tags": [
          "admin-profile"
        ]
      }
    },
    "/api/v1/admin/profile/2fa/setup": {
      "post": {
        "description": "Begin two-factor enrollment. `method=totp` returns the secret + `otpauth://` URI for QR rendering. `method=email` sends an OTP to the configured admin email and returns the masked address.",
        "operationId": "setup_admin_2fa_api_v1_admin_profile_2fa_setup_post",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/TwoFASetupRequest",
                "default": {
                  "method": "totp"
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_TwoFASetupResponse_"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Initiate 2FA setup",
        "tags": [
          "admin-profile"
        ]
      }
    },
    "/api/v1/admin/profile/avatar": {
      "delete": {
        "description": "Removes the avatar file from disk and clears the persisted URL. Response data: `{avatar_url: null}`.",
        "operationId": "delete_admin_avatar_api_v1_admin_profile_avatar_delete",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_dict_str__Any__"
                }
              }
            },
            "description": "Successful Response"
          }
        },
        "summary": "Delete admin avatar",
        "tags": [
          "admin-profile"
        ]
      },
      "post": {
        "description": "Accepts PNG / JPEG / WebP up to 2 MB (magic-byte validated). Response data: `{avatar_url}` — short cache-busted URL to `/avatar/raw`.",
        "operationId": "upload_admin_avatar_api_v1_admin_profile_avatar_post",
        "requestBody": {
          "content": {
            "multipart/form-data": {
              "schema": {
                "$ref": "#/components/schemas/Body_upload_admin_avatar_api_v1_admin_profile_avatar_post"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_dict_str__Any__"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Upload admin avatar",
        "tags": [
          "admin-profile"
        ]
      }
    },
    "/api/v1/admin/profile/avatar/raw": {
      "get": {
        "description": "Returns the image bytes with the original Content-Type. Honors `If-None-Match` for 304 caching. Binary — no JSON envelope.",
        "operationId": "serve_admin_avatar_api_v1_admin_profile_avatar_raw_get",
        "responses": {
          "200": {
            "description": "Successful Response"
          }
        },
        "summary": "Stream admin avatar binary",
        "tags": [
          "admin-profile"
        ]
      }
    },
    "/api/v1/admin/profile/password": {
      "patch": {
        "description": "Requires current password. On success the session secret is rotated (invalidating every other session) and a fresh session cookie is issued for the caller.",
        "operationId": "change_admin_password_api_v1_admin_profile_password_patch",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/whost_agent__models__profile__PasswordChange"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MessageResponse"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Change admin password",
        "tags": [
          "admin-profile"
        ]
      }
    },
    "/api/v1/audit-logs": {
      "get": {
        "description": "Paginated audit log read. Filter by `event_type` (enum) and/or `username`. HMAC requests require the `audit:read` scope; browser admin sessions get implicit access.",
        "operationId": "list_audit_logs_api_v1_audit_logs_get",
        "parameters": [
          {
            "in": "query",
            "name": "limit",
            "required": false,
            "schema": {
              "default": 20,
              "maximum": 200,
              "minimum": 1,
              "title": "Limit",
              "type": "integer"
            }
          },
          {
            "in": "query",
            "name": "offset",
            "required": false,
            "schema": {
              "default": 0,
              "minimum": 0,
              "title": "Offset",
              "type": "integer"
            }
          },
          {
            "in": "query",
            "name": "event_type",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "$ref": "#/components/schemas/AuditEventType"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Event Type"
            }
          },
          {
            "in": "query",
            "name": "username",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Username"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_PaginatedAuditLogsData_"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "List audit log entries",
        "tags": [
          "audit-logs"
        ]
      }
    },
    "/api/v1/auth/captcha-config": {
      "get": {
        "description": "Return public captcha configuration for login pages. No authentication required.",
        "operationId": "captcha_config_api_v1_auth_captcha_config_get",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_dict_str__Any__"
                }
              }
            },
            "description": "Successful Response"
          }
        },
        "summary": "Captcha config (public)",
        "tags": [
          "auth"
        ]
      }
    },
    "/api/v1/auth/client/forgot-password": {
      "post": {
        "description": "Send a password reset link to the client's email. Always returns 200 to prevent email enumeration.",
        "operationId": "client_forgot_password_api_v1_auth_client_forgot_password_post",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ForgotPasswordRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_dict_str__Any__"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Client forgot password",
        "tags": [
          "auth"
        ]
      }
    },
    "/api/v1/auth/client/impersonation-info": {
      "get": {
        "description": "Return impersonation metadata for the current client session (impersonated flag + impersonator + role). Requires a client session.",
        "operationId": "client_impersonation_info_api_v1_auth_client_impersonation_info_get",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_dict_str__Any__"
                }
              }
            },
            "description": "Successful Response"
          }
        },
        "summary": "Client impersonation info",
        "tags": [
          "auth"
        ]
      }
    },
    "/api/v1/auth/client/login": {
      "post": {
        "description": "Authenticate client account credentials. Returns either a session cookie (success) or a pending 2FA token when 2FA is enabled. A signed-in answer carries the account's panel choices: `data.language` (`auto` when none) and `data.sidebar_collapsed` (null when none).",
        "operationId": "client_login_api_v1_auth_client_login_post",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ClientLoginRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_dict_str__Any__"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Client login",
        "tags": [
          "auth"
        ]
      }
    },
    "/api/v1/auth/client/login/2fa": {
      "post": {
        "description": "Verify the second-factor code during client login and issue a session cookie. `data.language` and `data.sidebar_collapsed` are set on the same terms as on the first step.",
        "operationId": "client_login_2fa_api_v1_auth_client_login_2fa_post",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/TwoFactorRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_dict_str__Any__"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Client 2FA verify",
        "tags": [
          "auth"
        ]
      }
    },
    "/api/v1/auth/client/logout": {
      "post": {
        "description": "Invalidate the client session cookie and bump the per-account session ratchet.",
        "operationId": "client_logout_api_v1_auth_client_logout_post",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_dict_str__Any__"
                }
              }
            },
            "description": "Successful Response"
          }
        },
        "summary": "Client logout",
        "tags": [
          "auth"
        ]
      }
    },
    "/api/v1/auth/client/reset-password": {
      "post": {
        "description": "Reset a client account password using a valid one-time reset token.",
        "operationId": "client_reset_password_api_v1_auth_client_reset_password_post",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ResetPasswordRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_dict_str__Any__"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Client reset password",
        "tags": [
          "auth"
        ]
      }
    },
    "/api/v1/auth/client/session": {
      "get": {
        "description": "Return the current client session status (authenticated/role/username/domain + optional 2FA setup hint).",
        "operationId": "client_session_check_api_v1_auth_client_session_get",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_dict_str__Any__"
                }
              }
            },
            "description": "Successful Response"
          }
        },
        "summary": "Client session check",
        "tags": [
          "auth"
        ]
      }
    },
    "/api/v1/auth/impersonate/callback": {
      "get": {
        "description": "Validate impersonation token, set client cookie, redirect to client panel.",
        "operationId": "impersonate_callback_api_v1_auth_impersonate_callback_get",
        "parameters": [
          {
            "in": "query",
            "name": "token",
            "required": false,
            "schema": {
              "default": "",
              "title": "Token",
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "lang",
            "required": false,
            "schema": {
              "default": "en",
              "title": "Lang",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {}
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Impersonate Callback",
        "tags": [
          "auth"
        ]
      }
    },
    "/api/v1/auth/impersonate/{username}": {
      "post": {
        "description": "Generate a short-lived impersonation token (admin or reseller scope). Returns a login URL for the callback endpoint.",
        "operationId": "impersonate_account_api_v1_auth_impersonate__username__post",
        "parameters": [
          {
            "in": "path",
            "name": "username",
            "required": true,
            "schema": {
              "title": "Username",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_dict_str__Any__"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Mint impersonation token",
        "tags": [
          "auth"
        ]
      }
    },
    "/api/v1/auth/ip-check": {
      "get": {
        "description": "Tells the login page whether the caller's address passes the admin IP allowlist. The resolved address is never echoed back.",
        "operationId": "ip_check_api_v1_auth_ip_check_get",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_dict_str__Any__"
                }
              }
            },
            "description": "Successful Response"
          }
        },
        "summary": "Admin IP allowlist check (public)",
        "tags": [
          "auth"
        ]
      }
    },
    "/api/v1/auth/login": {
      "post": {
        "description": "Authenticate admin credentials. Returns either a session cookie (success) or a pending 2FA token when 2FA is enabled. While the licence is not activated or is suspended, matching credentials still get the session and `data.license_blocked` names the condition (`LICENSE_NOT_ACTIVATED` or `LICENSE_SUSPENDED`); that session is honoured on the `/auth/*` and `/license/*` endpoints only, every other endpoint keeps answering 403 with the same code. A request that does not authenticate is answered 401 whatever the licence state. A signed-in answer carries the admin's panel choices: `data.language` (`auto` when none) and `data.sidebar_collapsed` (null when none).",
        "operationId": "admin_login_api_v1_auth_login_post",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/AdminLoginRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_dict_str__Any__"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Admin login",
        "tags": [
          "auth"
        ]
      }
    },
    "/api/v1/auth/login/2fa": {
      "post": {
        "description": "Verify the second-factor code during admin login and issue a session cookie. `data.license_blocked`, `data.language` and `data.sidebar_collapsed` are set on the same terms as on the first step.",
        "operationId": "admin_login_2fa_api_v1_auth_login_2fa_post",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/TwoFactorRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_dict_str__Any__"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Admin 2FA verify",
        "tags": [
          "auth"
        ]
      }
    },
    "/api/v1/auth/logout": {
      "post": {
        "description": "Invalidate the admin session cookie and bump the server-side session ratchet.",
        "operationId": "admin_logout_api_v1_auth_logout_post",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_dict_str__Any__"
                }
              }
            },
            "description": "Successful Response"
          }
        },
        "summary": "Admin logout",
        "tags": [
          "auth"
        ]
      }
    },
    "/api/v1/auth/session": {
      "get": {
        "description": "Return the current admin session status (authenticated/role/username + optional 2FA setup hint).",
        "operationId": "admin_session_check_api_v1_auth_session_get",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_dict_str__Any__"
                }
              }
            },
            "description": "Successful Response"
          }
        },
        "summary": "Admin session check",
        "tags": [
          "auth"
        ]
      }
    },
    "/api/v1/banned-words": {
      "get": {
        "description": "Every banned-word list with its category and words. A file under the wordlists directory that cannot be read as a list is named in `warnings` and is not applied.",
        "operationId": "list_wordlists_api_v1_banned_words_get",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_list_WordlistResponse__"
                }
              }
            },
            "description": "Successful Response"
          }
        },
        "summary": "List word filter lists",
        "tags": [
          "banned-words"
        ]
      },
      "post": {
        "description": "Define a new banned-word list under a category (account_name / domain / email_subject).",
        "operationId": "create_wordlist_api_v1_banned_words_post",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/WordlistCreate"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_WordlistResponse_"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Create word filter list",
        "tags": [
          "banned-words"
        ]
      }
    },
    "/api/v1/banned-words/check": {
      "post": {
        "description": "Returns whether the given value would be blocked + which list matched.",
        "operationId": "check_value_api_v1_banned_words_check_post",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/BannedWordCheckRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_BannedWordCheckResponse_"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Test value against word filters",
        "tags": [
          "banned-words"
        ]
      }
    },
    "/api/v1/banned-words/{wordlist_id}": {
      "delete": {
        "description": "Removes the list. Active filters using this list are no longer enforced.",
        "operationId": "delete_wordlist_api_v1_banned_words__wordlist_id__delete",
        "parameters": [
          {
            "in": "path",
            "name": "wordlist_id",
            "required": true,
            "schema": {
              "title": "Wordlist Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MessageResponse"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Delete word filter list",
        "tags": [
          "banned-words"
        ]
      },
      "get": {
        "description": "Detail view of a single list, including every blocked word.",
        "operationId": "get_wordlist_api_v1_banned_words__wordlist_id__get",
        "parameters": [
          {
            "in": "path",
            "name": "wordlist_id",
            "required": true,
            "schema": {
              "title": "Wordlist Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_WordlistResponse_"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Get word filter list",
        "tags": [
          "banned-words"
        ]
      },
      "put": {
        "description": "Patch the list — replace words, change category, toggle enabled.",
        "operationId": "update_wordlist_api_v1_banned_words__wordlist_id__put",
        "parameters": [
          {
            "in": "path",
            "name": "wordlist_id",
            "required": true,
            "schema": {
              "title": "Wordlist Id",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/WordlistUpdate"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_WordlistResponse_"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Update word filter list",
        "tags": [
          "banned-words"
        ]
      }
    },
    "/api/v1/client/accounts": {
      "get": {
        "description": "List hosting accounts owned by the calling reseller with pagination, sorting, status filter, and search.",
        "operationId": "list_sub_accounts_api_v1_client_accounts_get",
        "parameters": [
          {
            "in": "query",
            "name": "limit",
            "required": false,
            "schema": {
              "default": 50,
              "maximum": 200,
              "minimum": 1,
              "title": "Limit",
              "type": "integer"
            }
          },
          {
            "in": "query",
            "name": "offset",
            "required": false,
            "schema": {
              "default": 0,
              "minimum": 0,
              "title": "Offset",
              "type": "integer"
            }
          },
          {
            "in": "query",
            "name": "sort",
            "required": false,
            "schema": {
              "default": "created_at",
              "pattern": "^(created_at|username)$",
              "title": "Sort",
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "order",
            "required": false,
            "schema": {
              "default": "desc",
              "pattern": "^(asc|desc)$",
              "title": "Order",
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "status",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "pattern": "^(active|suspended|terminated)$",
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Status"
            }
          },
          {
            "in": "query",
            "name": "search",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "maxLength": 100,
                  "minLength": 2,
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Search"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_dict_str__Any__"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "List reseller sub-accounts",
        "tags": [
          "client-accounts"
        ]
      },
      "post": {
        "description": "Create a new hosting account owned by the calling reseller. Reseller-scoping fields are forced server-side.",
        "operationId": "create_sub_account_api_v1_client_accounts_post",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/AccountCreate"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_dict_str__Any__"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Create reseller sub-account",
        "tags": [
          "client-accounts"
        ]
      }
    },
    "/api/v1/client/accounts/{username}": {
      "delete": {
        "description": "Permanently terminate a sub-account owned by the calling reseller.",
        "operationId": "delete_sub_account_api_v1_client_accounts__username__delete",
        "parameters": [
          {
            "in": "path",
            "name": "username",
            "required": true,
            "schema": {
              "title": "Username",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MessageResponse"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Terminate reseller sub-account",
        "tags": [
          "client-accounts"
        ]
      },
      "get": {
        "description": "Return detailed metadata for a sub-account owned by the calling reseller.",
        "operationId": "get_sub_account_api_v1_client_accounts__username__get",
        "parameters": [
          {
            "in": "path",
            "name": "username",
            "required": true,
            "schema": {
              "title": "Username",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_dict_str__Any__"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Get reseller sub-account",
        "tags": [
          "client-accounts"
        ]
      },
      "put": {
        "description": "Update sub-account fields owned by the calling reseller. Admin-only fields are stripped server-side.",
        "operationId": "update_sub_account_api_v1_client_accounts__username__put",
        "parameters": [
          {
            "in": "path",
            "name": "username",
            "required": true,
            "schema": {
              "title": "Username",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/AccountUpdate"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_dict_str__Any__"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Update reseller sub-account",
        "tags": [
          "client-accounts"
        ]
      }
    },
    "/api/v1/client/accounts/{username}/password": {
      "patch": {
        "description": "Reset the password of a sub-account owned by the calling reseller. Requires session cookie (HMAC forbidden).",
        "operationId": "change_sub_account_password_api_v1_client_accounts__username__password_patch",
        "parameters": [
          {
            "in": "path",
            "name": "username",
            "required": true,
            "schema": {
              "title": "Username",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/whost_agent__models__account__PasswordChange"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MessageResponse"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Change reseller sub-account password",
        "tags": [
          "client-accounts"
        ]
      }
    },
    "/api/v1/client/accounts/{username}/suspend": {
      "post": {
        "description": "Suspend a sub-account owned by the calling reseller with an optional reason.",
        "operationId": "suspend_sub_account_api_v1_client_accounts__username__suspend_post",
        "parameters": [
          {
            "in": "path",
            "name": "username",
            "required": true,
            "schema": {
              "title": "Username",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "anyOf": [
                  {
                    "$ref": "#/components/schemas/SuspendRequest"
                  },
                  {
                    "type": "null"
                  }
                ],
                "title": "Data"
              }
            }
          }
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MessageResponse"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Suspend reseller sub-account",
        "tags": [
          "client-accounts"
        ]
      }
    },
    "/api/v1/client/accounts/{username}/unsuspend": {
      "post": {
        "description": "Reactivate a previously suspended sub-account owned by the calling reseller.",
        "operationId": "unsuspend_sub_account_api_v1_client_accounts__username__unsuspend_post",
        "parameters": [
          {
            "in": "path",
            "name": "username",
            "required": true,
            "schema": {
              "title": "Username",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MessageResponse"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Unsuspend reseller sub-account",
        "tags": [
          "client-accounts"
        ]
      }
    },
    "/api/v1/client/accounts/{username}/waf": {
      "get": {
        "description": "ModSecurity on/off state for a sub-account owned by the calling reseller.",
        "operationId": "get_sub_account_waf_api_v1_client_accounts__username__waf_get",
        "parameters": [
          {
            "in": "path",
            "name": "username",
            "required": true,
            "schema": {
              "title": "Username",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_dict_str__Any__"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Sub-account WAF status",
        "tags": [
          "client-accounts"
        ]
      },
      "put": {
        "description": "Turn ModSecurity on or off for a sub-account owned by the calling reseller.",
        "operationId": "toggle_sub_account_waf_api_v1_client_accounts__username__waf_put",
        "parameters": [
          {
            "in": "path",
            "name": "username",
            "required": true,
            "schema": {
              "title": "Username",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/WafToggleRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_dict_str__Any__"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Toggle sub-account WAF",
        "tags": [
          "client-accounts"
        ]
      }
    },
    "/api/v1/client/addon-domains": {
      "post": {
        "description": "Create an addon domain for the authenticated client account. Plan limit enforced.",
        "operationId": "client_create_addon_domain_api_v1_client_addon_domains_post",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/AddonDomainCreate"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_dict_str__Any__"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Create addon domain (client)",
        "tags": [
          "client-domains"
        ]
      }
    },
    "/api/v1/client/addon-domains/{domain}": {
      "delete": {
        "description": "Delete an addon domain owned by the authenticated client account.",
        "operationId": "client_delete_addon_domain_api_v1_client_addon_domains__domain__delete",
        "parameters": [
          {
            "in": "path",
            "name": "domain",
            "required": true,
            "schema": {
              "title": "Domain",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MessageResponse"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Delete addon domain (client)",
        "tags": [
          "client-domains"
        ]
      }
    },
    "/api/v1/client/api-keys": {
      "get": {
        "description": "Keys owned by the calling reseller account, without secrets. Every key reaches only the client API as this account.",
        "operationId": "list_my_keys_api_v1_client_api_keys_get",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_list_ApiKeyPublic__"
                }
              }
            },
            "description": "Successful Response"
          }
        },
        "summary": "List my API keys (reseller)",
        "tags": [
          "client-api-keys"
        ]
      },
      "post": {
        "description": "Mint an HMAC key pair bound to the calling reseller account. **The secret is returned only once.** The key's scope is fixed to the client API; the reseller's ACL plan must grant `api_access`.",
        "operationId": "create_my_key_api_v1_client_api_keys_post",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ApiKeyCreate"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_ApiKeyCreateResponse_"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Create an API key bound to my account (reseller)",
        "tags": [
          "client-api-keys"
        ]
      }
    },
    "/api/v1/client/api-keys/logs": {
      "get": {
        "description": "Paginated history of the requests signed with keys owned by the calling reseller.",
        "operationId": "my_access_logs_api_v1_client_api_keys_logs_get",
        "parameters": [
          {
            "in": "query",
            "name": "page",
            "required": false,
            "schema": {
              "default": 1,
              "minimum": 1,
              "title": "Page",
              "type": "integer"
            }
          },
          {
            "in": "query",
            "name": "limit",
            "required": false,
            "schema": {
              "default": 20,
              "maximum": 100,
              "minimum": 1,
              "title": "Limit",
              "type": "integer"
            }
          },
          {
            "in": "query",
            "name": "search",
            "required": false,
            "schema": {
              "default": "",
              "title": "Search",
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "status",
            "required": false,
            "schema": {
              "default": "",
              "title": "Status",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_PaginatedApiAccessLogsData_"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Access logs of my API keys (reseller)",
        "tags": [
          "client-api-keys"
        ]
      }
    },
    "/api/v1/client/api-keys/{key_id}": {
      "delete": {
        "description": "Permanently remove a key owned by the calling reseller. The audit log entry is kept.",
        "operationId": "delete_my_key_api_v1_client_api_keys__key_id__delete",
        "parameters": [
          {
            "in": "path",
            "name": "key_id",
            "required": true,
            "schema": {
              "title": "Key Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MessageResponse"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Delete one of my API keys (reseller)",
        "tags": [
          "client-api-keys"
        ]
      },
      "put": {
        "description": "Change the name or the allowed-IP list of a key owned by the calling reseller. The scope cannot change.",
        "operationId": "update_my_key_api_v1_client_api_keys__key_id__put",
        "parameters": [
          {
            "in": "path",
            "name": "key_id",
            "required": true,
            "schema": {
              "title": "Key Id",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ApiKeyUpdate"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_ApiKeyPublic_"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Update one of my API keys (reseller)",
        "tags": [
          "client-api-keys"
        ]
      }
    },
    "/api/v1/client/api-keys/{key_id}/revoke": {
      "post": {
        "description": "Soft-disable a key owned by the calling reseller; later requests signed with it are rejected with 401.",
        "operationId": "revoke_my_key_api_v1_client_api_keys__key_id__revoke_post",
        "parameters": [
          {
            "in": "path",
            "name": "key_id",
            "required": true,
            "schema": {
              "title": "Key Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_ApiKeyPublic_"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Revoke one of my API keys (reseller)",
        "tags": [
          "client-api-keys"
        ]
      }
    },
    "/api/v1/client/backups": {
      "get": {
        "description": "Return all backups owned by the authenticated client account.",
        "operationId": "client_list_backups_api_v1_client_backups_get",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_list_dict_str__Any___"
                }
              }
            },
            "description": "Successful Response"
          }
        },
        "summary": "List backups (client)",
        "tags": [
          "client-backups"
        ]
      },
      "post": {
        "description": "Create a new backup for the authenticated client account. Refused 409 `UPDATE_IN_PROGRESS` while the server is installing an update.",
        "operationId": "client_create_backup_api_v1_client_backups_post",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/BackupCreate"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_dict_str__Any__"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Create backup (client)",
        "tags": [
          "client-backups"
        ]
      }
    },
    "/api/v1/client/backups/google-drive/auth-url": {
      "post": {
        "description": "Generate a Google OAuth2 authorization URL for connecting Google Drive as a remote backup destination.",
        "operationId": "client_google_drive_auth_url_api_v1_client_backups_google_drive_auth_url_post",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/_OAuthCredentials"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_dict_str__Any__"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Google Drive OAuth URL (client)",
        "tags": [
          "client-backups"
        ]
      }
    },
    "/api/v1/client/backups/google-drive/callback": {
      "get": {
        "description": "Google OAuth2 callback — sends code back to opener via postMessage.",
        "operationId": "client_google_drive_callback_api_v1_client_backups_google_drive_callback_get",
        "responses": {
          "200": {
            "content": {
              "text/html": {
                "schema": {
                  "type": "string"
                }
              }
            },
            "description": "Successful Response"
          }
        },
        "summary": "Client Google Drive Callback",
        "tags": [
          "client-backups"
        ]
      }
    },
    "/api/v1/client/backups/google-drive/exchange": {
      "post": {
        "description": "Exchange a Google authorization code for refresh + access tokens.",
        "operationId": "client_google_drive_exchange_api_v1_client_backups_google_drive_exchange_post",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/_OAuthExchange"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_dict_str__Any__"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Google Drive OAuth code exchange (client)",
        "tags": [
          "client-backups"
        ]
      }
    },
    "/api/v1/client/backups/onedrive/auth-url": {
      "post": {
        "description": "Generate a Microsoft OAuth2 authorization URL for connecting OneDrive as a remote backup destination.",
        "operationId": "client_onedrive_auth_url_api_v1_client_backups_onedrive_auth_url_post",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/_OAuthCredentials"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_dict_str__Any__"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "OneDrive OAuth URL (client)",
        "tags": [
          "client-backups"
        ]
      }
    },
    "/api/v1/client/backups/onedrive/callback": {
      "get": {
        "description": "OneDrive OAuth2 callback — sends code back to opener via postMessage.",
        "operationId": "client_onedrive_callback_api_v1_client_backups_onedrive_callback_get",
        "parameters": [
          {
            "in": "query",
            "name": "code",
            "required": false,
            "schema": {
              "default": "",
              "title": "Code",
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "state",
            "required": false,
            "schema": {
              "default": "",
              "title": "State",
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "error",
            "required": false,
            "schema": {
              "default": "",
              "title": "Error",
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "error_description",
            "required": false,
            "schema": {
              "default": "",
              "title": "Error Description",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "text/html": {
                "schema": {
                  "type": "string"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Client Onedrive Callback",
        "tags": [
          "client-backups"
        ]
      }
    },
    "/api/v1/client/backups/onedrive/exchange": {
      "post": {
        "description": "Exchange a Microsoft authorization code for refresh and access tokens.",
        "operationId": "client_onedrive_exchange_api_v1_client_backups_onedrive_exchange_post",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/_OAuthExchange"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_dict_str__Any__"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "OneDrive OAuth code exchange (client)",
        "tags": [
          "client-backups"
        ]
      }
    },
    "/api/v1/client/backups/remote-destinations": {
      "get": {
        "description": "Return all per-account remote backup destinations owned by the authenticated client.",
        "operationId": "client_list_remote_destinations_api_v1_client_backups_remote_destinations_get",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_list_dict_str__Any___"
                }
              }
            },
            "description": "Successful Response"
          }
        },
        "summary": "List remote backup destinations (client)",
        "tags": [
          "client-backups"
        ]
      },
      "post": {
        "description": "Add a new per-account remote backup destination (FTP, SFTP, Google Drive, Bunny Storage, Yandex Disk, OneDrive). Secrets in the answer are masked.",
        "operationId": "client_add_remote_destination_api_v1_client_backups_remote_destinations_post",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/RemoteDestinationCreate"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_dict_str__Any__"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Add remote backup destination (client)",
        "tags": [
          "client-backups"
        ]
      }
    },
    "/api/v1/client/backups/remote-destinations/test": {
      "post": {
        "description": "Test a remote backup destination configuration before persisting it (resolves masked credentials when editing).",
        "operationId": "client_test_remote_before_save_api_v1_client_backups_remote_destinations_test_post",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/RemoteDestinationCreate"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_dict_str__Any__"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Test remote destination before save (client)",
        "tags": [
          "client-backups"
        ]
      }
    },
    "/api/v1/client/backups/remote-destinations/{dest_id}": {
      "delete": {
        "description": "Remove a per-account remote backup destination owned by the authenticated client.",
        "operationId": "client_remove_remote_destination_api_v1_client_backups_remote_destinations__dest_id__delete",
        "parameters": [
          {
            "in": "path",
            "name": "dest_id",
            "required": true,
            "schema": {
              "title": "Dest Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MessageResponse"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Remove remote backup destination (client)",
        "tags": [
          "client-backups"
        ]
      },
      "put": {
        "description": "Update a per-account remote backup destination owned by the authenticated client.",
        "operationId": "client_update_remote_destination_api_v1_client_backups_remote_destinations__dest_id__put",
        "parameters": [
          {
            "in": "path",
            "name": "dest_id",
            "required": true,
            "schema": {
              "title": "Dest Id",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/RemoteDestinationCreate"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_dict_str__Any__"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Update remote backup destination (client)",
        "tags": [
          "client-backups"
        ]
      }
    },
    "/api/v1/client/backups/remote-destinations/{dest_id}/test": {
      "post": {
        "description": "Test connectivity to an existing per-account remote backup destination.",
        "operationId": "client_test_remote_destination_api_v1_client_backups_remote_destinations__dest_id__test_post",
        "parameters": [
          {
            "in": "path",
            "name": "dest_id",
            "required": true,
            "schema": {
              "title": "Dest Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_dict_str__Any__"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Test remote backup destination (client)",
        "tags": [
          "client-backups"
        ]
      }
    },
    "/api/v1/client/backups/remote-destinations/{dest_id}/toggle": {
      "patch": {
        "description": "Enable or disable a per-account remote backup destination.",
        "operationId": "client_toggle_remote_destination_api_v1_client_backups_remote_destinations__dest_id__toggle_patch",
        "parameters": [
          {
            "in": "path",
            "name": "dest_id",
            "required": true,
            "schema": {
              "title": "Dest Id",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/RemoteDestinationToggle"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_dict_str__Any__"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Toggle remote backup destination (client)",
        "tags": [
          "client-backups"
        ]
      }
    },
    "/api/v1/client/backups/schedules": {
      "get": {
        "description": "Return all backup schedules for the authenticated client account.",
        "operationId": "client_list_schedules_api_v1_client_backups_schedules_get",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_list_dict_str__Any___"
                }
              }
            },
            "description": "Successful Response"
          }
        },
        "summary": "List backup schedules (client)",
        "tags": [
          "client-backups"
        ]
      },
      "post": {
        "description": "Create a new backup schedule for the authenticated client account.",
        "operationId": "client_create_schedule_api_v1_client_backups_schedules_post",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/BackupScheduleCreate"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_dict_str__Any__"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Create backup schedule (client)",
        "tags": [
          "client-backups"
        ]
      }
    },
    "/api/v1/client/backups/schedules/{schedule_id}": {
      "delete": {
        "description": "Delete a backup schedule owned by the authenticated client account.",
        "operationId": "client_delete_schedule_api_v1_client_backups_schedules__schedule_id__delete",
        "parameters": [
          {
            "in": "path",
            "name": "schedule_id",
            "required": true,
            "schema": {
              "title": "Schedule Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MessageResponse"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Delete backup schedule (client)",
        "tags": [
          "client-backups"
        ]
      },
      "put": {
        "description": "Update a backup schedule owned by the authenticated client account.",
        "operationId": "client_update_schedule_api_v1_client_backups_schedules__schedule_id__put",
        "parameters": [
          {
            "in": "path",
            "name": "schedule_id",
            "required": true,
            "schema": {
              "title": "Schedule Id",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/BackupScheduleUpdate"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_dict_str__Any__"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Update backup schedule (client)",
        "tags": [
          "client-backups"
        ]
      }
    },
    "/api/v1/client/backups/yandex-disk/auth-url": {
      "post": {
        "description": "Generate a Yandex OAuth authorization URL for connecting Yandex Disk as a remote backup destination.",
        "operationId": "client_yandex_disk_auth_url_api_v1_client_backups_yandex_disk_auth_url_post",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/_OAuthCredentials"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_dict_str__Any__"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Yandex Disk OAuth URL (client)",
        "tags": [
          "client-backups"
        ]
      }
    },
    "/api/v1/client/backups/yandex-disk/callback": {
      "get": {
        "description": "Yandex OAuth2 callback — sends code back to opener via postMessage.",
        "operationId": "client_yandex_disk_callback_api_v1_client_backups_yandex_disk_callback_get",
        "responses": {
          "200": {
            "content": {
              "text/html": {
                "schema": {
                  "type": "string"
                }
              }
            },
            "description": "Successful Response"
          }
        },
        "summary": "Client Yandex Disk Callback",
        "tags": [
          "client-backups"
        ]
      }
    },
    "/api/v1/client/backups/yandex-disk/exchange": {
      "post": {
        "description": "Exchange a Yandex authorization code for OAuth access and refresh tokens.",
        "operationId": "client_yandex_disk_exchange_api_v1_client_backups_yandex_disk_exchange_post",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/_OAuthExchange"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_dict_str__Any__"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Yandex Disk OAuth code exchange (client)",
        "tags": [
          "client-backups"
        ]
      }
    },
    "/api/v1/client/backups/{backup_id}": {
      "delete": {
        "description": "Delete a backup owned by the authenticated client account.",
        "operationId": "client_delete_backup_api_v1_client_backups__backup_id__delete",
        "parameters": [
          {
            "in": "path",
            "name": "backup_id",
            "required": true,
            "schema": {
              "title": "Backup Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MessageResponse"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Delete backup (client)",
        "tags": [
          "client-backups"
        ]
      }
    },
    "/api/v1/client/backups/{backup_id}/download": {
      "get": {
        "description": "Download a backup for the authenticated client account.",
        "operationId": "client_download_backup_api_v1_client_backups__backup_id__download_get",
        "parameters": [
          {
            "in": "path",
            "name": "backup_id",
            "required": true,
            "schema": {
              "title": "Backup Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {}
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Client Download Backup",
        "tags": [
          "client-backups"
        ]
      }
    },
    "/api/v1/client/backups/{backup_id}/restore": {
      "post": {
        "description": "Restore a backup owned by the authenticated client account. Refused 409 `UPDATE_IN_PROGRESS` while the server is installing an update.",
        "operationId": "client_restore_backup_api_v1_client_backups__backup_id__restore_post",
        "parameters": [
          {
            "in": "path",
            "name": "backup_id",
            "required": true,
            "schema": {
              "title": "Backup Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MessageResponse"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Restore backup (client)",
        "tags": [
          "client-backups"
        ]
      }
    },
    "/api/v1/client/cron": {
      "get": {
        "description": "Return all cron jobs owned by the authenticated client account.",
        "operationId": "client_list_cron_jobs_api_v1_client_cron_get",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_list_dict_str__Any___"
                }
              }
            },
            "description": "Successful Response"
          }
        },
        "summary": "List cron jobs (client)",
        "tags": [
          "client-cron"
        ]
      },
      "post": {
        "description": "Create a new cron job for the authenticated client account.",
        "operationId": "client_create_cron_job_api_v1_client_cron_post",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CronCreate"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_dict_str__Any__"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Create cron job (client)",
        "tags": [
          "client-cron"
        ]
      }
    },
    "/api/v1/client/cron/{cron_id}": {
      "delete": {
        "description": "Delete a cron job owned by the authenticated client account.",
        "operationId": "client_delete_cron_job_api_v1_client_cron__cron_id__delete",
        "parameters": [
          {
            "in": "path",
            "name": "cron_id",
            "required": true,
            "schema": {
              "title": "Cron Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MessageResponse"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Delete cron job (client)",
        "tags": [
          "client-cron"
        ]
      },
      "put": {
        "description": "Update a cron job (schedule, command, or enabled flag) owned by the authenticated client account.",
        "operationId": "client_update_cron_job_api_v1_client_cron__cron_id__put",
        "parameters": [
          {
            "in": "path",
            "name": "cron_id",
            "required": true,
            "schema": {
              "title": "Cron Id",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CronUpdate"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_dict_str__Any__"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Update cron job (client)",
        "tags": [
          "client-cron"
        ]
      }
    },
    "/api/v1/client/cron/{cron_id}/run": {
      "post": {
        "description": "Execute a cron job immediately for the authenticated client account; returns exit status.",
        "operationId": "client_run_cron_job_api_v1_client_cron__cron_id__run_post",
        "parameters": [
          {
            "in": "path",
            "name": "cron_id",
            "required": true,
            "schema": {
              "title": "Cron Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_dict_str__Any__"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Run cron job now (client)",
        "tags": [
          "client-cron"
        ]
      }
    },
    "/api/v1/client/dashboard/summary": {
      "get": {
        "description": "Return aggregated account status, resource usage, domain/email/database/cron counts, SSL state, and reseller stats for the authenticated client dashboard.",
        "operationId": "client_get_dashboard_summary_api_v1_client_dashboard_summary_get",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_dict_str__Any__"
                }
              }
            },
            "description": "Successful Response"
          }
        },
        "summary": "Client dashboard summary",
        "tags": [
          "client-dashboard"
        ]
      }
    },
    "/api/v1/client/databases": {
      "get": {
        "description": "Return all databases owned by the authenticated client account.",
        "operationId": "client_list_databases_api_v1_client_databases_get",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_list_dict_str__Any___"
                }
              }
            },
            "description": "Successful Response"
          }
        },
        "summary": "List databases (client)",
        "tags": [
          "client-databases"
        ]
      },
      "post": {
        "description": "Create a database for the authenticated client account. Plan limit enforced.",
        "operationId": "client_create_database_api_v1_client_databases_post",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/DatabaseCreate"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_dict_str__Any__"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Create database (client)",
        "tags": [
          "client-databases"
        ]
      }
    },
    "/api/v1/client/databases/phpmyadmin-url": {
      "get": {
        "description": "Mint an ephemeral phpMyAdmin SSO token bound to a tenant-scoped MariaDB user (5-minute TTL, scoped to the client's own databases).",
        "operationId": "client_phpmyadmin_url_api_v1_client_databases_phpmyadmin_url_get",
        "parameters": [
          {
            "in": "query",
            "name": "db",
            "required": false,
            "schema": {
              "default": "",
              "title": "Db",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_dict_str__Any__"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Get phpMyAdmin SSO URL (client)",
        "tags": [
          "client-databases"
        ]
      }
    },
    "/api/v1/client/databases/{db_name}": {
      "delete": {
        "description": "Delete a database owned by the authenticated client account.",
        "operationId": "client_delete_database_api_v1_client_databases__db_name__delete",
        "parameters": [
          {
            "in": "path",
            "name": "db_name",
            "required": true,
            "schema": {
              "title": "Db Name",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MessageResponse"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Delete database (client)",
        "tags": [
          "client-databases"
        ]
      }
    },
    "/api/v1/client/databases/{db_name}/remote-hosts": {
      "get": {
        "description": "Return all allowed remote hosts for a database owned by the authenticated client account.",
        "operationId": "client_list_remote_hosts_api_v1_client_databases__db_name__remote_hosts_get",
        "parameters": [
          {
            "in": "path",
            "name": "db_name",
            "required": true,
            "schema": {
              "title": "Db Name",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_list_dict_str__Any___"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "List database remote hosts (client)",
        "tags": [
          "client-databases"
        ]
      },
      "post": {
        "description": "Add an allowed remote host to a database owned by the authenticated client account.",
        "operationId": "client_add_remote_host_api_v1_client_databases__db_name__remote_hosts_post",
        "parameters": [
          {
            "in": "path",
            "name": "db_name",
            "required": true,
            "schema": {
              "title": "Db Name",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/RemoteHostCreate"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_dict_str__Any__"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Add database remote host (client)",
        "tags": [
          "client-databases"
        ]
      }
    },
    "/api/v1/client/databases/{db_name}/remote-hosts/{host}": {
      "delete": {
        "description": "Remove an allowed remote host from a database owned by the authenticated client account.",
        "operationId": "client_remove_remote_host_api_v1_client_databases__db_name__remote_hosts__host__delete",
        "parameters": [
          {
            "in": "path",
            "name": "db_name",
            "required": true,
            "schema": {
              "title": "Db Name",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "host",
            "required": true,
            "schema": {
              "title": "Host",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MessageResponse"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Remove database remote host (client)",
        "tags": [
          "client-databases"
        ]
      }
    },
    "/api/v1/client/databases/{db_name}/users": {
      "post": {
        "description": "Create a MariaDB user with privileges on the given database, owned by the authenticated client account.",
        "operationId": "client_create_db_user_api_v1_client_databases__db_name__users_post",
        "parameters": [
          {
            "in": "path",
            "name": "db_name",
            "required": true,
            "schema": {
              "title": "Db Name",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/DatabaseUserCreate"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_dict_str__Any__"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Create database user (client)",
        "tags": [
          "client-databases"
        ]
      }
    },
    "/api/v1/client/databases/{db_name}/users/{db_user}": {
      "delete": {
        "description": "Delete a database user owned by the authenticated client account.",
        "operationId": "client_delete_db_user_api_v1_client_databases__db_name__users__db_user__delete",
        "parameters": [
          {
            "in": "path",
            "name": "db_name",
            "required": true,
            "schema": {
              "title": "Db Name",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "db_user",
            "required": true,
            "schema": {
              "title": "Db User",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MessageResponse"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Delete database user (client)",
        "tags": [
          "client-databases"
        ]
      },
      "put": {
        "description": "Update a database user (e.g. change password) owned by the authenticated client account.",
        "operationId": "client_update_db_user_api_v1_client_databases__db_name__users__db_user__put",
        "parameters": [
          {
            "in": "path",
            "name": "db_name",
            "required": true,
            "schema": {
              "title": "Db Name",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "db_user",
            "required": true,
            "schema": {
              "title": "Db User",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/DatabaseUserUpdate"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MessageResponse"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Update database user (client)",
        "tags": [
          "client-databases"
        ]
      }
    },
    "/api/v1/client/dns/{domain}": {
      "get": {
        "description": "Return the DNS zone and its records for a domain owned by the authenticated client.",
        "operationId": "client_get_zone_api_v1_client_dns__domain__get",
        "parameters": [
          {
            "in": "path",
            "name": "domain",
            "required": true,
            "schema": {
              "title": "Domain",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_dict_str__Any__"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Get DNS zone (client)",
        "tags": [
          "client-dns"
        ]
      }
    },
    "/api/v1/client/dns/{domain}/dnssec": {
      "get": {
        "description": "Return DNSSEC status for a domain owned by the authenticated client.",
        "operationId": "client_get_dnssec_api_v1_client_dns__domain__dnssec_get",
        "parameters": [
          {
            "in": "path",
            "name": "domain",
            "required": true,
            "schema": {
              "title": "Domain",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_dict_str__Any__"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Get DNSSEC status (client)",
        "tags": [
          "client-dns"
        ]
      }
    },
    "/api/v1/client/dns/{domain}/dnssec/disable": {
      "post": {
        "description": "Disable DNSSEC for a domain owned by the authenticated client.",
        "operationId": "client_disable_dnssec_api_v1_client_dns__domain__dnssec_disable_post",
        "parameters": [
          {
            "in": "path",
            "name": "domain",
            "required": true,
            "schema": {
              "title": "Domain",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_dict_str__Any__"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Disable DNSSEC (client)",
        "tags": [
          "client-dns"
        ]
      }
    },
    "/api/v1/client/dns/{domain}/dnssec/enable": {
      "post": {
        "description": "Enable DNSSEC for a domain owned by the authenticated client.",
        "operationId": "client_enable_dnssec_api_v1_client_dns__domain__dnssec_enable_post",
        "parameters": [
          {
            "in": "path",
            "name": "domain",
            "required": true,
            "schema": {
              "title": "Domain",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_dict_str__Any__"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Enable DNSSEC (client)",
        "tags": [
          "client-dns"
        ]
      }
    },
    "/api/v1/client/dns/{domain}/records": {
      "post": {
        "description": "Add a DNS record to a zone owned by the authenticated client.",
        "operationId": "client_add_record_api_v1_client_dns__domain__records_post",
        "parameters": [
          {
            "in": "path",
            "name": "domain",
            "required": true,
            "schema": {
              "title": "Domain",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/DNSRecordCreate"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_dict_str__Any__"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Add DNS record (client)",
        "tags": [
          "client-dns"
        ]
      }
    },
    "/api/v1/client/dns/{domain}/records/{record_id}": {
      "delete": {
        "description": "Delete a DNS record from a zone owned by the authenticated client.",
        "operationId": "client_delete_record_api_v1_client_dns__domain__records__record_id__delete",
        "parameters": [
          {
            "in": "path",
            "name": "domain",
            "required": true,
            "schema": {
              "title": "Domain",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "record_id",
            "required": true,
            "schema": {
              "title": "Record Id",
              "type": "integer"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MessageResponse"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Delete DNS record (client)",
        "tags": [
          "client-dns"
        ]
      },
      "put": {
        "description": "Update an existing DNS record in a zone owned by the authenticated client.",
        "operationId": "client_update_record_api_v1_client_dns__domain__records__record_id__put",
        "parameters": [
          {
            "in": "path",
            "name": "domain",
            "required": true,
            "schema": {
              "title": "Domain",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "record_id",
            "required": true,
            "schema": {
              "title": "Record Id",
              "type": "integer"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/DNSRecordUpdate"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_dict_str__Any__"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Update DNS record (client)",
        "tags": [
          "client-dns"
        ]
      }
    },
    "/api/v1/client/dns/{domain}/zone": {
      "post": {
        "description": "Create a DNS zone for a domain owned by the authenticated client. Idempotent — returns existing zone if already created.",
        "operationId": "client_create_zone_api_v1_client_dns__domain__zone_post",
        "parameters": [
          {
            "in": "path",
            "name": "domain",
            "required": true,
            "schema": {
              "title": "Domain",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_dict_str__Any__"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Bootstrap DNS zone (client)",
        "tags": [
          "client-dns"
        ]
      }
    },
    "/api/v1/client/domains": {
      "get": {
        "description": "Return all domains (main, addon, subdomains, parked) for the authenticated client account.",
        "operationId": "client_list_domains_api_v1_client_domains_get",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_list_dict_str__Any___"
                }
              }
            },
            "description": "Successful Response"
          }
        },
        "summary": "List all domains (client)",
        "tags": [
          "client-domains"
        ]
      }
    },
    "/api/v1/client/domains/{domain}/php/config": {
      "delete": {
        "description": "Reset per-domain PHP configuration to account defaults for a domain owned by the authenticated client account.",
        "operationId": "client_reset_domain_php_config_api_v1_client_domains__domain__php_config_delete",
        "parameters": [
          {
            "in": "path",
            "name": "domain",
            "required": true,
            "schema": {
              "title": "Domain",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_dict_str__Any__"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Reset domain PHP config (client)",
        "tags": [
          "client-php"
        ]
      },
      "get": {
        "description": "Return the per-domain PHP configuration for a domain owned by the authenticated client account.",
        "operationId": "client_get_domain_php_config_api_v1_client_domains__domain__php_config_get",
        "parameters": [
          {
            "in": "path",
            "name": "domain",
            "required": true,
            "schema": {
              "title": "Domain",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_dict_str__Any__"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Get domain PHP config (client)",
        "tags": [
          "client-php"
        ]
      },
      "put": {
        "description": "Update the per-domain PHP configuration for a domain owned by the authenticated client account.",
        "operationId": "client_update_domain_php_config_api_v1_client_domains__domain__php_config_put",
        "parameters": [
          {
            "in": "path",
            "name": "domain",
            "required": true,
            "schema": {
              "title": "Domain",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/DomainPHPConfigUpdate"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_dict_str__Any__"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Update domain PHP config (client)",
        "tags": [
          "client-php"
        ]
      }
    },
    "/api/v1/client/domains/{domain}/php/version": {
      "put": {
        "description": "Change the PHP version for a specific domain owned by the authenticated client account.",
        "operationId": "client_change_domain_php_version_api_v1_client_domains__domain__php_version_put",
        "parameters": [
          {
            "in": "path",
            "name": "domain",
            "required": true,
            "schema": {
              "title": "Domain",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/DomainVersionChange"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_dict_str__Any__"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Change domain PHP version (client)",
        "tags": [
          "client-php"
        ]
      }
    },
    "/api/v1/client/emails": {
      "get": {
        "description": "Return all email accounts owned by the authenticated client account.",
        "operationId": "client_list_emails_api_v1_client_emails_get",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_list_EmailResponse__"
                }
              }
            },
            "description": "Successful Response"
          }
        },
        "summary": "List email accounts (client)",
        "tags": [
          "client-emails"
        ]
      },
      "post": {
        "description": "Create an email account on a domain owned by the authenticated client account. The plan's mailbox count is enforced, and the quota must be 1 MB to the plan's disk with the account's mailboxes together not exceeding it (422 VALIDATION_ERROR / 403 EMAIL_LIMIT).",
        "operationId": "client_create_email_api_v1_client_emails_post",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/EmailCreate"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_EmailResponse_"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Create email account (client)",
        "tags": [
          "client-emails"
        ]
      }
    },
    "/api/v1/client/emails/{email}": {
      "delete": {
        "description": "Delete an email account owned by the authenticated client account.",
        "operationId": "client_delete_email_api_v1_client_emails__email__delete",
        "parameters": [
          {
            "in": "path",
            "name": "email",
            "required": true,
            "schema": {
              "title": "Email",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MessageResponse"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Delete email account (client)",
        "tags": [
          "client-emails"
        ]
      },
      "put": {
        "description": "Update an email account (quota, active flag) owned by the authenticated client account. A changed quota must be 1 MB to the plan's disk with the account's mailboxes together not exceeding it (422 VALIDATION_ERROR / 403 EMAIL_LIMIT).",
        "operationId": "client_update_email_api_v1_client_emails__email__put",
        "parameters": [
          {
            "in": "path",
            "name": "email",
            "required": true,
            "schema": {
              "title": "Email",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/EmailUpdate"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_EmailResponse_"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Update email account (client)",
        "tags": [
          "client-emails"
        ]
      }
    },
    "/api/v1/client/emails/{email}/forwarders": {
      "get": {
        "description": "Return all forwarders configured for an email account owned by the authenticated client account.",
        "operationId": "client_list_forwarders_api_v1_client_emails__email__forwarders_get",
        "parameters": [
          {
            "in": "path",
            "name": "email",
            "required": true,
            "schema": {
              "title": "Email",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_list_ForwarderResponse__"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "List email forwarders (client)",
        "tags": [
          "client-emails"
        ]
      },
      "post": {
        "description": "Create a forwarder routing mail from an email account to an external destination.",
        "operationId": "client_create_forwarder_api_v1_client_emails__email__forwarders_post",
        "parameters": [
          {
            "in": "path",
            "name": "email",
            "required": true,
            "schema": {
              "title": "Email",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ForwarderCreate"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_ForwarderResponse_"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Create email forwarder (client)",
        "tags": [
          "client-emails"
        ]
      }
    },
    "/api/v1/client/emails/{email}/forwarders/{forwarder_id}": {
      "delete": {
        "description": "Delete a forwarder for an email account owned by the authenticated client account.",
        "operationId": "client_delete_forwarder_api_v1_client_emails__email__forwarders__forwarder_id__delete",
        "parameters": [
          {
            "in": "path",
            "name": "email",
            "required": true,
            "schema": {
              "title": "Email",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "forwarder_id",
            "required": true,
            "schema": {
              "title": "Forwarder Id",
              "type": "integer"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MessageResponse"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Delete email forwarder (client)",
        "tags": [
          "client-emails"
        ]
      }
    },
    "/api/v1/client/emails/{email}/password": {
      "post": {
        "description": "Change the password of an email account owned by the authenticated client account.",
        "operationId": "client_change_email_password_api_v1_client_emails__email__password_post",
        "parameters": [
          {
            "in": "path",
            "name": "email",
            "required": true,
            "schema": {
              "title": "Email",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/EmailPasswordChange"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MessageResponse"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Change email password (client)",
        "tags": [
          "client-emails"
        ]
      }
    },
    "/api/v1/client/emails/{email}/webmail-url": {
      "get": {
        "description": "Mint a short-lived SSO token for the Roundcube webmail interface, scoped to the given email account.",
        "operationId": "client_webmail_url_api_v1_client_emails__email__webmail_url_get",
        "parameters": [
          {
            "in": "path",
            "name": "email",
            "required": true,
            "schema": {
              "title": "Email",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_WebmailUrlData_"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Get webmail SSO URL (client)",
        "tags": [
          "client-emails"
        ]
      }
    },
    "/api/v1/client/files": {
      "delete": {
        "description": "Delete a single file or directory for the authenticated client account.",
        "operationId": "client_remove_file_api_v1_client_files_delete",
        "parameters": [
          {
            "in": "query",
            "name": "path",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Path"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MessageResponse"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Delete file",
        "tags": [
          "client-files"
        ]
      },
      "get": {
        "description": "List files and directories under the authenticated client's home tree.",
        "operationId": "client_list_files_api_v1_client_files_get",
        "parameters": [
          {
            "in": "query",
            "name": "path",
            "required": false,
            "schema": {
              "default": "/",
              "title": "Path",
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "show_hidden",
            "required": false,
            "schema": {
              "default": false,
              "title": "Show Hidden",
              "type": "boolean"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_dict_str__Any__"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "List files",
        "tags": [
          "client-files"
        ]
      },
      "post": {
        "description": "Create a new file or directory for the authenticated client account.",
        "operationId": "client_create_file_api_v1_client_files_post",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/FileCreateRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_dict_str__Any__"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Create file or directory",
        "tags": [
          "client-files"
        ]
      },
      "put": {
        "description": "Overwrite a file's content for the authenticated client account.",
        "operationId": "client_edit_file_api_v1_client_files_put",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/FileEditRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_dict_str__Any__"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Edit file",
        "tags": [
          "client-files"
        ]
      }
    },
    "/api/v1/client/files/compress": {
      "post": {
        "description": "Compress one or more paths into a tar.gz or zip archive for the authenticated client account.",
        "operationId": "client_compress_file_api_v1_client_files_compress_post",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/FileCompressRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_dict_str__Any__"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Compress files",
        "tags": [
          "client-files"
        ]
      }
    },
    "/api/v1/client/files/content": {
      "get": {
        "description": "Return the textual content and metadata of a file owned by the authenticated client.",
        "operationId": "client_read_content_api_v1_client_files_content_get",
        "parameters": [
          {
            "in": "query",
            "name": "path",
            "required": true,
            "schema": {
              "title": "Path",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_dict_str__Any__"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Read file content",
        "tags": [
          "client-files"
        ]
      }
    },
    "/api/v1/client/files/copy": {
      "post": {
        "description": "Copy a file or directory (single or batch) for the authenticated client account.",
        "operationId": "client_copy_file_api_v1_client_files_copy_post",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/FileCopyRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_Any_"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Copy file",
        "tags": [
          "client-files"
        ]
      }
    },
    "/api/v1/client/files/delete": {
      "post": {
        "description": "Delete multiple files or directories in one request for the authenticated client account.",
        "operationId": "client_batch_delete_api_v1_client_files_delete_post",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/FileDeleteRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_Any_"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Batch delete",
        "tags": [
          "client-files"
        ]
      }
    },
    "/api/v1/client/files/download": {
      "get": {
        "description": "Download a file for the authenticated client account.",
        "operationId": "client_download_file_api_v1_client_files_download_get",
        "parameters": [
          {
            "in": "query",
            "name": "path",
            "required": true,
            "schema": {
              "title": "Path",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {}
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Client Download File",
        "tags": [
          "client-files"
        ]
      }
    },
    "/api/v1/client/files/extract": {
      "post": {
        "description": "Extract a tar/zip archive into the authenticated client's home tree.",
        "operationId": "client_extract_file_api_v1_client_files_extract_post",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/FileExtractRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_dict_str__Any__"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Extract archive",
        "tags": [
          "client-files"
        ]
      }
    },
    "/api/v1/client/files/info": {
      "get": {
        "description": "Return detailed file/directory metadata for a path owned by the authenticated client.",
        "operationId": "client_get_info_api_v1_client_files_info_get",
        "parameters": [
          {
            "in": "query",
            "name": "path",
            "required": true,
            "schema": {
              "title": "Path",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_dict_str__Any__"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "File info",
        "tags": [
          "client-files"
        ]
      }
    },
    "/api/v1/client/files/move": {
      "post": {
        "description": "Move/rename a file or directory (single or batch) for the authenticated client account.",
        "operationId": "client_move_file_api_v1_client_files_move_post",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/FileMoveRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_Any_"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Move file",
        "tags": [
          "client-files"
        ]
      }
    },
    "/api/v1/client/files/permissions": {
      "post": {
        "description": "Change file or directory permissions for the authenticated client account.",
        "operationId": "client_set_permissions_api_v1_client_files_permissions_post",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/FilePermissionsRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_dict_str__Any__"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Set permissions",
        "tags": [
          "client-files"
        ]
      }
    },
    "/api/v1/client/files/search": {
      "get": {
        "description": "Search the authenticated client's home tree by filename, extension, or file content.",
        "operationId": "client_search_files_api_v1_client_files_search_get",
        "parameters": [
          {
            "in": "query",
            "name": "query",
            "required": false,
            "schema": {
              "default": "",
              "title": "Query",
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "path",
            "required": false,
            "schema": {
              "default": "/",
              "title": "Path",
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "type",
            "required": false,
            "schema": {
              "default": "all",
              "title": "Type",
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "extension",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Extension"
            }
          },
          {
            "in": "query",
            "name": "case_sensitive",
            "required": false,
            "schema": {
              "default": false,
              "title": "Case Sensitive",
              "type": "boolean"
            }
          },
          {
            "in": "query",
            "name": "max_depth",
            "required": false,
            "schema": {
              "default": 10,
              "maximum": 50,
              "minimum": 1,
              "title": "Max Depth",
              "type": "integer"
            }
          },
          {
            "in": "query",
            "name": "content_query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Content Query"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_dict_str__Any__"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Search files",
        "tags": [
          "client-files"
        ]
      }
    },
    "/api/v1/client/files/upload": {
      "post": {
        "description": "Upload a single file (multipart/form-data) for the authenticated client account.",
        "operationId": "client_upload_file_api_v1_client_files_upload_post",
        "parameters": [
          {
            "in": "query",
            "name": "path",
            "required": true,
            "schema": {
              "title": "Path",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "multipart/form-data": {
              "schema": {
                "$ref": "#/components/schemas/Body_client_upload_file_api_v1_client_files_upload_post"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_dict_str__Any__"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Upload file",
        "tags": [
          "client-files"
        ]
      }
    },
    "/api/v1/client/firewall/blocked-ips": {
      "get": {
        "description": "Firewall management is server-level; this answers 403 FEATURE_UNAVAILABLE like the client write endpoints.",
        "operationId": "client_list_blocked_ips_api_v1_client_firewall_blocked_ips_get",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_list_dict_str__Any___"
                }
              }
            },
            "description": "Successful Response"
          }
        },
        "summary": "List blocked IPs (client)",
        "tags": [
          "client-firewall"
        ]
      },
      "post": {
        "description": "Firewall management is server-level; answers 403 FEATURE_UNAVAILABLE for an authenticated tenant.",
        "operationId": "client_block_ip_api_v1_client_firewall_blocked_ips_post",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/BlockedIPCreate"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_dict_str__Any__"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Block IP (client)",
        "tags": [
          "client-firewall"
        ]
      }
    },
    "/api/v1/client/firewall/blocked-ips/{ip}": {
      "delete": {
        "description": "Firewall management is server-level; answers 403 FEATURE_UNAVAILABLE for an authenticated tenant.",
        "operationId": "client_unblock_ip_api_v1_client_firewall_blocked_ips__ip__delete",
        "parameters": [
          {
            "in": "path",
            "name": "ip",
            "required": true,
            "schema": {
              "title": "Ip",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MessageResponse"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Unblock IP (client)",
        "tags": [
          "client-firewall"
        ]
      }
    },
    "/api/v1/client/ftp": {
      "get": {
        "description": "Return all FTP accounts owned by the authenticated client.",
        "operationId": "client_list_ftp_api_v1_client_ftp_get",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_list_dict_str__Any___"
                }
              }
            },
            "description": "Successful Response"
          }
        },
        "summary": "List FTP accounts (client)",
        "tags": [
          "client-ftp"
        ]
      },
      "post": {
        "description": "Create a new FTP account under the authenticated client. Plan limit enforced server-side.",
        "operationId": "client_create_ftp_api_v1_client_ftp_post",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/FTPAccountCreate"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_dict_str__Any__"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Create FTP account (client)",
        "tags": [
          "client-ftp"
        ]
      }
    },
    "/api/v1/client/ftp/{ftp_user}": {
      "delete": {
        "description": "Delete an FTP account owned by the authenticated client.",
        "operationId": "client_delete_ftp_api_v1_client_ftp__ftp_user__delete",
        "parameters": [
          {
            "in": "path",
            "name": "ftp_user",
            "required": true,
            "schema": {
              "title": "Ftp User",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MessageResponse"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Delete FTP account (client)",
        "tags": [
          "client-ftp"
        ]
      },
      "put": {
        "description": "Update an FTP account (password, directory, or quota) owned by the authenticated client. Fields equal to the stored values are not a change; a request that changes nothing writes no audit entry.",
        "operationId": "client_update_ftp_api_v1_client_ftp__ftp_user__put",
        "parameters": [
          {
            "in": "path",
            "name": "ftp_user",
            "required": true,
            "schema": {
              "title": "Ftp User",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/FTPAccountUpdate"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_dict_str__Any__"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Update FTP account (client)",
        "tags": [
          "client-ftp"
        ]
      }
    },
    "/api/v1/client/logs": {
      "get": {
        "description": "Return the list of log files (access, error, php) available for the authenticated client account.",
        "operationId": "client_list_logs_api_v1_client_logs_get",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_list_dict_str__Any___"
                }
              }
            },
            "description": "Successful Response"
          }
        },
        "summary": "List available logs (client)",
        "tags": [
          "client-logs"
        ]
      }
    },
    "/api/v1/client/logs/access": {
      "get": {
        "description": "Return the last N lines of the access log for a domain owned by the authenticated client account.",
        "operationId": "client_read_access_log_api_v1_client_logs_access_get",
        "parameters": [
          {
            "in": "query",
            "name": "domain",
            "required": true,
            "schema": {
              "title": "Domain",
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "lines",
            "required": false,
            "schema": {
              "default": 100,
              "maximum": 5000,
              "minimum": 1,
              "title": "Lines",
              "type": "integer"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_dict_str__Any__"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Read access log (client)",
        "tags": [
          "client-logs"
        ]
      }
    },
    "/api/v1/client/logs/error": {
      "get": {
        "description": "Return the last N lines of the error log for a domain owned by the authenticated client account.",
        "operationId": "client_read_error_log_api_v1_client_logs_error_get",
        "parameters": [
          {
            "in": "query",
            "name": "domain",
            "required": true,
            "schema": {
              "title": "Domain",
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "lines",
            "required": false,
            "schema": {
              "default": 100,
              "maximum": 5000,
              "minimum": 1,
              "title": "Lines",
              "type": "integer"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_dict_str__Any__"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Read error log (client)",
        "tags": [
          "client-logs"
        ]
      }
    },
    "/api/v1/client/logs/php": {
      "get": {
        "description": "Return the last N lines of the PHP error log for the authenticated client account.",
        "operationId": "client_read_php_log_api_v1_client_logs_php_get",
        "parameters": [
          {
            "in": "query",
            "name": "lines",
            "required": false,
            "schema": {
              "default": 100,
              "maximum": 5000,
              "minimum": 1,
              "title": "Lines",
              "type": "integer"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_dict_str__Any__"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Read PHP log (client)",
        "tags": [
          "client-logs"
        ]
      }
    },
    "/api/v1/client/metrics": {
      "get": {
        "description": "Get resource usage metrics for the authenticated client's account.",
        "operationId": "client_get_metrics_api_v1_client_metrics_get",
        "parameters": [
          {
            "in": "query",
            "name": "period",
            "required": false,
            "schema": {
              "default": "24h",
              "pattern": "^(24h|7d|30d)$",
              "title": "Period",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "title": "Response Client Get Metrics Api V1 Client Metrics Get"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Client Get Metrics",
        "tags": [
          "client-metrics"
        ]
      }
    },
    "/api/v1/client/node-apps": {
      "get": {
        "description": "List Node.js apps owned by the authenticated client account.",
        "operationId": "client_list_node_apps_api_v1_client_node_apps_get",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_list_dict_str__Any___"
                }
              }
            },
            "description": "Successful Response"
          }
        },
        "summary": "List Node apps",
        "tags": [
          "client-node-apps"
        ]
      },
      "post": {
        "description": "Create a new Node.js application for the authenticated client account.",
        "operationId": "client_create_node_app_api_v1_client_node_apps_post",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/NodeAppCreate"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_dict_str__Any__"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Create Node app",
        "tags": [
          "client-node-apps"
        ]
      }
    },
    "/api/v1/client/node-apps/analyze": {
      "post": {
        "description": "Analyze an uploaded archive or server-side path for the authenticated client account.",
        "operationId": "client_analyze_api_v1_client_node_apps_analyze_post",
        "requestBody": {
          "content": {
            "multipart/form-data": {
              "schema": {
                "$ref": "#/components/schemas/Body_client_analyze_api_v1_client_node_apps_analyze_post"
              }
            }
          }
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_dict_str__Any__"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Analyze Node project",
        "tags": [
          "client-node-apps"
        ]
      }
    },
    "/api/v1/client/node-apps/deploy": {
      "post": {
        "description": "Kick off the deploy pipeline for the authenticated client account.",
        "operationId": "client_deploy_api_v1_client_node_apps_deploy_post",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_dict_str__Any__"
                }
              }
            },
            "description": "Successful Response"
          }
        },
        "summary": "Deploy Node project",
        "tags": [
          "client-node-apps"
        ]
      }
    },
    "/api/v1/client/node-apps/deploy/{task_id}": {
      "get": {
        "description": "Snapshot of a deploy task for the authenticated client account.",
        "operationId": "client_deploy_status_api_v1_client_node_apps_deploy__task_id__get",
        "parameters": [
          {
            "in": "path",
            "name": "task_id",
            "required": true,
            "schema": {
              "title": "Task Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_dict_str__Any__"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Deploy task status",
        "tags": [
          "client-node-apps"
        ]
      }
    },
    "/api/v1/client/node-apps/deploy/{task_id}/events": {
      "get": {
        "operationId": "client_deploy_events_api_v1_client_node_apps_deploy__task_id__events_get",
        "parameters": [
          {
            "in": "path",
            "name": "task_id",
            "required": true,
            "schema": {
              "title": "Task Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {}
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Client Deploy Events",
        "tags": [
          "client-node-apps"
        ]
      }
    },
    "/api/v1/client/node-apps/{app_name}": {
      "delete": {
        "description": "Delete a Node.js app for the authenticated client account.",
        "operationId": "client_delete_node_app_api_v1_client_node_apps__app_name__delete",
        "parameters": [
          {
            "in": "path",
            "name": "app_name",
            "required": true,
            "schema": {
              "pattern": "^[a-z][a-z0-9_-]{1,30}$",
              "title": "App Name",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MessageResponse"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Delete Node app",
        "tags": [
          "client-node-apps"
        ]
      },
      "get": {
        "description": "Get details for a Node.js app owned by the authenticated client account.",
        "operationId": "client_get_node_app_api_v1_client_node_apps__app_name__get",
        "parameters": [
          {
            "in": "path",
            "name": "app_name",
            "required": true,
            "schema": {
              "pattern": "^[a-z][a-z0-9_-]{1,30}$",
              "title": "App Name",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_dict_str__Any__"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Get Node app",
        "tags": [
          "client-node-apps"
        ]
      },
      "put": {
        "description": "Update a Node.js app's configuration for the authenticated client account.",
        "operationId": "client_update_node_app_api_v1_client_node_apps__app_name__put",
        "parameters": [
          {
            "in": "path",
            "name": "app_name",
            "required": true,
            "schema": {
              "pattern": "^[a-z][a-z0-9_-]{1,30}$",
              "title": "App Name",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/NodeAppUpdate"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_dict_str__Any__"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Update Node app",
        "tags": [
          "client-node-apps"
        ]
      }
    },
    "/api/v1/client/node-apps/{app_name}/env": {
      "get": {
        "description": "Get environment variables for the authenticated client's app.",
        "operationId": "client_get_env_api_v1_client_node_apps__app_name__env_get",
        "parameters": [
          {
            "in": "path",
            "name": "app_name",
            "required": true,
            "schema": {
              "pattern": "^[a-z][a-z0-9_-]{1,30}$",
              "title": "App Name",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_dict_str__Any__"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Get env vars",
        "tags": [
          "client-node-apps"
        ]
      },
      "put": {
        "description": "Set environment variables for the authenticated client's app.",
        "operationId": "client_set_env_api_v1_client_node_apps__app_name__env_put",
        "parameters": [
          {
            "in": "path",
            "name": "app_name",
            "required": true,
            "schema": {
              "pattern": "^[a-z][a-z0-9_-]{1,30}$",
              "title": "App Name",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/whost_agent__models__node_app__EnvVarsUpdate"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_dict_str__Any__"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Set env vars",
        "tags": [
          "client-node-apps"
        ]
      }
    },
    "/api/v1/client/node-apps/{app_name}/logs": {
      "get": {
        "description": "Tail stdout/stderr/access/error logs for the authenticated client's app.",
        "operationId": "client_logs_api_v1_client_node_apps__app_name__logs_get",
        "parameters": [
          {
            "in": "path",
            "name": "app_name",
            "required": true,
            "schema": {
              "pattern": "^[a-z][a-z0-9_-]{1,30}$",
              "title": "App Name",
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "lines",
            "required": false,
            "schema": {
              "default": 100,
              "maximum": 5000,
              "minimum": 1,
              "title": "Lines",
              "type": "integer"
            }
          },
          {
            "in": "query",
            "name": "log_type",
            "required": false,
            "schema": {
              "default": "stderr",
              "pattern": "^(stdout|stderr|access|error)$",
              "title": "Log Type",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_dict_str__Any__"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Get app logs",
        "tags": [
          "client-node-apps"
        ]
      }
    },
    "/api/v1/client/node-apps/{app_name}/npm": {
      "get": {
        "description": "List installed npm packages for the authenticated client's app.",
        "operationId": "client_npm_list_api_v1_client_node_apps__app_name__npm_get",
        "parameters": [
          {
            "in": "path",
            "name": "app_name",
            "required": true,
            "schema": {
              "pattern": "^[a-z][a-z0-9_-]{1,30}$",
              "title": "App Name",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_list_dict_str__Any___"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "List npm packages",
        "tags": [
          "client-node-apps"
        ]
      }
    },
    "/api/v1/client/node-apps/{app_name}/npm/ci": {
      "post": {
        "description": "Install dependencies from the project's lock/manifest for the authenticated client's app.",
        "operationId": "client_npm_ci_api_v1_client_node_apps__app_name__npm_ci_post",
        "parameters": [
          {
            "in": "path",
            "name": "app_name",
            "required": true,
            "schema": {
              "pattern": "^[a-z][a-z0-9_-]{1,30}$",
              "title": "App Name",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_dict_str__Any__"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "npm install (lock-file)",
        "tags": [
          "client-node-apps"
        ]
      }
    },
    "/api/v1/client/node-apps/{app_name}/npm/install": {
      "post": {
        "description": "Install npm packages for the authenticated client's app.",
        "operationId": "client_npm_install_api_v1_client_node_apps__app_name__npm_install_post",
        "parameters": [
          {
            "in": "path",
            "name": "app_name",
            "required": true,
            "schema": {
              "pattern": "^[a-z][a-z0-9_-]{1,30}$",
              "title": "App Name",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/NpmInstallRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_dict_str__Any__"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Install npm packages",
        "tags": [
          "client-node-apps"
        ]
      }
    },
    "/api/v1/client/node-apps/{app_name}/npm/uninstall": {
      "post": {
        "description": "Uninstall npm packages for the authenticated client's app.",
        "operationId": "client_npm_uninstall_api_v1_client_node_apps__app_name__npm_uninstall_post",
        "parameters": [
          {
            "in": "path",
            "name": "app_name",
            "required": true,
            "schema": {
              "pattern": "^[a-z][a-z0-9_-]{1,30}$",
              "title": "App Name",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/NpmUninstallRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_dict_str__Any__"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Uninstall npm packages",
        "tags": [
          "client-node-apps"
        ]
      }
    },
    "/api/v1/client/node-apps/{app_name}/restart": {
      "post": {
        "description": "Restart a Node.js app for the authenticated client account.",
        "operationId": "client_restart_node_app_api_v1_client_node_apps__app_name__restart_post",
        "parameters": [
          {
            "in": "path",
            "name": "app_name",
            "required": true,
            "schema": {
              "pattern": "^[a-z][a-z0-9_-]{1,30}$",
              "title": "App Name",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_dict_str__Any__"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Restart Node app",
        "tags": [
          "client-node-apps"
        ]
      }
    },
    "/api/v1/client/node-apps/{app_name}/script": {
      "post": {
        "description": "Run a declared npm script for the authenticated client's app.",
        "operationId": "client_run_script_api_v1_client_node_apps__app_name__script_post",
        "parameters": [
          {
            "in": "path",
            "name": "app_name",
            "required": true,
            "schema": {
              "pattern": "^[a-z][a-z0-9_-]{1,30}$",
              "title": "App Name",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/NpmScriptRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_dict_str__Any__"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Run npm script",
        "tags": [
          "client-node-apps"
        ]
      }
    },
    "/api/v1/client/node-apps/{app_name}/start": {
      "post": {
        "description": "Start a Node.js app for the authenticated client account.",
        "operationId": "client_start_node_app_api_v1_client_node_apps__app_name__start_post",
        "parameters": [
          {
            "in": "path",
            "name": "app_name",
            "required": true,
            "schema": {
              "pattern": "^[a-z][a-z0-9_-]{1,30}$",
              "title": "App Name",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_dict_str__Any__"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Start Node app",
        "tags": [
          "client-node-apps"
        ]
      }
    },
    "/api/v1/client/node-apps/{app_name}/status": {
      "get": {
        "description": "Get runtime status of a Node.js app for the authenticated client account.",
        "operationId": "client_node_app_status_api_v1_client_node_apps__app_name__status_get",
        "parameters": [
          {
            "in": "path",
            "name": "app_name",
            "required": true,
            "schema": {
              "pattern": "^[a-z][a-z0-9_-]{1,30}$",
              "title": "App Name",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_dict_str__Any__"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Node app status",
        "tags": [
          "client-node-apps"
        ]
      }
    },
    "/api/v1/client/node-apps/{app_name}/stop": {
      "post": {
        "description": "Stop a Node.js app for the authenticated client account.",
        "operationId": "client_stop_node_app_api_v1_client_node_apps__app_name__stop_post",
        "parameters": [
          {
            "in": "path",
            "name": "app_name",
            "required": true,
            "schema": {
              "pattern": "^[a-z][a-z0-9_-]{1,30}$",
              "title": "App Name",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_dict_str__Any__"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Stop Node app",
        "tags": [
          "client-node-apps"
        ]
      }
    },
    "/api/v1/client/node/versions": {
      "get": {
        "description": "List Node.js versions visible to the authenticated client account.",
        "operationId": "client_list_versions_api_v1_client_node_versions_get",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_dict_str__Any__"
                }
              }
            },
            "description": "Successful Response"
          }
        },
        "summary": "List Node versions",
        "tags": [
          "client-node-apps"
        ]
      }
    },
    "/api/v1/client/notifications": {
      "get": {
        "description": "Return paginated notifications for the authenticated client with optional unread/category filters.",
        "operationId": "list_client_notifications_api_v1_client_notifications_get",
        "parameters": [
          {
            "in": "query",
            "name": "limit",
            "required": false,
            "schema": {
              "default": 50,
              "maximum": 200,
              "minimum": 1,
              "title": "Limit",
              "type": "integer"
            }
          },
          {
            "in": "query",
            "name": "unread_only",
            "required": false,
            "schema": {
              "default": false,
              "title": "Unread Only",
              "type": "boolean"
            }
          },
          {
            "in": "query",
            "name": "category",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Category"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_dict_str__Any__"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "List notifications (client)",
        "tags": [
          "client-notifications"
        ]
      }
    },
    "/api/v1/client/notifications/read-all": {
      "post": {
        "description": "Mark all unread notifications as read for the authenticated client.",
        "operationId": "mark_all_client_read_api_v1_client_notifications_read_all_post",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_dict_str__Any__"
                }
              }
            },
            "description": "Successful Response"
          }
        },
        "summary": "Mark all read (client)",
        "tags": [
          "client-notifications"
        ]
      }
    },
    "/api/v1/client/notifications/settings": {
      "get": {
        "description": "Return notification preferences (channel toggles, severity filters) for the authenticated client.",
        "operationId": "get_client_preferences_api_v1_client_notifications_settings_get",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_dict_str__Any__"
                }
              }
            },
            "description": "Successful Response"
          }
        },
        "summary": "Get notification preferences (client)",
        "tags": [
          "client-notifications"
        ]
      },
      "put": {
        "description": "Update the authenticated client's own notification toggles (channel and category switches). Server-wide blocks — SMTP, event matrix, templates — are not accepted on this path.",
        "operationId": "update_client_preferences_api_v1_client_notifications_settings_put",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ClientNotificationPreferencesUpdate"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_dict_str__Any__"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Update notification preferences (client)",
        "tags": [
          "client-notifications"
        ]
      }
    },
    "/api/v1/client/notifications/unread-count": {
      "get": {
        "description": "Return the count of unread notifications for the authenticated client.",
        "operationId": "get_client_unread_count_api_v1_client_notifications_unread_count_get",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_dict_str__Any__"
                }
              }
            },
            "description": "Successful Response"
          }
        },
        "summary": "Get unread count (client)",
        "tags": [
          "client-notifications"
        ]
      }
    },
    "/api/v1/client/notifications/{notif_id}/read": {
      "post": {
        "description": "Mark a single notification as read for the authenticated client.",
        "operationId": "mark_client_read_api_v1_client_notifications__notif_id__read_post",
        "parameters": [
          {
            "in": "path",
            "name": "notif_id",
            "required": true,
            "schema": {
              "title": "Notif Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_dict_str__Any__"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Mark notification read (client)",
        "tags": [
          "client-notifications"
        ]
      }
    },
    "/api/v1/client/parked-domains": {
      "get": {
        "description": "Return all parked domains for the authenticated client account.",
        "operationId": "client_list_parked_domains_api_v1_client_parked_domains_get",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_list_dict_str__Any___"
                }
              }
            },
            "description": "Successful Response"
          }
        },
        "summary": "List parked domains (client)",
        "tags": [
          "client-domains"
        ]
      },
      "post": {
        "description": "Create a parked (alias) domain for the authenticated client account.",
        "operationId": "client_create_parked_domain_api_v1_client_parked_domains_post",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ParkedDomainCreate"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_dict_str__Any__"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Create parked domain (client)",
        "tags": [
          "client-domains"
        ]
      }
    },
    "/api/v1/client/parked-domains/{domain}": {
      "delete": {
        "description": "Delete a parked domain owned by the authenticated client account.",
        "operationId": "client_delete_parked_domain_api_v1_client_parked_domains__domain__delete",
        "parameters": [
          {
            "in": "path",
            "name": "domain",
            "required": true,
            "schema": {
              "title": "Domain",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MessageResponse"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Delete parked domain (client)",
        "tags": [
          "client-domains"
        ]
      }
    },
    "/api/v1/client/php/config": {
      "get": {
        "description": "Return the account-wide PHP configuration (php.ini directives) for the authenticated client account.",
        "operationId": "client_get_php_config_api_v1_client_php_config_get",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_dict_str__Any__"
                }
              }
            },
            "description": "Successful Response"
          }
        },
        "summary": "Get PHP config (client)",
        "tags": [
          "client-php"
        ]
      },
      "put": {
        "description": "Update account-wide PHP configuration (memory_limit, upload_max_filesize, etc.) for the authenticated client account.",
        "operationId": "client_update_php_config_api_v1_client_php_config_put",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PHPConfigUpdate"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_dict_str__Any__"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Update PHP config (client)",
        "tags": [
          "client-php"
        ]
      }
    },
    "/api/v1/client/php/domains": {
      "get": {
        "description": "Return all domains and their PHP version/config for the authenticated client account.",
        "operationId": "client_list_php_domains_api_v1_client_php_domains_get",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_dict_str__Any__"
                }
              }
            },
            "description": "Successful Response"
          }
        },
        "summary": "List domain PHP info (client)",
        "tags": [
          "client-php"
        ]
      }
    },
    "/api/v1/client/php/extensions": {
      "get": {
        "description": "Return the status of all PHP extensions (enabled/disabled) for the authenticated client account.",
        "operationId": "client_get_php_extensions_api_v1_client_php_extensions_get",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_dict_str__Any__"
                }
              }
            },
            "description": "Successful Response"
          }
        },
        "summary": "Get PHP extensions (client)",
        "tags": [
          "client-php"
        ]
      },
      "put": {
        "description": "Enable or disable a single PHP extension for the authenticated client account.",
        "operationId": "client_set_php_extension_api_v1_client_php_extensions_put",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PHPExtensionToggle"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_dict_str__Any__"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Toggle PHP extension (client)",
        "tags": [
          "client-php"
        ]
      }
    },
    "/api/v1/client/php/opcache": {
      "get": {
        "description": "Return the OPcache statistics for the PHP version assigned to the authenticated client account.",
        "operationId": "client_get_opcache_status_api_v1_client_php_opcache_get",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_dict_str__Any__"
                }
              }
            },
            "description": "Successful Response"
          }
        },
        "summary": "Get OPcache status (client)",
        "tags": [
          "client-php"
        ]
      }
    },
    "/api/v1/client/php/opcache/clear": {
      "post": {
        "description": "Clear the OPcache for the PHP version assigned to the authenticated client account.",
        "operationId": "client_clear_opcache_api_v1_client_php_opcache_clear_post",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MessageResponse"
                }
              }
            },
            "description": "Successful Response"
          }
        },
        "summary": "Clear OPcache (client)",
        "tags": [
          "client-php"
        ]
      }
    },
    "/api/v1/client/php/versions": {
      "get": {
        "description": "Return the list of installed PHP versions and the default version available to the authenticated client.",
        "operationId": "client_get_installed_versions_api_v1_client_php_versions_get",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_dict_str__Any__"
                }
              }
            },
            "description": "Successful Response"
          }
        },
        "summary": "Get installed PHP versions (client)",
        "tags": [
          "client-php"
        ]
      }
    },
    "/api/v1/client/plans": {
      "get": {
        "description": "List plans owned by the calling reseller.\n\nForces the owner filter server-side so a client/reseller can never\nenumerate plans they do not own. Non-reseller clients receive an\nempty list because plan ownership is recorded by reseller username\nand a non-reseller has no owned plans. A hidden plan is the\nadministrator's to assign; it is not offered to the reseller.",
        "operationId": "list_client_plans_api_v1_client_plans_get",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": true,
                  "title": "Response List Client Plans Api V1 Client Plans Get",
                  "type": "object"
                }
              }
            },
            "description": "Successful Response"
          }
        },
        "summary": "List Client Plans",
        "tags": [
          "client-plans"
        ]
      }
    },
    "/api/v1/client/profile": {
      "get": {
        "description": "Return the authenticated client account profile (username, domain, email, status, 2FA, reseller info).",
        "operationId": "get_client_profile_api_v1_client_profile_get",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_dict_str__Any__"
                }
              }
            },
            "description": "Successful Response"
          }
        },
        "summary": "Get client profile",
        "tags": [
          "client-profile"
        ]
      },
      "put": {
        "description": "Update profile fields (email, sidebar choice) for the authenticated client account. A session opened by impersonation does not change the sidebar choice.",
        "operationId": "update_client_profile_api_v1_client_profile_put",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ClientProfileUpdate"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_dict_str__Any__"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Update client profile",
        "tags": [
          "client-profile"
        ]
      }
    },
    "/api/v1/client/profile/2fa/backup-codes/regenerate": {
      "post": {
        "description": "Generate a fresh set of one-time backup codes for the authenticated client; old codes are invalidated.",
        "operationId": "regenerate_client_backup_codes_api_v1_client_profile_2fa_backup_codes_regenerate_post",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_dict_str__Any__"
                }
              }
            },
            "description": "Successful Response"
          }
        },
        "summary": "Regenerate backup codes (client)",
        "tags": [
          "client-profile"
        ]
      }
    },
    "/api/v1/client/profile/2fa/disable": {
      "post": {
        "description": "Disable 2FA for the authenticated client after verifying the account password.",
        "operationId": "disable_client_2fa_api_v1_client_profile_2fa_disable_post",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/TwoFADisableRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_dict_str__Any__"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Disable 2FA (client)",
        "tags": [
          "client-profile"
        ]
      }
    },
    "/api/v1/client/profile/2fa/enable": {
      "post": {
        "description": "Verify the OTP code and activate 2FA for the authenticated client; returns one-time backup codes.",
        "operationId": "enable_client_2fa_api_v1_client_profile_2fa_enable_post",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/TwoFAEnableRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_dict_str__Any__"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Enable 2FA (client)",
        "tags": [
          "client-profile"
        ]
      }
    },
    "/api/v1/client/profile/2fa/resend-code": {
      "post": {
        "description": "Resend the email OTP code during client 2FA email setup.",
        "operationId": "resend_client_2fa_code_api_v1_client_profile_2fa_resend_code_post",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_dict_str__Any__"
                }
              }
            },
            "description": "Successful Response"
          }
        },
        "summary": "Resend email 2FA code (client)",
        "tags": [
          "client-profile"
        ]
      }
    },
    "/api/v1/client/profile/2fa/setup": {
      "post": {
        "description": "Initiate two-factor authentication setup for the authenticated client (totp or email method).",
        "operationId": "setup_client_2fa_api_v1_client_profile_2fa_setup_post",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/TwoFASetupRequest",
                "default": {
                  "method": "totp"
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_dict_str__Any__"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Initiate 2FA setup (client)",
        "tags": [
          "client-profile"
        ]
      }
    },
    "/api/v1/client/profile/password": {
      "patch": {
        "description": "Change the authenticated client's password (requires current password). Invalidates all existing sessions.",
        "operationId": "change_client_password_api_v1_client_profile_password_patch",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ClientPasswordChange"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_dict_str__Any__"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Change client password",
        "tags": [
          "client-profile"
        ]
      }
    },
    "/api/v1/client/python-apps": {
      "get": {
        "description": "List Python apps owned by the authenticated client account.",
        "operationId": "client_list_python_apps_api_v1_client_python_apps_get",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_list_PythonAppResponse__"
                }
              }
            },
            "description": "Successful Response"
          }
        },
        "summary": "List Python apps",
        "tags": [
          "client-python-apps"
        ]
      },
      "post": {
        "description": "Create a new Python application for the authenticated client account.",
        "operationId": "client_create_python_app_api_v1_client_python_apps_post",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PythonAppCreate"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_PythonAppResponse_"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Create Python app",
        "tags": [
          "client-python-apps"
        ]
      }
    },
    "/api/v1/client/python-apps/analyze": {
      "post": {
        "description": "Analyze an uploaded archive or server-side path for the authenticated client account.",
        "operationId": "client_analyze_python_project_api_v1_client_python_apps_analyze_post",
        "requestBody": {
          "content": {
            "multipart/form-data": {
              "schema": {
                "$ref": "#/components/schemas/Body_client_analyze_python_project_api_v1_client_python_apps_analyze_post"
              }
            }
          }
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_dict_str__Any__"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Analyze Python project",
        "tags": [
          "client-python-apps"
        ]
      }
    },
    "/api/v1/client/python-apps/deploy": {
      "post": {
        "description": "Kick off the deploy pipeline for the authenticated client account. Returns a task_id for SSE subscription.",
        "operationId": "client_deploy_python_project_api_v1_client_python_apps_deploy_post",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PythonAppDeployRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_dict_str__Any__"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Deploy Python project",
        "tags": [
          "client-python-apps"
        ]
      }
    },
    "/api/v1/client/python-apps/deploy/{task_id}": {
      "get": {
        "description": "Snapshot of a deploy task for the authenticated client account.",
        "operationId": "client_deploy_status_api_v1_client_python_apps_deploy__task_id__get",
        "parameters": [
          {
            "in": "path",
            "name": "task_id",
            "required": true,
            "schema": {
              "title": "Task Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_dict_str__Any__"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Deploy task status",
        "tags": [
          "client-python-apps"
        ]
      }
    },
    "/api/v1/client/python-apps/deploy/{task_id}/events": {
      "get": {
        "description": "Server-Sent Events stream for a running client deploy task.",
        "operationId": "client_deploy_events_api_v1_client_python_apps_deploy__task_id__events_get",
        "parameters": [
          {
            "in": "path",
            "name": "task_id",
            "required": true,
            "schema": {
              "title": "Task Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {}
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Client Deploy Events",
        "tags": [
          "client-python-apps"
        ]
      }
    },
    "/api/v1/client/python-apps/versions": {
      "get": {
        "description": "List installed Python versions visible to the authenticated client account.",
        "operationId": "client_list_python_versions_api_v1_client_python_apps_versions_get",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_dict_str__Any__"
                }
              }
            },
            "description": "Successful Response"
          }
        },
        "summary": "List Python versions",
        "tags": [
          "client-python-apps"
        ]
      }
    },
    "/api/v1/client/python-apps/{app_name}": {
      "delete": {
        "description": "Delete a Python app for the authenticated client account.",
        "operationId": "client_delete_python_app_api_v1_client_python_apps__app_name__delete",
        "parameters": [
          {
            "in": "path",
            "name": "app_name",
            "required": true,
            "schema": {
              "pattern": "^[a-z][a-z0-9_-]{1,30}$",
              "title": "App Name",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MessageResponse"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Delete Python app",
        "tags": [
          "client-python-apps"
        ]
      },
      "get": {
        "description": "Get details for a Python app owned by the authenticated client account.",
        "operationId": "client_get_python_app_api_v1_client_python_apps__app_name__get",
        "parameters": [
          {
            "in": "path",
            "name": "app_name",
            "required": true,
            "schema": {
              "pattern": "^[a-z][a-z0-9_-]{1,30}$",
              "title": "App Name",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_PythonAppResponse_"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Get Python app",
        "tags": [
          "client-python-apps"
        ]
      },
      "put": {
        "description": "Update a Python app's configuration for the authenticated client account.",
        "operationId": "client_update_python_app_api_v1_client_python_apps__app_name__put",
        "parameters": [
          {
            "in": "path",
            "name": "app_name",
            "required": true,
            "schema": {
              "pattern": "^[a-z][a-z0-9_-]{1,30}$",
              "title": "App Name",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PythonAppUpdate"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_PythonAppResponse_"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Update Python app",
        "tags": [
          "client-python-apps"
        ]
      }
    },
    "/api/v1/client/python-apps/{app_name}/env": {
      "get": {
        "description": "Get environment variables for the authenticated client's app.",
        "operationId": "client_get_env_vars_api_v1_client_python_apps__app_name__env_get",
        "parameters": [
          {
            "in": "path",
            "name": "app_name",
            "required": true,
            "schema": {
              "pattern": "^[a-z][a-z0-9_-]{1,30}$",
              "title": "App Name",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_dict_str__Any__"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Get env vars",
        "tags": [
          "client-python-apps"
        ]
      },
      "put": {
        "description": "Set environment variables for the authenticated client's app.",
        "operationId": "client_set_env_vars_api_v1_client_python_apps__app_name__env_put",
        "parameters": [
          {
            "in": "path",
            "name": "app_name",
            "required": true,
            "schema": {
              "pattern": "^[a-z][a-z0-9_-]{1,30}$",
              "title": "App Name",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/whost_agent__models__python_app__EnvVarsUpdate"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_dict_str__Any__"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Set env vars",
        "tags": [
          "client-python-apps"
        ]
      }
    },
    "/api/v1/client/python-apps/{app_name}/logs": {
      "get": {
        "description": "Tail error/access logs for the authenticated client's app.",
        "operationId": "client_get_python_app_logs_api_v1_client_python_apps__app_name__logs_get",
        "parameters": [
          {
            "in": "path",
            "name": "app_name",
            "required": true,
            "schema": {
              "pattern": "^[a-z][a-z0-9_-]{1,30}$",
              "title": "App Name",
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "lines",
            "required": false,
            "schema": {
              "default": 100,
              "maximum": 5000,
              "minimum": 1,
              "title": "Lines",
              "type": "integer"
            }
          },
          {
            "in": "query",
            "name": "log_type",
            "required": false,
            "schema": {
              "default": "error",
              "pattern": "^(error|access)$",
              "title": "Log Type",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_dict_str__Any__"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Get app logs",
        "tags": [
          "client-python-apps"
        ]
      }
    },
    "/api/v1/client/python-apps/{app_name}/manage": {
      "post": {
        "description": "Run a Django manage.py command for the authenticated client's app.",
        "operationId": "client_run_manage_py_api_v1_client_python_apps__app_name__manage_post",
        "parameters": [
          {
            "in": "path",
            "name": "app_name",
            "required": true,
            "schema": {
              "pattern": "^[a-z][a-z0-9_-]{1,30}$",
              "title": "App Name",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ManagePyRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_ManagePyResponse_"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Run manage.py",
        "tags": [
          "client-python-apps"
        ]
      }
    },
    "/api/v1/client/python-apps/{app_name}/pip": {
      "get": {
        "description": "List installed pip packages for the authenticated client's app.",
        "operationId": "client_list_pip_packages_api_v1_client_python_apps__app_name__pip_get",
        "parameters": [
          {
            "in": "path",
            "name": "app_name",
            "required": true,
            "schema": {
              "pattern": "^[a-z][a-z0-9_-]{1,30}$",
              "title": "App Name",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_list_PipPackageEntry__"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "List pip packages",
        "tags": [
          "client-python-apps"
        ]
      }
    },
    "/api/v1/client/python-apps/{app_name}/pip/install": {
      "post": {
        "description": "Install pip packages for the authenticated client's app.",
        "operationId": "client_install_pip_packages_api_v1_client_python_apps__app_name__pip_install_post",
        "parameters": [
          {
            "in": "path",
            "name": "app_name",
            "required": true,
            "schema": {
              "pattern": "^[a-z][a-z0-9_-]{1,30}$",
              "title": "App Name",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PipInstallRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_dict_str__Any__"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Install pip packages",
        "tags": [
          "client-python-apps"
        ]
      }
    },
    "/api/v1/client/python-apps/{app_name}/pip/requirements": {
      "post": {
        "description": "Install packages declared in requirements.txt for the authenticated client's app.",
        "operationId": "client_install_from_requirements_api_v1_client_python_apps__app_name__pip_requirements_post",
        "parameters": [
          {
            "in": "path",
            "name": "app_name",
            "required": true,
            "schema": {
              "pattern": "^[a-z][a-z0-9_-]{1,30}$",
              "title": "App Name",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_dict_str__Any__"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Install from requirements.txt",
        "tags": [
          "client-python-apps"
        ]
      }
    },
    "/api/v1/client/python-apps/{app_name}/pip/uninstall": {
      "post": {
        "description": "Uninstall pip packages for the authenticated client's app.",
        "operationId": "client_uninstall_pip_packages_api_v1_client_python_apps__app_name__pip_uninstall_post",
        "parameters": [
          {
            "in": "path",
            "name": "app_name",
            "required": true,
            "schema": {
              "pattern": "^[a-z][a-z0-9_-]{1,30}$",
              "title": "App Name",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PipUninstallRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_dict_str__Any__"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Uninstall pip packages",
        "tags": [
          "client-python-apps"
        ]
      }
    },
    "/api/v1/client/python-apps/{app_name}/restart": {
      "post": {
        "description": "Restart a Python app for the authenticated client account.",
        "operationId": "client_restart_python_app_api_v1_client_python_apps__app_name__restart_post",
        "parameters": [
          {
            "in": "path",
            "name": "app_name",
            "required": true,
            "schema": {
              "pattern": "^[a-z][a-z0-9_-]{1,30}$",
              "title": "App Name",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_dict_str__Any__"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Restart Python app",
        "tags": [
          "client-python-apps"
        ]
      }
    },
    "/api/v1/client/python-apps/{app_name}/start": {
      "post": {
        "description": "Start a Python app for the authenticated client account.",
        "operationId": "client_start_python_app_api_v1_client_python_apps__app_name__start_post",
        "parameters": [
          {
            "in": "path",
            "name": "app_name",
            "required": true,
            "schema": {
              "pattern": "^[a-z][a-z0-9_-]{1,30}$",
              "title": "App Name",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_dict_str__Any__"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Start Python app",
        "tags": [
          "client-python-apps"
        ]
      }
    },
    "/api/v1/client/python-apps/{app_name}/status": {
      "get": {
        "description": "Get runtime status of a Python app for the authenticated client account.",
        "operationId": "client_get_python_app_status_api_v1_client_python_apps__app_name__status_get",
        "parameters": [
          {
            "in": "path",
            "name": "app_name",
            "required": true,
            "schema": {
              "pattern": "^[a-z][a-z0-9_-]{1,30}$",
              "title": "App Name",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_PythonAppStatusResponse_"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Python app status",
        "tags": [
          "client-python-apps"
        ]
      }
    },
    "/api/v1/client/python-apps/{app_name}/stop": {
      "post": {
        "description": "Stop a Python app for the authenticated client account.",
        "operationId": "client_stop_python_app_api_v1_client_python_apps__app_name__stop_post",
        "parameters": [
          {
            "in": "path",
            "name": "app_name",
            "required": true,
            "schema": {
              "pattern": "^[a-z][a-z0-9_-]{1,30}$",
              "title": "App Name",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_dict_str__Any__"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Stop Python app",
        "tags": [
          "client-python-apps"
        ]
      }
    },
    "/api/v1/client/redirects": {
      "get": {
        "description": "Return all URL redirects configured for the authenticated client account.",
        "operationId": "client_list_redirects_api_v1_client_redirects_get",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_list_dict_str__Any___"
                }
              }
            },
            "description": "Successful Response"
          }
        },
        "summary": "List redirects (client)",
        "tags": [
          "client-domains"
        ]
      },
      "post": {
        "description": "Create a URL redirect for the authenticated client account.",
        "operationId": "client_create_redirect_api_v1_client_redirects_post",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/RedirectCreate"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_dict_str__Any__"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Create redirect (client)",
        "tags": [
          "client-domains"
        ]
      }
    },
    "/api/v1/client/redirects/{redirect_id}": {
      "delete": {
        "description": "Delete a URL redirect owned by the authenticated client account.",
        "operationId": "client_delete_redirect_api_v1_client_redirects__redirect_id__delete",
        "parameters": [
          {
            "in": "path",
            "name": "redirect_id",
            "required": true,
            "schema": {
              "title": "Redirect Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MessageResponse"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Delete redirect (client)",
        "tags": [
          "client-domains"
        ]
      },
      "put": {
        "description": "Update a URL redirect owned by the authenticated client account.",
        "operationId": "client_update_redirect_api_v1_client_redirects__redirect_id__put",
        "parameters": [
          {
            "in": "path",
            "name": "redirect_id",
            "required": true,
            "schema": {
              "title": "Redirect Id",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/RedirectUpdate"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_dict_str__Any__"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Update redirect (client)",
        "tags": [
          "client-domains"
        ]
      }
    },
    "/api/v1/client/spam/emails": {
      "get": {
        "description": "Return all email accounts owned by the authenticated client with their per-address spam summary.",
        "operationId": "client_spam_emails_api_v1_client_spam_emails_get",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_list_dict_str__Any___"
                }
              }
            },
            "description": "Successful Response"
          }
        },
        "summary": "List spam-enabled emails (client)",
        "tags": [
          "client-spam"
        ]
      }
    },
    "/api/v1/client/spam/settings/{email}": {
      "delete": {
        "description": "Reset spam settings to defaults for a specific email address owned by the authenticated client.",
        "operationId": "client_reset_spam_settings_api_v1_client_spam_settings__email__delete",
        "parameters": [
          {
            "in": "path",
            "name": "email",
            "required": true,
            "schema": {
              "title": "Email",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_dict_str__Any__"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Reset spam settings (client)",
        "tags": [
          "client-spam"
        ]
      },
      "get": {
        "description": "Return spam settings (whitelist, blacklist, enabled flag) for a specific email address.",
        "operationId": "client_get_spam_settings_api_v1_client_spam_settings__email__get",
        "parameters": [
          {
            "in": "path",
            "name": "email",
            "required": true,
            "schema": {
              "title": "Email",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_dict_str__Any__"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Get spam settings (client)",
        "tags": [
          "client-spam"
        ]
      },
      "put": {
        "description": "Update spam settings (whitelist, blacklist, enabled flag) for a specific email address owned by the authenticated client. Entries are sender addresses or domains, at most 100 per list (422 VALIDATION_ERROR otherwise); the lists are applied by the mail filter when the message's recipients agree.",
        "operationId": "client_update_spam_settings_api_v1_client_spam_settings__email__put",
        "parameters": [
          {
            "in": "path",
            "name": "email",
            "required": true,
            "schema": {
              "title": "Email",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UserSpamSettingsUpdate"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_dict_str__Any__"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Update spam settings (client)",
        "tags": [
          "client-spam"
        ]
      }
    },
    "/api/v1/client/ssl": {
      "get": {
        "description": "Return SSL certificate status for all domains owned by the authenticated client.",
        "operationId": "client_list_ssl_api_v1_client_ssl_get",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_list_dict_str__Any___"
                }
              }
            },
            "description": "Successful Response"
          }
        },
        "summary": "List SSL certificates (client)",
        "tags": [
          "client-ssl"
        ]
      }
    },
    "/api/v1/client/ssl/{domain}": {
      "delete": {
        "description": "Delete the SSL certificate for a domain owned by the authenticated client and disable HTTPS on the vhost.",
        "operationId": "client_delete_ssl_api_v1_client_ssl__domain__delete",
        "parameters": [
          {
            "in": "path",
            "name": "domain",
            "required": true,
            "schema": {
              "title": "Domain",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MessageResponse"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Delete SSL certificate (client)",
        "tags": [
          "client-ssl"
        ]
      },
      "get": {
        "description": "Return SSL certificate metadata for a specific domain owned by the authenticated client.",
        "operationId": "client_get_ssl_api_v1_client_ssl__domain__get",
        "parameters": [
          {
            "in": "path",
            "name": "domain",
            "required": true,
            "schema": {
              "title": "Domain",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_dict_str__Any__"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Get SSL certificate (client)",
        "tags": [
          "client-ssl"
        ]
      }
    },
    "/api/v1/client/ssl/{domain}/custom": {
      "post": {
        "description": "Upload a custom SSL certificate (cert + key + optional chain) for a domain owned by the authenticated client.",
        "operationId": "client_upload_custom_ssl_api_v1_client_ssl__domain__custom_post",
        "parameters": [
          {
            "in": "path",
            "name": "domain",
            "required": true,
            "schema": {
              "title": "Domain",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SSLCustomUpload"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_dict_str__Any__"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Upload custom SSL certificate (client)",
        "tags": [
          "client-ssl"
        ]
      }
    },
    "/api/v1/client/ssl/{domain}/letsencrypt": {
      "post": {
        "description": "Issue or renew a Let's Encrypt certificate for a domain owned by the authenticated client.",
        "operationId": "client_request_letsencrypt_api_v1_client_ssl__domain__letsencrypt_post",
        "parameters": [
          {
            "in": "path",
            "name": "domain",
            "required": true,
            "schema": {
              "title": "Domain",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "anyOf": [
                  {
                    "$ref": "#/components/schemas/SSLLetsEncryptRequest"
                  },
                  {
                    "type": "null"
                  }
                ],
                "title": "Data"
              }
            }
          }
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_dict_str__Any__"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Request Let's Encrypt certificate (client)",
        "tags": [
          "client-ssl"
        ]
      }
    },
    "/api/v1/client/subdomains": {
      "get": {
        "description": "Return all subdomains for the authenticated client account.",
        "operationId": "client_list_subdomains_api_v1_client_subdomains_get",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_list_dict_str__Any___"
                }
              }
            },
            "description": "Successful Response"
          }
        },
        "summary": "List subdomains (client)",
        "tags": [
          "client-domains"
        ]
      },
      "post": {
        "description": "Create a subdomain for the authenticated client account. Plan limit enforced.",
        "operationId": "client_create_subdomain_api_v1_client_subdomains_post",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SubdomainCreate"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_dict_str__Any__"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Create subdomain (client)",
        "tags": [
          "client-domains"
        ]
      }
    },
    "/api/v1/client/subdomains/{subdomain}": {
      "delete": {
        "description": "Delete a subdomain owned by the authenticated client account; its own folder under the home directory is renamed <folder>-removed-<timestamp> (nothing is deleted).",
        "operationId": "client_delete_subdomain_api_v1_client_subdomains__subdomain__delete",
        "parameters": [
          {
            "in": "path",
            "name": "subdomain",
            "required": true,
            "schema": {
              "title": "Subdomain",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MessageResponse"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Delete subdomain (client)",
        "tags": [
          "client-domains"
        ]
      },
      "put": {
        "description": "Update a subdomain owned by the authenticated client account.",
        "operationId": "client_update_subdomain_api_v1_client_subdomains__subdomain__put",
        "parameters": [
          {
            "in": "path",
            "name": "subdomain",
            "required": true,
            "schema": {
              "title": "Subdomain",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SubdomainUpdate"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_dict_str__Any__"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Update subdomain (client)",
        "tags": [
          "client-domains"
        ]
      }
    },
    "/api/v1/databases": {
      "get": {
        "description": "Server-wide listing including orphan databases (no `{user}_` prefix match). Used by the operator's orphan-cleanup tool. Response data is a list of `{name, owner, size_mb, ...}` rows.",
        "operationId": "admin_list_all_databases_api_v1_databases_get",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": true,
                  "title": "Response Admin List All Databases Api V1 Databases Get",
                  "type": "object"
                }
              }
            },
            "description": "Successful Response"
          }
        },
        "summary": "List every database on the server (admin)",
        "tags": [
          "admin-databases"
        ]
      }
    },
    "/api/v1/databases/{db_name}": {
      "delete": {
        "description": "Admin orphan-cleanup. Refuses to drop internal system schemas.",
        "operationId": "admin_delete_database_api_v1_databases__db_name__delete",
        "parameters": [
          {
            "in": "path",
            "name": "db_name",
            "required": true,
            "schema": {
              "title": "Db Name",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MessageResponse"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Drop any database (admin)",
        "tags": [
          "admin-databases"
        ]
      }
    },
    "/api/v1/databases/{db_name}/phpmyadmin-url": {
      "get": {
        "description": "Admin-scope variant — works for orphan databases too. Returns 200 with `error_code=PMA_NOT_INSTALLED` when phpMyAdmin is absent. Handle both shapes client-side.",
        "operationId": "admin_phpmyadmin_url_api_v1_databases__db_name__phpmyadmin_url_get",
        "parameters": [
          {
            "in": "path",
            "name": "db_name",
            "required": true,
            "schema": {
              "title": "Db Name",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": true,
                  "title": "Response Admin Phpmyadmin Url Api V1 Databases  Db Name  Phpmyadmin Url Get",
                  "type": "object"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Mint phpMyAdmin SSO URL for any database (admin)",
        "tags": [
          "admin-databases"
        ]
      }
    },
    "/api/v1/fail2ban/ban": {
      "post": {
        "description": "Adds an IP (or, in an HTTP-facing jail, a network) to the specified jail's banned set immediately. A whitelisted address answers 409 IP_WHITELISTED; the caller's own address, or a network covering it, answers 422 SELF_LOCKOUT.",
        "operationId": "ban_ip_api_v1_fail2ban_ban_post",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/BanRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MessageResponse"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Manually ban an IP",
        "tags": [
          "fail2ban"
        ]
      }
    },
    "/api/v1/fail2ban/ban/{jail_name}/{ip}": {
      "delete": {
        "description": "Removes the IP from the named jail. Other jails are unaffected.",
        "operationId": "unban_ip_api_v1_fail2ban_ban__jail_name___ip__delete",
        "parameters": [
          {
            "in": "path",
            "name": "jail_name",
            "required": true,
            "schema": {
              "title": "Jail Name",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "ip",
            "required": true,
            "schema": {
              "title": "Ip",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MessageResponse"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Unban single IP from a jail",
        "tags": [
          "fail2ban"
        ]
      }
    },
    "/api/v1/fail2ban/banned": {
      "get": {
        "description": "Aggregated banned list across every enabled jail.",
        "operationId": "list_banned_api_v1_fail2ban_banned_get",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_list_BannedIPEntry__"
                }
              }
            },
            "description": "Successful Response"
          }
        },
        "summary": "List currently banned IPs",
        "tags": [
          "fail2ban"
        ]
      }
    },
    "/api/v1/fail2ban/jails": {
      "get": {
        "description": "Every jail definition (enabled + disabled), with current banned IP count.",
        "operationId": "list_jails_api_v1_fail2ban_jails_get",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_list_JailStatusResponse__"
                }
              }
            },
            "description": "Successful Response"
          }
        },
        "summary": "List fail2ban jails",
        "tags": [
          "fail2ban"
        ]
      }
    },
    "/api/v1/fail2ban/jails/{jail_name}": {
      "get": {
        "description": "Detail view of one jail — filters, action, banned list.",
        "operationId": "get_jail_api_v1_fail2ban_jails__jail_name__get",
        "parameters": [
          {
            "in": "path",
            "name": "jail_name",
            "required": true,
            "schema": {
              "title": "Jail Name",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_JailStatusResponse_"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Get fail2ban jail by name",
        "tags": [
          "fail2ban"
        ]
      },
      "put": {
        "description": "Patch maxretry / findtime / bantime / log paths.",
        "operationId": "update_jail_api_v1_fail2ban_jails__jail_name__put",
        "parameters": [
          {
            "in": "path",
            "name": "jail_name",
            "required": true,
            "schema": {
              "title": "Jail Name",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/JailUpdateRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_JailStatusResponse_"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Update fail2ban jail",
        "tags": [
          "fail2ban"
        ]
      }
    },
    "/api/v1/fail2ban/jails/{jail_name}/disable": {
      "post": {
        "description": "Deactivates the jail and reloads fail2ban. Existing bans on the jail are released.",
        "operationId": "disable_jail_api_v1_fail2ban_jails__jail_name__disable_post",
        "parameters": [
          {
            "in": "path",
            "name": "jail_name",
            "required": true,
            "schema": {
              "title": "Jail Name",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MessageResponse"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Disable fail2ban jail",
        "tags": [
          "fail2ban"
        ]
      }
    },
    "/api/v1/fail2ban/jails/{jail_name}/enable": {
      "post": {
        "description": "Activates the jail and reloads fail2ban.",
        "operationId": "enable_jail_api_v1_fail2ban_jails__jail_name__enable_post",
        "parameters": [
          {
            "in": "path",
            "name": "jail_name",
            "required": true,
            "schema": {
              "title": "Jail Name",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MessageResponse"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Enable fail2ban jail",
        "tags": [
          "fail2ban"
        ]
      }
    },
    "/api/v1/fail2ban/status": {
      "get": {
        "description": "Returns whether fail2ban daemon is running, version, jail count, total banned IPs.",
        "operationId": "get_status_api_v1_fail2ban_status_get",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_Fail2BanStatusResponse_"
                }
              }
            },
            "description": "Successful Response"
          }
        },
        "summary": "Fail2Ban service status",
        "tags": [
          "fail2ban"
        ]
      }
    },
    "/api/v1/fail2ban/unban-all": {
      "post": {
        "description": "Bulk action — clears every active ban in every jail. Whitelist is untouched. The message carries the number of released addresses.",
        "operationId": "unban_all_api_v1_fail2ban_unban_all_post",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MessageResponse"
                }
              }
            },
            "description": "Successful Response"
          }
        },
        "summary": "Unban every IP across every jail",
        "tags": [
          "fail2ban"
        ]
      }
    },
    "/api/v1/fail2ban/whitelist": {
      "get": {
        "description": "IPs permanently exempt from every jail's ban logic. Response data: a list of whitelisted IP strings.",
        "operationId": "get_whitelist_api_v1_fail2ban_whitelist_get",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_list_str__"
                }
              }
            },
            "description": "Successful Response"
          }
        },
        "summary": "Get fail2ban whitelist",
        "tags": [
          "fail2ban"
        ]
      },
      "post": {
        "description": "Exempt an IP from all fail2ban bans. Existing bans on the IP are released.",
        "operationId": "add_to_whitelist_api_v1_fail2ban_whitelist_post",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/WhitelistAddRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MessageResponse"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Add IP to whitelist",
        "tags": [
          "fail2ban"
        ]
      }
    },
    "/api/v1/fail2ban/whitelist/{ip}": {
      "delete": {
        "description": "The IP returns to normal ban-eligible state.",
        "operationId": "remove_from_whitelist_api_v1_fail2ban_whitelist__ip__delete",
        "parameters": [
          {
            "in": "path",
            "name": "ip",
            "required": true,
            "schema": {
              "title": "Ip",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MessageResponse"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Remove IP from whitelist",
        "tags": [
          "fail2ban"
        ]
      }
    },
    "/api/v1/firewall/attack-mode": {
      "get": {
        "description": "DDoS-mitigation mode state + the layers currently applied + auto-mode config.",
        "operationId": "get_attack_mode_status_api_v1_firewall_attack_mode_get",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_AttackModeStatusExtended_"
                }
              }
            },
            "description": "Successful Response"
          }
        },
        "summary": "Attack mode status",
        "tags": [
          "firewall"
        ]
      }
    },
    "/api/v1/firewall/attack-mode/auto-disable": {
      "post": {
        "description": "Stops the velocity watcher. Manually-enabled attack mode is preserved. Answers the auto-mode state.",
        "operationId": "disable_auto_attack_mode_api_v1_firewall_attack_mode_auto_disable_post",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_AutoModeStatus_"
                }
              }
            },
            "description": "Successful Response"
          }
        },
        "summary": "Disable auto-attack-mode",
        "tags": [
          "firewall"
        ]
      }
    },
    "/api/v1/firewall/attack-mode/auto-enable": {
      "post": {
        "description": "Background watcher monitors blocked-IP velocity; attack mode triggers automatically above threshold. Answers the auto-mode state.",
        "operationId": "enable_auto_attack_mode_api_v1_firewall_attack_mode_auto_enable_post",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_AutoModeStatus_"
                }
              }
            },
            "description": "Successful Response"
          }
        },
        "summary": "Enable auto-attack-mode",
        "tags": [
          "firewall"
        ]
      }
    },
    "/api/v1/firewall/attack-mode/disable": {
      "post": {
        "description": "Restores the values read before the mode was enabled and removes the applied layers. Existing bans are preserved. Not active answers 409 ATTACK_MODE_INACTIVE.",
        "operationId": "disable_attack_mode_api_v1_firewall_attack_mode_disable_post",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_AttackModeStatusExtended_"
                }
              }
            },
            "description": "Successful Response"
          }
        },
        "summary": "Disable attack mode",
        "tags": [
          "firewall"
        ]
      }
    },
    "/api/v1/firewall/attack-mode/enable": {
      "post": {
        "description": "Applies the hardening layers (kernel sysctl through systemd-sysctl, a SYN-flood / connlimit chain ahead of the firewall's own chains, the nginx rate-limit snippet, tighter fail2ban thresholds) and reports which ones took. Manual toggle — see auto-enable for automated. Already active answers 409 ATTACK_MODE_ACTIVE.",
        "operationId": "enable_attack_mode_api_v1_firewall_attack_mode_enable_post",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_AttackModeStatusExtended_"
                }
              }
            },
            "description": "Successful Response"
          }
        },
        "summary": "Enable attack mode",
        "tags": [
          "firewall"
        ]
      }
    },
    "/api/v1/firewall/blocked-ips": {
      "get": {
        "description": "The plain source denies the packet filter carries, each with the comment it was blocked with. Response data: a list of `{id, ip, comment}`.",
        "operationId": "list_blocked_ips_api_v1_firewall_blocked_ips_get",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_list_BlockedIPResponse__"
                }
              }
            },
            "description": "Successful Response"
          }
        },
        "summary": "List blocked IPs (server-wide)",
        "tags": [
          "firewall"
        ]
      },
      "post": {
        "description": "Add a manual block on a source IP / CIDR: a source deny in the packet filter plus an entry in the HTTP-layer ban list. A whitelisted address answers 409 IP_WHITELISTED; the caller's own address answers 422 SELF_LOCKOUT.",
        "operationId": "block_ip_api_v1_firewall_blocked_ips_post",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/BlockedIPCreate"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_BlockedIPResponse_"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Block IP (server-wide)",
        "tags": [
          "firewall"
        ]
      }
    },
    "/api/v1/firewall/blocked-ips/clear-all": {
      "post": {
        "description": "Bulk unblock: every source deny in the packet filter (with or without a port scope), every HTTP-layer ban, every rate-limit ban set member and every fail2ban ban. The security log is not touched — see `DELETE /firewall/logs`.",
        "operationId": "clear_all_blocked_api_v1_firewall_blocked_ips_clear_all_post",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_ClearAllResult_"
                }
              }
            },
            "description": "Successful Response"
          }
        },
        "summary": "Clear every blocked IP",
        "tags": [
          "firewall"
        ]
      }
    },
    "/api/v1/firewall/blocked-ips/{ip}": {
      "delete": {
        "description": "Removes the manual block for the specified IP / CIDR (the source deny and the HTTP-layer entry). An address that is not blocked answers 404 NOT_FOUND; a whitelist rule of the same address is left alone.",
        "operationId": "unblock_ip_api_v1_firewall_blocked_ips__ip__delete",
        "parameters": [
          {
            "in": "path",
            "name": "ip",
            "required": true,
            "schema": {
              "title": "Ip",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MessageResponse"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Unblock IP",
        "tags": [
          "firewall"
        ]
      }
    },
    "/api/v1/firewall/disable": {
      "post": {
        "description": "Deactivates UFW / firewalld — all rules become inert.",
        "operationId": "disable_firewall_api_v1_firewall_disable_post",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MessageResponse"
                }
              }
            },
            "description": "Successful Response"
          }
        },
        "summary": "Disable host firewall",
        "tags": [
          "firewall"
        ]
      }
    },
    "/api/v1/firewall/enable": {
      "post": {
        "description": "Activates UFW / firewalld. Existing rules are applied immediately.",
        "operationId": "enable_firewall_api_v1_firewall_enable_post",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MessageResponse"
                }
              }
            },
            "description": "Successful Response"
          }
        },
        "summary": "Enable host firewall",
        "tags": [
          "firewall"
        ]
      }
    },
    "/api/v1/firewall/logs": {
      "delete": {
        "description": "Deletes every block and suspicious event record. Irreversible; the blocks themselves are not touched (see `POST /firewall/blocked-ips/clear-all`).",
        "operationId": "clear_logs_api_v1_firewall_logs_delete",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_dict_str__int__"
                }
              }
            },
            "description": "Successful Response"
          }
        },
        "summary": "Clear the security log",
        "tags": [
          "firewall"
        ]
      }
    },
    "/api/v1/firewall/logs/blocked": {
      "get": {
        "description": "Block events grouped by address and type, newest first: `{events: BlockedEvent[], total}`. `ip` (exact, CIDR or a partial address), `type` (rate_limit / under_attack / manual / autoban), `since` / `until` (ISO-8601) narrow the page; a filter that cannot be a host, a type outside the list or a value that is not a timestamp answers 422.",
        "operationId": "get_blocked_events_api_v1_firewall_logs_blocked_get",
        "parameters": [
          {
            "in": "query",
            "name": "limit",
            "required": false,
            "schema": {
              "default": 100,
              "maximum": 1000,
              "minimum": 1,
              "title": "Limit",
              "type": "integer"
            }
          },
          {
            "in": "query",
            "name": "offset",
            "required": false,
            "schema": {
              "default": 0,
              "minimum": 0,
              "title": "Offset",
              "type": "integer"
            }
          },
          {
            "in": "query",
            "name": "ip",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Ip"
            }
          },
          {
            "in": "query",
            "name": "type",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Type"
            }
          },
          {
            "in": "query",
            "name": "since",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Since"
            }
          },
          {
            "in": "query",
            "name": "until",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Until"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_dict_str__Any__"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Blocked-request log",
        "tags": [
          "firewall"
        ]
      }
    },
    "/api/v1/firewall/logs/stats": {
      "get": {
        "description": "Counts over the last 24 hours (blocked, suspicious, top addresses, top endpoints), twenty-four hourly buckets (UTC, `YYYY-MM-DDTHH:00`), the threat score and the attack-mode flag. Powers the dashboard badge.",
        "operationId": "get_log_stats_api_v1_firewall_logs_stats_get",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_dict_str__Any__"
                }
              }
            },
            "description": "Successful Response"
          }
        },
        "summary": "Firewall log statistics",
        "tags": [
          "firewall"
        ]
      }
    },
    "/api/v1/firewall/logs/stream": {
      "get": {
        "description": "Server-Sent Events stream of new block events as they are written (one `data: [...]` array per poll, a heartbeat with the threat score otherwise). Binary `text/event-stream`.",
        "operationId": "stream_blocked_events_api_v1_firewall_logs_stream_get",
        "responses": {
          "200": {
            "description": "Successful Response"
          }
        },
        "summary": "SSE — live firewall log tail",
        "tags": [
          "firewall"
        ]
      }
    },
    "/api/v1/firewall/logs/suspicious": {
      "get": {
        "description": "Pre-block events flagged by heuristics (scan patterns, injection attempts, floods), grouped by address and category, newest first: `{events: SuspiciousEvent[], total}`. The same filters as the blocked log apply (`category` instead of `type`).",
        "operationId": "get_suspicious_events_api_v1_firewall_logs_suspicious_get",
        "parameters": [
          {
            "in": "query",
            "name": "limit",
            "required": false,
            "schema": {
              "default": 100,
              "maximum": 1000,
              "minimum": 1,
              "title": "Limit",
              "type": "integer"
            }
          },
          {
            "in": "query",
            "name": "offset",
            "required": false,
            "schema": {
              "default": 0,
              "minimum": 0,
              "title": "Offset",
              "type": "integer"
            }
          },
          {
            "in": "query",
            "name": "ip",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Ip"
            }
          },
          {
            "in": "query",
            "name": "category",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Category"
            }
          },
          {
            "in": "query",
            "name": "since",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Since"
            }
          },
          {
            "in": "query",
            "name": "until",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Until"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_dict_str__Any__"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Suspicious-request log",
        "tags": [
          "firewall"
        ]
      }
    },
    "/api/v1/firewall/notifications": {
      "get": {
        "description": "Sub-inbox for firewall events (attack mode triggered, high threat score); the same records the shared inbox holds under the firewall category.",
        "operationId": "get_firewall_notifications_api_v1_firewall_notifications_get",
        "parameters": [
          {
            "in": "query",
            "name": "limit",
            "required": false,
            "schema": {
              "default": 50,
              "maximum": 200,
              "minimum": 1,
              "title": "Limit",
              "type": "integer"
            }
          },
          {
            "in": "query",
            "name": "unread_only",
            "required": false,
            "schema": {
              "default": false,
              "title": "Unread Only",
              "type": "boolean"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_list_PanelNotification__"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Firewall-specific notifications",
        "tags": [
          "firewall"
        ]
      }
    },
    "/api/v1/firewall/notifications/read-all": {
      "post": {
        "description": "Bulk operation across the admin-scope inbox.",
        "operationId": "mark_all_notifications_read_api_v1_firewall_notifications_read_all_post",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MessageResponse"
                }
              }
            },
            "description": "Successful Response"
          }
        },
        "summary": "Mark all firewall notifications as read",
        "tags": [
          "firewall"
        ]
      }
    },
    "/api/v1/firewall/notifications/{notif_id}/read": {
      "post": {
        "description": "Flip the read flag for one firewall-scope notification.",
        "operationId": "mark_notification_read_api_v1_firewall_notifications__notif_id__read_post",
        "parameters": [
          {
            "in": "path",
            "name": "notif_id",
            "required": true,
            "schema": {
              "title": "Notif Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MessageResponse"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Mark firewall notification as read",
        "tags": [
          "firewall"
        ]
      }
    },
    "/api/v1/firewall/rate-limits": {
      "get": {
        "description": "Port-based rate-limit rules (`{id, name, port, protocol, threshold, window_seconds, ban_duration, enabled, created_at}`); each enabled rule is a hashlimit rule plus a ban set in the packet filter. An unreadable rule store answers 500 SERVICE_ERROR rather than an empty list.",
        "operationId": "list_rate_limits_api_v1_firewall_rate_limits_get",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_list_RateLimitRuleResponse__"
                }
              }
            },
            "description": "Successful Response"
          }
        },
        "summary": "List rate-limit rules",
        "tags": [
          "firewall"
        ]
      },
      "post": {
        "description": "Define a new rate-limit rule (port / port list / range or any, protocol, max new connections per source address per window, ban duration). The rules run in their own chain ahead of the host firewall; loopback traffic and whitelisted addresses are never counted or banned. The rule is stored only after the packet filter accepted it; a refused rule answers 500 RATE_LIMIT_APPLY_FAILED.",
        "operationId": "create_rate_limit_api_v1_firewall_rate_limits_post",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/RateLimitRuleCreate"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_RateLimitRuleResponse_"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Create rate-limit rule",
        "tags": [
          "firewall"
        ]
      }
    },
    "/api/v1/firewall/rate-limits/banned": {
      "get": {
        "description": "Aggregated active bans across every rate-limit rule. Each entry is `{ip, rule_id, rule_name}`.",
        "operationId": "list_rate_limit_banned_api_v1_firewall_rate_limits_banned_get",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_list_dict_str__Any___"
                }
              }
            },
            "description": "Successful Response"
          }
        },
        "summary": "List IPs currently banned by rate-limit rules",
        "tags": [
          "firewall"
        ]
      }
    },
    "/api/v1/firewall/rate-limits/banned/{ip}": {
      "delete": {
        "description": "Lifts the IP's rate-limit ban on every rule; the message says how many ban sets carried it. A malformed address answers 422.",
        "operationId": "unban_rate_limited_ip_api_v1_firewall_rate_limits_banned__ip__delete",
        "parameters": [
          {
            "in": "path",
            "name": "ip",
            "required": true,
            "schema": {
              "title": "Ip",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MessageResponse"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Unban IP across every rate-limit rule",
        "tags": [
          "firewall"
        ]
      }
    },
    "/api/v1/firewall/rate-limits/{rule_id}": {
      "delete": {
        "description": "Removes the rule + every active ban it produced. An unknown rule answers 404 NOT_FOUND.",
        "operationId": "delete_rate_limit_api_v1_firewall_rate_limits__rule_id__delete",
        "parameters": [
          {
            "in": "path",
            "name": "rule_id",
            "required": true,
            "schema": {
              "title": "Rule Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MessageResponse"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Delete rate-limit rule",
        "tags": [
          "firewall"
        ]
      },
      "put": {
        "description": "Patch name, port, protocol, threshold, window, ban duration or enabled. The kernel objects are rebuilt; when the new shape is refused the old one is put back. An unknown rule answers 404 NOT_FOUND.",
        "operationId": "update_rate_limit_api_v1_firewall_rate_limits__rule_id__put",
        "parameters": [
          {
            "in": "path",
            "name": "rule_id",
            "required": true,
            "schema": {
              "title": "Rule Id",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/RateLimitRuleUpdate"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_RateLimitRuleResponse_"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Update rate-limit rule",
        "tags": [
          "firewall"
        ]
      }
    },
    "/api/v1/firewall/rate-limits/{rule_id}/unban/{ip}": {
      "post": {
        "description": "Targeted unban — only the named rule is affected, other rules' bans remain. An unknown rule answers 404 NOT_FOUND.",
        "operationId": "unban_from_rate_limit_rule_api_v1_firewall_rate_limits__rule_id__unban__ip__post",
        "parameters": [
          {
            "in": "path",
            "name": "rule_id",
            "required": true,
            "schema": {
              "title": "Rule Id",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "ip",
            "required": true,
            "schema": {
              "title": "Ip",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MessageResponse"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Unban IP from one rate-limit rule",
        "tags": [
          "firewall"
        ]
      }
    },
    "/api/v1/firewall/rules": {
      "get": {
        "description": "Every port rule the backend carries — global and source-scoped — with id (`{port}-{protocol}` or `{port}-{protocol}--{source_ip}`), action (allow/deny/limit/reject), port, protocol (`any` when the rule names none), source_ip and comment. Plain source allows (the whitelist) and plain source denies (the blocked list) are not port rules.",
        "operationId": "list_rules_api_v1_firewall_rules_get",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_list_FirewallRuleResponse__"
                }
              }
            },
            "description": "Successful Response"
          }
        },
        "summary": "List firewall rules",
        "tags": [
          "firewall"
        ]
      },
      "post": {
        "description": "Add a new allow/deny rule. Triggers immediate `ufw reload` / `firewall-cmd --reload`.",
        "operationId": "add_rule_api_v1_firewall_rules_post",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/FirewallRuleCreate"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_FirewallRuleResponse_"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Create firewall rule",
        "tags": [
          "firewall"
        ]
      }
    },
    "/api/v1/firewall/rules/{rule_id}": {
      "delete": {
        "description": "Remove the rule and reload the firewall. A rule that does not exist answers 404 NOT_FOUND.",
        "operationId": "delete_rule_api_v1_firewall_rules__rule_id__delete",
        "parameters": [
          {
            "in": "path",
            "name": "rule_id",
            "required": true,
            "schema": {
              "title": "Rule Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MessageResponse"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Delete firewall rule",
        "tags": [
          "firewall"
        ]
      },
      "put": {
        "description": "Replace an existing rule's action / source / port. A rule id that does not exist answers 404 NOT_FOUND; when the new rule is refused the old one is put back.",
        "operationId": "update_rule_api_v1_firewall_rules__rule_id__put",
        "parameters": [
          {
            "in": "path",
            "name": "rule_id",
            "required": true,
            "schema": {
              "title": "Rule Id",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/FirewallRuleCreate"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_FirewallRuleResponse_"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Update firewall rule",
        "tags": [
          "firewall"
        ]
      }
    },
    "/api/v1/firewall/status": {
      "get": {
        "description": "Host firewall state: backend (UFW or firewalld), enabled flag, the number of port rules and of blocked addresses (plain source denies).",
        "operationId": "get_status_api_v1_firewall_status_get",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_FirewallStatusResponse_"
                }
              }
            },
            "description": "Successful Response"
          }
        },
        "summary": "UFW / firewalld status",
        "tags": [
          "firewall"
        ]
      }
    },
    "/api/v1/firewall/whitelist": {
      "get": {
        "description": "Addresses let through on every port and exempt from auto-bans. Response data: a list of `{ip, comment, applied}` — `applied` says whether the packet filter carries the allow rule right now.",
        "operationId": "list_whitelist_api_v1_firewall_whitelist_get",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_list_WhitelistEntryResponse__"
                }
              }
            },
            "description": "Successful Response"
          }
        },
        "summary": "Firewall whitelist",
        "tags": [
          "firewall"
        ]
      },
      "post": {
        "description": "Idempotent — an entry already present keeps its record, and its allow rule is re-installed when the firewall lost it.",
        "operationId": "add_whitelist_api_v1_firewall_whitelist_post",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/BlockedIPCreate"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_dict_str__Any__"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Add IP to firewall whitelist",
        "tags": [
          "firewall"
        ]
      }
    },
    "/api/v1/firewall/whitelist/{ip}": {
      "delete": {
        "description": "The IP returns to normal firewall enforcement.",
        "operationId": "remove_whitelist_api_v1_firewall_whitelist__ip__delete",
        "parameters": [
          {
            "in": "path",
            "name": "ip",
            "required": true,
            "schema": {
              "title": "Ip",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MessageResponse"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Remove IP from whitelist",
        "tags": [
          "firewall"
        ]
      }
    },
    "/api/v1/ftp": {
      "get": {
        "description": "Server-wide listing including rows whose owning hosting account no longer exists (`is_orphan=true`). Used by the orphan-cleanup operator tool.",
        "operationId": "list_all_ftp_accounts_api_v1_ftp_get",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_list_FTPAccountResponse__"
                }
              }
            },
            "description": "Successful Response"
          }
        },
        "summary": "List every FTP account on the server (admin)",
        "tags": [
          "ftp"
        ]
      }
    },
    "/api/v1/ftp/orphans": {
      "delete": {
        "description": "Removes every FTP row whose hosting account file is missing. Returns the list of deleted ftp usernames + count.",
        "operationId": "cleanup_orphan_ftp_accounts_api_v1_ftp_orphans_delete",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_FTPOrphanCleanupData_"
                }
              }
            },
            "description": "Successful Response"
          }
        },
        "summary": "Bulk-cleanup orphan FTP rows",
        "tags": [
          "ftp"
        ]
      }
    },
    "/api/v1/ftp/orphans/{ftp_user}": {
      "delete": {
        "description": "Targeted cleanup of one orphan FTP entry by username.",
        "operationId": "delete_orphan_ftp_account_api_v1_ftp_orphans__ftp_user__delete",
        "parameters": [
          {
            "in": "path",
            "name": "ftp_user",
            "required": true,
            "schema": {
              "title": "Ftp User",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MessageResponse"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Delete a single orphan FTP row",
        "tags": [
          "ftp"
        ]
      }
    },
    "/api/v1/license/activate": {
      "post": {
        "description": "Activate a license key for the first time.\n\nCalls /api/v1/verify on WLicense servers with RESPONSE_SECRET signing.\nThe server locks the license to this IP/domain on first verification.\n\nRequires authentication: the license/* prefix is auth-bypassed in\nmiddleware for the lock-screen, so this state-mutating endpoint must\nself-guard. An unauthenticated caller could otherwise overwrite the\nconfigured license key and disrupt the running install.\n\nA refusal by the license service answers 400 `LICENSE_ACTIVATION_FAILED`\nwith the service's wording in `message` and, when the service gave one,\nits own code in `details.vendor_code`. `AUTH_FAILED` there means the key\nis already registered to an installation.",
        "operationId": "activate_license_api_v1_license_activate_post",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/LicenseActivateRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": true,
                  "title": "Response Activate License Api V1 License Activate Post",
                  "type": "object"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Activate License",
        "tags": [
          "license"
        ]
      }
    },
    "/api/v1/license/info": {
      "get": {
        "description": "Return detailed license information (key is masked).\n\ncustomer_name + customer_email + IP + plan + expiry to any anonymous\ninternet caller (license/* path is auth-bypassed in middleware so the\npanel can render lock-screen). Now: anonymous request returns 401.",
        "operationId": "get_license_info_api_v1_license_info_get",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "title": "Response Get License Info Api V1 License Info Get"
                }
              }
            },
            "description": "Successful Response"
          }
        },
        "summary": "Get License Info",
        "tags": [
          "license"
        ]
      }
    },
    "/api/v1/license/status": {
      "get": {
        "description": "Return the current license state.\n\nanonymous callers receive a minimal payload\n(state + product_name + license_status). Authenticated callers\n(HMAC or session) get the full operational record.\n\nAnonymous-by-design: the panel UI fetches this endpoint before login\nleaked to any unauthenticated internet client (PII / GDPR concern).",
        "operationId": "get_license_status_api_v1_license_status_get",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": true,
                  "title": "Response Get License Status Api V1 License Status Get",
                  "type": "object"
                }
              }
            },
            "description": "Successful Response"
          }
        },
        "summary": "Get License Status",
        "tags": [
          "license"
        ]
      }
    },
    "/api/v1/license/verify": {
      "post": {
        "description": "Force an immediate license re-verification with WLicense servers.\n\nThe license/* prefix is auth-bypassed in main.py for the lock-screen,\nso this endpoint must enforce its own auth check: anonymous callers\nreceive 401; authenticated callers (HMAC or session) trigger the verify.",
        "operationId": "force_verify_api_v1_license_verify_post",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "title": "Response Force Verify Api V1 License Verify Post"
                }
              }
            },
            "description": "Successful Response"
          }
        },
        "summary": "Force Verify",
        "tags": [
          "license"
        ]
      }
    },
    "/api/v1/mail-queue": {
      "delete": {
        "description": "Wipe the entire Postfix queue (postsuper -d ALL). Requires the `confirm=ALL` query parameter as an explicit safeguard.",
        "operationId": "delete_all_queue_messages_api_v1_mail_queue_delete",
        "parameters": [
          {
            "description": "Must be 'ALL' to confirm the server-wide queue wipe.",
            "in": "query",
            "name": "confirm",
            "required": false,
            "schema": {
              "default": "",
              "description": "Must be 'ALL' to confirm the server-wide queue wipe.",
              "title": "Confirm",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MessageResponse"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Delete ALL queued messages",
        "tags": [
          "mail-queue"
        ]
      },
      "get": {
        "description": "Return every message currently in the Postfix queue (active/deferred/hold) with sender, recipients and size.",
        "operationId": "list_mail_queue_api_v1_mail_queue_get",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_list_QueueEntry__"
                }
              }
            },
            "description": "Successful Response"
          }
        },
        "summary": "List the Postfix mail queue",
        "tags": [
          "mail-queue"
        ]
      }
    },
    "/api/v1/mail-queue/flush": {
      "post": {
        "description": "Trigger an immediate delivery retry of every queued message (postqueue -f).",
        "operationId": "flush_mail_queue_api_v1_mail_queue_flush_post",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MessageResponse"
                }
              }
            },
            "description": "Successful Response"
          }
        },
        "summary": "Flush the mail queue",
        "tags": [
          "mail-queue"
        ]
      }
    },
    "/api/v1/mail-queue/summary": {
      "get": {
        "description": "Return an aggregate count of queued messages by status plus total size.",
        "operationId": "mail_queue_summary_api_v1_mail_queue_summary_get",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_QueueSummary_"
                }
              }
            },
            "description": "Successful Response"
          }
        },
        "summary": "Mail queue summary",
        "tags": [
          "mail-queue"
        ]
      }
    },
    "/api/v1/mail-queue/{queue_id}": {
      "delete": {
        "description": "Remove a single message from the Postfix queue (postsuper -d). The queue id must match `^[A-Fa-f0-9]{8,12}$`; an id that is not in the queue answers 404 `MAIL_QUEUE_MESSAGE_NOT_FOUND`.",
        "operationId": "delete_queue_message_api_v1_mail_queue__queue_id__delete",
        "parameters": [
          {
            "in": "path",
            "name": "queue_id",
            "required": true,
            "schema": {
              "title": "Queue Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MessageResponse"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Delete a queued message",
        "tags": [
          "mail-queue"
        ]
      }
    },
    "/api/v1/mail-queue/{queue_id}/hold": {
      "post": {
        "description": "Move a message to the hold queue so Postfix stops attempting delivery (postsuper -h).",
        "operationId": "hold_queue_message_api_v1_mail_queue__queue_id__hold_post",
        "parameters": [
          {
            "in": "path",
            "name": "queue_id",
            "required": true,
            "schema": {
              "title": "Queue Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MessageResponse"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Hold a queued message",
        "tags": [
          "mail-queue"
        ]
      }
    },
    "/api/v1/mail-queue/{queue_id}/release": {
      "post": {
        "description": "Return a held message to the deferred queue so Postfix resumes delivery attempts (postsuper -H).",
        "operationId": "release_queue_message_api_v1_mail_queue__queue_id__release_post",
        "parameters": [
          {
            "in": "path",
            "name": "queue_id",
            "required": true,
            "schema": {
              "title": "Queue Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MessageResponse"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Release a held message",
        "tags": [
          "mail-queue"
        ]
      }
    },
    "/api/v1/mail-sent": {
      "get": {
        "description": "Parse the Postfix mail log and return per-message delivery records, with optional sender/recipient/status/domain filters.",
        "operationId": "list_sent_summary_api_v1_mail_sent_get",
        "parameters": [
          {
            "in": "query",
            "name": "lines",
            "required": false,
            "schema": {
              "default": 5000,
              "maximum": 50000,
              "minimum": 100,
              "title": "Lines",
              "type": "integer"
            }
          },
          {
            "in": "query",
            "name": "sender",
            "required": false,
            "schema": {
              "default": "",
              "title": "Sender",
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "recipient",
            "required": false,
            "schema": {
              "default": "",
              "title": "Recipient",
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "status",
            "required": false,
            "schema": {
              "default": "",
              "title": "Status",
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "domain",
            "required": false,
            "schema": {
              "default": "",
              "title": "Domain",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_list_SentRecord__"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "List sent-mail delivery records",
        "tags": [
          "mail-sent"
        ]
      }
    },
    "/api/v1/mail-sent/domain-summary": {
      "get": {
        "description": "Aggregate delivery records by sender domain and user (cPanel-style mail report).",
        "operationId": "domain_summary_api_v1_mail_sent_domain_summary_get",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_list_DomainSummary__"
                }
              }
            },
            "description": "Successful Response"
          }
        },
        "summary": "Per-domain sent-mail summary",
        "tags": [
          "mail-sent"
        ]
      }
    },
    "/api/v1/mail-sent/stats": {
      "get": {
        "description": "Return aggregate delivery counters (sent/deferred/bounced/rejected, unique senders/recipients, total size) from the mail log.",
        "operationId": "sent_stats_api_v1_mail_sent_stats_get",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_SentStats_"
                }
              }
            },
            "description": "Successful Response"
          }
        },
        "summary": "Sent-mail aggregate statistics",
        "tags": [
          "mail-sent"
        ]
      }
    },
    "/api/v1/migration/cancel/{job_id}": {
      "post": {
        "description": "Cancel a running migration job.",
        "operationId": "cancel_job_api_v1_migration_cancel__job_id__post",
        "parameters": [
          {
            "in": "path",
            "name": "job_id",
            "required": true,
            "schema": {
              "title": "Job Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_MigrationJobResponse_"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Cancel migration",
        "tags": [
          "migration"
        ]
      }
    },
    "/api/v1/migration/history": {
      "get": {
        "description": "List all migration jobs as history entries.",
        "operationId": "list_history_api_v1_migration_history_get",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_list_MigrationHistoryEntry__"
                }
              }
            },
            "description": "Successful Response"
          }
        },
        "summary": "Migration history",
        "tags": [
          "migration"
        ]
      }
    },
    "/api/v1/migration/history/{job_id}": {
      "get": {
        "description": "Get a specific migration job detail from history.",
        "operationId": "get_history_detail_api_v1_migration_history__job_id__get",
        "parameters": [
          {
            "in": "path",
            "name": "job_id",
            "required": true,
            "schema": {
              "title": "Job Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_MigrationJobResponse_"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Migration history detail",
        "tags": [
          "migration"
        ]
      }
    },
    "/api/v1/migration/retry/{job_id}": {
      "post": {
        "description": "Retry a failed migration job.",
        "operationId": "retry_job_api_v1_migration_retry__job_id__post",
        "parameters": [
          {
            "in": "path",
            "name": "job_id",
            "required": true,
            "schema": {
              "title": "Job Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_MigrationJobResponse_"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Retry migration",
        "tags": [
          "migration"
        ]
      }
    },
    "/api/v1/migration/scan": {
      "post": {
        "description": "Connect via SSH, detect panel type (cPanel/DirectAdmin/Plesk), and enumerate transferable resources.",
        "operationId": "connect_and_scan_api_v1_migration_scan_post",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/MigrationScanRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_MigrationJobResponse_"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Scan source server",
        "tags": [
          "migration"
        ]
      }
    },
    "/api/v1/migration/scan/{job_id}": {
      "get": {
        "description": "Poll the scan status for a migration job.",
        "operationId": "poll_scan_api_v1_migration_scan__job_id__get",
        "parameters": [
          {
            "in": "path",
            "name": "job_id",
            "required": true,
            "schema": {
              "title": "Job Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_MigrationScanResult_"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Poll scan",
        "tags": [
          "migration"
        ]
      }
    },
    "/api/v1/migration/start": {
      "post": {
        "description": "Begin transferring selected accounts from the source server.",
        "operationId": "start_migration_api_v1_migration_start_post",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/MigrationStartRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_MigrationJobResponse_"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Start migration",
        "tags": [
          "migration"
        ]
      }
    },
    "/api/v1/migration/status/{job_id}": {
      "get": {
        "description": "Snapshot of a migration job's progress.",
        "operationId": "get_status_api_v1_migration_status__job_id__get",
        "parameters": [
          {
            "in": "path",
            "name": "job_id",
            "required": true,
            "schema": {
              "title": "Job Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_MigrationJobResponse_"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Migration status",
        "tags": [
          "migration"
        ]
      }
    },
    "/api/v1/migration/status/{job_id}/stream": {
      "get": {
        "description": "SSE stream of migration progress for real-time updates.",
        "operationId": "stream_status_api_v1_migration_status__job_id__stream_get",
        "parameters": [
          {
            "in": "path",
            "name": "job_id",
            "required": true,
            "schema": {
              "title": "Job Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {}
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Stream Status",
        "tags": [
          "migration"
        ]
      }
    },
    "/api/v1/migration/upload": {
      "post": {
        "description": "Not available: restoring from an uploaded backup file is not offered. The call always answers `409 MIGRATION_UPLOAD_RESTORE_UNAVAILABLE` and keeps nothing; migrate accounts over SSH with `POST /migration/scan` and `POST /migration/start`.",
        "operationId": "upload_backup_api_v1_migration_upload_post",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_dict_str__Any__"
                }
              }
            },
            "description": "Successful Response"
          }
        },
        "summary": "Upload backup archive (not available)",
        "tags": [
          "migration"
        ]
      }
    },
    "/api/v1/migration/upload/restore": {
      "post": {
        "description": "Not available: restoring from an uploaded backup file is not offered. The call always answers `409 MIGRATION_UPLOAD_RESTORE_UNAVAILABLE` and keeps nothing; migrate accounts over SSH with `POST /migration/scan` and `POST /migration/start`.",
        "operationId": "restore_uploaded_backup_api_v1_migration_upload_restore_post",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_dict_str__Any__"
                }
              }
            },
            "description": "Successful Response"
          }
        },
        "summary": "Restore uploaded backup (not available)",
        "tags": [
          "migration"
        ]
      }
    },
    "/api/v1/plans": {
      "get": {
        "description": "Returns every plan defined on the server. Pass `owner=<username>` to filter to reseller-owned plans.",
        "operationId": "list_plans_api_v1_plans_get",
        "parameters": [
          {
            "description": "Filter by owner username (reseller plans)",
            "in": "query",
            "name": "owner",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Filter by owner username (reseller plans)",
              "title": "Owner"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_list_PlanResponse__"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "List hosting plans",
        "tags": [
          "plans"
        ]
      },
      "post": {
        "description": "Define a new plan template with package limits, resource caps and (optionally) reseller ownership.",
        "operationId": "create_plan_api_v1_plans_post",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PlanCreate"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_PlanResponse_"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Create hosting plan",
        "tags": [
          "plans"
        ]
      }
    },
    "/api/v1/plans/{plan_id}": {
      "delete": {
        "description": "Remove a plan template. Refuses to delete plans currently assigned to active accounts.",
        "operationId": "delete_plan_api_v1_plans__plan_id__delete",
        "parameters": [
          {
            "in": "path",
            "name": "plan_id",
            "required": true,
            "schema": {
              "title": "Plan Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MessageResponse"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Delete hosting plan",
        "tags": [
          "plans"
        ]
      },
      "get": {
        "description": "Fetch a plan's full record by id.",
        "operationId": "get_plan_api_v1_plans__plan_id__get",
        "parameters": [
          {
            "in": "path",
            "name": "plan_id",
            "required": true,
            "schema": {
              "title": "Plan Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_PlanResponse_"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Get hosting plan",
        "tags": [
          "plans"
        ]
      },
      "put": {
        "description": "Patch a plan's metadata, package limits or resource caps. Existing accounts on the plan are not retro-updated.",
        "operationId": "update_plan_api_v1_plans__plan_id__put",
        "parameters": [
          {
            "in": "path",
            "name": "plan_id",
            "required": true,
            "schema": {
              "title": "Plan Id",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PlanUpdate"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_PlanResponse_"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Update hosting plan",
        "tags": [
          "plans"
        ]
      }
    },
    "/api/v1/plugins": {
      "get": {
        "description": "List all available plugins with their current status.",
        "operationId": "list_plugins_api_v1_plugins_get",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_list_dict_str__Any___"
                }
              }
            },
            "description": "Successful Response"
          }
        },
        "summary": "List plugins",
        "tags": [
          "plugins"
        ]
      }
    },
    "/api/v1/plugins/sidebar-entries": {
      "get": {
        "description": "Return sidebar entries declared by active plugins, scoped to the caller's role.",
        "operationId": "list_sidebar_entries_api_v1_plugins_sidebar_entries_get",
        "parameters": [
          {
            "in": "query",
            "name": "audience",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "pattern": "^(admin|client)$",
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Audience"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_list_dict_str__Any___"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Plugin sidebar entries",
        "tags": [
          "plugins"
        ]
      }
    },
    "/api/v1/plugins/tasks": {
      "get": {
        "description": "Return snapshots of every plugin task still running (resume support for the UI).",
        "operationId": "list_active_plugin_tasks_api_v1_plugins_tasks_get",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_list_dict_str__Any___"
                }
              }
            },
            "description": "Successful Response"
          }
        },
        "summary": "Active plugin tasks",
        "tags": [
          "plugins"
        ]
      }
    },
    "/api/v1/plugins/tasks/{task_id}": {
      "get": {
        "description": "Polling fallback — returns a full snapshot of a plugin task.",
        "operationId": "get_plugin_task_api_v1_plugins_tasks__task_id__get",
        "parameters": [
          {
            "in": "path",
            "name": "task_id",
            "required": true,
            "schema": {
              "pattern": "^[a-f0-9]{8,64}$",
              "title": "Task Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_dict_str__Any__"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Plugin task snapshot",
        "tags": [
          "plugins"
        ]
      }
    },
    "/api/v1/plugins/tasks/{task_id}/events": {
      "get": {
        "description": "Server-Sent Events stream for a plugin task.\n\nauthenticated session can't saturate the agent's thread pool by\nrapidly reopening EventSource subscriptions. The actual stream is\nheld open for the task's lifetime and the client reads events as\nthey occur.",
        "operationId": "stream_plugin_task_events_api_v1_plugins_tasks__task_id__events_get",
        "parameters": [
          {
            "in": "path",
            "name": "task_id",
            "required": true,
            "schema": {
              "pattern": "^[a-f0-9]{8,64}$",
              "title": "Task Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {}
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Stream Plugin Task Events",
        "tags": [
          "plugins"
        ]
      }
    },
    "/api/v1/plugins/{plugin_id}": {
      "get": {
        "description": "Get details of a specific plugin.",
        "operationId": "get_plugin_api_v1_plugins__plugin_id__get",
        "parameters": [
          {
            "in": "path",
            "name": "plugin_id",
            "required": true,
            "schema": {
              "pattern": "^[a-z][a-z0-9_-]{1,30}$",
              "title": "Plugin Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_dict_str__Any__"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Get plugin",
        "tags": [
          "plugins"
        ]
      }
    },
    "/api/v1/plugins/{plugin_id}/activate": {
      "post": {
        "description": "Activate a plugin with trial or license mode; blocks for the full install duration.",
        "operationId": "activate_plugin_api_v1_plugins__plugin_id__activate_post",
        "parameters": [
          {
            "in": "path",
            "name": "plugin_id",
            "required": true,
            "schema": {
              "pattern": "^[a-z][a-z0-9_-]{1,30}$",
              "title": "Plugin Id",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ActivateRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_dict_str__Any__"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Activate plugin (blocking)",
        "tags": [
          "plugins"
        ]
      }
    },
    "/api/v1/plugins/{plugin_id}/activate/async": {
      "post": {
        "description": "Kick off plugin activation in the background; returns a task_id for SSE subscription.",
        "operationId": "activate_plugin_async_api_v1_plugins__plugin_id__activate_async_post",
        "parameters": [
          {
            "in": "path",
            "name": "plugin_id",
            "required": true,
            "schema": {
              "pattern": "^[a-z][a-z0-9_-]{1,30}$",
              "title": "Plugin Id",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ActivateRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_dict_str__Any__"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Activate plugin (async)",
        "tags": [
          "plugins"
        ]
      }
    },
    "/api/v1/plugins/{plugin_id}/deactivate": {
      "post": {
        "description": "Deactivate a plugin and revert to default state.",
        "operationId": "deactivate_plugin_api_v1_plugins__plugin_id__deactivate_post",
        "parameters": [
          {
            "in": "path",
            "name": "plugin_id",
            "required": true,
            "schema": {
              "pattern": "^[a-z][a-z0-9_-]{1,30}$",
              "title": "Plugin Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_dict_str__Any__"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Deactivate plugin",
        "tags": [
          "plugins"
        ]
      }
    },
    "/api/v1/plugins/{plugin_id}/reset-state": {
      "post": {
        "description": "Force-reset a plugin's state record to idle (use when an interrupted pipeline left a stuck marker).",
        "operationId": "reset_plugin_state_api_v1_plugins__plugin_id__reset_state_post",
        "parameters": [
          {
            "in": "path",
            "name": "plugin_id",
            "required": true,
            "schema": {
              "pattern": "^[a-z][a-z0-9_-]{1,30}$",
              "title": "Plugin Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_dict_str__Any__"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Reset plugin state",
        "tags": [
          "plugins"
        ]
      }
    },
    "/api/v1/plugins/{plugin_id}/update": {
      "post": {
        "description": "Update an active plugin to the latest version.",
        "operationId": "update_plugin_api_v1_plugins__plugin_id__update_post",
        "parameters": [
          {
            "in": "path",
            "name": "plugin_id",
            "required": true,
            "schema": {
              "pattern": "^[a-z][a-z0-9_-]{1,30}$",
              "title": "Plugin Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_dict_str__Any__"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Update plugin",
        "tags": [
          "plugins"
        ]
      }
    },
    "/api/v1/resellers/acl-plans": {
      "get": {
        "operationId": "list_acl_plans_api_v1_resellers_acl_plans_get",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": true,
                  "title": "Response List Acl Plans Api V1 Resellers Acl Plans Get",
                  "type": "object"
                }
              }
            },
            "description": "Successful Response"
          }
        },
        "summary": "List Acl Plans",
        "tags": [
          "reseller-acl"
        ]
      },
      "post": {
        "operationId": "create_acl_plan_api_v1_resellers_acl_plans_post",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ResellerACLCreate"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": true,
                  "title": "Response Create Acl Plan Api V1 Resellers Acl Plans Post",
                  "type": "object"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Create Acl Plan",
        "tags": [
          "reseller-acl"
        ]
      }
    },
    "/api/v1/resellers/acl-plans/{acl_id}": {
      "delete": {
        "operationId": "delete_acl_plan_api_v1_resellers_acl_plans__acl_id__delete",
        "parameters": [
          {
            "in": "path",
            "name": "acl_id",
            "required": true,
            "schema": {
              "title": "Acl Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": true,
                  "title": "Response Delete Acl Plan Api V1 Resellers Acl Plans  Acl Id  Delete",
                  "type": "object"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Delete Acl Plan",
        "tags": [
          "reseller-acl"
        ]
      },
      "get": {
        "operationId": "get_acl_plan_api_v1_resellers_acl_plans__acl_id__get",
        "parameters": [
          {
            "in": "path",
            "name": "acl_id",
            "required": true,
            "schema": {
              "title": "Acl Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": true,
                  "title": "Response Get Acl Plan Api V1 Resellers Acl Plans  Acl Id  Get",
                  "type": "object"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Get Acl Plan",
        "tags": [
          "reseller-acl"
        ]
      },
      "put": {
        "description": "Name, description and permissions are each optional. `permissions`, when sent, replaces the plan's whole permission set: a key left out takes its default value, not the stored one — read the plan first and send its set back with the change. An update that changes nothing writes no audit row.",
        "operationId": "update_acl_plan_api_v1_resellers_acl_plans__acl_id__put",
        "parameters": [
          {
            "in": "path",
            "name": "acl_id",
            "required": true,
            "schema": {
              "title": "Acl Id",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ResellerACLUpdate"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": true,
                  "title": "Response Update Acl Plan Api V1 Resellers Acl Plans  Acl Id  Put",
                  "type": "object"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Update Acl Plan",
        "tags": [
          "reseller-acl"
        ]
      }
    },
    "/api/v1/spam/blacklist": {
      "delete": {
        "description": "Pass the entry as `?entry=value` query param. Idempotent.",
        "operationId": "remove_blacklist_api_v1_spam_blacklist_delete",
        "parameters": [
          {
            "in": "query",
            "name": "entry",
            "required": false,
            "schema": {
              "default": "",
              "title": "Entry",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_dict_str__Any__"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Remove from spam blacklist",
        "tags": [
          "spam"
        ]
      },
      "get": {
        "description": "Domains / emails / IPs always rejected. Response data: `{entries: [...]}`.",
        "operationId": "get_blacklist_api_v1_spam_blacklist_get",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_dict_str__Any__"
                }
              }
            },
            "description": "Successful Response"
          }
        },
        "summary": "Get global spam blacklist",
        "tags": [
          "spam"
        ]
      },
      "post": {
        "description": "Idempotent — already-present entries return success with the original list.",
        "operationId": "add_blacklist_api_v1_spam_blacklist_post",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SpamListEntry"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_dict_str__Any__"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Add to spam blacklist",
        "tags": [
          "spam"
        ]
      }
    },
    "/api/v1/spam/config": {
      "get": {
        "description": "Reject / add-header / greylist score thresholds, learning toggles.",
        "operationId": "get_config_api_v1_spam_config_get",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_dict_str__Any__"
                }
              }
            },
            "description": "Successful Response"
          }
        },
        "summary": "Get Rspamd global config",
        "tags": [
          "spam"
        ]
      },
      "put": {
        "description": "Patch score thresholds / learning flags. Reloads Rspamd.",
        "operationId": "update_config_api_v1_spam_config_put",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SpamConfigUpdate"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_dict_str__Any__"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Update Rspamd global config",
        "tags": [
          "spam"
        ]
      }
    },
    "/api/v1/spam/status": {
      "get": {
        "description": "Reports whether Rspamd is installed + running + version.",
        "operationId": "spam_status_api_v1_spam_status_get",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_dict_str__Any__"
                }
              }
            },
            "description": "Successful Response"
          }
        },
        "summary": "Rspamd service status",
        "tags": [
          "spam"
        ]
      }
    },
    "/api/v1/spam/webui": {
      "get": {
        "description": "Returns the local controller URL + a has_password flag (not the password itself) for the loopback-only Rspamd controller (admin-only).",
        "operationId": "get_web_ui_info_api_v1_spam_webui_get",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_dict_str__Any__"
                }
              }
            },
            "description": "Successful Response"
          }
        },
        "summary": "Rspamd web UI proxy info",
        "tags": [
          "spam"
        ]
      }
    },
    "/api/v1/spam/whitelist": {
      "delete": {
        "description": "Pass the entry as `?entry=value` query param. Idempotent.",
        "operationId": "remove_whitelist_api_v1_spam_whitelist_delete",
        "parameters": [
          {
            "in": "query",
            "name": "entry",
            "required": false,
            "schema": {
              "default": "",
              "title": "Entry",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_dict_str__Any__"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Remove from spam whitelist",
        "tags": [
          "spam"
        ]
      },
      "get": {
        "description": "Domains / emails / IPs always passed through without scoring. Response data: `{entries: [...]}`.",
        "operationId": "get_whitelist_api_v1_spam_whitelist_get",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_dict_str__Any__"
                }
              }
            },
            "description": "Successful Response"
          }
        },
        "summary": "Get global spam whitelist",
        "tags": [
          "spam"
        ]
      },
      "post": {
        "description": "Idempotent — already-present entries return success with the original list.",
        "operationId": "add_whitelist_api_v1_spam_whitelist_post",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SpamListEntry"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_dict_str__Any__"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Add to spam whitelist",
        "tags": [
          "spam"
        ]
      }
    },
    "/api/v1/ssl/bulk-letsencrypt": {
      "post": {
        "description": "Request certificates for up to 20 (username, domain) pairs in one call. Per-entry ownership is verified before certbot is invoked. Aborts gracefully if the API client disconnects.",
        "operationId": "bulk_letsencrypt_api_v1_ssl_bulk_letsencrypt_post",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/BulkSSLRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_BulkSSLData_"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Bulk Let's Encrypt issuance",
        "tags": [
          "ssl"
        ]
      }
    },
    "/api/v1/system/apache-status": {
      "get": {
        "description": "Returns the parsed `/server-status?auto` output (workers, requests/sec, ScoreBoard). Only when Apache is running.",
        "operationId": "apache_status_api_v1_system_apache_status_get",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_dict_str__Any__"
                }
              }
            },
            "description": "Successful Response"
          }
        },
        "summary": "Apache mod_status snapshot",
        "tags": [
          "system"
        ]
      }
    },
    "/api/v1/system/apache-status/enable": {
      "post": {
        "description": "Provisions the `mod_status` module + the `/server-status` endpoint scoped to localhost.",
        "operationId": "apache_status_enable_api_v1_system_apache_status_enable_post",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MessageResponse"
                }
              }
            },
            "description": "Successful Response"
          }
        },
        "summary": "Enable Apache mod_status",
        "tags": [
          "system"
        ]
      }
    },
    "/api/v1/system/api-keys": {
      "get": {
        "description": "Returns every API key (without secrets — secrets are shown only at create time).",
        "operationId": "list_keys_api_v1_system_api_keys_get",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_list_ApiKeyPublic__"
                }
              }
            },
            "description": "Successful Response"
          }
        },
        "summary": "List API keys",
        "tags": [
          "api-keys"
        ]
      },
      "post": {
        "description": "Mint a new HMAC API key pair. **The secret is returned only once** — subsequent reads only expose the key id + name + scopes.",
        "operationId": "create_key_api_v1_system_api_keys_post",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ApiKeyCreate"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_ApiKeyCreateResponse_"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Create API key",
        "tags": [
          "api-keys"
        ]
      }
    },
    "/api/v1/system/api-keys/logs": {
      "get": {
        "description": "Paginated history of every HMAC request — useful for debugging integration failures and reviewing key usage.",
        "operationId": "get_access_logs_api_v1_system_api_keys_logs_get",
        "parameters": [
          {
            "in": "query",
            "name": "page",
            "required": false,
            "schema": {
              "default": 1,
              "minimum": 1,
              "title": "Page",
              "type": "integer"
            }
          },
          {
            "in": "query",
            "name": "limit",
            "required": false,
            "schema": {
              "default": 20,
              "maximum": 100,
              "minimum": 1,
              "title": "Limit",
              "type": "integer"
            }
          },
          {
            "in": "query",
            "name": "search",
            "required": false,
            "schema": {
              "default": "",
              "title": "Search",
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "status",
            "required": false,
            "schema": {
              "default": "",
              "title": "Status",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_PaginatedApiAccessLogsData_"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "API access logs",
        "tags": [
          "api-keys"
        ]
      }
    },
    "/api/v1/system/api-keys/{key_id}": {
      "delete": {
        "description": "Hard-delete the key. Audit log entry is kept.",
        "operationId": "delete_key_api_v1_system_api_keys__key_id__delete",
        "parameters": [
          {
            "in": "path",
            "name": "key_id",
            "required": true,
            "schema": {
              "title": "Key Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MessageResponse"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Permanently delete API key",
        "tags": [
          "api-keys"
        ]
      },
      "put": {
        "description": "Change name, allowed-IP whitelist or scope set. The secret cannot be rotated — revoke + re-create instead.",
        "operationId": "update_key_api_v1_system_api_keys__key_id__put",
        "parameters": [
          {
            "in": "path",
            "name": "key_id",
            "required": true,
            "schema": {
              "title": "Key Id",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ApiKeyUpdate"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_ApiKeyPublic_"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Update API key metadata",
        "tags": [
          "api-keys"
        ]
      }
    },
    "/api/v1/system/api-keys/{key_id}/revoke": {
      "post": {
        "description": "Mark the key as revoked — subsequent HMAC requests with this key are rejected with 401.",
        "operationId": "revoke_key_api_v1_system_api_keys__key_id__revoke_post",
        "parameters": [
          {
            "in": "path",
            "name": "key_id",
            "required": true,
            "schema": {
              "title": "Key Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_ApiKeyPublic_"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Revoke API key (soft-disable)",
        "tags": [
          "api-keys"
        ]
      }
    },
    "/api/v1/system/backups/bunny-storage/zones": {
      "post": {
        "description": "Helper for the create-destination wizard — requires an account API key in the body.",
        "operationId": "bunny_list_zones_api_v1_system_backups_bunny_storage_zones_post",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/BunnyAccountKeyRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_list_dict_str__Any___"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "List Bunny.net storage zones",
        "tags": [
          "system"
        ]
      }
    },
    "/api/v1/system/backups/google-drive/auth-url": {
      "post": {
        "description": "Step 1 of OAuth: returns the consent URL the user should open in a browser.",
        "operationId": "google_drive_auth_url_api_v1_system_backups_google_drive_auth_url_post",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/GoogleDriveAuthRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_dict_str__Any__"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Google Drive — get OAuth URL",
        "tags": [
          "system"
        ]
      }
    },
    "/api/v1/system/backups/google-drive/callback": {
      "get": {
        "description": "OAuth2 callback — renders a small HTML page that sends the code back to the opener window via postMessage.",
        "operationId": "google_drive_callback_api_v1_system_backups_google_drive_callback_get",
        "responses": {
          "200": {
            "content": {
              "text/html": {
                "schema": {
                  "type": "string"
                }
              }
            },
            "description": "Successful Response"
          }
        },
        "summary": "Google Drive Callback",
        "tags": [
          "system"
        ]
      }
    },
    "/api/v1/system/backups/google-drive/exchange": {
      "post": {
        "description": "Step 3 of OAuth: trades the authorization code for an access + refresh token pair.",
        "operationId": "google_drive_exchange_api_v1_system_backups_google_drive_exchange_post",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/GoogleDriveExchangeRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_dict_str__Any__"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Google Drive — exchange OAuth code",
        "tags": [
          "system"
        ]
      }
    },
    "/api/v1/system/backups/onedrive/auth-url": {
      "post": {
        "description": "Step 1 of OAuth for Microsoft OneDrive.",
        "operationId": "onedrive_auth_url_api_v1_system_backups_onedrive_auth_url_post",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/OneDriveAuthRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_dict_str__Any__"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "OneDrive — get OAuth URL",
        "tags": [
          "system"
        ]
      }
    },
    "/api/v1/system/backups/onedrive/callback": {
      "get": {
        "description": "OneDrive OAuth2 redirect landing page — posts message to opener.",
        "operationId": "onedrive_callback_api_v1_system_backups_onedrive_callback_get",
        "parameters": [
          {
            "in": "query",
            "name": "code",
            "required": false,
            "schema": {
              "default": "",
              "title": "Code",
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "state",
            "required": false,
            "schema": {
              "default": "",
              "title": "State",
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "error",
            "required": false,
            "schema": {
              "default": "",
              "title": "Error",
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "error_description",
            "required": false,
            "schema": {
              "default": "",
              "title": "Error Description",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "text/html": {
                "schema": {
                  "type": "string"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Onedrive Callback",
        "tags": [
          "system"
        ]
      }
    },
    "/api/v1/system/backups/onedrive/exchange": {
      "post": {
        "description": "Step 3 of OAuth for Microsoft OneDrive.",
        "operationId": "onedrive_exchange_api_v1_system_backups_onedrive_exchange_post",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/OneDriveExchangeRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_dict_str__Any__"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "OneDrive — exchange OAuth code",
        "tags": [
          "system"
        ]
      }
    },
    "/api/v1/system/backups/remote-destinations": {
      "get": {
        "description": "Server-wide destinations (FTP / SFTP / Google Drive / Bunny Storage / Yandex Disk / OneDrive) available for off-host copies; secrets are masked.",
        "operationId": "list_remote_destinations_api_v1_system_backups_remote_destinations_get",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_list_"
                }
              }
            },
            "description": "Successful Response"
          }
        },
        "summary": "List remote backup destinations",
        "tags": [
          "system"
        ]
      },
      "post": {
        "description": "Register a new cloud target. For OAuth-based providers complete `/auth-url` → `/exchange` first and pass the returned tokens here.",
        "operationId": "add_remote_destination_api_v1_system_backups_remote_destinations_post",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/RemoteDestinationCreate"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_dict_str__Any__"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Add remote backup destination",
        "tags": [
          "system"
        ]
      }
    },
    "/api/v1/system/backups/remote-destinations/test": {
      "post": {
        "description": "Validate a destination definition **before** saving — body carries the same payload as the POST create call.",
        "operationId": "test_remote_destination_before_save_api_v1_system_backups_remote_destinations_test_post",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/RemoteDestinationCreate"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_dict_str__Any__"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Test ad-hoc remote destination credentials",
        "tags": [
          "system"
        ]
      }
    },
    "/api/v1/system/backups/remote-destinations/{dest_id}": {
      "delete": {
        "description": "Removes the destination definition. Already-uploaded tarballs at the cloud target are left untouched.",
        "operationId": "remove_remote_destination_api_v1_system_backups_remote_destinations__dest_id__delete",
        "parameters": [
          {
            "in": "path",
            "name": "dest_id",
            "required": true,
            "schema": {
              "title": "Dest Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MessageResponse"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Delete remote backup destination",
        "tags": [
          "system"
        ]
      },
      "put": {
        "description": "Patch credentials / endpoint / path of an existing destination.",
        "operationId": "update_remote_destination_api_v1_system_backups_remote_destinations__dest_id__put",
        "parameters": [
          {
            "in": "path",
            "name": "dest_id",
            "required": true,
            "schema": {
              "title": "Dest Id",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/RemoteDestinationCreate"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_dict_str__Any__"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Update remote backup destination",
        "tags": [
          "system"
        ]
      }
    },
    "/api/v1/system/backups/remote-destinations/{dest_id}/test": {
      "post": {
        "description": "Live connectivity probe against a saved destination: a login and directory check for FTP/SFTP, the provider's account call for the cloud providers; nothing is uploaded. A passing test marks the destination validated.",
        "operationId": "test_remote_destination_api_v1_system_backups_remote_destinations__dest_id__test_post",
        "parameters": [
          {
            "in": "path",
            "name": "dest_id",
            "required": true,
            "schema": {
              "title": "Dest Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_dict_str__Any__"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Test stored remote destination credentials",
        "tags": [
          "system"
        ]
      }
    },
    "/api/v1/system/backups/remote-destinations/{dest_id}/toggle": {
      "patch": {
        "description": "Disable a destination without removing it. A disabled destination is refused as a copy target: a manual backup naming it is refused (409); a scheduled one keeps its local archive and records why the copy was not made.",
        "operationId": "toggle_remote_destination_api_v1_system_backups_remote_destinations__dest_id__toggle_patch",
        "parameters": [
          {
            "in": "path",
            "name": "dest_id",
            "required": true,
            "schema": {
              "title": "Dest Id",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/RemoteDestinationToggle"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_dict_str__Any__"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Toggle remote destination enabled flag",
        "tags": [
          "system"
        ]
      }
    },
    "/api/v1/system/backups/settings": {
      "get": {
        "description": "Default destination, retention, schedule defaults for new accounts.",
        "operationId": "get_backup_settings_api_v1_system_backups_settings_get",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_dict_str__Any__"
                }
              }
            },
            "description": "Successful Response"
          }
        },
        "summary": "Get server-wide backup settings",
        "tags": [
          "system"
        ]
      },
      "put": {
        "description": "Patches default destination, retention policy, schedule defaults.",
        "operationId": "update_backup_settings_api_v1_system_backups_settings_put",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/BackupSettingsUpdate"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_dict_str__Any__"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Update server-wide backup settings",
        "tags": [
          "system"
        ]
      }
    },
    "/api/v1/system/backups/yandex-disk/auth-url": {
      "post": {
        "description": "Step 1 of OAuth for Yandex.Disk.",
        "operationId": "yandex_disk_auth_url_api_v1_system_backups_yandex_disk_auth_url_post",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/YandexAuthRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_dict_str__Any__"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Yandex Disk — get OAuth URL",
        "tags": [
          "system"
        ]
      }
    },
    "/api/v1/system/backups/yandex-disk/callback": {
      "get": {
        "description": "Yandex OAuth2 callback — sends code back to opener via postMessage.",
        "operationId": "yandex_disk_callback_api_v1_system_backups_yandex_disk_callback_get",
        "responses": {
          "200": {
            "content": {
              "text/html": {
                "schema": {
                  "type": "string"
                }
              }
            },
            "description": "Successful Response"
          }
        },
        "summary": "Yandex Disk Callback",
        "tags": [
          "system"
        ]
      }
    },
    "/api/v1/system/backups/yandex-disk/exchange": {
      "post": {
        "description": "Step 3 of OAuth for Yandex.Disk.",
        "operationId": "yandex_disk_exchange_api_v1_system_backups_yandex_disk_exchange_post",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/YandexExchangeRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_dict_str__Any__"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Yandex Disk — exchange OAuth code",
        "tags": [
          "system"
        ]
      }
    },
    "/api/v1/system/hostname": {
      "put": {
        "description": "Updates `/etc/hostname`, sysctl, and re-renders the panel certificate. Reboot recommended for full effect.",
        "operationId": "update_hostname_api_v1_system_hostname_put",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/HostnameUpdate"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_dict_str__Any__"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Change server hostname",
        "tags": [
          "system"
        ]
      }
    },
    "/api/v1/system/info": {
      "get": {
        "description": "OS, kernel, hostname, IP, uptime, CPU/RAM/disk/bandwidth, top processes, webserver, PHP default.",
        "operationId": "system_info_api_v1_system_info_get",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_dict_str__Any__"
                }
              }
            },
            "description": "Successful Response"
          }
        },
        "summary": "Server info snapshot",
        "tags": [
          "system"
        ]
      }
    },
    "/api/v1/system/ips": {
      "get": {
        "description": "Returns every IPv4 address bound on the host (IPv6 is not managed here), merged with the stored classification; a stored record the kernel no longer carries is listed with `bound: false`. Response data shape: `{ips: SystemIPResponse[], total: int}`.",
        "operationId": "list_system_ips_api_v1_system_ips_get",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_dict_str__Any__"
                }
              }
            },
            "description": "Successful Response"
          }
        },
        "summary": "List server IP addresses",
        "tags": [
          "system"
        ]
      },
      "post": {
        "description": "Bind a new IPv4 to a host network interface (ip addr add) and make it persistent (netplan on Debian / nmcli on RHEL). Reserved/loopback/link-local/multicast addresses are refused.",
        "operationId": "add_system_ip_api_v1_system_ips_post",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SystemIPCreate"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_SystemIPResponse_"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Register a new IP",
        "tags": [
          "system"
        ]
      }
    },
    "/api/v1/system/ips/{ip}": {
      "delete": {
        "description": "Unbind the IPv4 from its interface (ip addr del) and remove it from persistent config (netplan/nmcli). The primary server IP, the default route's address, the default interface's first address and IPs still assigned to accounts are refused (422); an unknown address answers 404 NOT_FOUND.",
        "operationId": "delete_system_ip_api_v1_system_ips__ip__delete",
        "parameters": [
          {
            "in": "path",
            "name": "ip",
            "required": true,
            "schema": {
              "title": "Ip",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MessageResponse"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Unregister IP",
        "tags": [
          "system"
        ]
      },
      "put": {
        "description": "Change the classification (shared/dedicated) of a registered IP. Metadata only — the OS-level address binding is not altered. An address the host does not carry and the store does not know answers 404 NOT_FOUND.",
        "operationId": "update_system_ip_api_v1_system_ips__ip__put",
        "parameters": [
          {
            "in": "path",
            "name": "ip",
            "required": true,
            "schema": {
              "title": "Ip",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SystemIPUpdate"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_SystemIPResponse_"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Update IP metadata",
        "tags": [
          "system"
        ]
      }
    },
    "/api/v1/system/logs": {
      "get": {
        "operationId": "list_system_logs_api_v1_system_logs_get",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SystemLogsListResponse"
                }
              }
            },
            "description": "Successful Response"
          }
        },
        "summary": "List System Logs",
        "tags": [
          "system-logs"
        ]
      }
    },
    "/api/v1/system/logs/{log_id}": {
      "get": {
        "operationId": "read_system_log_api_v1_system_logs__log_id__get",
        "parameters": [
          {
            "in": "path",
            "name": "log_id",
            "required": true,
            "schema": {
              "title": "Log Id",
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "lines",
            "required": false,
            "schema": {
              "default": 100,
              "maximum": 5000,
              "minimum": 1,
              "title": "Lines",
              "type": "integer"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SystemLogContentResponse"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Read System Log",
        "tags": [
          "system-logs"
        ]
      }
    },
    "/api/v1/system/metrics": {
      "get": {
        "description": "Get historical server-wide resource usage metrics.",
        "operationId": "get_server_metrics_api_v1_system_metrics_get",
        "parameters": [
          {
            "in": "query",
            "name": "period",
            "required": false,
            "schema": {
              "default": "24h",
              "pattern": "^(24h|7d|30d)$",
              "title": "Period",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": true,
                  "title": "Response Get Server Metrics Api V1 System Metrics Get",
                  "type": "object"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Get Server Metrics",
        "tags": [
          "metrics"
        ]
      }
    },
    "/api/v1/system/node/apps": {
      "get": {
        "description": "Admin overview — list Node.js apps across all accounts.",
        "operationId": "list_all_node_apps_api_v1_system_node_apps_get",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_list_dict_str__Any___"
                }
              }
            },
            "description": "Successful Response"
          }
        },
        "summary": "List all Node apps",
        "tags": [
          "node-apps"
        ]
      }
    },
    "/api/v1/system/node/versions": {
      "get": {
        "description": "List Node.js versions actually installed on the server.",
        "operationId": "list_node_versions_api_v1_system_node_versions_get",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_dict_str__Any__"
                }
              }
            },
            "description": "Successful Response"
          }
        },
        "summary": "List Node versions",
        "tags": [
          "node-apps"
        ]
      }
    },
    "/api/v1/system/packages/summary": {
      "get": {
        "description": "Cheap cached summary (no apt subprocess). Used by the topbar update badge.",
        "operationId": "get_os_packages_summary_api_v1_system_packages_summary_get",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_OsPackagesSummary_"
                }
              }
            },
            "description": "Successful Response"
          }
        },
        "summary": "OS package summary (counts only)",
        "tags": [
          "updates"
        ]
      }
    },
    "/api/v1/system/packages/updates": {
      "get": {
        "description": "Returns the apt/dnf update list (live or cached when an apply is in flight). Each entry: name, current_version, candidate_version, security flag.",
        "operationId": "list_os_package_updates_api_v1_system_packages_updates_get",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_list_OsPackageUpdate__"
                }
              }
            },
            "description": "Successful Response"
          }
        },
        "summary": "List available OS package updates",
        "tags": [
          "updates"
        ]
      }
    },
    "/api/v1/system/packages/upgrade": {
      "post": {
        "description": "Schedules an apt/dnf upgrade as a background job. Returns the initial status immediately — poll `/upgrade/status` for progress. Already-running jobs are surfaced without restart.",
        "operationId": "apply_os_package_updates_api_v1_system_packages_upgrade_post",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/OsPackagesUpgradeRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_OsPackageApplyStatus_"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Trigger OS package upgrade",
        "tags": [
          "updates"
        ]
      }
    },
    "/api/v1/system/packages/upgrade/history": {
      "get": {
        "description": "Last N OS package upgrade attempts (`limit` 1–100, default 20; the file keeps at most 100).",
        "operationId": "get_os_upgrade_history_api_v1_system_packages_upgrade_history_get",
        "parameters": [
          {
            "in": "query",
            "name": "limit",
            "required": false,
            "schema": {
              "default": 20,
              "maximum": 100,
              "minimum": 1,
              "title": "Limit",
              "type": "integer"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_list_OsPackageApplyHistoryEntry__"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "OS upgrade history",
        "tags": [
          "updates"
        ]
      }
    },
    "/api/v1/system/packages/upgrade/status": {
      "get": {
        "description": "Poll-friendly endpoint. Survives page navigation — the job runs server-side even if the client disconnects.",
        "operationId": "get_os_upgrade_status_api_v1_system_packages_upgrade_status_get",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_OsPackageApplyStatus_"
                }
              }
            },
            "description": "Successful Response"
          }
        },
        "summary": "Get OS upgrade job status",
        "tags": [
          "updates"
        ]
      }
    },
    "/api/v1/system/php/defaults": {
      "get": {
        "description": "Returns the global `php.ini` defaults that new accounts inherit.",
        "operationId": "get_php_defaults_api_v1_system_php_defaults_get",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_dict_str__Any__"
                }
              }
            },
            "description": "Successful Response"
          }
        },
        "summary": "Get system PHP default values",
        "tags": [
          "php"
        ]
      },
      "put": {
        "description": "Patch the global PHP defaults applied to new accounts (does not retro-apply).",
        "operationId": "update_php_defaults_api_v1_system_php_defaults_put",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PHPDefaultsUpdate"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_dict_str__Any__"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Update system PHP defaults",
        "tags": [
          "php"
        ]
      }
    },
    "/api/v1/system/php/extensions": {
      "get": {
        "description": "Lists every installed PHP extension and its system-wide enable/disable state.",
        "operationId": "get_system_extensions_api_v1_system_php_extensions_get",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_dict_str__Any__"
                }
              }
            },
            "description": "Successful Response"
          }
        },
        "summary": "Get system-wide PHP extensions status",
        "tags": [
          "php"
        ]
      },
      "put": {
        "description": "Enable or disable an extension at the system scope — affects every PHP version.",
        "operationId": "set_system_extension_api_v1_system_php_extensions_put",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PHPExtensionToggle"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_dict_str__Any__"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Toggle system-wide PHP extension",
        "tags": [
          "php"
        ]
      }
    },
    "/api/v1/system/php/opcache": {
      "get": {
        "description": "Returns a card per installed PHP version; disabled versions are included with `enabled=false`.",
        "operationId": "get_system_opcache_api_v1_system_php_opcache_get",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_list_OPcacheStatusResponse__"
                }
              }
            },
            "description": "Successful Response"
          }
        },
        "summary": "OPcache status for every installed PHP version",
        "tags": [
          "php"
        ]
      }
    },
    "/api/v1/system/php/opcache/{version}/clear": {
      "post": {
        "description": "Restarts PHP-FPM for the given version — invalidates every account's opcode cache on that version.",
        "operationId": "clear_system_opcache_api_v1_system_php_opcache__version__clear_post",
        "parameters": [
          {
            "in": "path",
            "name": "version",
            "required": true,
            "schema": {
              "title": "Version",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MessageResponse"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Clear OPcache (system scope)",
        "tags": [
          "php"
        ]
      }
    },
    "/api/v1/system/php/overview": {
      "get": {
        "description": "Per-domain PHP version map + version distribution across all domains. Response data: {domains: [...], total, version_distribution}.",
        "operationId": "get_php_overview_api_v1_system_php_overview_get",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_dict_str__Any__"
                }
              }
            },
            "description": "Successful Response"
          }
        },
        "summary": "PHP domain overview",
        "tags": [
          "php"
        ]
      }
    },
    "/api/v1/system/php/versions": {
      "get": {
        "description": "Server-wide list of installed PHP-FPM versions + system default + enable/disable status per version.",
        "operationId": "list_php_versions_api_v1_system_php_versions_get",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_PHPVersionListResponse_"
                }
              }
            },
            "description": "Successful Response"
          }
        },
        "summary": "List installed PHP versions",
        "tags": [
          "php"
        ]
      },
      "put": {
        "description": "Toggle whether a specific PHP version is available to accounts.",
        "operationId": "toggle_php_version_api_v1_system_php_versions_put",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PHPVersionToggle"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_PHPVersionListResponse_"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Enable / disable an installed PHP version",
        "tags": [
          "php"
        ]
      }
    },
    "/api/v1/system/phpmyadmin/install": {
      "post": {
        "description": "Provisions the panel-embedded phpMyAdmin (writes vhost, SSO bridge script).",
        "operationId": "phpmyadmin_install_api_v1_system_phpmyadmin_install_post",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_dict_str__Any__"
                }
              }
            },
            "description": "Successful Response"
          }
        },
        "summary": "Install phpMyAdmin",
        "tags": [
          "system"
        ]
      }
    },
    "/api/v1/system/phpmyadmin/sso": {
      "post": {
        "description": "Internal endpoint — returns the short-lived SSO redirect URL for the panel's phpMyAdmin button. `db_host` is limited to the panel's own MariaDB host (`localhost`, `127.0.0.1`, `::1` or the configured `mysql.host`); any other host answers 422.",
        "operationId": "phpmyadmin_sso_api_v1_system_phpmyadmin_sso_post",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SSOTokenRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_dict_str__Any__"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Mint phpMyAdmin SSO token",
        "tags": [
          "system"
        ]
      }
    },
    "/api/v1/system/phpmyadmin/status": {
      "get": {
        "description": "Reports whether phpMyAdmin is installed + the installed version.",
        "operationId": "phpmyadmin_status_api_v1_system_phpmyadmin_status_get",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_dict_str__Any__"
                }
              }
            },
            "description": "Successful Response"
          }
        },
        "summary": "phpMyAdmin install status",
        "tags": [
          "system"
        ]
      }
    },
    "/api/v1/system/python/apps": {
      "get": {
        "description": "Admin overview — list Python apps across all accounts.",
        "operationId": "list_all_python_apps_api_v1_system_python_apps_get",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_list_PythonAppResponse__"
                }
              }
            },
            "description": "Successful Response"
          }
        },
        "summary": "List all Python apps",
        "tags": [
          "python-apps"
        ]
      }
    },
    "/api/v1/system/python/versions": {
      "get": {
        "description": "List installed Python versions on the server.",
        "operationId": "list_python_versions_api_v1_system_python_versions_get",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_dict_str__Any__"
                }
              }
            },
            "description": "Successful Response"
          }
        },
        "summary": "List Python versions",
        "tags": [
          "python-apps"
        ]
      }
    },
    "/api/v1/system/reboot": {
      "post": {
        "description": "Schedules a host reboot via systemd. Returns the message before the box actually goes down.",
        "operationId": "reboot_system_api_v1_system_reboot_post",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MessageResponse"
                }
              }
            },
            "description": "Successful Response"
          }
        },
        "summary": "Reboot server",
        "tags": [
          "system"
        ]
      }
    },
    "/api/v1/system/resource-consumers": {
      "get": {
        "description": "Snapshot of top CPU + memory consumers — used by the dashboard live monitor. `resource=disk` answers from the last disk walk (system directories and account homes); `refreshing: true` means that answer is older than 30 seconds and a new walk is running — ask again shortly for the fresh numbers.",
        "operationId": "resource_consumers_api_v1_system_resource_consumers_get",
        "parameters": [
          {
            "in": "query",
            "name": "resource",
            "required": false,
            "schema": {
              "default": "cpu",
              "title": "Resource",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_dict_str__Any__"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Top resource consumer processes",
        "tags": [
          "system"
        ]
      }
    },
    "/api/v1/system/root-password": {
      "post": {
        "description": "Sets a new password for the Linux root system account. **Session-cookie auth required** — HMAC API keys are rejected with 403 `HMAC_FORBIDDEN_FOR_CREDENTIAL_MUTATION`, as for every credential mutation.",
        "operationId": "change_root_password_api_v1_system_root_password_post",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/RootPasswordChange"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MessageResponse"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Change Linux root password",
        "tags": [
          "system"
        ]
      }
    },
    "/api/v1/system/server-ip": {
      "put": {
        "description": "Updates the IP advertised in DNS A records + vhost defaults. Existing account DNS zones are rewritten.",
        "operationId": "update_server_ip_api_v1_system_server_ip_put",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ServerIPUpdate"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_dict_str__Any__"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Change advertised server IP",
        "tags": [
          "system"
        ]
      }
    },
    "/api/v1/system/service/{name}": {
      "post": {
        "description": "Runs the systemd action against the named managed service. Returns the new state snapshot.",
        "operationId": "manage_service_endpoint_api_v1_system_service__name__post",
        "parameters": [
          {
            "in": "path",
            "name": "name",
            "required": true,
            "schema": {
              "title": "Name",
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "action",
            "required": false,
            "schema": {
              "default": "restart",
              "title": "Action",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_dict_str__Any__"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Service action (start/stop/restart/reload)",
        "tags": [
          "system"
        ]
      }
    },
    "/api/v1/system/services": {
      "get": {
        "description": "Returns every service WHost knows about (web, mail, DNS, FTP, fail2ban, agent) with running state, uptime, memory.",
        "operationId": "service_list_api_v1_system_services_get",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_dict_str__Any__"
                }
              }
            },
            "description": "Successful Response"
          }
        },
        "summary": "List managed services + status",
        "tags": [
          "system"
        ]
      }
    },
    "/api/v1/system/services/flat": {
      "get": {
        "description": "Same data as `/services` but as a flat name→status map — used by the dashboard sidebar.",
        "operationId": "service_list_flat_api_v1_system_services_flat_get",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_dict_str__Any__"
                }
              }
            },
            "description": "Successful Response"
          }
        },
        "summary": "Flat services list (compact)",
        "tags": [
          "system"
        ]
      }
    },
    "/api/v1/system/settings/general": {
      "get": {
        "description": "Server label, timezone, default language, default webserver, billing/notification email defaults.",
        "operationId": "get_general_settings_api_v1_system_settings_general_get",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_dict_str__Any__"
                }
              }
            },
            "description": "Successful Response"
          }
        },
        "summary": "Get general server settings",
        "tags": [
          "system"
        ]
      },
      "put": {
        "description": "Patch label / timezone / language / webserver default / notification defaults.",
        "operationId": "update_general_settings_api_v1_system_settings_general_put",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/GeneralSettingsUpdate"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_dict_str__Any__"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Update general server settings",
        "tags": [
          "system"
        ]
      }
    },
    "/api/v1/system/settings/security": {
      "get": {
        "description": "Returns the security config block (HMAC nonce TTL, session timeout, IP allowlist, captcha provider).",
        "operationId": "get_security_settings_api_v1_system_settings_security_get",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_dict_str__Any__"
                }
              }
            },
            "description": "Successful Response"
          }
        },
        "summary": "Get security settings",
        "tags": [
          "system"
        ]
      },
      "put": {
        "description": "Patch security config. Secrets sent as the masked sentinel are kept untouched.",
        "operationId": "update_security_settings_api_v1_system_settings_security_put",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SecuritySettingsUpdate"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_dict_str__Any__"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Update security settings",
        "tags": [
          "system"
        ]
      }
    },
    "/api/v1/system/stats": {
      "get": {
        "description": "Account / domain / database / email counts + resource totals — backs the dashboard top cards.",
        "operationId": "system_stats_api_v1_system_stats_get",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_dict_str__Any__"
                }
              }
            },
            "description": "Successful Response"
          }
        },
        "summary": "Aggregate server stats",
        "tags": [
          "system"
        ]
      }
    },
    "/api/v1/system/update/changelog": {
      "get": {
        "description": "Returns the changelog the last update check answered — the same text `/check` returns in its `changelog` field. Null before any check and for a host already on the latest version (the vendor sends no changelog then); a `message` accompanies the former. Response data: `{changelog}`.",
        "operationId": "get_changelog_api_v1_system_update_changelog_get",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_dict_str__Any__"
                }
              }
            },
            "description": "Successful Response"
          }
        },
        "summary": "Get cached changelog",
        "tags": [
          "updates"
        ]
      }
    },
    "/api/v1/system/update/check": {
      "get": {
        "description": "Check whether a newer WHost agent release is available and return the changelog. Result is cached server-side until the next check.",
        "operationId": "check_for_updates_api_v1_system_update_check_get",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_UpdateCheckResult_"
                }
              }
            },
            "description": "Successful Response"
          }
        },
        "summary": "Check for WHost agent updates",
        "tags": [
          "updates"
        ]
      }
    },
    "/api/v1/system/update/history": {
      "get": {
        "description": "Returns every update install attempt (newest first), including stage outcome + duration.",
        "operationId": "get_history_api_v1_system_update_history_get",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_list_UpdateHistoryEntry__"
                }
              }
            },
            "description": "Successful Response"
          }
        },
        "summary": "List past update operations",
        "tags": [
          "updates"
        ]
      }
    },
    "/api/v1/system/update/install": {
      "post": {
        "description": "Starts the install pipeline in the background. Returns immediately (`{started: true}`); poll `/status` or open `/status/stream` (SSE) to follow progress. Refused 409 `UPDATE_IN_PROGRESS` while a run is going, 409 `BACKUP_IN_PROGRESS` while a backup, a restore or a scheduled backup runs in the agent (the run ends in a restart that would cut it; the message names the work and when it started), 400 `UPDATE_CHECK_REQUIRED` before any `/check` has run in this agent process, 400 `UPDATE_ALREADY_LATEST` when the last check found no newer version, 400 `UPDATE_DOWNGRADE_REJECTED` when the offered release orders before the installed one, 400 `UPDATE_INVALID_VERSION` when the offered version is not a version. All six are answered before anything starts; backup work that starts between this answer and the run's first step ends the run as `failed` with the same message.",
        "operationId": "install_update_api_v1_system_update_install_post",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_dict_str__Any__"
                }
              }
            },
            "description": "Successful Response"
          }
        },
        "summary": "Trigger WHost update install",
        "tags": [
          "updates"
        ]
      }
    },
    "/api/v1/system/update/settings": {
      "get": {
        "description": "Auto-update channel, backup-before-update flag, notify toggles, OS package update prefs.",
        "operationId": "get_settings_api_v1_system_update_settings_get",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_UpdateSettings_"
                }
              }
            },
            "description": "Successful Response"
          }
        },
        "summary": "Get update settings",
        "tags": [
          "updates"
        ]
      },
      "put": {
        "description": "Patch any subset of update preferences. Only fields present in the body are mutated; a switch must be a JSON boolean and an unknown field is refused 422. A save that changes nothing writes neither the file nor an audit row; the audit row of a real change names only the fields whose value changed.",
        "operationId": "update_settings_api_v1_system_update_settings_put",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateSettingsUpdate"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_UpdateSettings_"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Update settings",
        "tags": [
          "updates"
        ]
      }
    },
    "/api/v1/system/update/status": {
      "get": {
        "description": "Snapshot of the install pipeline — stage, progress 0-100, message, started_at, completed_at, error.",
        "operationId": "get_status_api_v1_system_update_status_get",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_UpdateStatus_"
                }
              }
            },
            "description": "Successful Response"
          }
        },
        "summary": "Get update install status",
        "tags": [
          "updates"
        ]
      }
    },
    "/api/v1/system/update/status/stream": {
      "get": {
        "description": "Server-Sent Events feed of install progress. Closes when stage reaches `completed`, `failed` or `rolled_back`. Binary `text/event-stream` — no JSON envelope.",
        "operationId": "status_stream_api_v1_system_update_status_stream_get",
        "responses": {
          "200": {
            "description": "Successful Response"
          }
        },
        "summary": "SSE — install progress stream",
        "tags": [
          "updates"
        ]
      }
    },
    "/api/v1/system/webhooks": {
      "get": {
        "description": "Return every registered webhook subscriber.",
        "operationId": "list_endpoints_api_v1_system_webhooks_get",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_list_dict_str__Any___"
                }
              }
            },
            "description": "Successful Response"
          }
        },
        "summary": "List webhook endpoints",
        "tags": [
          "webhooks"
        ]
      },
      "post": {
        "description": "Register a new subscriber. The plaintext ``secret`` is returned ONLY on this response; rotate via ``/rotate`` to mint a new one.",
        "operationId": "create_endpoint_api_v1_system_webhooks_post",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/WebhookEndpointCreate"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_dict_str__Any__"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Create webhook endpoint",
        "tags": [
          "webhooks"
        ]
      }
    },
    "/api/v1/system/webhooks/deliveries": {
      "get": {
        "description": "Paginated history of delivery attempts (success, failed, dead-letter).",
        "operationId": "list_deliveries_api_v1_system_webhooks_deliveries_get",
        "parameters": [
          {
            "in": "query",
            "name": "limit",
            "required": false,
            "schema": {
              "default": 50,
              "maximum": 500,
              "minimum": 1,
              "title": "Limit",
              "type": "integer"
            }
          },
          {
            "in": "query",
            "name": "offset",
            "required": false,
            "schema": {
              "default": 0,
              "minimum": 0,
              "title": "Offset",
              "type": "integer"
            }
          },
          {
            "in": "query",
            "name": "endpoint_id",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Endpoint Id"
            }
          },
          {
            "in": "query",
            "name": "status",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "pattern": "^(pending|success|failed|dead_letter)$",
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Status"
            }
          },
          {
            "in": "query",
            "name": "event_type",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Event Type"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_dict_str__Any__"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "List webhook deliveries",
        "tags": [
          "webhooks"
        ]
      }
    },
    "/api/v1/system/webhooks/deliveries/{delivery_id}": {
      "get": {
        "description": "Return the full record (payload + response excerpt) for a single delivery attempt.",
        "operationId": "get_delivery_api_v1_system_webhooks_deliveries__delivery_id__get",
        "parameters": [
          {
            "in": "path",
            "name": "delivery_id",
            "required": true,
            "schema": {
              "pattern": "^dlv_[a-f0-9]+$",
              "title": "Delivery Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_dict_str__Any__"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Get delivery detail",
        "tags": [
          "webhooks"
        ]
      }
    },
    "/api/v1/system/webhooks/deliveries/{delivery_id}/retry": {
      "post": {
        "description": "Re-enqueue a failed / dead-letter delivery at its own endpoint. A new delivery id is minted and the original record stays for audit; 404 when the endpoint is gone, 409 WEBHOOK_DISABLED while it is disabled or muted.",
        "operationId": "retry_delivery_api_v1_system_webhooks_deliveries__delivery_id__retry_post",
        "parameters": [
          {
            "in": "path",
            "name": "delivery_id",
            "required": true,
            "schema": {
              "pattern": "^dlv_[a-f0-9]+$",
              "title": "Delivery Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_dict_str__Any__"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Retry delivery",
        "tags": [
          "webhooks"
        ]
      }
    },
    "/api/v1/system/webhooks/events": {
      "get": {
        "description": "Return the catalog of every event a webhook endpoint can subscribe to.",
        "operationId": "list_event_catalog_api_v1_system_webhooks_events_get",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_list_dict_str__Any___"
                }
              }
            },
            "description": "Successful Response"
          }
        },
        "summary": "List webhook event types",
        "tags": [
          "webhooks"
        ]
      }
    },
    "/api/v1/system/webhooks/{endpoint_id}": {
      "delete": {
        "description": "Permanently remove a subscriber. Pending queued events for this endpoint are dropped on the next dispatcher tick.",
        "operationId": "delete_endpoint_api_v1_system_webhooks__endpoint_id__delete",
        "parameters": [
          {
            "in": "path",
            "name": "endpoint_id",
            "required": true,
            "schema": {
              "pattern": "^whk_[a-f0-9]+$",
              "title": "Endpoint Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MessageResponse"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Delete webhook endpoint",
        "tags": [
          "webhooks"
        ]
      },
      "get": {
        "description": "Fetch a single endpoint by id. The secret is masked.",
        "operationId": "get_endpoint_api_v1_system_webhooks__endpoint_id__get",
        "parameters": [
          {
            "in": "path",
            "name": "endpoint_id",
            "required": true,
            "schema": {
              "pattern": "^whk_[a-f0-9]+$",
              "title": "Endpoint Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_dict_str__Any__"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Get webhook endpoint",
        "tags": [
          "webhooks"
        ]
      },
      "put": {
        "description": "Update url, events, description, enabled flag, or mute window. Pass ``secret`` only when explicitly rotating.",
        "operationId": "update_endpoint_api_v1_system_webhooks__endpoint_id__put",
        "parameters": [
          {
            "in": "path",
            "name": "endpoint_id",
            "required": true,
            "schema": {
              "pattern": "^whk_[a-f0-9]+$",
              "title": "Endpoint Id",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/WebhookEndpointUpdate"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_dict_str__Any__"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Update webhook endpoint",
        "tags": [
          "webhooks"
        ]
      }
    },
    "/api/v1/system/webhooks/{endpoint_id}/rotate": {
      "post": {
        "description": "Generate a new HMAC secret. The plaintext value is returned ONCE — store it on the subscriber immediately.",
        "operationId": "rotate_secret_api_v1_system_webhooks__endpoint_id__rotate_post",
        "parameters": [
          {
            "in": "path",
            "name": "endpoint_id",
            "required": true,
            "schema": {
              "pattern": "^whk_[a-f0-9]+$",
              "title": "Endpoint Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_dict_str__Any__"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Rotate webhook secret",
        "tags": [
          "webhooks"
        ]
      }
    },
    "/api/v1/system/webhooks/{endpoint_id}/test": {
      "post": {
        "description": "Enqueue a synthetic event addressed at this endpoint only (other subscribers of the same event do not receive it). A disabled or muted endpoint answers 409 WEBHOOK_DISABLED. Useful for confirming connectivity + signature validation on the subscriber side.",
        "operationId": "send_test_event_api_v1_system_webhooks__endpoint_id__test_post",
        "parameters": [
          {
            "in": "path",
            "name": "endpoint_id",
            "required": true,
            "schema": {
              "pattern": "^whk_[a-f0-9]+$",
              "title": "Endpoint Id",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_dict_str__Any__"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Send test event",
        "tags": [
          "webhooks"
        ]
      }
    },
    "/api/v1/system/webmail/install": {
      "post": {
        "description": "Provisions Roundcube and the Dovecot master-user SSO bridge (a no-op answer when Roundcube is already installed).",
        "operationId": "webmail_install_api_v1_system_webmail_install_post",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_dict_str__Any__"
                }
              }
            },
            "description": "Successful Response"
          }
        },
        "summary": "Install Roundcube webmail",
        "tags": [
          "system"
        ]
      }
    },
    "/api/v1/system/webmail/sso": {
      "post": {
        "description": "Internal — returns the short-lived SSO redirect URL for the panel's Roundcube button. The mailbox must exist (404 `EMAIL_NOT_FOUND`) and be active (409 `EMAIL_INACTIVE`); 503 `WEBMAIL_NOT_INSTALLED` / `WEBMAIL_SSO_NOT_CONFIGURED` when the bridge is absent. The mint is audited.",
        "operationId": "webmail_sso_api_v1_system_webmail_sso_post",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/WebmailSSORequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_dict_str__Any__"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Mint webmail SSO token",
        "tags": [
          "system"
        ]
      }
    },
    "/api/v1/system/webmail/status": {
      "get": {
        "description": "Reports whether Roundcube is installed + version.",
        "operationId": "webmail_status_api_v1_system_webmail_status_get",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_dict_str__Any__"
                }
              }
            },
            "description": "Successful Response"
          }
        },
        "summary": "Webmail (Roundcube) install status",
        "tags": [
          "system"
        ]
      }
    },
    "/api/v1/system/whitelabel": {
      "get": {
        "description": "Return whitelabel branding data. Public — no authentication required (login page uses this).",
        "operationId": "get_branding_api_v1_system_whitelabel_get",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_dict_str__Any__"
                }
              }
            },
            "description": "Successful Response"
          }
        },
        "summary": "Public branding",
        "tags": [
          "whitelabel"
        ]
      }
    },
    "/api/v1/system/whitelabel/addon-status": {
      "get": {
        "description": "Return whitelabel addon licensing status from the licence cache (no vendor call). `addon_status` is the publisher's status for the addon, or `expired` when a row the publisher still reports active has passed its expiry date; `licensed` is true only for `active`.",
        "operationId": "get_whitelabel_addon_status_api_v1_system_whitelabel_addon_status_get",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_dict_str__Any__"
                }
              }
            },
            "description": "Successful Response"
          }
        },
        "summary": "Whitelabel addon status",
        "tags": [
          "whitelabel"
        ],
        "x-whost-auth": "admin-session"
      }
    },
    "/api/v1/system/whitelabel/login-video/{page}": {
      "delete": {
        "description": "Remove the uploaded background video and cover of the admin or the client sign-in page (page: admin, client); the page shows the default video again. Answers 403 LICENSE_ADDON_REQUIRED while the whitelabel addon is not licensed and 404 LOGIN_VIDEO_NOT_FOUND when the page has no uploaded video or cover.",
        "operationId": "delete_login_video_api_v1_system_whitelabel_login_video__page__delete",
        "parameters": [
          {
            "in": "path",
            "name": "page",
            "required": true,
            "schema": {
              "enum": [
                "admin",
                "client"
              ],
              "title": "Page",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_dict_str__Any__"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Remove sign-in page video",
        "tags": [
          "whitelabel"
        ],
        "x-whost-auth": "admin-session"
      },
      "post": {
        "description": "Replace the background video of the admin or the client sign-in page (page: admin, client) with an MP4 whose video track is H.264, at most 5 MB (`video`), and/or its cover image, a JPEG, PNG or WebP of at most 2 MB shown until the video plays (`poster`). The video is stored as uploaded with its descriptive tags, XMP packet and creation times blanked (the agent does not transcode; the panel compresses a larger video in the browser and takes the cover from its first frame); the cover is scaled to fit 1920 x 1080 px (1080 x 1920 for a portrait picture). A new video without a cover removes the previous cover. Each field answers its public address (/branding/<file>); `optimized` reports the source and stored size per field. Answers 403 LICENSE_ADDON_REQUIRED while the whitelabel addon is not licensed, 400 LOGIN_VIDEO_REQUIRED for a cover sent while the page has no uploaded video, 415 UNSUPPORTED_MEDIA_TYPE for a file that is not an MP4 or a video that is not H.264 and 400 INVALID_VIDEO for an MP4 that cannot be read.",
        "operationId": "upload_login_video_api_v1_system_whitelabel_login_video__page__post",
        "parameters": [
          {
            "in": "path",
            "name": "page",
            "required": true,
            "schema": {
              "enum": [
                "admin",
                "client"
              ],
              "title": "Page",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "multipart/form-data": {
              "schema": {
                "$ref": "#/components/schemas/Body_upload_login_video_api_v1_system_whitelabel_login_video__page__post"
              }
            }
          }
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_dict_str__Any__"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Upload sign-in page video",
        "tags": [
          "whitelabel"
        ],
        "x-whost-auth": "admin-session"
      }
    },
    "/api/v1/system/whitelabel/logo": {
      "post": {
        "description": "Upload one or more whitelabel logos (logo_light, logo_dark, favicon, favicon_dark; JPEG, PNG, WebP or SVG, at most 2 MB each). Raster logos are scaled to fit 512 x 160 px (width x height) and favicons to a square PNG of at most 256 px with transparent padding; SVG is sanitised and kept as a vector. Each uploaded field answers its public address (/branding/<file>, served by the panel's web server and cached as immutable); `optimized` reports the source and stored size per field. Answers 403 LICENSE_ADDON_REQUIRED while the whitelabel addon is not licensed, 400 IMAGE_DIMENSIONS_TOO_LARGE above 25 megapixels and 400 INVALID_IMAGE for a file that does not decode as its type.",
        "operationId": "upload_whitelabel_logo_api_v1_system_whitelabel_logo_post",
        "requestBody": {
          "content": {
            "multipart/form-data": {
              "schema": {
                "$ref": "#/components/schemas/Body_upload_whitelabel_logo_api_v1_system_whitelabel_logo_post"
              }
            }
          }
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_dict_str__Any__"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Upload logo",
        "tags": [
          "whitelabel"
        ],
        "x-whost-auth": "admin-session"
      }
    },
    "/api/v1/system/whitelabel/logo/{logo_type}": {
      "delete": {
        "description": "Delete a whitelabel logo (logo_type: light, dark, favicon, favicon_dark). Answers 403 LICENSE_ADDON_REQUIRED while the whitelabel addon is not licensed.",
        "operationId": "delete_whitelabel_logo_api_v1_system_whitelabel_logo__logo_type__delete",
        "parameters": [
          {
            "in": "path",
            "name": "logo_type",
            "required": true,
            "schema": {
              "title": "Logo Type",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_dict_str__Any__"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Delete logo",
        "tags": [
          "whitelabel"
        ],
        "x-whost-auth": "admin-session"
      }
    },
    "/api/v1/system/whitelabel/reset": {
      "post": {
        "description": "Reset all whitelabel settings to defaults. Answers 403 LICENSE_ADDON_REQUIRED while the whitelabel addon is not licensed.",
        "operationId": "reset_whitelabel_api_v1_system_whitelabel_reset_post",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_dict_str__Any__"
                }
              }
            },
            "description": "Successful Response"
          }
        },
        "summary": "Reset whitelabel",
        "tags": [
          "whitelabel"
        ],
        "x-whost-auth": "admin-session"
      }
    },
    "/api/v1/system/whitelabel/settings": {
      "get": {
        "description": "Return full whitelabel settings for the admin configuration page.",
        "operationId": "get_whitelabel_settings_api_v1_system_whitelabel_settings_get",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_dict_str__Any__"
                }
              }
            },
            "description": "Successful Response"
          }
        },
        "summary": "Whitelabel settings",
        "tags": [
          "whitelabel"
        ],
        "x-whost-auth": "admin-session"
      },
      "put": {
        "description": "Update whitelabel settings (colors, company name, toggles). Answers 403 LICENSE_ADDON_REQUIRED while the whitelabel addon is not licensed.",
        "operationId": "update_whitelabel_settings_api_v1_system_whitelabel_settings_put",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/WhitelabelSettingsUpdate"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_dict_str__Any__"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Update whitelabel settings",
        "tags": [
          "whitelabel"
        ],
        "x-whost-auth": "admin-session"
      }
    },
    "/api/v1/waf/audit-log": {
      "get": {
        "description": "The newest entries of the ModSecurity audit log (the rotation copies and truncates the file, so the panel reads every entry since the last rotation): the client address, the host and URI asked for, the first rule that matched, and whether the request was blocked, detected (detection-only) or only logged.",
        "operationId": "get_global_audit_log_api_v1_waf_audit_log_get",
        "parameters": [
          {
            "in": "query",
            "name": "limit",
            "required": false,
            "schema": {
              "default": 100,
              "maximum": 1000,
              "minimum": 1,
              "title": "Limit",
              "type": "integer"
            }
          },
          {
            "in": "query",
            "name": "offset",
            "required": false,
            "schema": {
              "default": 0,
              "minimum": 0,
              "title": "Offset",
              "type": "integer"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_list_WafAuditLogEntry__"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "ModSecurity audit log (global)",
        "tags": [
          "waf"
        ]
      }
    },
    "/api/v1/waf/config": {
      "put": {
        "description": "Patch engine mode, paranoia level, audit logging. The rendered files are tested before the values are persisted; a change reloads the webserver, a save that changes nothing does not.",
        "operationId": "update_global_config_api_v1_waf_config_put",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/WafGlobalConfigUpdate"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_WafGlobalStatus_"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Update ModSecurity global config",
        "tags": [
          "waf"
        ]
      }
    },
    "/api/v1/waf/rules": {
      "get": {
        "description": "Every id-bearing rule of the loaded rule set with its message (where it carries one), file and enabled flag.",
        "operationId": "list_rules_api_v1_waf_rules_get",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_list_WafRuleEntry__"
                }
              }
            },
            "description": "Successful Response"
          }
        },
        "summary": "List CRS rules",
        "tags": [
          "waf"
        ]
      }
    },
    "/api/v1/waf/rules/{rule_id}": {
      "put": {
        "description": "Enable / disable a single rule by id; an id that is not in the loaded rule set answers 404. A change reloads the webserver, a toggle to the state already in force does not.",
        "operationId": "toggle_rule_api_v1_waf_rules__rule_id__put",
        "parameters": [
          {
            "in": "path",
            "name": "rule_id",
            "required": true,
            "schema": {
              "title": "Rule Id",
              "type": "integer"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/WafRuleToggleRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_WafRuleEntry_"
                }
              }
            },
            "description": "Successful Response"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Toggle CRS rule",
        "tags": [
          "waf"
        ]
      }
    },
    "/api/v1/waf/status": {
      "get": {
        "description": "Engine state (DetectionOnly / On / Off), CRS version, paranoia level, request body limit.",
        "operationId": "get_global_status_api_v1_waf_status_get",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiSuccess_WafGlobalStatus_"
                }
              }
            },
            "description": "Successful Response"
          }
        },
        "summary": "ModSecurity global status",
        "tags": [
          "waf"
        ]
      }
    },
    "/api/v1/waf/test": {
      "post": {
        "description": "Runs the webserver's configuration test over the rendered ModSecurity files (nginx -t, apachectl configtest); no request is sent. Answers 409 WAF_TEST_UNAVAILABLE on a webserver without such a test.",
        "operationId": "test_config_api_v1_waf_test_post",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MessageResponse"
                }
              }
            },
            "description": "Successful Response"
          }
        },
        "summary": "Test ModSecurity config",
        "tags": [
          "waf"
        ]
      }
    },
    "/health": {
      "get": {
        "operationId": "health_check_health_get",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": {
                    "type": "string"
                  },
                  "title": "Response Health Check Health Get",
                  "type": "object"
                }
              }
            },
            "description": "Successful Response"
          }
        },
        "summary": "Health Check"
      }
    }
  }
}
